[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 구문에 대해여 알아보도록 하겠다.