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 예문
![](https://t1.daumcdn.net/cfile/tistory/221C9D4457CE432F2F)
위 사진은 w3schools에서 제공하는 데이터베이스이다.
데이터베이스안에 Customers, Categories등등 8개의 테이블이 있고 각각의 테이블안에는 여러가지의 Records이 저장되어 있다.
테이블 이름으로보아 이 데이터베이스는 고객을 가지고 있는 회사로 보인다.
고객 수는 91명, 직원은 10명이고 판매하는 제품은 77개로 판단된다.
![](https://t1.daumcdn.net/cfile/tistory/2147234457CE432F07)
위는 데이터베이스 중에 Customers 테이블의 데이터들이다. CustomerID, CustomerName, Address 등 고객 정보가 저장되어있는 테이블이다.
가로줄의 CustomerID, CustomerName, ContactName등의 항목들을 Column(칼럼)이라고 부르고,
세로줄의 각각 고객들의 정보 하나하나를 Record(레코드)라고 부른다.
위의 데이터베이스도 쿼리문을 통해 추출 한 내용인데, 어떠한 방식으로 추출해야할까?
SELECT * FROM Customers;를 하면된다.
SELECT(선택한다) *(모두를) From Customers(Customers 테이블로부터)
Customers 테이블에 있는 모든 칼럼을 선택하는 의미이다.
그럼 이중에서 CustomerName 칼럼만 추출하려면 어떻게 할까?
SELECT CustomerName FROM Customers;를 하면된다.
Customers 테이블에서 CustomerName 칼럼만을 선택한다는 의미이다.
결과를 보면
![](https://t1.daumcdn.net/cfile/tistory/2140884257CE44E21B)
Customers 테이블에 있는 91개의 레코드들의 CustomerName만 선택되어 출력된 것이 보인다.
그렇다면 CustomerName과 Country 두가지를 한꺼번에 보려면 어떻게해야할까?
SELECT CustomerName, Country FROM Customers라고 하면된다.
![](https://t1.daumcdn.net/cfile/tistory/2440563E57CE459807)
결과는 예상대로이다.
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 라고 입력하면 된다.
![](https://t1.daumcdn.net/cfile/tistory/233AA44457CE577118)
DISTINCT를 사용하지 않았을때에는 모든 레코드의 수(91개) 만큼의 나라가 출력이 되었는데
DISTINCT를 사용하면 중복되는 나라를 모두 삭제한 21개의 나라만 출력이 되는 것을 볼 수 있다.
SELECT는 가장 기본적인 문법인만큼 사용빈도가 굉장히 많고, 그만큼 그렇게 어렵지 않다.
후에 다른 쿼리문들과 합쳐서 사용할 경우 헷갈릴 수가 있기 때문에 미리미리 익숙해지는게 좋을 것 같다.
아마 앞으로 나오는 쿼리문들도 대부분 SELECT와 결합해서 사용할 것이다.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
본 게시물은 공부한 내용을 바탕으로 작성한 글로써, 점차 수정 및 추가를 통해 내용을 발전시킬 계획입니다.
따라서 오타 및 내용상의 오류, 추가할 내용 등이 있을 경우 주저 없이 알려주시면 감사하겠습니다.
궁금한점을 물어보시면 제가 아는 선에서 최대한으로 알려드리겠습니다.
참고한 사이트
'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 |