본문 바로가기

[2016 - 2019] 학부 정리/DataBase

[DataBase-공부] 5. where절을 써서 데이터를 제한해 보자

● 데이터 제한


(1) where절(select -> from -> where 순서 기억, where절에는 as키워드를 붙일수 없습니다.)

select ename

from emp

where deptno = 20;

->emp테이블에서 deptno 가 20인 사람의 이름을 출력하자. 


select deptno as "사원번호"

from emp

where ename = 'FORD';

->문자열이라면 작은따옴표를 붙여입니다.


(2) 비교연산자(where절에서 비교하는 )

① 부등호

select ename

from emp

where sal >= 2000;


 between 연산자(이하, 이상), 문자에서도 사용이 가능하다(A~Z까지 순서)

select ename, sal

from emp

where sal between 1000 and 1500;

select ename, sal

from emp

where 1000 <= sal and sal <= 1500;

같은 말입니다.


③ in 연산자( in( list ) : 지정한 리스트의 값을 불러옵니다. )

select ename, sal

from emp

where ename in('WARD', 'TURNER');

where ename = 'WARD' or ename = 'TURNER'; 이 같은 말입니다. 나열되는것을 간단히 줄인게 in연산자 입니다.


④ like연산자 (%, _ , 패턴이 일치하는 것을 검색할 수 있습니다.)

select ename, sal

from emp

where ename like 'S%';

like = 'S%' ->등호 불가!

_ : 한문자를 나타냅니다. -> 무조건 

% : 0개이상의 문자(나머지 부분 처리)를 나타냅니다. -> 있어도 없어도 되는


⑤ Escape 식별자(%,_ 가 포함된 문자를 검색할 때 구별해 주는 식별자입니다. 특수문자 식별자)

\역슬래쉬를 이용합니다.

select last_name as "이름", job_id as "직업"

from employees

where job_id like 'AD\_%' escape '\';


⑥ is null연산자

null 은 '아무것도 아닌' 입니다. 0이나 공백과는 또 다른 것이죠 그렇기 때문에 무언가와 비교를 한거나 같은지 확인할 수 있는것이 아닙니다. 따라서 null값인지 확인을 하고 싶다면 'is null'이라는 키워드를 통해 null값을 구분해 낼 수 있습니다.

select last_name, commission_pct

from employees

where commission_pct is null;


(3) 논리연산자

① and 연산자

select deptno, ename, sal

from emp

where deptno = 20

and sal > 2000;


② or 연산자

select deptno, ename, sal

from emp

where deptno = 20

or ename like 'K%';


③ not 연산자

select deptno, ename, sal

from emp

where deptno not in(10, 20);


(4) 연산자 우선순위

연산자 

의미 

1 

산술 연산자 

연결 연산자 

비교 조건 

 

is (not) null, like, in 

between 

같지 않음 <>, != 

7

not 논리조건 

and 조건 

or 조건 

물론 괄호는 0순위 입니다.


(5) oder by 절(검색할 행을 정렬합니다. select문의 맨 뒤에 옵니다.)

- asc : 오름차순으로 정렬, default값

- desc : 내림차순으로 정렬

컬럼의 순서인 번호로 정렬이 가능합니다.

select deptno, ename, sal

from emp

order by deptno;

select deptno, ename, sal

from emp

order by 1; 같은 의미 입니다.


(6) 치환변수(& : 앤퍼센드, && : 이중 앤퍼센드)

select deptno, ename, sal

from emp

where deptno = '&사원번호'; ->사용자에게 사원번호를 입력하도록 요청 

select, where, oder by 절에 사용이 가능하다.


select &&deptnum, ename, sal

from emp

where deptno = &deptnum;


(7) define 명령(변수를 생성하고 값을 할당합니다. undefine을 사용해 변수를 제거해 줍니다.)

define dept_num = 20

select deptno,ename, sal

from emp

where deptno = &dept_num;

undefine deptnum