[오라클로 배우는 데이터베이스 입문] 5. WHERE절과 연산자

jychan99·2023년 7월 5일
0

5.1 필요한 데이터만 쏙 출력하는 WHERE절

where절은 특정 조건을 기준으로 원하는 행을 출력하는데 사용함.
기본형식은 다음과같다.

SELECT [조회할 열이름1],[조회할 열이름2]...[N열 이름]
FROM [조회할 테이블 이름]
WHERE [조회할 행을 선별하기 위한 조건식];

부서 번호가 30인 데이터만 출력하기

SELECT *
FROM EMP
WHERE DEPTNO = 30;


5.2 여러 개 조건식을 사용하는 AND, OR 연산자

and는 알다시피 2가지 모두 참이여야 참이되는 논리연산자.

부서번호가 30이고 직업이 SALESMAN인 사원정보 출력

SELECT *
FROM EMP
WHERE DEPTNO = 30 AND JOB = 'SALESMAN';

or는 둘중 하나만 참이여도 참이되는 논리연산자.
부서번호가 30이거나 직업이 CLERK인 사원정보 출력

SELECT *
FROM EMP
WHERE DEPTNO = 30 OR JOB = 'CLERK';


5.3 연산자 종류와 활용 방법 알아보기

산술연산자

+,-,*,/를 이용

SELECT *
FROM EMP
WHERE SAL * 12 = 36000;

비교연산자

대소 비교 연산자
>, >=, <, <=를 이용

급여가 2500이상이고 직업이 ANALYST인 사원정보 출력

SELECT *
FROM EMP
WHERE SAL >= 2500 AND JOB = 'ANALYST';

※ 문자를 대소 비교 연산자로 비교하기
알파벳 순서로 따짐

SELECT *
FROM EMP
WHERE ENAME >= 'F';

단어를 비교해도 마찬가지다. 사전순으로 생각하면됨

SELECT *
FROM EMP
WHERE ENAME >= 'FORZ';

등가 비교 연산자
= : 프로그래밍언어에서 는 대입연산자이지만 SQL에서는 equal의 의미
!=, <>, ^= : not equal의 의미로, 세가지모두 동일.

SELECT *
FROM EMP
WHERE SAL != 3000;

논리 부정 연산자

NOT을 붙이면 true값은 false로, false값은 true가 된다.
앞으로 나올 IN, BETWEEN, IS NULL, LIKE 연산자와 함께 복합적으로 많이 사용된다.
복잡한 조건식에서 반대의 결과를 원할때 SQL문 작성시간을 줄이는데 도움이 된다.

SELECT *
FROM EMP
WHERE NOT SAL = 3000;


바로 위 쿼리문과 같다.

IN 연산자

=기호는 특정 열데이터 값만 조회할때 쓰는데, 여러조건을 조회할때는 OR연산자가 따른다.

SELECT *
FROM EMP
WHERE JOB = 'MANAGER' OR JOB = 'SALESMAN' OR JOB = 'CLERK';

IN연산자는 특정열에 해당하는 조건을 여러개 지정할 수 있다.

SELECT *
FROM EMP
WHERE JOB IN ('MANAGER','SALESMAN','CLERK');

--NOT연산자와 같이쓴다면?
SELECT *
FROM EMP
WHERE JOB NOT IN ('MANAGER','SALESMAN','CLERK');

BETWEEN A AND B 연산자

어떤 사이값을 비교해야 한다고 했을때, 대소 비교 연산자와 AND연산자를 써야한다.

SELECT *
FROM EMP
WHERE SAL >= 2000 AND SAL<=3000;

이때 BETWEEN 연산자로 더 간단하게 표현 가능하다.

SELECT *
FROM EMP
WHERE SAL BETWEEN 2000 AND 3000;

--NOT연산자와 같이 쓴다면?
SELECT *
FROM EMP
WHERE SAL NOT BETWEEN 2000 AND 3000;

LIKE연산자와 와일드카드

LIKE연산자는 이메일이나 게시판제목 또는 내용검색처럼 일부 문자열이 포함된 데이터를 조회할때 사용함.

SELECT *
FROM EMP
WHERE ENAME LIKE 'S%';

'S%'에서 %는 와일드카드 기호라고 한다.
LIKE연산자와 함께 사용할 수 있는 와일드카드는 _와 %이다.

_ : 어떤 값이든 상관없이 한 개의 문자 데이터를 의미
% : 길이와 상관없이(문자가 없는경우 포함) 모든문자데이터를 의미

간혹 데이터안에 %나 _가 포함되어있다면 \%나, \_로 표현한다. 이 글도 지금 그렇게 쓰이고 있다.

약간 자바스크립트의 regex랑 비슷하다고 보면될것같다.

IS NULL 연산자

NULL은 =으로 검색이 안된다. 왜냐하면 =는 비교연산자이기 때문에
NULL은 비교대상이 아님.

NULL인지 아닌지 판단하려면 IS NULL연산자를 사용한다.

SELECT *
FROM EMP
WHERE COMM IS NULL;

NOT연산자와 같이쓰면

SELECT *
FROM EMP
WHERE COMM IS NOT NULL;

집합 연산자

관계형 데이터베이스의 개념은 집합론에서 시작되었다. 2개 이상의 select문의 결과값을 연결할 때 사용한다.

SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP
WHERE DEPTNO = 10
UNION
SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP
WHERE DEPTNO = 20;

주의할 점은 select문의 자료형과 순서모두 같아야 한다.

오라클에서 사용하는 집합연산자는 다음과 같다.

UNION : 합집합. 결과값 중복없음
UNION ALL : 합집합. 결과값 중복허용
MINUS : 차집합.
INTERSECT : 교집합.

연산자 우선순위

높은순서대로,

*,/

+,-

=, !=, >, >=, <, <=

BETWEEN A AND B

NOT

AND

OR

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐍

0개의 댓글

관련 채용 정보