[SQL] SELECT 문 사용하기..

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

   SELECT 문 사용하기..

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

데이터양이 많이 지면..막연히 [ select * from table_name ] 와 같이 검색

하면..눈과 기억력이 무척 좋아야 겠죠..!! 그렇기 때문에 대량의 DB 를 검

색할땐 자신이 원하는 내용만을 검색할수 있는 select 구문을 이용하여야

합니다. 이제 select 구문과 같이 사용할수 있는 조건문에 대해 알아 보도

록 하겠습니다.

1. 원하는 행만 검색하기

원하는 행 검색이란..검색하고자 하는 컬럼 값을 포함하는 행만을 검색하

도록 하는 방법이다.

일단 member 테이블의 모든 내용을 검색합니다.

mysql> select * from member;

+—-+——–+——————-+——+——+——–+

| NO | NAME   | EMAIL             | SEX  | AREA | HOB    |

+—-+——–+——————-+——+——+——–+

|  0 | 서진우 | alang at kobis.net   | m    | 서울 | 운동  

|

|  1 | 박창현 | macs911 at kobis.net | m    | 서울 | 운동

|

|  2 | 김수경 | invoice at kobis.net | w    | 서울 |

컴퓨터 |

|  3 | 신상철 | ttt at kobis.net     | m    | 경기 | 컴퓨터 |

|  4 | 김승진 | bbb at kobis.net     | m    | 서울 | 컴퓨터 |

|  5 | 이필유 | ccc at kobis.net     | w    | 경기 | 요리   |

|  6 | 이광수 | ddd at kobis.net     | m    | 서울 | 운동   |

+—-+——–+——————-+——+——+——–+

7 rows in set (0.00 sec)

이번엔 회원중 여자분 만을 검색하도록 하겠습니다.

mysql> select * from member where sex=’w’;

+—-+——–+——————-+——+——+——–+

| NO | NAME   | EMAIL             | SEX  | AREA | HOB    |

+—-+——–+——————-+——+——+——–+

|  2 | 김수경 | invoice at kobis.net | w    | 서울 |

컴퓨터 |

|  5 | 이필유 | ccc at kobis.net     | w    | 경기 | 요리   |

+—-+——–+——————-+——+——+——–+

2 rows in set (0.00 sec)

여기서 where 구문을 이용하여 원하는 행만을 검색할수 있는 예제이다.

위의 구문을 풀이 하면 member 란 테이블에서 sex 컬럼값이 w 인 행만

검색하란 의미이다.

2. 원하는 열만 검색하기

이번엔 원하는 열만 검색하는 방법이다. 원하는 열 검색이란..

검색하고자 하는 컬럼값만을 출력하도록 하는 것이다.

즉 만일 회원들의 이름만 검색하고자 한다. 혹은 회원들의 email 만

검색하고자 한다.. 이럴경우 사용하는 방법이다.

컬럼중 NAME 컬럼열만 검색

mysql> select name from member;

+——–+

| name   |

+——–+

| 서진우 |

| 박창현 |

| 김수경 |

| 신상철 |

| 김승진 |

| 이필유 |

| 이광수 |

+——–+

7 rows in set (0.00 sec)

컬럼중 EMAIL 컬럼열만 검색

mysql> select email from member;

+——————-+

| email             |

+——————-+

| alang at kobis.net   |

| macs911 at kobis.net |

| invoice at kobis.net |

| ttt at kobis.net     |

| bbb at kobis.net     |

| ccc at kobis.net     |

| ddd at kobis.net     |

+——————-+

7 rows in set (0.00 sec)

컬럼중 NAME 과 EMAIL 만 검색

mysql> select name,email from member;

+——–+——————-+

| name   | email             |

+——–+——————-+

| 서진우 | alang at kobis.net   |

| 박창현 | macs911 at kobis.net |

| 김수경 | invoice at kobis.net |

| 신상철 | ttt at kobis.net     |

| 김승진 | bbb at kobis.net     |

| 이필유 | ccc at kobis.net     |

| 이광수 | ddd at kobis.net     |

+——–+——————-+

위와 같이 [ select 검색컬럼명 from 테이블명 ] 형식으로 원하는 열만

검색할수 있다.

원하는 컬럼가 여러개 일경우는 (,) 로 구분하면 된다.

고급 SELECT 문 사용하기..

1. 중복행 제거

각 컬럼에서 중복된 행을 없애기 위하여 select 구문의 “검색컬럼명”

앞에 distinct 를 넣어 주면 된다.

mysql> select distinct sex from member;

+——+

| sex  |

+——+

| m    |

| w    |

+——+

sex 컬럼값에 중복된 행을 제거하고 대표대는  값만을  출력하게 된다.

수학의 교집합에 해당하는 것이다.

mysql> select distinct sex,name from member;

+——+——–+

| sex  | name   |

+——+——–+

| m    | 서진우 |

| m    | 박창현 |  

| w    | 김수경 |

| m    | 신상철 |

| m    | 김승진 |  

| w    | 이필유 |  

| m    | 이광수 |  

+——+——–+  

위의 예문은 distinct 를 이용하여 컬럼값을 그룹별로 묶어서 출력하는

예이다.

2, where 구문에서 논리 연산과 관련 연산 사용하기

만일 where 구문 사용에서 여러가지 연산구문을 이용하여 다양한 검색을 행할수

있다. 사용되는 기호엔 or, and, =, !=, <, > 등이 있다.

no 컬럼값이 1 혹은 3 인 행을 검색하는 구문예이다.

mysql> select * from member where no=’1′ or no=’3′;

+—-+——–+——————-+——+

| NO | NAME   | EMAIL             | SEX  |

+—-+——–+——————-+——+

|  1 | 박창현 | macs911 at kobis.net | m    |

|  3 | 김승진 | jinee at kobis.net   | m    |

+—-+——–+——————-+——+

no 컬럼값이 1보다 크고 4보다 작은 행은 검색하는 구문예이다.

mysql> select * from member where no < 4 and no > 1 ;

+—-+——–+——————+——+

| NO | NAME   | EMAIL            | SEX  |

+—-+——–+——————+——+

|  2 | 신상철 | scsinn at kobis.net | m    |

|  3 | 김승진 | jinee at kobis.net  | m    |

+—-+——–+——————+——+

2 rows in set (0.00 sec)

no 컬럼값이 1 인 필드를 제외한 나머지 필드를 검색한다.

mysql> select * from member where no != ‘1’;

+—-+——–+——————-+——+——+——–+

| NO | NAME   | EMAIL             | SEX  | AREA | HOB    |

+—-+——–+——————-+——+——+——–+

|  0 | 서진우 | alang at kobis.net   | m    | 서울 | 운동  

|

|  2 | 김수경 | invoice at kobis.net | w    | 서울 |

컴퓨터 |

|  3 | 신상철 | ttt at kobis.net     | m    | 경기 | 컴퓨터 |

|  4 | 김승진 | bbb at kobis.net     | m    | 서울 | 컴퓨터 |

|  5 | 이필유 | ccc at kobis.net     | w    | 경기 | 요리   |

|  6 | 이광수 | ddd at kobis.net     | m    | 서울 | 운동   |

+—-+——–+——————-+——+——+——–+

6 rows in set (0.00 sec)

3. 내림차순, 오름차순 정렬 검색

DB 를 검색하다 보면 테이블에 저장된 값들을 컬럼별로 정렬해서 출력해야 할

경우가 생긴다. 이때 사용되는것이 [ ORDER BY ] 이다.

ORDER BY 컬럼명 ASC : 내림차순(정)

ORDER BY 컬럼명 DESC : 오름차순 (역)

내림차순에서 ASC 는 생략 가능하다.

차순은 영문은 abc… 한글은 ㄱ,ㄴ,ㄷ.. 숫자는 1,2,3.. 순으로 정해진다.

mysql> select * from member order by no asc;

+—-+——–+——————-+——+——+——–+

| NO | NAME   | EMAIL             | SEX  | AREA | HOB    |

+—-+——–+——————-+——+——+——–+

|  0 | 서진우 | alang at kobis.net   | m    | 서울 | 운동  

|

|  1 | 박창현 | macs911 at kobis.net | m    | 서울 | 운동

|

|  2 | 김수경 | invoice at kobis.net | w    | 서울 |

컴퓨터 |

|  3 | 신상철 | ttt at kobis.net     | m    | 경기 | 컴퓨터 |

|  4 | 김승진 | bbb at kobis.net     | m    | 서울 | 컴퓨터 |

|  5 | 이필유 | ccc at kobis.net     | w    | 경기 | 요리   |

|  6 | 이광수 | ddd at kobis.net     | m    | 서울 | 운동   |

+—-+——–+——————-+——+——+——–+

7 rows in set (0.00 sec)

mysql> select * from member order by sex asc;

mysql> select * from member order by sex asc;

+—-+——–+——————-+——+——+——–+

| NO | NAME   | EMAIL             | SEX  | AREA | HOB    |

+—-+——–+——————-+——+——+——–+

|  0 | 서진우 | alang at kobis.net   | m    | 서울 | 운동  

|

|  1 | 박창현 | macs911 at kobis.net | m    | 서울 | 운동

|

|  3 | 신상철 | ttt at kobis.net     | m    | 경기 | 컴퓨터 |

|  4 | 김승진 | bbb at kobis.net     | m    | 서울 | 컴퓨터 |

|  6 | 이광수 | ddd at kobis.net     | m    | 서울 | 운동   |

|  2 | 김수경 | invoice at kobis.net | w    | 서울 |

컴퓨터 |

|  5 | 이필유 | ccc at kobis.net     | w    | 경기 | 요리   |

+—-+——–+——————-+——+——+——–+

7 rows in set (0.00 sec)

mysql> select * from member order by name;

+—-+——–+——————-+——+——+——–+

| NO | NAME   | EMAIL             | SEX  | AREA | HOB    |

+—-+——–+——————-+——+——+——–+

|  2 | 김수경 | invoice at kobis.net | w    | 서울 |

컴퓨터 |

|  4 | 김승진 | bbb at kobis.net     | m    | 서울 | 컴퓨터 |

|  1 | 박창현 | macs911 at kobis.net | m    | 서울 | 운동

|

|  0 | 서진우 | alang at kobis.net   | m    | 서울 | 운동  

|

|  3 | 신상철 | ttt at kobis.net     | m    | 경기 | 컴퓨터 |

|  6 | 이광수 | ddd at kobis.net     | m    | 서울 | 운동   |

|  5 | 이필유 | ccc at kobis.net     | w    | 경기 | 요리   |

+—-+——–+——————-+——+——+——–+

7 rows in set (0.00 sec)

위의 예제들은 각각 no,sex,name 컬럼들을 내림차순으로 정렬한것이다.

다음예는 오름차순으로 정렬을 해 보도록 하자.

mysql> select * from member order by no desc;

+—-+——–+——————-+——+——+——–+

| NO | NAME   | EMAIL             | SEX  | AREA | HOB    |

+—-+——–+——————-+——+——+——–+

|  6 | 이광수 | ddd at kobis.net     | m    | 서울 | 운동   |

|  5 | 이필유 | ccc at kobis.net     | w    | 경기 | 요리   |

|  4 | 김승진 | bbb at kobis.net     | m    | 서울 | 컴퓨터 |

|  3 | 신상철 | ttt at kobis.net     | m    | 경기 | 컴퓨터 |

|  2 | 김수경 | invoice at kobis.net | w    | 서울 |

컴퓨터 |

|  1 | 박창현 | macs911 at kobis.net | m    | 서울 | 운동

|

|  0 | 서진우 | alang at kobis.net   | m    | 서울 | 운동  

|

+—-+——–+——————-+——+——+——–+

7 rows in set (0.00 sec)

mysql> select * from member order by sex desc;

+—-+——–+——————-+——+——+——–+

| NO | NAME   | EMAIL             | SEX  | AREA | HOB    |

+—-+——–+——————-+——+——+——–+

|  2 | 김수경 | invoice at kobis.net | w    | 서울 |

컴퓨터 |

|  5 | 이필유 | ccc at kobis.net     | w    | 경기 | 요리   |

|  0 | 서진우 | alang at kobis.net   | m    | 서울 | 운동  

|

|  1 | 박창현 | macs911 at kobis.net | m    | 서울 | 운동

|

|  3 | 신상철 | ttt at kobis.net     | m    | 경기 | 컴퓨터 |

|  4 | 김승진 | bbb at kobis.net     | m    | 서울 | 컴퓨터 |

|  6 | 이광수 | ddd at kobis.net     | m    | 서울 | 운동   |

+—-+——–+——————-+——+——+——–+

7 rows in set (0.01 sec)

mysql> select * from member order by name desc;

+—-+——–+——————-+——+——+——–+

| NO | NAME   | EMAIL             | SEX  | AREA | HOB    |

+—-+——–+——————-+——+——+——–+

|  5 | 이필유 | ccc at kobis.net     | w    | 경기 | 요리   |

|  6 | 이광수 | ddd at kobis.net     | m    | 서울 | 운동   |

|  3 | 신상철 | ttt at kobis.net     | m    | 경기 | 컴퓨터 |

|  0 | 서진우 | alang at kobis.net   | m    | 서울 | 운동  

|

|  1 | 박창현 | macs911 at kobis.net | m    | 서울 | 운동

|

|  4 | 김승진 | bbb at kobis.net     | m    | 서울 | 컴퓨터 |

|  2 | 김수경 | invoice at kobis.net | w    | 서울 |

컴퓨터 |

+—-+——–+——————-+——+——+——–+

7 rows in set (0.00 sec)

이밖에 너무나 많은 select 구문 응용법이 있는데, 이는 다음 기회에

알아보도록하자..  다음편은 alter 구문에 대해여 알아보도록 하겠다.

서진우

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.