💡 반드시 FROM 절이 뒤따라와야함
테이블에 저장된 데이터를 조회할 때 사용하는 명령어
✔ 구문형식
SELECT * --2. 결과로 생성할 컬럼을 지정 / * : 모든 컬럼
FROM emp; --1. 조회할 테이블을 확인
SELECT empno, ename 👉🏻 조회할 컬럼을 하나씩 지정
FROM emp;
✔ SQL은 대소문자 구분 없음 👉🏻 관념적으로 나눠서 작성
조회하려는 대상을 지정하는 절 👉🏻 테이블(table)이 일반적
조회하려는 컬럼명, 테이블명 등의 이름(식별자)에 별칭을 붙여서 구문을 작성
""큰 따옴표로 묶어도 되고 없어도 되지만, 숫자나 기호, 띄어쓰기가 있으면 ""로 묶어서 표현해야 함SELECET
E.empno eno
, ename AS 사원이름
, sal AS "123"
, deptno "부서 번호"
FROM emp E;
조건에 만족하는 데이터(행)만 조회되거나 처리될 수 있도록 설정 👉🏻 조건절 역할
= 같다!= <> ^= 같지 않다 < 작다> 크다<= 작거나 같다>= 크거나 같다-- sal(급여)가 2000 미만인 사원들 조회
SELECT * FROM emp
WHERE sal < 2000;
-- 직무(job)가 SALESMAN인 사원들 조회
SELECT * FROM emp
WHERE job = 'SALESMAN';
AND 두 조건이 모두 만족할 때 TRUEOR 두 조건 중 하나라도 만족할 때 TRUENOT 논리부정-- 급여(sal)가 2500을 초과하며 직무(job)가 관리자(MANAGER)가 아닌 사원
SELECT * FROM emp
WHERE sal > 2500
-- AND job != 'MANAGER';
-- AND job ^= 'MANAGER';
-- AND job <> 'MANAGER';
AND NOT(job = 'MANAGER');
BETWEEN a AND bNOT BETWEEN a AND b-- 사원번호(empno)가 7700~7900인 사원들 조회
SELECT empno, ename FROM emp
WHERE empno BETWEEN 7700 AND 7900;
-- 사원이름(ename)이 'ALLEN' ~ 'KING'사이인 사원들 조회
SELECT empno, ename FROM emp
WHERE ename BETWEEN 'ALLEN' and 'KING';
-- 사원번호(empno)가 7700~7900이 아닌 사원들 조회
SELECT empno, ename FROM emp
WHERE empno NOT BETWEEN 7700 AND 7900;
IN (datalist),콤마로 구분하여 여러개의 데이터 가능 👉🏻 일치하는 행이 없으면 출력을 안할 뿐 에러가 나진 않음NOT IN (datalist)--사원번호가 ( )인 사원들 조회
SELECT empno, ename FROM emp
WHERE empno IN (7521, 7654, 7839, 8123, 6875);
--사원번호가 ( )이 아닌 사원들 조회
SELECT empno, ename FROM emp
WHERE empno NOT IN (7521, 7654, 7839, 8123, 6875);
LIKE '비교문자'% : 여러개의 문자, 문자가 없는 경우를 포함_ : 단일 문자, 반드시 한 글자가 존재하는 경우NOT LIKE '비교문자'SELECT empno, ename FROM emp
--WHERE ename LIKE 'SMITH'; --이름이 SMITH인 사람
--WHERE ename LIKE '%R'; --이름이 R로 끝나는 사람
--WHERE ename LIKE '%R%'; --이름에 R이 포함되는 사람
--WHERE ename LIKE '_'; --이름이 한글자인 사람
--WHERE ename LIKE '_A'; --이름이 두글자이면서 A로 끝나는 사람
--WHERE ename LIKE '_A%'; --이름의 두번째글자가 A인 사람
WHERE ename LIKE '%RD'; --이름의 RD로 끝나는 사람
SELECT empno, ename FROM emp
WHERE ename NOT LIKE '%RD'; --이름이 RD로 끝나지 않는 사람
✔ ESCAPE
LIKE에서 서식문자로 사용되는 _나 %를 단순문자로 취급할 수 있도록 ESCAPE 문자를 지정한 후 ESCAPE해줌
SELECT empno, ename
FROM emp
--WHERE ename LIKE '%/_%' ESCAPE '/'; -- /를 ESCAPE 문자로 사용
WHERE ename LIKE '%@_%' ESCAPE '@'; -- @를 ESCAPE 문자로 사용
✔ IN과 LIKE를 함께 사용할 수 없음 👉🏻 문법에러로 조회되지 않음 / 논리연산자를 사용할 것
SELECT empno, ename FROM emp
WHERE ename LIKE ( IN ('%R%', '%L%'));
👇🏻
SELECT empno, ename FROM emp
WHERE ename LIKE '%R%'
OR ename LIKE '%L%';
IS NULLIS NOT NULLSELECT * FROM emp
--WHERE comm IS NULL;
WHERE mgr IS NULL;
SELECT empno, ename, job, comm FROM emp
WHERE comm IS NOT NULL;
테이블의 처음부터 끝까지 전부 확인하며 원하는 데이터를 찾아내는 방법 👉🏻 시간이 오래걸림
인덱스 탐색은 인덱스를 우선적으로 확인하고 인덱스에 연결된 데이터를 빠르게 찾을 수 있도록 하는 방법 👉🏻 인덱스 탐색에 실패하면 풀탐색
인덱스, Index : 테이블의 데이터를 빠르게 탐색할 수 있도록 도와주는 DB객체 ➡ 바이너리 트리셋이랑 연결되면 빨리 찾을 수 잇음SELECT * FROM emp
WHERE ename LIKE 'FORD';
SELECT * FROM emp
WHERE ename = 'FORD';
💡 =연산자를 사용하는 것이 더 좋음