일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- android
- flet
- 자바암호
- 역학
- Database
- chatGPT's answer
- 시스템
- 소프트웨어공학
- JVM
- 고전역학
- 코틀린
- 웹 크롤링
- kotlin
- python
- oracle
- GPT-4's answer
- 자바
- 뉴턴역학
- 파이썬
- 유닉스
- write by GPT-4
- GIT
- NIO
- write by chatGPT
- 자바네트워크
- 리눅스
- lombok
- Spring boot
- Java
- 인프라
- Today
- Total
Akashic Records
Chapter 4 데이터 조작어(DML) - PLT 4.1 INSERT, UPDATE, DELETE 본문
Chapter 4 데이터 조작어(DML) - PLT 4.1 INSERT, UPDATE, DELETE
Andrew's Akashic Records 2018. 4. 15. 22:30DML(Data Manipulation Language) 명령은 데이터를 입력,수정,삭제하는 SQL명령어이다. 데이터베이스에 영구적으로 반영되지 않은 데이터 조작 명령어들을 TRANSACTION이라고 하며 오라클에서는 이를 하나의 논리적 작업 단위로 사용한다.
명 령 어 | 설 명 |
INSERT | 테이블에 새로운 행 추가 |
UPDATE | 테이블의 행 내용을 변경 |
DELETE | 테이블의 행 삭제 |
COMMIT | 저장되지 않은 모든 변경 사항을 Database에 저장 |
SAVEPOINT | savepoint 설정 |
ROLLBACK | 저장되지 않은 보든 변경 사항을 취소 |
PLT 4.1 INSERT
INSERT INTO table_name [(column1[, column2, . . . . . ])] VALUES (value1[, value2, . . . . . . ]); |
VALUES절을 가지는 INSERT문장은 한번에 오직 하나의 행만을 추가한다.
모든 행에 값을 갖는 새로운 행을 삽입할 수 있기 때문에 column list는 INSERT절에 필요하지 않다. 하지만 테이블에 정의된 순서에 따라 값을 나열해야 한다.
명확성을 위해 INSERT절에 column list를 사용하면 좋다.(권장)
문자와 날짜는 단일 따옴표 안에 쓰나, 수치 값은 사용하지 않는다.
INSERT 절의 column은 선택적으로 기입할 수 있다. 이럴 경우 열중 NOT NULL 제약 조건이 있는 열은 반드시 포함하여야 한다.
SQL> DESC emp Name Null? Type ------------------------------- -------- ---- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NOT NULL NUMBER(2)
SQL> INSERT INTO emp 2 VALUES (1111,'YOONJB','',NULL,SYSDATE,3000,NULL,10);
1 row created. |
NULL 값 입력
자료형에 관계없이 사용 가능하다.
암시적 방법
SQL> INSERT INTO dept(deptno,dname) 2 VALUES (50,'DEVELOPMENT');
|
명시적 방법
SQL> INSERT INTO dept 2 VALUES(60,'',NULL);
|
특정 날짜 값 삽입
형식 DD-MON-YY는 항상 날짜 값을 입력할 때 사용한다. 이 형식은 현재 세기에 대한 DEFAULT세기를 다시 호출한다. 또한 날짜가 시간 정보를 포함하므로 DEFAULT 시간은 자정(00:00:00)이다. 날짜를 다른 세기로 입력하거나 또는 특정 시간을 요구 한다면 TO_DATE함수를 사용하여라.
날짜 변환식 | 변환된 결과 |
TO_DATE('1999','YYYY') | 1999/02/01 00:00:00 |
TO_DATE('99','YY') | 1999/02/01 00:00:00 |
TO_DATE('02','MM') | 1999/02/01 00:00:00 |
TO_DATE('13','DD') | 1999/02/13 00:00:00 |
TO_DATE('10','HH24') | 1999/02/01 10:00:00 |
치환 변수를 사용하여 값 입력
SQL*Plus의 치환 변수를 사용하여 사용자가 상호 작용으로 값을 추가할 수 있다. 날짜와 문자 값은 단일 인용 부호를 사용하여 감싸는 것이 사용하기에 편하고 SCRIPT로 작성하여 사용하면 입력시 매우 유용하다.
SQL> ed dept_insert
INSERT INTO dept (deptno,dname,loc) VALUES (&department_id,'&department_name','&location');
SQL> @dept_insert Enter value for department_id: 70 Enter value for department_name: EDUCATION Enter value for location: ATLANTA old 2: VALUES (&department_id,'&department_name','&location') new 2: VALUES (70,'EDUCATION','ATLANTA')
1 row created. |
다른 테이블로부터 행 복사
기존의 테이블로부터 값을 가져와 테이블에 추가하기 위해서 INSERT문장을 사용할 수 있다. 즉VALUES절에서 subquery를 사용할 수 있다.
INSERT INTO table_name [column1[,column2, . . . .]] subquery; |
INSERT절의 열의 개수와 서브쿼리의 열의 개수가 좌측부터 1대1대응하며 자료형과 길이가 같아야 한다.
PLT 4.2 UPDATE
UPDATE문장으로 기존의 행을 갱신합니다.
일반적으로 단일 행을 식별하기 위해서 기본 키(primary key)를 사용합니다. 다른 열을 사용하면 원하지 않는 여러 행이 갱신될 수 있습니다.
특정 열이나 행은 WHERE절을 이용하여 갱신할 수 있다.
UPDATE table_name SET column1 = value1 [,column2 = value2, . . . . . . .] [WHERE condition]; |
SQL> UPDATE emp 2 SET deptno = 20, sal = 3500 3 WHERE empno = 7788;
1 row updated. |
다중 열 SUBQUERY로 갱신
다중 열 SUBQUERY는 UPDATE문장의 SET절로 구현할 수 있다.
UPDATE table_name SET (column1, column2, . . . . ) = ( SELECT column1,column2, . . . FROM table_name WHERE coundition) [WHERE condition]; |
SQL> UPDATE emp 2 SET (job,sal) = (SELECT job,sal 3 FROM emp 4 WHERE ename = 'SCOTT') 5 WHERE ename = 'JONES';
1 row updated. |
다른 테이블을 근거로 한 행 갱신
다른 테이블의 값을 근거로 하는 테이블에서 행을 갱신하기 위해 UPDATE문장에서SUBQUERY를 사용한다.
SQL> UPDATE employee 2 SET deptno = (SELECT deptno 3 FROM emp 4 WHERE empno = 7902) 5 WHERE job = (SELECT job 6 FROM emp 7 WHERE empno = 7902);
2 rows updated. |
PLT 4.3 DELETE
DELETE 문장을 사용하여 테이블로부터 기존의 자료를 삭제할 수 있다.
WHERE절을 명시하여 특정 행이나 행들을 삭제할 수 있다.
WHERE절을 생략하면 테이블의 모든 행이 삭제 된다.
DELETE [FROM] table_name [WHERER condition]; |
SQL> DELETE emp 2 WHERE TO_CHAR(hiredate,'YY') = '83';
1 row deleted. |
다른 테이블을 근거로 한 행 삭제
다른 테이블을 값을 근거로 행을 삭제하기 위해서는 SUBQUERY를 사용하여야 한다.
SQL> DELETE emp 2 WHERE deptno = (SELECT deptno 3 FROM dept 4 WHERE dname = 'SALES');
5 rows deleted. |
'오래된글 > DataBase' 카테고리의 다른 글
Chapter 6 PL SQL(Procedural Language/SQL) - 1 (0) | 2018.04.15 |
---|---|
Chapter 5 데이터 조회 - PLT 5.1 SELECT문의 기본 사용법 (0) | 2018.04.15 |
Chapter 3 Oracle 사용자 관리 - PLT 3.1 사용자 생성 (0) | 2018.04.15 |
Chapter 2 Oracle 객체 - PLT 2.1 Table (0) | 2018.04.15 |
Chapter 1 Oracle Server (0) | 2018.04.15 |