<데이터 조작어(DML)-데이터의 입력>
-
DML: 데이터베이스에 데이터를 입력, 수정, 삭제하는 명령어
-
INSERT: 테이블에 새로운 행을 입력하는 명령어
- 실행전 열과 제약조건을 확인 (DESC+테이블. DESC:describe의 약자)
1
|
DESC departments;
|
cs |
-
전체 열을 다 입력하는 방법 1
1
2
3
|
INSERT INTO departments (department_id,
department_name, manager_id, location_id)
VALUES (71, '개발부 1', 100, 1700);
|
cs |
-
입력되었는지 확인
1
2
|
SELECT *
FROM departments;
|
cs |
-
COMMIT으로 저장
-
열의 이름이 없는 경우 전체 열을 다 입력해야 함
1
2
|
INSERT INTO departments
VALUES (72, '개발부 2', 100, 1700);
|
cs |
-
ROLLBACK;
1
|
ROLLBACK;
|
cs |
-
열의 순서를 바꿀경우
1
2
3
4
|
INSERT INTO departments (department_name,
manager_id, location_id, department_id)
VALUES ('개발부 3', 100, 1700, 73);
COMMIT;
|
cs |
-
자동으로 널값 입력
1
2
3
4
|
INSERT INTO departments (department_id, department_name)
VALUES (74, '개발부4');
COMMIT;
DESC departments;
|
cs |
-
sysdate 현재날짜 입력
1
2
3
4
5
|
INSERT INTO employees (employee_id, first_name,
last_name, email,hire_date,job_id)
VALUES (1, '홍', '길동', 'hong@naver.com', sysdate,'IT_PROG');
COMMIT;
DESC employees;
|
cs |
-
날짜 입력하기
1
2
3
4
5
|
INSERT INTO employees (employee_id, first_name,
last_name, email,hire_date,job_id)
VALUES (2, '강', '길동', 'kang@naver.com',
TO_DATE('2020-04-05','YYYY-MM-DD'),'IT_PROG');
COMMIT;
|
cs |
-
사용자로부터 입력받기
1
2
3
|
INSERT INTO departments (department_id, department_name)
VALUES (&id, '&name'); --75, 개발부 5
COMMIT;
|
cs |
-
테이블 만들기
-
테이블 전체를 카피해서 입력하는 방법
1
2
3
|
INSERT INTO XX_EMP (EMPNO, ENAME, SAL)
SELECT employee_id, first_name, salary
FROM employees;
|
cs |
-
INSERT 실행중에 에러가 나는 경우
1. 기본키에 이미 있는 (중복된) 값을 입력할 경우
1
2
3
|
INSERT INTO departments (department_id, department_name,
manager_id, location_id)
VALUES (10, '개발부 10', 100, 1700);
|
cs |
2. FK(외래키)에 참조되지 않은 값을 입력 (departments테이블은 location테이블을 참조하기 때문에 location_id는 1000부터 3200사이에만 들어가야함)
1
2
3
|
INSERT INTO departments (department_id, department_name,
manager_id, location_id)
VALUES (5, '개발부 5', 100, 1);
|
cs |
3. 데이터의 종류가 틀릴때
1
2
3
|
INSERT INTO departments (department_id, department_name,
manager_id, location_id)
VALUES ('10', '개발부 5', 100, 'D1');
|
cs |
4. 데이터의 사이즈가 맞지 않을때
INSERT INTO departments (department_id, department_name,
manager_id, location_id)
VALUES ('10', '개발부 5 개발부 5 개발부 5 개발부 5 개발부 5 개발부 5',
100, 'D1');
1
2
3
4
|
INSERT INTO departments (department_id, department_name,
manager_id, location_id)
VALUES ('10', '개발부 5 개발부 5 개발부 5 개발부 5 개발부 5 개발부 5',
100, 'D1');
|
cs |
-
테이블을 카피하기
1
2
3
|
CREATE TABLE COPY_DEPT
AS
SELECT * FROM departments;
|
cs |
departments 테이블을 카피한 COPY_DEPT 테이블이 생성됨
<INSERT 예제>
-
departments 테이블에 department_id, department_name, manager_id가 200, location_id가 1700인 행을 3개 입력
1
2
3
4
5
6
7
8
9
10
11
|
INSERT INTO departments (department_id, department_name,
manager_id, location_id)
VALUES (271, 'Sample Dept 1', 200, 1700);
INSERT INTO departments (department_id, department_name,
manager_id, location_id)
VALUES (272, 'Sample Dept 2', 200, 1700);
INSERT INTO departments (department_id, department_name,
manager_id, location_id)
VALUES (273, 'Sample Dept 3', 200, 1700);
|
cs |
-
copy_departments 테이블을 만든 후 SELECT 문을 이용하여 departments 테이블 내용을 전부 입력
1
2
3
4
5
6
7
|
CREATE TABLE copy_departments (department_id number(4,0),
department_name varchar2 (30 byte),
manager_id number (6,0),
location_id number (4,0));
INSERT INTO copy_departments
SELECT * FROM departments;
|
cs |
'Learning > SQL' 카테고리의 다른 글
데이터 조작어(DML) - DELETE (데이터의 삭제) (0) | 2020.06.19 |
---|---|
데이터 조작어(DML) - UPDATE (데이터의 갱신 (0) | 2020.06.19 |
트랜잭션 (0) | 2020.06.19 |
집합연산자 (UNION, INTERSECT, MINUS) (0) | 2020.06.18 |
서브쿼리 - 다중열 (0) | 2020.06.18 |