관계 연산자
SELECT [DISTINCT | ALL] 컬럼, 컬럼 ...
FROM 테이블
WHERE 조건 [관계 연산자 조건 ...]
ORDER BY 컬럼 [ASC/DESC], 컬럼 [ASC/DESC].......
예제 1. 다음 각 조건에 맞는 데이터를 검색한다.
- 20번 부서 사원 중에 급여가 2000 이상인 사원을 검색한다.
SELECT * FROM emp
WHERE dno = '20'
AND sal >= 2000;
ENO ENAME SEX JOB MGR HDATE SAL COMM DNO
------- ---------- --- ------- -------- ---------- ---------- ---------- ----
1002 김주란 여 모델링 0201 1992/03/03 4100 330 20
3002 권아현 여 분석 1002 2001/01/29 2900 20
0120 김경현 남 지원 1002 1999/09/05 4000 2500 20
- 20번 부서 사원 중에 급여가 2000 이상이고 모델링 업무를 담당하는 사원을 검색한다.
SELECT * FROM emp
WHERE dno = '20'
AND sal >= 2000
AND job = '모델링';
ENO ENAME SEX JOB MGR HDATE SAL COMM DNO
------- ---------- --- ------- -------- ---------- ---------- ---------- ----
1002 김주란 여 모델링 0201 1992/03/03 4100 330 20
예제 2. 다음 두 문장을 실행하고 결과를 해석해 보자.
SELECT * FROM emp
WHERE dno = 10 OR sal > 1600 AND comm > 600;
ENO ENAME SEX JOB MGR HDATE SAL COMM DNO
------- ---------- --- ------- -------- ---------- ---------- ---------- ----
0201 안영숙 여 지원 0001 1991/02/01 3900 2000 01
0202 손하늘 여 지원 0001 1991/12/01 3510 980 01
1001 문시현 남 모델링 0201 1991/02/01 4500 520 10
2001 남궁연호 남 개발 0202 1993/12/13 3950 200 10
2007 이초록 남 개발 0001 1992/09/05 1989 2300 30
3001 김선유 남 분석 1001 1998/10/17 3200 300 10
0269 권나현 여 분석 0301 2015/05/21 2600 1900 10
우선순위가 AND가 OR보다 높기 때문에 답이 맞는지 확인이 어렵다.
괄호를 포함시켜 우선순위를 표시해준다.
SELECT * FROM emp
WHERE (dno = 10 OR sal > 1600) AND comm > 600;
ENO ENAME SEX JOB MGR HDATE SAL COMM DNO
------- ---------- --- ------- -------- ---------- ---------- ---------- ----
0201 안영숙 여 지원 0001 1991/02/01 3900 2000 01
0202 손하늘 여 지원 0001 1991/12/01 3510 980 01
2007 이초록 남 개발 0001 1992/09/05 1989 2300 30
0269 권나현 여 분석 0301 2015/05/21 2600 1900 10
0401 김진성 남 회계 1001 2008/03/13 3200 1000 10
0120 김경현 남 지원 1002 1999/09/05 4000 2500 20
LIKE 연산자
SELECT [DISTINCT | ALL] 컬럼, 컬럼 ...
FROM 테이블
WHERE 컬럼 LIKE '비교 문자열'
ORDER BY 컬럼 [ASC/DESC], 컬럼 [ASC/DESC].......;
예제 3. 다음 조건에 맞는 사원을 검색한다.
- 김씨 성을 가진 사원
SELECT * FROM emp
WHERE ename LIKE '김%';
ENO ENAME SEX JOB MGR HDATE SAL COMM DNO
------- ---------- --- ------- -------- ---------- ---------- ---------- ----
1002 김주란 여 모델링 0201 1992/03/03 4100 330 20
0309 김선유 남 회계 0302 2011/01/03 900 90 02
3001 김선유 남 분석 1001 1998/10/17 3200 300 10
0702 김민지 남 회계 0301 2017/01/09 1100 60 02
0401 김진성 남 회계 1001 2008/03/13 3200 1000 10
0120 김경현 남 지원 1002 1999/09/05 4000 2500 20
- 이름이 '하늘'인 사원
SELECT * FROM emp
WHERE ename LIKE '%하늘';
ENO ENAME SEX JOB MGR HDATE SAL COMM DNO
------- ---------- --- ------- -------- ---------- ---------- ---------- ----
0202 손하늘 여 지원 0001 1991/12/01 3510 980 01
- 성과 이름이 각각 한 글자인 사원을 검색한다.
SELECT * FROM emp
WHERE ename LIKE '__';
선택된 레코드가 없습니다.
예제 4. 이름에 '%' 문자가 포함된 사원을 검색한다.
SELECT eno, ename
FROM emp
WHERE ename LIKE '%#%%' ESCAPE '#';
선택된 레코드가 없습니다.
실습
1. 화학과와 물리학과 학생을 검색한다.
SELECT *
FROM student
WHERE major = '화학' OR major = '물리';
SNO SNAME SEX SYEAR MAJOR AVR
------- ---------- --- ---------- ------- ----------
915301 정동상 남 4 화학 .95
905301 유태지 남 4 화학 3.28
905302 정욱상 남 4 화학 1.44
915303 정욱주 남 4 화학 .95
915304 권보수 남 4 화학 2.32
915305 최정희 여 3 화학 .58
925306 김재백 남 2 화학 2.78
2. 화학과가 아닌 학생 중에 1학년 학생을 검색한다.
SELECT *
FROM student
WHERE major != '화학' AND syear = 1;
SNO SNAME SEX SYEAR MAJOR AVR
------- ---------- --- ---------- ------- ----------
948203 황보우리 여 1 식영 2.83
948204 서창동 남 1 식영 3.21
943901 최혜원 여 1 생물 2.54
943902 하정자 남 1 생물 3.25
943903 유지아 여 1 생물 1.99
943905 유태지 남 1 생물 2.98
944511 김형진 여 1 물리 2.76
3. 화학과 3학년 학생을 검색한다.
SELECT *
FROM student
WHERE major = '화학' AND syear = 3;
SNO SNAME SEX SYEAR MAJOR AVR
------- ---------- --- ---------- ------- ----------
915305 최정희 여 3 화학 .58
925302 이지영 여 3 화학 1.68
925301 김환 여 3 화학 3.58
925305 황현정 여 3 화학 2.98
4. 평점이 2.0에서 3.0 사이인 학생 검색한다.
SELECT *
FROM student
WHERE avr > 2.0 AND avr < 3.0;
SNO SNAME SEX SYEAR MAJOR AVR
------- ---------- --- ---------- ------- ----------
923904 한현석 남 3 생물 2.45
915304 권보수 남 4 화학 2.32
948203 황보우리 여 1 식영 2.83
925306 김재백 남 2 화학 2.78
933902 김현수 남 2 생물 2.48
933903 정승동 남 2 생물 2.99
945303 남궁경아 여 1 화학 2.36
5. 교수가 지정되지 않은 과목 중에 학점이 3학점인 과목을 검색한다.
SELECT *
FROM course
WHERE pno IS NULL AND st_num = 3;
선택된 레코드가 없습니다.
6. 화학 관련된 과목 중 학점수가 2학점 이하인 과목을 검색한다.
(화학 관련 과목은 과목명에 화학이 들어간 과목을 의미한다.)
SELECT *
FROM course
WHERE cname LIKE '%화학%' AND st_num <= 2;
CNO CNAME ST_NUM PNO
------- ------------ ---------- -------
1211 일반화학실험 2 1001
1214 무기화학 2 1004
1216 환경화학 2 1006
1218 생화학 2 1008
2369 무기화학실험 2
7. 화학과 정교수를 검색한다.
SELECT *
FROM professor
WHERE section LIKE '화학' AND orders LIKE '정교수';
PNO PNAME SECTION ORDERS HIREDATE
------- ---------- ------- ------- ----------
1001 송강 화학 정교수 2002/08/12
8. 화학과 학생 중에 성이 권씨인 학생을 검색한다.
SELECT *
FROM student
WHERE sname LIKE '권%';
SNO SNAME SEX SYEAR MAJOR AVR
------- ---------- --- ---------- ------- ----------
915304 권보수 남 4 화학 2.32
925601 권운각 남 3 유공 2.9
924501 권석복 여 3 물리 4
935604 권석현 여 2 유공 2.99
945604 권현 남 1 유공 2.89
9. 부임일이 1995년 이전인 정교수를 검색한다.
SELECT *
FROM professor
WHERE hiredate < '1995/01/01' AND orders LIKE '정교수';
PNO PNAME SECTION ORDERS HIREDATE
------- ---------- ------- ------- ----------
1009 이준영 물리 정교수 1991/10/04
1035 장관용 식영 정교수 1985/07/28
10. 성과 이름이 각각 한글자인 교수를 검색한다.
SELECT *
FROM professor
WHERE pname LIKE '__';
PNO PNAME SECTION ORDERS HIREDATE
------- ---------- ------- ------- ----------
1001 송강 화학 정교수 2002/08/12
1022 이준 생물 부교수 1989/05/05
'SQL 공부 기록' 카테고리의 다른 글
SQL 8 - 조인 : 등가 조인(Equi join)과 비등가 조인(Non Equi-join) (0) | 2021.11.01 |
---|---|
SQL 7 - BETWEEN과 IN 연산자 (0) | 2021.10.28 |
SQL 5 - WHERE 절을 이용한 조건 검색 (0) | 2021.10.26 |
SQL 4 - 정렬을 이용한 자료 검색 및 그룹 검색 (0) | 2021.10.26 |
SQL 페이지, 글자 포멧 설정 (0) | 2021.10.25 |