FullStack Study/8주차

JAVA 풀스택 35일차 - Oracle DB 5

레몬팡777 2026. 5. 15. 08:42

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 시퀀스명;