[ DML (Data Manipulation Language) ]
- 테이블내의 데이터를 입력,수정,삭제할때 사용하는 SQL언어
- 데이터를 실제로 DB에 저장할때는 COMMIT, 취소할때는 ROLLBACK을 사용한다.
1) INSERT문
- 데이터를 추가할때 사용
형식)
VALUES(값1,값2,..)
예1)
VALUES(50,'회계','서울');
COMMIT; --- 실제로 DB에 저장
-- 모든컬럼값을 모두 추가할때는 컬럼명 생략 가능!
2 VALUES(60,'인사부','대구');
-- 형변환 가능
2 VALUES('70','영업부','부산');
SQL> INSERT INTO EMP(EMPNO,ENAME,JOB,DEPTNO)
2 VALUES(1000,'홍길동','학생',70);
2) DELETE 문
-- 데이터를 삭제할때 사용
형식)
예1) 부서번호가 70번인 부서를 DEPT테이블에서 삭제하시오.
COMMIT;
-- 참조하는 자식데이터가 존재하면 데이터를 삭제할 수 없음
SQL> DELETE FROM DEPT WHERE DEPTNO=70;
DELETE FROM DEPT WHERE DEPTNO=70
*
ERROR at line 1:
ORA-02292: integrity constraint (SCOTT.FK_DEPTNO) violated - child record f
==> 자식데이터를 먼저지우고 부모데이터를 지운다.
SQL> DELETE FROM EMP WHERE DEPTNO=70;
1 row deleted.
SQL> DELETE FROM DEPT WHERE DEPTNO=70;
1 row deleted.
SQL> COMMIT;
-- DEPT테이블에서 부서번호가 50이상인 부서를 삭제해 보세요.
-- EMP테이블에서 사원이름이 '김철수'이거나 급여가 2000이상인 사원들을 삭제해 보세요.(COMMIT하지 말고 다시 ROLLBACK하세요)
2 WHERE ENAME='김철수' OR SAL>=2000;
3) UPDATE문
- 데이터를 수정할 때 사용
형식)
SET 컬럼명1=수정값,컬럼명2=수정값,..
WHERE 조건절;
예) 사원이름이 'ALLEN'인 사원의 부서를 10번,급여를 3000으로 수정하시오.
SET DEPTNO=10,SAL=3000
WHERE ENAME='ALLEN';
COMMIT;
-- 부서번호가 20번이고 급여가 2000이상인 사원들의 부서를 30번부서로 수정하세요.
SET DEPTNO=30
WHERE DEPTNO=20 AND SAL>=2000;
COMMIT;
-- 10번 부서사원들의 급여를 10%인상하세요.
2 SET SAL=SAL*1.1
3 WHERE DEPTNO=10;
-- 회원정보를 갖는 테이블
ID VARCHAR2(10) PRIMARY KEY,
PWD VARCHAR2(10),
PHONE VARCHAR2(15),
REGDATE DATE);
-- 구매 테이블
CREATE TABLE CART(
NUM NUMBER PRIMARY KEY,
ID VARCHAR(10) REFERENCES MEMBER(ID),
ITEM VARCHAR2(20),
PRICE NUMBER );
INSERT INTO MEMBER VALUES('SONG','1234','02-111-1234',SYSDATE);
INSERT INTO CART VALUES(1,'SONG','사탕',1000);
COMMIT;
'DBMS > 오라클기초' 카테고리의 다른 글
오라클 기초 #7(table) (0) | 2013.01.27 |
---|---|
오라클 기초#6(Transaction Control Language) (0) | 2013.01.27 |
오라클 기초#4 ( JOIN, ROWID, ROWNUM ) (0) | 2013.01.27 |
오라클 기초#3 (subquery) (0) | 2013.01.27 |
오라클 기초#2(함수) (0) | 2013.01.27 |