
예시로 사용할 DEPT 테이블, EMP 테이블은 아래와 같다.

테이블이나 뷰에 있는 데이터를 조회할 때 사용하는 문장.
SELECT * 혹은 컬럼
FROM [스키마.] 테이블명 혹은 [스키마.] 뷰명
WHERE 조건
AND 조건
ORDER BY 컬럼;
모든 컬럼을 보려면 * 키워드를 사용한다.
신규로 데이터를 입력할 때 사용.
INSERT INTO [스키마.] 테이블명(컬럼1, 컬럼2, ...)
VALUES (값1, 값2, ...);
반드시 나열하는 컬럼과 값의 갯수, 순서, 데이터 타입이 일치해야만 한다. 일치하지 않으면 오류 발생.
INSERT INTO [스키마.] 테이블명
VALUES (값1, 값2, ...);
컬렴명을 기술하지 않지만 VALUES절에 테이블의 컬럼 순서대로 해당 컬럼의 값을 입력해야 한다.
컬럼명을 기술하지 않는다는것은 테이블에 있는 모든 컬럼에 값을 입력한다는 의미.
INSERT INTO [스키마.] 테이블명(컬럼1, 컬럼2, ...)
SELECT 문;
다른 테이블이나 뷰의 조회 결과로 나온 데이터를 또 다른 테이블에 넣는 방식.
INSERT ALL | FIRST
WHEN 조건1 THEN
INTO [스키마.] 테이블명(컬럼1, 컬럼2, ...) VALUES(값1, 값2, ...)
WHEN 조건2 THEN
INTO [스키마.] 테이블명(컬럼1, 컬럼2, ...) VALUES(값1, 값2, ...)
...
ELSE
INTO [스키마.] 테이블명(컬럼1, 컬럼2, ...) VALUES(값1, 값2, ...)
SELECT문;
ex) 다중 테이블 INSERT 예시
CREATE TABLE EMP10 (
eno number(6), // 사원번호
ename varchar2(30), // 사원명
payM number(10), // 월급여
payY number(20), // 연봉
dno number(2) // 부서번호
);
CREATE TABLE EMP20 (
eno number(6), // 사원번호
ename varchar2(30), // 사원명
payM number(10), // 월급여
payY number(20), // 년봉
dno number(2) // 부서번호
);
CREATE TABLE EMPETC (
eno number(6), // 사원번호
ename varchar2(30), // 사원명
payM number(10), // 월급여
payY number(20), // 년봉
dno number(2) // 부서번호
);
INSERT ALL
WHEN deptno=10 THEN
INTO emp10 values(empno, ename, sal, sal*13, deptno)
WHEN deptno=20 THEN
INTO emp20 values(empno, ename, sal, sal*13, deptno)
ELSE
INTO empetc values(empno, ename, sal, sal*13, deptno)
SLEECT empno, ename, sal, sal*13, job, deptno
FROM emp
WHERE deptno=10 or deptno=20 or deptno=30;

테이블에 있는 기존 데이터를 수정할 때 사용.
UPDATE [스키마.] 테이블명
SET 컬럼1 = 변경값1,
컬럼2 = 변경값2,
...
WHERE 조건;
이미 입력된 데이터를 변경해야 하므로 변경할 테이블, 컬럼, 변경할 값이 필요하다.
테이블에 있는 데이터를 삭제할 때 사용.
DELETE [FROM] [스키마.] 테이블명
WHERE 삭제조건;
DELETE [FROM] [스키마.] 테이블명 PARTITION (파티션명)
WHERE 삭제조건;
두 문자를 붙이는 연산을 수행
- 예시
select deptno || '-' || dname from dept;
- 결과
DEPTNO||'-'||DNAME**텍스트**
-------------------
10-ACCOUNTING
20-RESEARCH
30-SALES
40-OPERATIONS
90-dept90
91-dept91
92-회계부
93-영업부
95-정동진
96-최강개발96
97-개발부
98-개발부
1개 이상의 표현식과 논리연산자가 결합된 식.
TRUE, FALSE, UNKNOWN 3가지의 타입을 반환한다.
ANY, SOME, ALL 키워드로 비교하는 조건식
ANY와 SOME의 경우 문장중에 1가지라도 일치하는 모든것을 추출.
ALL의 경우 모든 조건을 동시에 만족해야 한다.
- 예시1
select * from dept
where deptno = ANY (10, 20, 30);
- 결과1
DEPTNO DNAME LOC
---------- -------------- ------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
- 예시2
select * from emp
where sal = ALL (800, 1600, 2400);
- 결과2
no rows selected (선택된 행 없음)
AND, OR, NOT을 사용하는 조건식
- 예시
select * from emp
where NOT(sal>=1000);
- 결과
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
------ ------ ------ ----- --------- ----- ------ -----
7369 SMITH CLERK 7902 80/12/17 800 (null) 20
7900 JAMES CLERK 7698 81/12/03 950 (null) 30
범위에 해당하는 값을 찾을 때 사용.
- 예시
select ename, job, sal from emp
where sal BETWEEN 1500 AND 2500;
- 결과
ENAME JOB SAL
------- --------- ------
ALLEN SALESMAN 1600
CLARK MANAGER 2450
TURNER SALESMAN 1500
조건절에 명시한 값이 포함된 건을 반환.
- 예시
select ename, job, sal from emp
where sal IN (3000, 5000);
- 결과
ENAME JOB SAL
------- --------- ------
KING CLERK 5000
CLARK MANAGER 3000
문자열의 패턴을 검색할 때 사용되는 조건식.
- 예시
select ename, job, sal from emp
where ename like 'J%'; // 이름의 첫글자가 J로 시작하는
- 결과
ENAME JOB SAL
------- ------ -------
JONES MANAGER 2975
JAMES CLERK 950
출처
- 오라클 SQL과 PL/SQL을 다루는 기술 (책)