뇨내

[Oracle -SQL Developer] DML : Data Manipulation Language 본문

Oracle/DDL + DML + DCL

[Oracle -SQL Developer] DML : Data Manipulation Language

삐옥 2021. 11. 21. 15:49

 

 

 

 

 

 


 

 

 

Data Manipulation Language 데이터 조작어

 

1. SELECT

2. INSERT

3. UPDATE

4. DELETE

 

- NOT AUTO COMMIT

- 데이터베이스의 테이블에 들어 있는 데이터에 변형을 가하는 종류의 명령어들

- 데이터를 테이블에 새로운 행을 넣거나, 원하지 않는 데이터를 삭제하거나 수정하는 명령어

 

 


 

 

 

SELECT

 

SELECT 컬럼명 FROM 테이블;

 

- 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE 라고도 함

 

 


 

 

INSERT

 

INSERT INTO 테이블명(컬럼리스트) VALUES (값리스트);

 

- 테이블에 데이터를 추가하는 명령어(행 추가, 레코드 추가)

 

 


 

 

UPDATE

 

UPDATE 테이블명 SET 수정 전 컬럼명 = 수정 후 새로운 값;

 

- 테이블에 데이터를 수정하는 명령어

- 주의 : where이 필요한 수정 시 where절을 반드시 확인한다.

 

1
2
3
4
5
6
select * from tblCountry;
 
-- 대한민국 : 서울 > 세종 
update tblCountry set capital = '세종'-- 모든 레코드(행)을 대상으로 수정함
 
update tblCountry set capital = '세종' where name = '대한민국';
cs

 

 


 

 

DELETE

 

DELETE FROM 삭제를 희망하는 테이블명 WHERE 조건절;

 

- 테이블의 원하는 행을 삭제한다.

- 테이블의 스키마는 남는다.

 

1
delete from tblCook where name = '계란후라이';
cs

 

 


 

 

 

 

 

 

실습

 

1
2
3
4
5
6
7
8
9
10
11
12
13
drop table tblMemo;
 
create table tblMemo(
    seq number(3primary key,                          --메모번호(PK)
    name varchar2(30default '익명' not null,           --작성자
    memo varchar2(1000null,                           -- 메모내용
    regdate date default sysdate null                   -- 작성날짜
);
 
drop sequence seqMemo;
 
create sequence seqMemo;
 
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
-- 1. 표준 : 원본 테이블에 정의된 컬럼 순서대로 컬럼리스트와 랎리스트를 구성하는 방식
insert into tblMemo (seq, name, memo, regdate)
    values (seqMemo.nextVAl, '홍길동''메모내용입니다.', sysdate);
    
    
-- 2. 컬럼리스트의 순서는 원본 테이블과 관계없다.
--    컬럼리스트의 순서와 값리스트의 순서는 반드시 일치해야 한다.(***)
insert into tblMemo (name, memo, regdate, seq)
    values (seqMemo.nextVAl, '홍길동''메모내용입니다.', sysdate);
insert into tblMemo (name, memo, regdate, seq)
    values ('홍길동''메모내용입니다.',sysdate, seqMemo.nextVAl);
 
 
-- 3. ORA-00947: not enough values
--    컬럼리스트의 개수와 값리스트 개수는 동일해야한다.
insert into tblMemo (seq, name, memo, regdate)
    values (seqMemo.nextVAl, '홍길동', sysdate); 
   
   
-- 4. ORA-00913: too many values
--    컬럼리스트의 개수와 값리스트 개수는 동일해야 한다.
insert into tblMemo (seq, name, memo)
    values (seqMemo.nextVAl, '홍길동''메모내용입니다.', sysdate);
 
select * from tblMemo; 
 
 
-- 5. null 컬럼 조작
-- a. memo varchar2(1000) null
-- b. regdate date default sysdate null
 
-- null 컬럼(default x)에 null을 넣는 방법
-- 방법 1. null 상수 사용
insert into tblMemo (seq, name, memo, regdate)
    values (seqMemo.nextVal, '홍길동'null, sysdate);
    
-- 방법 2. 생략
insert into tblMemo (seq, name, regdate)
    values (seqMemo.nextVal, '홍길동', sysdate);
        
-- null 컬럼(default o)에 null을 넣는 방법
-- default가 설정된 컬럼은
--      a. null을 명시적으로 넣으면 null이 들어간다. + default 동작 안함
--      b. 생략을 통해 넣으면 + default 동작 함
insert into tblMemo (seq, name, memo, regdate) 
    values (seqMemo.nextVal, '홍길동''메모내용입니다.'null);
    
insert into tblMemo (seq, name, memo)
    values (seqMemo.nextVal, '홍길동''메모내용입니다.');
 
 
-- 6. default 조작
--      a. name varchar2(30) default '익명' not null, 
--      b. regdate date default sysdate null
 
-- a.
insert into tblMemo (seq, name, memo, regdate)
    values (seqMemo.nextVAl, null'메모내용입니다.', sysdate);
    
insert into tblMemo (seq, name, memo, regdate)
    values (seqMemo.nextVAl, '홍길동''메모내용입니다.', sysdate);
 
insert into tblMemo (seq, memo, regdate)
    values (seqMemo.nextVAl, '메모내용입니다.', sysdate);          -- 생략 o : 익명이라는 글자가 들어가게됨
    
insert into tblMemo (seq, name, memo, regdate)
    values (seqMemo.nextVAl, default'메모내용입니다.', sysdate); -- 생략 x : 익명이라는 글자가 들어가게됨
 
--b.
insert into tblMemo (seq, name, memo)
    values (seqMemo.nextVAl, '홍길동''메모내용입니다.');
 
insert into tblMemo (seq, name, memo, regdate)
    values (seqMemo.nextVAl, '홍길동''메모내용입니다.'default);
 
 
--7. 단축표현
--  컬럼리스트를 생략할 수 있다.
--  원본 테이블의 컬럼 순서대로 값을 넣어야 한다.
insert into tblMemo values (seqMemo.nextVAl, '홍길동''메모내용입니다.', sysdate);    
insert into tblMemo values ('홍길동''메모내용입니다.', sysdate, seqMemo.nextVAl); --ORA-00932: inconsistent datatypes: expected DATE got NUMBER  
insert into tblMemo values (seqMemo.nextVAl, '홍길동''메모내용입니다.'); --ORA-00947: not enough values    
    
    
--8.
-- tblMemo 복사 -> 복사 테이블  
create table tblMemoCopy(
    seq number(3primary key,                          --메모번호(PK)
    name varchar2(30default '익명' not null,           --작성자
    memo varchar2(1000null,                           -- 메모내용
    regdate date default sysdate null                   -- 작성날짜
);    
 
insert into tblMemoCopy select * from tblMemo;   
    
   
--9.
create table tblMemoCopy2 as select * from tblMemo;
 
select * from tblMemo;
select * from tblMemoCopy;
select * from tblMemoCopy2; -- 테이블을 안만들어도되는방법 그러나 권장은 안함
 
cs

 

 

 

 


 

Comments