NULL과 비교 연산
- NULL은 비교연산자를 사용할 수 없음.
- NULL은 아래와 같이 사용함.
, 컬럼 IS NULL
, 컬럼 IS NOT NULL
BETWEEN .. AND 연산자
SELECT * | 컬럼, ......
FROM 테이블;
WHERE 컬럼 BETWEEN 값1 AND 값2
ORDER BY 컬럼 ......
- '컬럼 >= 값1 AND 컬럼 <= 값2'와 동일하다.
- 값1은 반드시 값2보다 작아야한다.
IN 연산자
SELECT * | 컬럼, ......
FROM 테이블;
WHERE 컬럼 IN (값1, 값2 ...)
ORDER BY 컬럼 ......
- 값 중 하나라도 일치하면 값이 출력됨.
- OR 연산자와 = 연산자로 교환 가능.
- 가독성이 매우 높음.
LIKE 연산자
SELECT * | 컬럼, ......
FROM 테이블;
WHERE 컬럼 LIKE '리터럴'
ORDER BY 컬럼 ......
- 와일드 문자와 함꼐 사용해야 됨.
, %: 문자열 공백을 포함.
, _: 문자
와일드 문자
예 | 설명 | 검색 대상 |
'경%' | '경'으로 시작하는 모든 문자열 | 경, 경제, 경범죄, 경영학과 ... |
'%과' | '과'로 끝나는 모든 문자열 | 과, 다과, 화학과, 물리학과 ... |
'%김%' | '김'이란 글자가 들어간 모든 문자열 | 김, 김씨, 돌김, 되새김질 ... |
'화_' | '화'로 시작하는 두글자 단어 | 화학, 화약, 화상 ... |
'__화' | '화'로 끝나는 세 글자 단어 | 무궁화, 해당화, 운동화 ... |
'_동_' | '동'이 가운데 들어간 세글자 단어 | 원동기, 전동차 ... |
'%이#%%' | ESCAPE '#' 으로 지정한 경우, '이%' 가 포함된 문자열 | |
'_#%_' | ESCAPE '#' 으로 지정한 경우, '%'가 포함된 세 글자 단어 |
실습
1. 1999년에서 2001년까지 부임한 교수의 명단을 검색한다.
SELECT * FROM professor
WHERE hiredate BETWEEN '1998/12/13' AND '2002/01/01'
ORDER BY hiredate;
2. 정교수와 조교수를 검색한다.
SELECT * FROM professor
WHERE orders IN('정교수', '조교수');
3. 학점수가 1학점, 2학점인 과목을 검색한다.
SELECT * FROM course
WHERE st_num IN(1, 2);
4. 1,2 학년 학생 중에 평점이 2.0에서 3.0사이인 학생을 검색한다.
SELECT * FROM student
WHERE syear IN(1, 2) AND avr BETWEEN 2.0 AND 3.0;
5. 물리, 화학과 학생 중 4.5 환산 평점이 3.5에서 4.0 사이인 학생을 검색한다.
SELECT * FROM student
WHERE major IN('물리', '화학') AND (avr*4.5/4.0) BETWEEN 3.5 AND 4.0;
6. 물리, 화학과 학생의 정보를 학년별 성적순으로 검색한다.
SELECT * FROM student
WHERE major IN('물리', '화학')
ORDER BY syear, avr DESC;
7. 물리, 화학과 교수 중에 1999년에서 2000년 사이에 부임한 교수의 정보를 직위별로 검색한다.
SELECT * FROM professor
WHERE section IN('물리', '화학') AND hiredate BETWEEN '1998/12/31' AND '2001/01/01'
ORDER BY orders;
8. 교수가 지정되지 않은 과목 중에 학점이 3학점인 과목을 검색한다.
SELECT * FROM course
WHERE pno IS NULL AND st_num = 3;
9. 화학 관련된 과목 중 평점이 2학점 이하인 과목을 검색한다. : 화학 관련 과목은 과목 명에 화학이 들어간 과목을 의미한다.
SELECT * FROM course
WHERE cname LIKE '%화학%' AND st_num <= 2;
10. 화학과 학생 중에 성이 권씨인 학생을 검색한다.
SELECT * FROM student
WHERE major = '화학' AND sname LIKE '권%';
2024.01.24 - [SQL] - SQL select - 실습1
<테이블 정보>
'SQL' 카테고리의 다른 글
SQL select - 실습8 (0) | 2024.01.30 |
---|---|
SQL select - 실습7 (0) | 2024.01.30 |
SQL select - 실습5 (1) | 2024.01.29 |
SQL select - 실습4 (1) | 2024.01.29 |
SQL select - 실습3 (1) | 2024.01.29 |