SELECT란?
- 데이터 테이블을 조회할 수 있는 데이터 조작어 ( DML )
예제 테이블 1 ( users )
index |
name |
salary |
email |
1 |
홍길동 |
10000 |
aaa@naver.com |
2 |
김아무개 |
50000 |
aaa@naver.com |
3 |
박아무개 |
30000 |
aaa@naver.com |
4 |
이무개 |
20000 |
aaa@naver.com |
5 |
지우개 |
40000 |
aaa@naver.com |
- 데이터 조회
아래 SQL문은 예제 테이블1로 작성하였습니다.
#데이터를 조회하는 SELECT문의 기본
SELECT * FROM users;
결과
index |
name |
salary |
email |
1 |
홍길동 |
10000 |
aaa@naver.com |
2 |
김아무개 |
50000 |
aaa@naver.com |
3 |
박아무개 |
30000 |
aaa@naver.com |
4 |
이무개 |
20000 |
aaa@naver.com |
5 |
지우개 |
40000 |
aaa@naver.com |
#조건을 충족하는 데이터를 조회하는 SELECT문
SELECT * FROM users WHERE index = '1';
결과
index |
name |
salary |
email |
1 |
홍길동 |
10000 |
aaa@naver.com |
#데이터의 특정 열 ( column )만 조회하는 SELECT문
SELECT index,name FROM users;
결과
index |
name |
1 |
홍길동 |
2 |
김아무개 |
3 |
박아무개 |
4 |
이무개 |
5 |
지우개 |
#SELECT문의 정렬 순서 지정
SELECT * FROM users ORDER BY index DESC;
- ASC : 오름차순
- DESC : 내림차순
결과
index |
name |
salary |
email |
5 |
지우개 |
40000 |
aaa@naver.com |
4 |
이무개 |
20000 |
aaa@naver.com |
3 |
박아무개 |
30000 |
aaa@naver.com |
2 |
김아무개 |
50000 |
aaa@naver.com |
1 |
홍길동 |
10000 |
aaa@naver.com |
#SELECT문의 중복데이터 제거
SELECT DISTINCT email FROM users ;
실제 값이 지워지는게 아닌 출력에서만 지워는 것 입니다.
결과
#SQL문의 별칭 사용
SELECT name as '이름', salary '급여' FROM users;
- 해당 열 ( column )에 별명을 붙여 조회에 편리함을 더해줌
- as 는 생략가능
결과
이름 |
급여 |
홍길동 |
10000 |
김아무개 |
50000 |
박아무개 |
30000 |
이무개 |
20000 |
지우개 |
40000 |
#SELECT문의 데이터 값 연결하기
SELECT CONCAT(name,salary) FROM users;
- CONCAT( 열1, 열2 ) 로 데이터 결과를 연결가능
- CONCAT ( 열1, 열2 ) AS '별칭' 으로 연결된 값에 별칭 부여 가능
결과
CONCAT(name,salary) |
홍길동10000 |
김아무개50000 |
박아무개30000 |
이무개20000 |
지우개40000 |
#SELECT문의 데이터 값 연산하기
SELECT index, name, salary, salary+10000, salary-10000 FROM users;
- 산술 연산자 ( +, -, *, / ) 모두 가능.
결과
index |
name |
salary |
salary+10000 |
salary-10000 |
1 |
홍길동 |
10000 |
20000 |
0 |
2 |
김아무개 |
50000 |
60000 |
40000 |
3 |
박아무개 |
30000 |
40000 |
20000 |
4 |
이무개 |
20000 |
30000 |
10000 |
5 |
지우개 |
40000 |
50000 |
30000 |
- WHERE절을 이용한 데이터 조건 조회
#WHERE절에 필요한 비교연산자
연산자 |
의미 |
A = B |
A와B는 같다 |
A <> B, A != B |
A와B는 같지 않다 |
A > B |
A가 B보다 크다 |
A >= B |
A가 B보다 크거나 같다 |
A < B |
A가 B보다 작다 |
A <= B |
A가 B보다 작거나 같다 |
#조건이 1개인 경우
SELECT * FROM users WHERE index = '2';
결과
index |
name |
salary |
email |
2 |
김아무개 |
50000 |
aaa@naver.com |
or
SELECT * FROM users WHERE salary > 20000;
결과
index |
name |
salary |
email |
2 |
김아무개 |
50000 |
aaa@naver.com |
3 |
박아무개 |
30000 |
aaa@naver.com |
5 |
지우개 |
40000 |
aaa@naver.com |
#조건 확장을 위한 SQL 연산자
연산자 |
의미 |
BETWEEN A AND B |
A와B 사이의 값 ( A, B 포함 ) |
IN(A,B,C) |
A,B,C 중 어느 값이라도 일치한다. |
LIKE 'A' |
비교 문자와 형태가 일치한다. ( % 사용 ) |
IS NULL |
NULL 판단 |
#BETWEEN 연산자
SELECT * FROM users WHERE index BETWEEN 2 AND 4;
결과
index |
name |
salary |
email |
2 |
김아무개 |
50000 |
aaa@naver.com |
3 |
박아무개 |
30000 |
aaa@naver.com |
4 |
이무개 |
20000 |
aaa@naver.com |
or
SELECT * FROM users WHERE salary BETWEEN 20000 AND 40000;
결과
index |
name |
salary |
email |
3 |
박아무개 |
30000 |
aaa@naver.com |
4 |
이무개 |
20000 |
aaa@naver.com |
5 |
지우개 |
40000 |
aaa@naver.com |
#IN 연산자
SELECT * FROM users WHERE index IN (2,4,5);
결과
index |
name |
salary |
email |
2 |
김아무개 |
50000 |
aaa@naver.com |
4 |
이무개 |
20000 |
aaa@naver.com |
5 |
지우개 |
40000 |
aaa@naver.com |
or
SELECT * FROM users WHERE name IN ('홍길동','이무개');
결과
index |
name |
salary |
email |
1 |
홍길동 |
10000 |
aaa@naver.com |
4 |
이무개 |
20000 |
aaa@naver.com |
#LIKE 연산자
SELECT * FROM users WHERE name LIKE '개';
결과
SELECT * FROM users WHERE name LIKE '%개';
결과
index |
name |
salary |
email |
2 |
김아무개 |
50000 |
aaa@naver.com |
3 |
박아무개 |
30000 |
aaa@naver.com |
4 |
이무개 |
20000 |
aaa@naver.com |
5 |
지우개 |
40000 |
aaa@naver.com |
SELECT * FROM users WHERE name LIKE '%무%';
- %는 해당 단어의 앞 뒤로의 모든 문자라는 뜻을 가지고있다.
결과
index |
name |
salary |
email |
2 |
김아무개 |
50000 |
aaa@naver.com |
3 |
박아무개 |
30000 |
aaa@naver.com |
4 |
이무개 |
20000 |
aaa@naver.com |