Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- error
- 오라클
- variable
- HTML
- Java
- JS
- Eclipse
- 오류
- function
- 자바
- SQL
- 개발자
- 서블릿
- From
- Servlet
- sqldeveloper
- 연산자
- 오라클오류
- 에러
- 삐옥
- 코딩
- 이클립스
- VisualStudioCode
- Operator
- 변수
- 자료형
- oracle
- select
- datatype
- CSS
Archives
- Today
- Total
뇨내
[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(3) primary key, --메모번호(PK)
name varchar2(30) default '익명' not null, --작성자
memo varchar2(1000) null, -- 메모내용
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(3) primary key, --메모번호(PK)
name varchar2(30) default '익명' not null, --작성자
memo varchar2(1000) null, -- 메모내용
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 |
'Oracle > DDL + DML + DCL' 카테고리의 다른 글
[Oracle-SQL Developer] Transaction 트랜잭션 (0) | 2021.12.25 |
---|---|
[Oracle-SQL Developer] DDL : Data Definition Language (0) | 2021.11.20 |
Comments