[Oracle Database] DML
INSERT
테이블에 레코드(행)을 추가하는 명령어.
INSERT INTO 테이블명 (컬럼1, 컬럼2...) VALUES (값1, 값2...)
작성 규칙:
- 컬럼리스트는 테이블의 모든 컬럼을 기재할 필요 없다.
- 컬럼리스트는 순서가 바뀌어도 되지만 이 경우엔 값도 같은 순서가 되어야 한다.
- null값이 허용되어 있는 컬럼은 기재를 생략해도 된다. (null 입력 가능)
- default 설정이 되어있는 컬럼은 insert에서 생략을 해도 되고 명시적으로 values(default) 사용해도 된다.
INSERT INTO memo (seq, memo, category, regDate, ck, rname, rmemo)
VALUES (memo_seq.nextval, '메모입니다.', 'A', sysdate, 'n', '하하하', '꼭확인바람')
컬럼명을 생략할 수도 있으나 이 경우엔 값리스트의 순서와 개수는 원본 테이블의 구조와 일치해야 한다:
INSERT INTO memo
VALUES (memo_seq.nextval, '메모메모', default, default, default, null, null)
INSERT INTO SELECT
INSERT INTO SELECT문은 데이터를 다른 테이블에서 참조한다. INSERT문과 달리 한 번에 여러 개의 데이터가 생성될 수 있다. (생성되는 데이터의 수는 SELECT문에 따라 달라짐)
INSERT INTO table2 SELECT * FROM table1
INSERT INTO table2 (column_name) SELECT column_name FROM table1;
INSERT INTO Customers (
CustomerName,
Country
)
SELECT SupplierName,
Country
FROM Suppliers
SELECT INTO와 다르다.
UPDATE
테이블의 모든 레코드 혹은 일부 레코드의 특정 컬럼값(1개 이상)을 수정하는 명령어
UPDATE 테이블 SET 컬럼 = 수정값, 컬럼명 = 수정값... [where]
UPDATE country SET capital = '인천';
UPDATE country
SET capital = '인천', cont = 'kr', area = 999
WHERE capital = '서울';
UPDATE tbl_test
SET cnt = cnt+1
WHERE id = 'guest';
-- where절이 없는 update는 모든 레코드를 수정함
DELETE
특정 레코드를 삭제하는 명령어. where절이 생략되면 해당 테이블의 모든 레코드를 삭제한다.
DELETE FROM 테이블명 [where]
DELETE FROM rent WHERE rentDate <= '2013-01-31'