SQL - SELECT문, WHERE절

AIR·2024년 1월 12일

SELECT문

-- 전체 데이터 조회
select *
from EMP;

-- 열을 쉼표로 구분하여 출력
select EMPNO, ENAME, DEPTNO
from EMP;

-- 열 중복 제거(열이 1개)
select distinct DEPTNO
from EMP;

-- 열 중복 제거(열이 여러 개)
select distinct JOB, DEPTNO
from EMP;

-- 중복되는 열 제거 없이 출력
select all JOB, DEPTNO
from EMP;

-- 열에 연산식 사용(별칭 지정)
select ENAME, SAL, SAL * 12 + COMM as annsal, COMM
from EMP;

-- 오름차순
select *
from EMP
order by SAL;

-- 내림차순
select *
from EMP
order by SAL desc;

-- 각각의 열에 오름차순과 내림차순 동시 사용
select *
from EMP
order by DEPTNO, SAL desc;

-- order by절을 사용한 정렬은 가능한 사용하지 않는 것이 좋다.
-- 순서를 맞추는 것은 많은 자원, 즉 비용을 소모한다.

WHERE절과 연산자

-- WHERE절
select *
from EMP
where DEPTNO = 30;

-- AND 연산자
select *
from EMP
where DEPTNO = 30
  and JOB = 'SALESMAN';

-- OR 연산자
select *
from EMP
where DEPTNO = 30
  or JOB = 'CLERK';

-- 보통 다양한 조건을 한 번에 만족시키는 데이터만을 추출해야 할 때가 많기 때문에
-- 실무에서는 OR보다 AND를 많이 사용하는 경향이 있다.

-- 산술 연산자
select *
from EMP
where SAL * 12 = 36000;

-- 비교 문자열이 하나일 때
-- 첫 문자가 F와 같거나 뒤쪽인 데이터만 조회
select *
from EMP
where ENAME >= 'F';

-- 비교 문자열이 여러 개일 때
select *
from EMP
where ENAME <= 'FORZ';

-- IN 연산자
select *
from EMP
where JOB not in ('MANAGER', 'SALESMAN', 'CLERK');

-- BETWEEN A AND B 연산자
select *
from EMP
where SAL between 2000 and 3000;

-- LIKE 연산자와 함께 사용할 수 있는 와일드 카드
-- _: 어떤 값이든 상관없이 한 개의 문자 데이터를 의미
-- %: 길이와 상관없이 모든 문자 데이터를 의미

-- LIKE 연산자
-- 시작 문자가 S인 데이터 조회
select *
from EMP
where ENAME like 'S%';

-- 두 번째 글자가 L인 데이터 조회
select *
from EMP
where ENAME like '_L%';

-- AM이 포함되어 있는 데이터 조회
select *
from EMP
where ENAME like '%AM%';

-- 와일드 카드 문자가 데이터 일부일 경우
-- like 'A\_A%' escape '\'; :A_A로 시작하는 데이터 조회

-- IS NULL 연산자
select *
from EMP
where COMM is null;

-- 집합 연산자로 SELECT문의 결과 값을 연결할 때
-- 각각의 열 개수와 각열의 자료형이 순서별로 일치해야 된다.
-- UNION: 결과 값을 합집합 처리. 중복은 제거
-- UNION ALL: UNION과 동일하나 중복 제거 X
-- MINUS: 결과 값을 차집합 처리
-- INTERSECT: 결과 값을 교집합 처리

-- 집합 연산자(UNION)
select EMPNO, ENAME, SAL, DEPTNO
from EMP
where DEPTNO = 10
union
select EMPNO, ENAME, SAL, DEPTNO
from EMP
where DEPTNO = 20;

-- 집합 연산자(UNION ALL)
select EMPNO, ENAME, SAL, DEPTNO
from EMP
where DEPTNO = 10
union all
select EMPNO, ENAME, SAL, DEPTNO
from EMP
where DEPTNO = 10;

-- 집합 연산자(MINUS)
select EMPNO, ENAME, SAL, DEPTNO
from EMP
minus
select EMPNO, ENAME, SAL, DEPTNO
from EMP
where DEPTNO = 10;

-- 집합 연산자(INTERSECT)
select EMPNO, ENAME, SAL, DEPTNO
from EMP
intersect
select EMPNO, ENAME, SAL, DEPTNO
from EMP
where DEPTNO = 10;
profile
백엔드

0개의 댓글