출처 http://www.gurubee.net/lecture/1016
INSERT
INSERT 명령어는 테이블 안에 데이터를 삽입하는 역할을 한다.
INSERT 문법
INSERT INTO table_name(column1, column2, ...) VALUES (데이터, '데이터',...); INSERT INTO table_name(column1, column2,...) SELECT column1, column2,... FROM table_name WHERE 조건 ; - 실제 데이터는 VALUES 괄호()안에 입력하고 문자열은 단일 따옴표(' ')로 둘러싼다. - 각각의 데이터 구분은 ","로 한다. - 테이블 이름 옆에 () 생략시에는 자동으로 모든 컬럼을 VALUES() 안에 입력 시킨다. |
INSERT 예제
-- 모든 데이터를 입력할 경우 SQL> INSERT INTO emp VALUES(7369, 'SMITH', 'CLERK', 7902, TO_DATE('80/12/17'), 800, NULL, 20, NULL); -- 원하는 데이터만 입력할 경우 SQL> INSERT INTO dept (deptno, dname) VALUES(10, 'ACCOUNTING' ); SQL> INSERT INTO dept (deptno, dname) 2 VALUES(10, 'ACCOUNTING'); 1 개의 행이 만들어졌습니다. SQL> select * from dept; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON -- SELECT 문장을 이용한 INSERT SQL> INSERT INTO dept2 SELECT * FROM dept; SQL> INSERT INTO dept2 2 SELECT * FROM dept; INSERT INTO dept2 * 1행에 오류: ORA-00001: 무결성 제약 조건(SCOTT.DEPT_PK_DEPTNO)에 위배됩니다 -> dept2 에 기본키가 지정되있는데 dept1에서 deptno의 값이 10, 10 으로 중복되어있었다. ( 위의 INSERT 예제 실행시,) SQL> select * from dept; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON SQL> DELETE FROM dept 2 WHERE deptno = 10 AND dname ='ACCOUNTING' AND loc=''; 0 행이 삭제되었습니다. SQL> DELETE FROM dept 2 WHERE deptno = 10 AND dname ='ACCOUNTING' AND loc=NULL; 0 행이 삭제되었습니다. SQL> DELETE FROM dept 2 WHERE deptno = 10 AND dname ='ACCOUNTING' AND TRIM(LOC) IS NULL; 1 행이 삭제되었습니다. SQL> SELECT * FROM dept; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 다음과 같이 공백을 조회하고 싶으면 WHERE TRIM(LOC) IS NULL;을 사용하면됨 중복된 ROW 데이터 삭제 방법 -- 중복된 데이터중에서 ROWID가 큰 값(나중에 등록된 데이터) 제거 SQL> DELETE FROM emp a WHERE ROWID > (SELECT MIN(ROWID) FROM emp b WHERE b.empno = a.empno);
-- 나중에 들어온 데이터를 살릴경우 SQL> DELETE FROM emp a WHERE ROWID < (SELECT MAX(ROWID) FROM emp b WHERE a.empno = b.empno); SQL> DELETE FROM dept a 2 WHERE ROWID > (SELECT MIN(ROWID) 3 FROM dept b 4 WHERE a.deptno = b.deptno); 1 행이 삭제되었습니다. SQL> SELECT * FROM dept 2 ; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON |
UPDATE
테이블 안의 데이터를 수정한다.
UPDATE table_name SET column1 = 값(고칠내용), column2 = 값, ... WHERE 조건 --사원번호가 7902번인 사원의 부서 번호를 30으로 수정 SQL> UPDATE emp SET deptno = 30 WHERE empno = 7902; -- 부서번호 20의 사원들 급여가 10% 인상됨 SQL> UPDATE emp SET sal = sal * 1.1 WHERE deptno = 20; -- 모든 사원의 입사일을 오늘로 수정 SQL> UPDATE emp SET hiredate = SYSDATE |
DELETE
사용하지 않는 데이터를 삭제한다.
DELETE FROM table_name WHERE 조건; -- 사원번호가 7902번인 사원의 데이터를 삭제. SQL> DELETE FROM emp WHERE empno = 7902 ; -- 평균급여보다 적게 받는 사원 삭제 SQL> DELETE FROM emp WHERE sal < (SELECT AVG(sal) FROM emp);
-- 모든 행이 삭제 SQL> DELETE FROM emp; |
'이전것 > 데이터베이스' 카테고리의 다른 글
중복 데이터 삭제 (0) | 2016.11.14 |
---|---|
ORA-30926: 원본 테이블의 고정 행 집합을 가져올 수 없습니다 (0) | 2016.11.14 |
3.5. 테이블의 관리 (0) | 2016.11.10 |
3.4. LOB, LONG, LONG RAW 데이터 타입 간의 비교 (0) | 2016.11.10 |
3.3. 오라클 데이터 타입 (0) | 2016.11.10 |