WHERE
SELECT * | 컬럼, ……
FROM 테이블
WHERE 검색조건
ORDER BY 컬럼 [ASC|DESC], 컬럼 [ASC|DESC], .....
AS 예약어를 통한 조건 검색 불가능
분류 | 연산자 | 뜻 |
비교 연산자 (관계) |
= | 같다 |
< | 보다 작다 | |
<= | 보다 작거나 같다 | |
> | 보다 크다 | |
>= | 보다 크거나 같다 | |
!= | NOT (같지 않다) |
|
<> | ||
^= | ||
논리 연산자 |
AND | 둘다 T여야 T (여러 조건 합칠때 사용) |
OR | 하나라도 T면 T (여러 조건 합칠때 사용) |
|
BETWEEN | AND와 같이 사용 해당 값들 사이 |
|
NOT | 부정 T->F / F->T | |
LIKE | 패턴이 같다면 출력 % : 조건을 포함 모든 문자 _ : 조건을 포함하는 한 글자 |
|
IN (값1, 값2, ...) | WHERE절 내에서 선택하고자 하는 값만 고르는 연산자 |
|
IS NULL | 데이터가 NULL인 것 | |
비트 단위 논리 연산자 |
& | 비트 단위 AND |
| | 비트 단위 OR |
LIKE - 예시
'경%' '경'으로 시작하는 모든 문자열 경, 경제, 경범죄, 경영학과 ...
'%과' '과'로 끝나는 모든 문자열 과, 다과, 화학과, 물리학과 ...
'%김%' '김'이란 글자가 들어간 모든 문자열 김, 김씨, 돌김, 되새김질 ...
'화_' '화'로 시작하는 두글자 단어 화학, 화약, 화상 ...
'__화' '화'로 끝나는 세 글자 단어 무궁화, 해당화, 운동화 ...
'_동_' '동'이 가운데 들어간 세글자 단어 원동기, 전동차 ...
'%이#%%' ESCAPE '#' 으로 지정한 경우, '이%' 가 포함된 문자열
'_#%_' ESCAPE '#' 으로 지정한 경우, '%'가 포함된 세 글자 단어
비트 단위 논리 연산자(2진법) - 예시
SELECT 1&0; //0으로 출력
SELECT 1&1; //1로 출력
SELECT 5&7; //5로 출력(101&111=101)
SELECT 1|1; //1로 출력
SELECT 1|0; //1로 출력
SELECT 5|7; // 7로 출력 (101|111=111)
관계 연산자 예제
1. 화학과 학생을 검색한다.
SELECT sno, sname, major
FROM student
WHERE major='화학';
2. 평점이 2.0 미만인 학생을 검색한다.
SELECT sno, sname, avr
FROM student
WHERE avr<2.0;
3. 권현 학생의 평점을 검색한다.
SELECT sno, sname, avr
FROM student
WHERE sname='권현';
4. 정교수의 명단을 검색한다.
SELECT pno, pname, orders
FROM professor
WHERE orders = '정교수';
5. 화학과 소속 교수의 명단을 검색한다.
SELECT pno, pname, section
FROM professor
WHERE section='화학';
6. 송강 교수의 정보를 검색한다.
SELECT *
FROM professor
WHERE pname='송강';
7. 학년별로 화학과 학생의 성적을 검색한다.
SELECT sno, sname, syear, major, avr
FROM student
WHERE major ='화학'
ORDER BY syear DESC, avr DESC;
8. 2000년 이전에 부임한 교수의 정보를 부임일순으로 검색한다.
SELECT *
FROM professor
WHERE hiredate<'2000/01/01'
ORDER BY hiredate DESC;
논리 연산자 예제
1. 1999년에서 2001년까지 부임한 교수의 명단을 검색한다.
SELECT pno, pname
FROM professor
WHERE hiredate BETWEEN '1999/01/01' AND '2001/12/31';
//데이터 포맷을 'YYYY/MM/DD:24HH:MI:SS'으로 바꾸면
//WHERE hiredate BETWEEN '1999/01/01:00:00:00' AND '2001/12/31:23:59:59';
//를 사용해 조금 더 명확한 조건문을 만들 수 있다.
2. 정교수와 조교수를 검색한다.
SELECT pno, pname, orders
FROM professor
WHERE orders LIKE "정%" OR orders LIKE "조%";
3. 학점수가 1학점, 2학점인 과목을 검색한다.
SELECT cno, cname, st_num
FROM course
WHERE st_num=1 OR st_num=2;
4. 1,2 학년 학생 중에 평점이 2.0에서 3.0사이인 학생을 검색한다.
SELECT sno, sname, syear, avr
FROM student
WHERE avr BETWEEN 2.0 AND 3.0
AND syear=1 OR syear=2
ORDER BY syear;
5. 물리, 화학과 학생 중 4.5 환산 평점이 3.5에서 4.0 사이인 학생을 검색한다.
SELECT sno, sname, avr*1.1, major
FROM student
WHERE avr*1.1 BETWEEN 3.5 AND 4.0
AND major='물리' OR major='화학'
ORDER BY major;
6. 물리, 화학과 학생의 정보를 학년별 성적순으로 검색한다.
SELECT *
FROM student
WHERE major='물리' OR major='화학'
ORDER BY syear, avr DESC;
7. 물리, 화학과 교수 중에 1999년에서 2000년 사이에 부임한 교수의 정보를 직위별로 검색한다.
SELECT pno, pname
FROM professor
WHERE hiredate BETWEEN '1999/01/01' AND '2000/12/31'
ORDER BY orders DESC;
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 pno, pname
FROM student
WHERE cname LIKE '권%';
'DB > Oracle DB(SQL)' 카테고리의 다른 글
[Oracle] 집합 연산자 (0) | 2024.01.24 |
---|---|
[Oracle] 서브 쿼리 (Sub Query) (2) | 2024.01.24 |
[Oracle] SELECT 활용 - 3 (JOIN) (0) | 2024.01.22 |
[Oracle] SELECT 활용 - 1 (0) | 2024.01.22 |
[Oracle] 시작 (0) | 2024.01.22 |