관계 연산자

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

+ Recent posts