WHERE 조건절
INSERT를 제외한 DML문을 수행할 때 원하는 데이터만 골라 수행할 수 있도록 해주는 구문
- 형식
select 컬럼명1, 컬럼명2 ... from 테이블명 where 조건절;
- where 절 문제
--문1) 국어점수가 50점이상 행을 조회하시오
select uname, kor
from sungjuk
where kor>=50;
--문2) 영어 점수가 50점미만 행을 조회하시오
select uname, eng
from sungjuk
where eng<50;
--문3) 이름이 '대한민국' 행을 조회(출력)하시오
select uname, kor, eng, mat
from sungjuk
where uname='대한민국';
--문4) 이름이 '대한민국' 아닌 행을 조회하시오
select uname, kor, eng, mat
from sungjuk
where uname != '대한민국'; --좌우가 서로 같지 않다
select uname, kor, eng, mat
from sungjuk
where uname <> '대한민국'; --좌우가 서로 같지 않다
--문5) 국어, 영어, 수학 세과목의 점수가 모두 90이상 행을 조회하시오
select uname, kor, eng, mat
from sungjuk
where kor>=90 and eng>=90 and mat>=90;
--문6) 국어, 영어, 수학 중에서 한과목이라도 40미만 행을 조회하시오
select uname, kor, eng, mat
from sungjuk
where kor<40 or eng<40 or mat<40;
--문7) 국어점수가 80 ~ 89점 사이 행을 조회하시오
select uname, kor
from sungjuk
where kor>=80 and kor<=89;
--문8) 이름이 '무궁화', '봉선화'를 조회하시오
select uname
from sungjuk
where uname='무궁화' or uname='봉선화';
-- 문9) 국, 영, 수 모두 100점 아닌 행을 조회하시오
select uname, kor, eng, mat
from sungjuk
where kor=100 and eng=100 and mat=100; --국영수 모두 100점 행 조회
select uname, kor, eng, mat
from sungjuk
where not (kor=100 and eng=100 and mat=100);
연산자
1) 비교 연산자
연산자 | 의미 | 예시 |
= | 같음 | where col = 10 |
< | 작음 | where col < 10 |
<= | 작거나 같음 | where col <= 10 |
> | 큼 | where col > 10 |
>= | 크거나 같음 | where col >=10 |
2) 부정 비교 연산자
연산자 | 의미 | 예시 |
!= | 같지 않음 | where col != 10 |
^= | 같지 않음 | where col ^= 10 |
< > | 같지 않음 | where col <> 10 |
not 컬럼명 = | 같지 않음 | where not col = 10 |
not 컬럼명 > | 크지 않음 | where not col > 10 |
3) SQL 연산자
연산자 | 의미 | 예시 |
BETWEEN A AND B | A와 B의 사이(A, B 포함) | where col between 1 and 10 |
LIKE '비교 문자열' | 비교 문자열을 포함 | where col like '대한%' where col like '%민국' where col like '%한민% where col like '대_민%' |
IN (LIST) | LIST 중 하나와 일치 | where col in (1, 3, 5) |
IS NULL | NULL 값 | where col is null |
4) 부정 SQL 연산자
연산자 | 의미 | 예시 |
NOT BETWEEN A AND B | A와 B의 사이가 아님(A, B 미포함) | where col not between 1 and 10 |
NOT IN (LIST) | LIST 중 일치하는 것이 없음 | where col not in (1, 3, 5) |
IS NOT NULL | NULL 값이 아님 | where col is not null |
5) 논리 연산자
연산자 | 의미 | 예시 |
AND | 모든 조건이 TRUE여야 함 | where col > 1 and col < 10 |
OR | 하나 이상의 조건이 TRUE여야 함 | where col = 1 or col = 10 |
NOT | TRUE면 FALSE이고 FALSE이면 TRUE | where not col > 10 |
- where 조건절 연산자 문제
alter table sungjuk rename column korea to kor;
select *from sungjuk;
[between A and B] 연산자 - A부터 B까지
-- 국어점수가 80~89점 사이 행을 조회하시오
select uname, kor
from sungjuk
where kor between 80 and 89;
[in] 연산자 - 목록에서 찾기
-- 이름이 '무궁화', '봉선화'를 조회하시오
select uname
from sungjuk
where uname in ('무궁화', '봉선화');
-- 국어점수 10, 30, 50점을 조회하시오
select uname, kor
from sungjuk
where kor in (10, 20, 30);
[LIKE] 연산자
- 문자열 데이터에서 비슷한 유형을 검색할 때
- % 글자갯수와 상관없음
- _ 글자갯수까지 일치해야 함
select uname
from sungjuk
where uname='대한민국';
--문1) 이름에서 '홍'으로 시작하는 이름을 조회하시오
select uname
from sungjuk
where uname like '홍%';
--문2) 이름에서 '화'로 끝나는 이름을 조회하시오
select uname
from sungjuk
where uname like '%화';
--문3) 이름에 '나'글자 있는 이름을 조회하시오
select uname
from sungjuk
where uname like '%나%';
--문4) 두글자 이름에서 '화'로 끝나는 이름을 조회하시오
select uname
from sungjuk
where uname like '_화';
--문5) 이름 세글자 중에서 가운데 글자가 '나' 있는 행을 조회하시오
select uname
from sungjuk
where uname like '_나_';
select count(uname)
from sungjuk
where uname like '_나_';
--문6) 제목+내용을 선택하고 검색어가 '파스타' 일때
where subject like '%파스타%' or content like '%파스타%
--문7)국어 점수가 50점 이상인 행에 대하서 총점(tot)과 평균(aver)을 구하시오
select * from sungjuk where kor>=50
update sungjuk
set tot=kor+eng+mat, aver=(kor+eng+mat)/3
where kor>=50;
[NULL] - 비어 있는 값
-- 총점의 갯수를 구하시오
select count(tot) from sungjuk; --null값은 카운트 되지 않음
-- 총점에 NULL이 있는 행의 갯수를 구하시오
select count(*) from sungjuk where tot=null; --null값 확인 못함. 0
select count(*) from sungjuk where tot is null; --null값 확인해야 하는 경우. 5
-- 평균에 비어있지 않은 행의 갯수를 구하시오 (null이 아닌 값)
select count(*) from sungjuk where aver is not null;
--문8) 비어있는 총점과 평균을 모두 구하시오
update sungjuk
set tot=kor+eng+mat, aver=(kor+eng+mat)/3
where tot is null or aver is null;
'Backend > Oracle DB' 카테고리의 다른 글
[Oracle DB] 시퀀스, SYSDATE 함수 (0) | 2023.03.11 |
---|---|
[Oracle DB] SORT 정렬 (0) | 2023.03.11 |
[Oracle DB] ALTER (0) | 2023.03.11 |
[Oracle DB] SQL 기초: select, as, count, commit, rollback (0) | 2023.03.10 |
[Oracle DB] SQL 기초 : 테이블 생성 (0) | 2023.03.10 |