1. DML (Data Manipulation Language)
데이터를 조작하는 SQL 명령어
| 명령어 | 의미 |
| INSERT | 데이터 추가 |
| UPDATE | 데이터 수정 |
| DELETE | 데이터 삭제 |
| SELECT | 데이터 조회 |
2. UPDATE
테이블 데이터를 수정하는 명령어
기본 구조
UPDATE 테이블명
SET 컬럼명 = 변경값
WHERE 조건;
- 조건에 맞는 데이터를 수정
UPDATE DEPT_COPY
SET DEPT_TITLE = '경영부'
WHERE DEPT_ID = 'D7';
3. UPDATE + SUBQUERY
서브쿼리 결과로 UPDATE 가능
구조
UPDATE 테이블명
SET 컬럼명 =
(
SELECT 컬럼명
FROM 테이블명
)
WHERE 조건;
UPDATE EMP_SALARY
SET SALARY =
(
SELECT SALARY
FROM EMP_SALARY
WHERE EMP_ID = 204
)
WHERE EMP_ID = 214;
4. 여러 컬럼 동시 UPDATE
UPDATE EMP_SALARY
SET (SALARY, BONUS) =
(
SELECT SALARY, BONUS
FROM EMP_SALARY
WHERE EMP_ID = 204
)
WHERE EMP_ID IN(202,205,211,213);
5. UPDATE 제약조건
| 제약조건 | 의미 |
| NOT NULL | NULL 저장 불가 |
| UNIQUE | 중복값 불가 |
| PRIMARY KEY | NULL + 중복 불가 |
| FOREIGN KEY | 부모 테이블 값만 가능 |
| CHECK | 지정 조건만 허용 |
5-1 NOT NULL 제약조건
반드시 값이 존재해야 함
- UPDATE로 NULL 변경 불가능
5-2 UNIQUE 제약조건
중복 데이터 허용 안함
- 이미 존재하는 값으로 수정 불가능
5-3 PRIMARY KEY 제약조건
NOT NULL + UNIQUE
- 기본 키 수정 시 중복 / NULL 여부 모두 검사
5-4 FOREIGN KEY 제약조건
부모 테이블에 존재하는 값만 허용
- 존재하지 않는 참조값으로 수정 불가능
5-5 CHECK 제약조건
조건에 맞는 값만 허용
- CHECK 조건에 맞지 않으면 수정 불가능
6. DELETE
테이블의 행(ROW) 삭제
- 테이블은 유지
- 데이터만 삭제
6-1 기본 구조
DELETE FROM 테이블명
WHERE 조건;
6-2 DROP / DELETE
| 명령어 | 의미 |
| DROP TABLE | 테이블 자체 삭제 |
| DELETE FROM | 데이터만 삭제 |
7. TRUNCATE
테이블 데이터 전체 삭제
TRUNCATE TABLE TEST_DELETE;
- 전체 데이터 빠르게 삭제
- WHERE 사용 불가
- ROLLBACK 불가
8. DCL (TCL)
트랜잭션 제어 언어
| 명령어 | 의미 |
| COMMIT | 저장 |
| ROLLBACK | 취소 |
9. 트랜잭션 (Transaction)
데이터 처리 작업의 최소 단위
- 모두 성공하거나 모두 실패해야 함
10. COMMIT
변경사항 저장
COMMIT;
- 현재 작업 내용을 DB에 저장
11. ROLLBACK
최근 COMMIT 시점으로 복구
ROLLBACK;
12. SAVEPOINT
중간 저장 지점 생성
SAVEPOINT SP1;
- ROLLBACK 기준 위치 저장
13. ROLLBACK TO
특정 SAVEPOINT로 복구
ROLLBACK TO SP1;
14. DDL
데이터베이스 객체를 생성/수정/삭제하는 명령어 (CREATE, ALTER, DROP)
특징
COMMIT / ROLLBACK 불가능
DDL 실행 시 자동 COMMIT 발생
DDL 흐름
1. DML 실행
2. DDL 실행
3. 자동 COMMIT
15. ALTER
생성된 객체를 수정하는 명령어
ALTER TABLE 테이블명
수정내용;
16. 컬럼 추가
ALTER TABLE DEPT_COPY
ADD(
LNAME VARCHAR2(20)
);
17. 컬럼 삭제
ALTER TABLE DEPT_COPY
DROP COLUMN LNAME;
18. 컬럼 기본값 설정
ALTER TABLE DEPT_COPY
ADD(
LNAME VARCHAR2(20)
DEFAULT '한국'
);
19. ALTER로 제약 조건 추가
19-1 PRIMARY KEY 추가
ALTER TABLE DEPT_COPY2
ADD CONSTRAINT PK_DEPT_CP2
PRIMARY KEY(DEPT_ID);
19-2 UNIQUE 추가
ALTER TABLE DEPT_COPY2
ADD CONSTRAINT U_DEPT_TITLE
UNIQUE(DEPT_TITLE);
19-3 NOT NULL 추가
ALTER TABLE DEPT_COPY2
MODIFY LNAME
CONSTRAINT NN_DEPT_LNAME
NOT NULL;
20. 제약 조건 조회
SELECT *
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = 'DEPT_COPY2';
21. 컬럼 이름 변경
ALTER TABLE DEPT_COPY2
RENAME COLUMN DEPT_TITLE
TO DEPT_NAME;
22. 테이블 이름 변경
22-1 ALTER
ALTER TABLE DEPT_COPY2
RENAME TO DEPT_COPY_TWO;
22-2 RENAME
ALTER 없이 이름 변경 가능
RENAME DEPT_COPY_TWO
TO DEPT_COPY2;
23. 제약조건 이름 변경
ALTER TABLE DEPT_COPY2
RENAME CONSTRAINT PK_DEPT_CP2
TO PK_DEPT_ID;
24. 자료형 수정
ALTER TABLE DEPT_COPY2
MODIFY DEPT_ID CHAR(3);
- 자료 형 수정 시 등록되어 있는 데이터 크기 확인 필요 (에러 발생 주의)
25. 테이블 삭제
DROP TABLE DEPT_COPY2;
26. VIEW (뷰)
SELECT 결과를 저장하는 객체
- SELECT문 자체를 저장, 실제 데이터를 저장하지 않음
특징
- 실제 데이터를 저장하지 않음
- 뷰 호출 시 SELECT 실행
- 가상 테이블 느낌
26-1 VIEW 생성
CREATE VIEW 뷰이름
AS 서브쿼리
CREATE VIEW V_EMP
AS
SELECT EMP_ID,
EMP_NAME,
DEPT_CODE
FROM EMPLOYEE;
26-2 VIEW 사용
SELECT * FROM 뷰이름;
SELECT *
FROM V_EMP;
26-3 VIEW 특징
원본 테이블 변경 시 VIEW 결과도 같이 변경
VIEW 수정 가능 조건
- 단순 SELECT 기반 VIEW
26-4 OR REPLACE
기존 VIEW 덮어쓰기
CREATE OR REPLACE VIEW V_EMP
AS ...
26-5 VIEW 삭제
DROP VIEW V_EMP;
26-6 WITH CHECK OPTION
VIEW 생성 시 VIEW를 통해 컬럼 추가, 수정 불가, 삭제는 가능
CREATE OR REPLACE VIEW V_EMP
AS
SELECT * FROM EMPLOYEE
WITH CHECK OPTION;
26-6 WITH READ ONLY
INSERT / UPDATE / DELETE 모두 불가능, 조회만 가
CREATE OR REPLACE VIEW V_EMP
AS
SELECT * FROM EMPLOYEE
WITH READ ONLY;
27. SEQUENCE
자동 번호 생성 객체
27-1 SEQUENCE 생성 구조
CREATE SEQUENCE 시퀀스명
START WITH 시작값
INCREMENT BY 증가값
MAXVALUE 최대값
MINVALUE 최소값
NOCYCLE
NOCACHE;
| 옵션 | 의미 |
| START WITH | 시작값 |
| INCREMENT BY | 증가값 |
| MAXVALUE | 최대값 |
| MINVALUE | 최소값 |
| CYCLE | 반복 여부 |
| CACHE | 미리 값 저장 |
27-2 NEXTVAL
다음 시퀀스 값 생성 후 반환
SELECT SEQ_EMPID.NEXTVAL FROM DUAL;
27-3 CURRVAL
현재 마지막 시퀀스 값 반환
SELECT SEQ_EMPID.CURRVAL FROM DUAL;
27-4 시퀀스 수정
ALTER SEQUENCE 시퀀스명
수정 옵션;
ALTER SEQUENCE SEQ_EMPID
INCREMENT BY 10
MAXVALUE 400
CYCLE;
27-5 시퀀스 삭제
DROP SEQUENCE 시퀀스명;
'FullStack Study > 8주차' 카테고리의 다른 글
| JAVA 풀스택 36일차 - Oracle DB 6 / JDBC (0) | 2026.05.17 |
|---|---|
| JAVA 풀스택 34일차 - Oracle DB 4 (0) | 2026.05.14 |
| JAVA 풀스택 33일차 - Oracle DB 3 (0) | 2026.05.13 |
| JAVA 풀스택 32일차 - Oracle DB 2 (0) | 2026.05.12 |