[Oracle] DML 기초 및 간단한 예제(insert, update, delete)

수경·2023년 9월 3일
0
post-thumbnail

DML

  • Data Manipulation Language
  • 데이터 조작어
  • 데이터를 추가/수정/삭제/조회하는 명렁어 > CRUD
  • 사용빈도가 가장 높음

1. insert

  • 테이블에 데이터를 추가하는 명령어
  • insert into 테이블명 (컬럼리스트) values (값리스트);

insert 구문

1.표준

  • 원본 테이블의 정의된 컬럼 순서대로 컬럼리스트와 값리스트를 구성하는 방법
INSERT INTO tblmemo (seq, name, memo, regdate) 
			VALUES (seqMemo.nextVal, '홍길동','메모',sysdate);

2. 컬럼리스트의 순서는 원본 테이블과 상관없다.

  • 컬럼리스트와 값리스트의 순서만 동일하면 된다.
INSERT INTO tblmemo (seq, memo, regdate, name) 
			VALUES (seqMemo.nextVal,'메모',sysdate,'홍길동');	

3. null 컬럼 조작

	-- a. null 상수		
INSERT INTO tblmemo (seq, name, memo, regdate) 
			VALUES (seqMemo.nextVal, '홍길동', NULL, sysdate);		
		
	-- b. 컬럼, 값 자체 생략		
INSERT INTO tblmemo (seq, name, regdate) 
			VALUES (seqMemo.nextVal, '홍길동',sysdate);

4. default 컬럼 조작

	-- a. 컬럼 생략
INSERT INTO tblmemo (seq, memo, regdate) 
			VALUES (seqMemo.nextVal, '메모', sysdate);		
		
	-- b. null 상수 > null(개발자 의지 표현) > default 작동 안함
INSERT INTO tblmemo (seq, name, memo, regdate) 
			VALUES (seqMemo.nextVal, null,'메모',sysdate);		
		
	-- c. default 상수
INSERT INTO tblmemo (seq, name, memo, regdate) 
			VALUES (seqMemo.nextVal, default,'메모',sysdate);

5. 단축(생략)

  • 컬럼리스트를 생략할 수 있다.
  • 컬럼시트를 생략하면 테이블의 원본 컬럼 순서대로 값리스트를 작성해야 한다.
INSERT INTO tblmemo VALUES (seqMemo.nextVal, '홍길동','메모',sysdate);	

-- null컬럼 생략 불가능
INSERT INTO tblmemo VALUES (seqMemo.nextVal, '홍길동',sysdate);	
INSERT INTO tblmemo VALUES (seqMemo.nextVal, '홍길동', NULL, sysdate);	

-- default 생략 불가능
INSERT INTO tblmemo VALUES (seqMemo.nextVal,'메모',sysdate);
INSERT INTO tblmemo VALUES (seqMemo.nextVal, default,'메모',sysdate);

6. 복사

  • tblMemo 테이블 복사하여 새 테이블 생성(tblMemoCopy)
CREATE TABLE tblMemoCopy
(
	seq number(3) PRIMARY KEY,					--메모번호(PK)
	name varchar2(30) DEFAULT '익명',			--작성자
	memo varchar2(1000),						--메모
	regdate DATE DEFAULT sysdate NOT null		--작성날짜
);

INSERT INTO tblMemoCopy SELECT * FROM tblMemo; 		--sub query
  • tblMemo 테이블 복사하여 새 테이블 생성(tblMemoCopy2)
-- 제약 사항이 복사가 안된다.
-- 임시(더미) 테스트용으로만 사용한다.
CREATE TABLE tblMemoCopy2 AS SELECT * FROM tblMemo;

INSERT INTO tblMemoCopy2 (seq, name, memo, regdate) 
			VALUES (15, '홍길동','메모',sysdate);

2. delete

  • 원하는 행을 삭제하는 명령어
  • DELETE [FROM] 테이블명 [WHERE 절]
-- tblinsa의 num이 1001 인 데이터를 삭제
DELETE FROM tblinsa WHERE num = 1001;

3. update

  • 원하는 행의 원하는 컬럼값을 수정하는 명령어
  • UPDATE 테이블명 SET 컬럼명=값 [, 컬럼명=값][WHERE 절]
-- tblcountry에서 name이 대한민국인 데이터의 capital를 세종으로 수정
-- 대한민국 수도 이전 : 서울 > 세종
UPDATE tblcountry SET capital = '세종' WHERE name = '대한민국';
profile
웹백엔드개발자를 꿈꾸는

0개의 댓글