SQL SELECT

 

SQL SELECT문은 데이터베이스로부터 데이터를 선택하기 위해 사용한다.

쿼리문에 대한 결과는 Result-set이라고 불리는 result table에 저장된다.

 

SQL SELECT Syntax

 

SQL SELECT문의 문법은 다음과 같다

 

SELECT column_name,column_name
FROM table_name;

 

또는

 

          SELECT * FROM table_name;

====================================

 

          SELECT column_name,column_name
          FROM table_name;

 

    위와 같은 경우에는 SELECT(선택한다) column_name(칼럼을) FROM table_name(이 테이블로부터)

    다시말해 특정테이블로부터 특정한 칼럼을 선택하는 것을 말한다.

 

    SELECT * FROM table_name;

 

    이 경우는 column_name 대신 *이 들어간 경우인데, 이때에는 특정 칼럼만 선택하는것이 아니라

    전체 칼럼을 선택한다. *은 전부라는 의미이다.

 

 

SQL SELECT Syntax 예문

 

위 사진은 w3schools에서 제공하는 데이터베이스이다.

데이터베이스안에 Customers, Categories등등 8개의 테이블이 있고 각각의 테이블안에는 여러가지의 Records이 저장되어 있다.

테이블 이름으로보아 이 데이터베이스는 고객을 가지고 있는 회사로 보인다.

고객 수는 91명, 직원은 10명이고 판매하는 제품은 77개로 판단된다.

 

위는 데이터베이스 중에 Customers 테이블의 데이터들이다. CustomerID, CustomerName, Address 등 고객 정보가 저장되어있는 테이블이다.

가로줄의 CustomerID, CustomerName, ContactName등의 항목들을 Column(칼럼)이라고 부르고,

세로줄의 각각 고객들의 정보 하나하나를 Record(레코드)라고 부른다.

 

위의 데이터베이스도 쿼리문을 통해 추출 한 내용인데, 어떠한 방식으로 추출해야할까?

SELECT * FROM Customers;를 하면된다.

SELECT(선택한다) *(모두를) From Customers(Customers 테이블로부터)

Customers 테이블에 있는 모든 칼럼을 선택하는 의미이다.

 

그럼 이중에서 CustomerName 칼럼만 추출하려면 어떻게 할까?

SELECT CustomerName FROM Customers;를 하면된다.

Customers 테이블에서 CustomerName 칼럼만을 선택한다는 의미이다.

결과를 보면

 

 

Customers 테이블에 있는 91개의 레코드들의 CustomerName만 선택되어 출력된 것이 보인다.

 

그렇다면 CustomerName과 Country 두가지를 한꺼번에 보려면 어떻게해야할까?

SELECT CustomerName, Country FROM Customers라고 하면된다.

 

 

결과는 예상대로이다.

 

 

 

SELECT DISTINCT

SELECT DISTINCT는 SELECT 문을 사용할 때 오직 다른 값 만을 찾기 위해서 사용한다.

하나의 테이블에는 많은 중복된 데이터를 가진 칼럼들이 많을 것이다.

그리고 서로 다른 값의 리스트를 얻기 위할 때가 있을 것인데, 그럴 때 사용한다.

 

예를들어 위의 Customers 테이블에서, 내 쇼핑몰을 사용하고 있는 고객들이 속해있는 나라를 보고싶다고 하자.

그런데 SELECT Country FROM Customers;라고 입력을 한다면 레코드가 91개이기 때문에 91개의 나라 이름이 나올것이다.

물론 중복되는 나라들도 많을 것이다.

이럴때는 SELECT DISTINCT를 사용하면 중복된 나라 이름을 제거하고 값이 반환이 된다.

 

 

SELECT DISTINCT Syntax

SELECT DISTINCT의 문법은 다음과 같다.

 

SELECT DISTINCT column_name,column_name
FROM table_name;

 

단순히 SELECT 뒤에 DISTINCT만 붙이면 된다.

 

SELECT DISTINCT Syntax 예문

 

위에서 예를 든 것처럼 중복되는 값을 제외하고 고객들의 나라를 검색해보자.

 

SELECT DISTINCT Country FROM Customers 라고 입력하면 된다.

 

DISTINCT를 사용하지 않았을때에는 모든 레코드의 수(91개) 만큼의 나라가 출력이 되었는데

DISTINCT를 사용하면 중복되는 나라를 모두 삭제한 21개의 나라만 출력이 되는 것을 볼 수 있다.

 

 

SELECT는 가장 기본적인 문법인만큼 사용빈도가 굉장히 많고, 그만큼 그렇게 어렵지 않다.

후에 다른 쿼리문들과 합쳐서 사용할 경우 헷갈릴 수가 있기 때문에 미리미리 익숙해지는게 좋을 것 같다.

아마 앞으로 나오는 쿼리문들도 대부분 SELECT와 결합해서 사용할 것이다.

 

 

 

 

 

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

본 게시물은 공부한 내용을 바탕으로 작성한 글로써, 점차 수정 및 추가를 통해 내용을 발전시킬 계획입니다.

따라서 오타 및 내용상의 오류, 추가할 내용 등이 있을 경우 주저 없이 알려주시면 감사하겠습니다.

궁금한점을 물어보시면 제가 아는 선에서 최대한으로 알려드리겠습니다.

 

참고한 사이트

 

- w3schools

 

 

'Database.' 카테고리의 다른 글

SQL Syntax(SQL 문법) - ORDER BY  (0) 2016.09.22
SQL Syntax(SQL 문법) - WHERE, Operator  (0) 2016.09.06
SQL Syntax(SQL 문법) intro  (4) 2016.09.06
데이터베이스 & SQL이란?  (2) 2016.09.06

SQL 문법은 대소문자 구별이 없으나, 가독성을 위해 SQL문법은 대문자로 써주는 것이 좋다.

ex) SELECT * FROM Customers;

 

또한 몇 개의 데이터베이스 시스템은 SQL 쿼리문의 뒤에 세미콜론(;)을 붙여야 하는 것이 있다.

이는 여러개의 병렬 쿼리문을 위해 사용하는 것이다.

 

SQL 쿼리문의 종류

 

SELECT - 데이터베이스로부터 데이터를 추출한다.

UPDATE - 데이터베이스로부터 데이터를 갱신한다.

DELETE - 데이터베이스로부터 데이터를 삭제한다.

INSERT INTO - 데이터베이스에 새로운 데이터를 삽입한다.

CREATE DATABASE - 새로운 데이터베이스를 생성한다.

ALTER DATABASE - 데이터베이스를 수정한다.

CREATE TABLE - 새로운 테이블을 생성한다.

ALTER TABLE - 테이블을 수정한다.

DROP TABLE - 테이블을 삭제한다.

CREATE INDEX - 인덱스를 생성한다.

DROP INDEX - 인덱스를 삭제한다.

 

이외에도 여러가지가 있다.

 

데이터베이스에서 사용하는 언어는 목적에 따라 크게 3가지로 구분이 가능하다.

 

1. DDL(Data Definition Language) - 데이터 정의 언어

 

데이터베이스 구조, 데이터 형식, 접근방식 등 데이터베이스를 구축하거나 변경할 목적으로 사용하는 언어

Ex) CREATE, ALTER, DROP, RENAME

 

2. DML(Data Manipulation Language)

 

데이터 처리를 위하여 응용프로그램과 데이터베이스 관리시스템(DBMS) 간의 인터페이스를 위한 언어

데이터의 검색, 삽입, 삭제, 갱신 연산등이 있다.

Ex) INSERT, UPDATE, SELECT, DELETE, COMMIT, ROLLBACK

 

3. DCL(Data Control Language)

 

데이터 보안, 데이터 무결성, 데이터 회복, 병행 제어 등의 기능을 위한 언어

Ex) GRANT, REVOKE

 

 

 

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

본 게시물은 공부한 내용을 바탕으로 작성한 글로써, 점차 수정 및 추가를 통해 내용을 발전시킬 계획입니다.

따라서 오타 및 내용상의 오류, 추가할 내용 등이 있을 경우 주저 없이 알려주시면 감사하겠습니다.

궁금한점을 물어보시면 제가 아는 선에서 최대한으로 알려드리겠습니다.

 

참고한 사이트

 

- NAVER 지식백과 : 데이터베이스

- w3schools

'Database.' 카테고리의 다른 글

SQL Syntax(SQL 문법) - ORDER BY  (0) 2016.09.22
SQL Syntax(SQL 문법) - WHERE, Operator  (0) 2016.09.06
SQL Syntax(SQL 문법) - SELECT(DISTINCT)  (0) 2016.09.06
데이터베이스 & SQL이란?  (2) 2016.09.06

본 게시물은 www.w3schools.com의 SQL 영문자료를 보고 개인적으로 공부한 내용을 작성한 글입니다.

누락되거나 부족한점이 있을 수 있으니 양해 바랍니다.

 

해킹의 주요한 목적은 관리자의 권한을 얻거나, 정보를 빼내기 위함이라고 생각한다.

그 중에 정보를 빼내기 위해서는 데이터베이스에 접근을 하여야 하므로 데이터베이스 언어인 SQL을 필수적으로 알아야한다.

실제로 OWASP에서도 수년전부터 SQL injection 기법을 가장 위험한 웹어플리케이션 공격이라고 발표하고 있으므로

모의해킹을 실시할때도 기본적인 SQL 쿼리 사용은 알아야한다고 생각하여 처음으로 SQL 공부를 시작하였다.

 

===================================================================================

 

데이터베이스

 

정보를 일원화하여 처리를 효율적으로 수행하기 위해서 서로 관련성을 가지며 중복이 없는

데이터의 집합을 유지하는것을 데이터베이스라고 한다.

그리고 그 데이터베이스를 관리하는 시스템을 데이터베이스 관리시스템(DBMS; Database Management System) 이라고한다.

 

1. 데이터베이스의 구성

 

1) 통합 데이터(integrated data) : 중복을 배제하나, 경우에 따라 불가피하게 중복을 허용하는 데이터다.

2) 저장 데이터(Stored data) : 컴퓨터의 저장매체에 저장하여 관리하는 데이터를 의미한다.

3) 운영 데이터(operation data) : 단순한 데이터의 집합이 아니라 그 조직의 기능을 수행하는 데 없어서는 안 될 필수의 데이터를 의미한다.

4) 공용 데이터(shared data) : 어느 하나의 응용 프로그램이나 응용시스템을 위한 데이터가 아니라, 그 조직의 여러 사용자와 여러 응용시스템                                    들이 서로 다른 목적으로 데이터를 공동으로 이용할 수 있게 한다.

 

2. 데이터베이스의 특징

 

1) 실시간 접근성(Real Time Accessibility) : 사용자의 질의에 대하여 즉시 처리하여 응답하는 특징을 갖는다.

2) 계속적인 진화(Continuous Evolution) : 삽입, 삭제, 갱신을 통하여 항상 최근의 정확한 데이터를 동적으로 유지하는 특징이 있다.

3) 동시 공유(Concurrent sharing) : 여러 사용자가 동시에 원하는 데이터를 공유할 수 있는 특징을 갖는다.

4) 내용에 의한 참조(Content reference) : 데이터베이스에 있는 데이터를 참조할 때 튜플(tuple)의 주소나 위치가 아닌 사용자가 요구하는

  데이터 내용에 따라 참조하는 특징을 갖는다.

5) 데이터 논리적 독립성(Independence) : 응용프로그램과 데이터베이스를 독립시킴으로써 데이터의 논리적 구조를 변경시키더라도

   응용프로그램은 변경되지 않는 특징을 갖는다.

 

SQL

- SQL이란 데이터베이스를 접근하고 조작하는데 필요한 표준 언어이다.

- SQL은 구조적인 쿼리언어로 만들어졌다.

- SQL은 ANSI(American National Standards Institute) 표준 언어이다.

 

SQL로 할 수 있는 것

1) 데이터베이스에 대한 쿼리를 실행할 수 있다.

2) 데이터베이스로부터 데이터를 검색할 수 있다.

3) 데이터베이스에 레코드를 삽입, 갱신, 삭제 할 수 있다.

4) 새로운 데이터베이스, 테이블, 프로시저, 뷰를 만들 수 있다.

5) 테이블, 프로시저, 뷰에 대한 권한을 설정할 수 있다.

 

 

SQL은 ANSI 표준이지만, SQL 언어의 버전별로 조금씩 다르다.

하지만 ANSI 표준을 준수하기 위해 최소한의 주요한 커맨드(SELECT, UPDATE, DELETE, INSERT, WHERE 등)들은 지원한다.

 

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

본 게시물은 공부한 내용을 바탕으로 작성한 글로써, 점차 수정 및 추가를 통해 내용을 발전시킬 계획입니다.

따라서 오타 및 내용상의 오류, 추가할 내용 등이 있을 경우 주저 없이 알려주시면 감사하겠습니다.

궁금한점을 물어보시면 제가 아는 선에서 최대한으로 알려드리겠습니다.

 

참고한 사이트

 

- NAVER 지식백과 : 데이터베이스

- w3schools

 

 

'Database.' 카테고리의 다른 글

SQL Syntax(SQL 문법) - ORDER BY  (0) 2016.09.22
SQL Syntax(SQL 문법) - WHERE, Operator  (0) 2016.09.06
SQL Syntax(SQL 문법) - SELECT(DISTINCT)  (0) 2016.09.06
SQL Syntax(SQL 문법) intro  (4) 2016.09.06

+ Recent posts