본문 바로가기

SQL

SQL [14] - Insert

<Insert>

새로운 레코드를 추가하는 명령어

 

Insert into 테이블 [(컬럼명1,컬럼명2...) ]

values (값1,값2...) ;

 

컬럼명 생략시 데이터베이스에 설정된 스키마 순서대로 입니다.

컬럼명 생략시 반드시 모든 컬럼을 스키마에 정의된 순서대로 값을 설정해야합니다.

-> 다만, 권장하지 않는 방식입니다.

-- 컬럼명을 기술해야 하는 경우

1. 모든 컬럼에 값을 입력하지 않는 경우

2. 스키마의 순서를 모르는 경우. 순서를 개발자가 지정할 때

3. db구조가 자주 변경될 때 

 

-- Quiz. dept2 테이블에 9000번 부서를 추가하기

(1) 추가 전 데이터 셋 조회

select * from dept2 ;

(2) 데이터 추가

insert into dept2 (dcode,dname,pdept,area)

values (9006,'특수판매6팀',9000,'임시지역')

;

 

(3) 추가 후 데이터 셋 조회

select * from dept2 ;

--Quiz. 컬럼명 부분 생략하여, 9001번 부서 추가하기

insert into dept2

values (9001,'특수판매1팀',9000,'임시지역')

;

 

<Rollback>

** Rollback; 을 입력하면, insert로 추가했던 데이터 값이 원래대로 복구되어 사라지게 됩니다. 

** 잘못 추가 했을 경우 유용합니다.

 

 

-- Quiz . 모든 컬럼에 값을 입력하지 않는 경우 반드시 컬럼명부분을 구현해야 함. 9002번 부서 추가하기

(1) 추가 전 데이터 셋 조회

select * from dept2 ;

(2) 데이터 추가

insert into dept2 (dcode,dname)

values (9008,'특수판매11팀')

;

 

(3) 추가 후 데이터 셋 조회

select * from dept2 ;

 

-- insert 구문으로 다른 테이블의 내용을 복사하기 (컬럼만 있고 행의 값은 없는 구조만 복사)

-- insert 구문 사용전에 테이블 생성

 

Quiz. dept12 테이블을 생성하고, dept2 테이블에서 서울지역인 레코드만 dept12 테이블에 부서코드와 부서명만 복사하기

 

(1) create table 만들테이블명 as select * from 가져올 테이블명 where 1=0 조건을 하면,

-> 값이 없는 테이블만 가져올수 있다. 

create table dept12 as select * from dept2 where 1=0 ; 

 

(2) select * from dept12 ;

 

(3) insert into dept12(dcode, dname) select dcode, dname from dept2 where area = '서울지사'

 

 

(4) select * from dept12 ;

 

'SQL' 카테고리의 다른 글

SQL [16] - Delete  (0) 2021.05.05
SQL [15] - Update  (0) 2021.05.05
SQL [13] - SUB QUERY 서브 쿼리 (단일행, 다중행)  (0) 2021.05.02
SQL [12] - SELF JOIN  (0) 2021.05.02
SQL [11] - JOIN(Cross, Equi, non-Equi, Outer)  (0) 2021.05.02