728x90
오라클로 배우는 데이터베이스 입문을 보고 정리하였다.
백엔드 엔지니어는 DB에 대해 알아야 하기에 MySQL 쪽으로 공부하고 있었는데, sql을 세세하게 보지 않았던거 같다. 왜냐하면 DATA JPA를 통해 너무 편하게 조회했기에.. 내가 못 찾는 거일 수도 있지만 JPQL도 종종 짜줘야 하는데 쿼리를 모르니 검색하기 힘들때가 있었다. 책을 산김에 기본적인 문법들은 정리를 하려고 한다.
IN 연산자
범위 안에 있는 내용들 찾을 때는 IN을 통해서 광범위하게 찾을 수 있다.
SELECT *
FROM EMP
WHERE JOB IN ('MANAGER', 'SALESMAN', 'CLERK');
SELECT *
FROM EMP
WHERE JOB NOT IN ('MANAGER', 'SALESMAN', 'CLERK');
BETWEEN 연산자
범위를 찾을 때는 BETWEEN AND를 활용해서 찾을 수 있다.
SELECT * FROM EMP WHERE SAL BETWEEN 2000 AND 3000;
SELECT * FROM EMP WHERE SAL NOT BETWEEN 2000 AND 3000;
LIKE 연산자, 와일드 카드
일부 문자열이 포함된 데이터를 조회할 때 사용
-- ENAME 중에 대문자 S로 시작하는 데이터 조회
SELECT * FROM EMP WHERE ENAME LIKE 'S%';
-- _: 어떤 값이든 상관없이 한 개의 문자 데이터를 의미
-- %: 길이와 상관없이(문자 없는 경우도 포함) 모든 문자 데이터를 의미
-- 첫글자는 아무거나 두번째는 L로 시작하는 데이터 조회
SELECT * FROM EMP WHERE ENAME LIKE '_L%';
-- 어느 위치에 AM이 있는 데이터 조회
SELECT * FROM EMP WHERE ENAME LIKE '%AM%';
NULL
아시다시피 NULL인 것에 대해서 IS, IS NOT NULL을 활용하여 검색할 수 있다.
SELECT * FROM EMP WHERE COMM IS NULL;
SELECT * FROM EMP WHERE COMM IS NOT NULL;
집합 연산자
두 개 이상의 SELECT 문의 결과 값을 연결할 때 사용. 열 개수, 각 열의 자료형이 순서별로 일치해야함!
-- UNION: 중복 값 제거
-- UNION ALL: 중복 제거 없이 모두 출력
SELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP WHERE DEPTNO = 10
UNION
SELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP WHERE DEPTNO = 20;
-- 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;
728x90
'DB' 카테고리의 다른 글
[DB, MySQL] 트랜잭션 기초를 익혀보자 (0) | 2023.07.03 |
---|---|
[SQL] 사용자 추가 (0) | 2023.01.11 |
[DB] 오라클 함수 정리 (0) | 2022.08.06 |
댓글