2022. 11. 3. 13:55ㆍ데이터베이스
DML(INSERT, UPDATE, DELETE) 문의 이해
INSERT, UPDATE, DELETE
SQL> INSERT INTO <테이블> [(컬럼, 컬럼, ... )]
2 VALUES (값, 값, ...);
SQL> UPDATE 테이블
2 SET 컬럼 = 값, 컬럼 = 값, ...
3 [WHERE 조건];
SQL> DELETE FROM 테이블
2 [WHERE 조건];
SQL> COMMIT;
SQL> ROLLBACK;
예제 1. Dept 테이블의 모든 데이터를 삭제한 다음 ROLLBACK을 수행한 다음 결과를 확인한다.
SQL> DELETE FROM dept;
7 행이 삭제되었습니다.
SQL> SELECT * FROM dept;
선택된 레코드가 없습니다.
SQL> ROLLBACK;
롤백이 완료되었습니다.
SQL> SELECT * FROM dept;
DN DNAME LOC
-- ---------- ------
01 총무 서울
02 회계 서울
10 ERP 서울
20 ISP 부산
30 ITEA 광주
40 CRM 대전
50 POS
7 개의 행이 선택되었습니다.
예제 2. Emp와 dept 테이블의 모든 데이터를 삭제한다.
SQL> DELETE FROM dept;
7 행이 삭제되었습니다.
SQL> DELETE FROM emp;
21 행이 삭제되었습니다.
SQL> SELECT * FROM dept;
선택된 레코드가 없습니다.
SQL> SELECT * FROM emp;
선택된 레코드가 없습니다.
SQL> COMMIT;
커밋이 완료되었습니다.
예제 3. EMP 테이블에 아래 제공된 값을 입력한다.
ENO ENAME SEX JOB MGR HDATE SAL COMM DNO
----- --------- --- ------- ----- ---------- ------- ------- ------
1001 문시현 남 모델링 1991/02/01 4500 520 10
1002 김주란 여 모델링 1992/03/03 4100 330 20
1003 양선호 남 모델링 1995/02/21 4300 30
SQL> ALTER SESSION SET nls_date_format='YYYY/MM/DD';
세션이 변경되었습니다.
SQL> DESC emp;
이름 널? 유형
----------------------------------------- -------- ------------
ENO VARCHAR2(4)
ENAME VARCHAR2(10)
SEX VARCHAR2(2)
JOB VARCHAR2(8)
MGR VARCHAR2(4)
HDATE DATE
SAL NUMBER
COMM NUMBER
DNO VARCHAR2(2)
SQL> INSERT INTO emp (eno, ename, sex, job, mgr, hdate, sal, comm, dno)
2 VALUES ('1001', '문시현', '남', '모델링', NULL, '1991/02/01', 4500, 520, '10');
1 개의 행이 만들어졌습니다.
SQL> INSERT INTO emp (eno, ename, sex, job, hdate, sal, comm, dno)
2 VALUES ('1002', '김주란', '여', '모델링', '1992/03/03', 4100, 330, '20');
1 개의 행이 만들어졌습니다.
SQL> INSERT INTO emp
2 VALUES ('1003', '양선호', '남', '모델링', NULL, '1995/02/21', 4300, NULL, '30');
1 개의 행이 만들어졌습니다.
-----> 절대하면안된다 컬럼,행이 40~50개인데 오류가 나면 어디서 문제가 생긴건지
확인할수 없기 때문이다.
SQL> COMMIT;
커밋이 완료되었습니다.
SQL> SELECT * FROM emp;
ENO ENAME SE JOB MGR HDATE SAL COMM DN
---- ---------- -- -------- ---- ---------- ---------- ---------- --
1001 문시현 남 모델링 1991/02/01 4500 520 10
1002 김주란 여 모델링 1992/03/03 4100 330 20
1003 양선호 남 모델링 1995/02/21 4300 30
예제 4. Emp 테이블의 모든 데이터를 삭제하고 아래 제공된 값을 입력한다.
ENO ENAME HDATE
----- ------ --------------------
5001 안영희 1991/01/03:07:15:25
SQL> SELECT sysdate FROM dual; -> 현재 날짜,시간
SYSDATE
----------
2013/09/30
SQL> INSERT INTO emp (eno, ename, hdate)
2 VALUES ('5001', '안영희', '1991/01/03:07:15:25');
VALUES ('5001', '안영희', '1991/01/03:07:15:25')
*
2행에 오류:
ORA-01830: 날짜 형식의 지정에 불필요한 데이터가 포함되어 있습니다
SQL> ALTER SESSION SET nls_date_format = 'YYYY/MM/DD:HH24:MI:SS';
세션이 변경되었습니다.
SQL> INSERT INTO emp (eno, ename, hdate)
2 VALUES ('5001', '안영희', '1991/01/03:07:15:25');
1 개의 행이 만들어졌습니다.
SQL> COMMIT;
커밋이 완료되었습니다. 예제 5. 날짜 형식을 확인하고 아래 제공된 값을 입력한다. 날짜 입력에 TO_DATE()를 이용한다.
ENO ENAME HDATE
----- ------ --------------------
5002 안영숙 1992/09/05:08:15:25
SQL> ALTER SESSION SET nls_date_format = 'YYYY-MM-DD';
세션이 변경되었습니다.
SQL> INSERT INTO emp (eno, ename, hdate)
2 VALUES ('5002', '안영숙', TO_DATE('1992/09/05:08:15:25', 'YYYY/MM/DD:HH24:MI:SS'));
1 개의 행이 만들어졌습니다.
SQL> COMMIT;
커밋이 완료되었습니다.
SQL> SELECT eno, ename, TO_CHAR(hdate,'YYYY/MM/DD:HH24:MI:SS') FROM emp;
ENO ENAME TO_CHAR(HDATE,'YYYY
-------- ---------- -------------------
5002 안영숙 1992/09/05:08:15:25
1001 문시현 1991/02/01:00:00:00
1002 김주란 1992/03/03:00:00:00
1003 양선호 1995/02/21:00:00:00
5001 안영희 1991/01/03:07:15:25
예제 6. 날짜에 적용되는 디폴트 값을 확인한다.
SQL> ALTER SESSION SET nls_date_format='YYYY-MM-DD:HH24:MI:SS';
세션이 변경되었습니다.
SQL> INSERT INTO emp (eno,hdate) VALUES ('01', TO_DATE('2000', 'YYYY'));
1 개의 행이 만들어졌습니다.
SQL> INSERT INTO emp (eno,hdate) VALUES ('02', TO_DATE('99', 'YY'));
1 개의 행이 만들어졌습니다.
SQL> INSERT INTO emp (eno,hdate) VALUES ('03', TO_DATE('99', 'RR'));
1 개의 행이 만들어졌습니다.
SQL> COMMIT;
커밋이 완료되었습니다.
SQL> SELECT eno, hdate FROM emp
2 ORDER BY 1;
ENO HDATE
-------- -------------------
01 2000-01-01:00:00:00
02 2099-01-01:00:00:00
03 1999-01-01:00:00:00
..............
..............
8 개의 행이 선택되었습니다.
예제 7. 김주란의 부서 번호를 10번으로 수정하고 급여를 10% 인상 하세요
- 수행 전 실습용 테이블을 초기화 한다.
SQL> @c:\sql\school201712
SQL> SELECT * FROM emp WHERE ename = '김주란';
ENO ENAME SEX JOB MGR HDATE SAL COMM DNO
---- ---------- --- -------- ---- ---------- ---------- ---------- ---
1002 김주란 여 모델링 0201 1992/03/03 4100 330 20
SQL> UPDATE emp SET dno = '10', sal = sal*1.1
2 WHERE ename = '김주란';
1 행이 갱신되었습니다.
SQL> COMMIT;
커밋이 완료되었습니다.
SQL> SELECT * FROM emp WHERE ename = '김주란';
ENO ENAME SEX JOB MGR HDATE SAL COMM DNO
---- ---------- --- -------- ---- ---------- ---------- ---------- ---
1002 김주란 여 모델링 0201 1992/03/03 4510 330 10
SQL> SELECT * FROM emp
2 WHERE dno = '01';
ENO ENAME SEX JOB MGR HDATE SAL COMM DNO
---- ---------- --- -------- ---- ---------- ---------- ---------- ---
0001 안영희 여 경영 1991/01/01 4800 0 01
0201 안영숙 여 지원 0001 1991/02/01 3900 2200 01
0202 손하늘 여 지원 0001 1991/02/01 3510 980 01
SQL> UPDATE emp SET sal = sal * 1.1
2 WHERE dno = '01';
3 행이 갱신되었습니다.
SQL> COMMIT;
커밋이 완료되었습니다.
SQL> SELECT * FROM emp
2 WHERE dno = '01';
ENO ENAME SEX JOB MGR HDATE SAL COMM DNO
---- ---------- --- -------- ---- ---------- ---------- ---------- ---
0001 안영희 여 경영 1991/01/01 5280 0 01
0201 안영숙 여 지원 0001 1991/02/01 4290 2200 01
0202 손하늘 여 지원 0001 1991/02/01 3861 980 01
'데이터베이스' 카테고리의 다른 글
데이터베이스 - 단일 행 함수 (0) | 2022.11.03 |
---|---|
데이터베이스 - 트랜잭션 (0) | 2022.11.03 |
데이터베이스 - 서브쿼리 기초1 (1) | 2022.11.03 |
리눅스DB(사용자 계정 생성) (0) | 2022.11.03 |
오라클 DB 구조 (0) | 2022.11.03 |