강좌
클라우드/리눅스에 관한 강좌입니다.
데이터베이스 분류

기본 SQL문 - INSERT

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

sub_title_icon.gif 데이터 정의 및 타입 - INSERT
1. 데이터 삽입(INSERT INTO)
테이블 이름은 RENAME 구문을 사용하여 변경할 수 있다.
1) 구문
INSERT INTO table_name [ ( attribute_list ) ] VALUES ( value_list ) [ ; ]
INSERT INTO table_name DEFAULT [ VALUES ] [ ; ]
icon_sub02.gif table_name : 데이터를 생성하고자 하는 테이블 이름을 지정한다.
icon_sub02.gif attribute_list : 입력하고자 하는 값의 컬럼 이름을 지정한다. 만약 attribute_list를 명시하지 않으면 테이블에 정의된 모든 컬럼에 대한 값을 채워야 한다. 만약attribute_list에 일부 컬럼만 명시가 된다면 나머지 컬럼에는 정의된 디폴트 값이 할당되며 디폴트 값이 없을 경우 NULL 값이 할당된다.
icon_sub02.gif value_list : attribute_list 의 컬럼에 대응되는 값을 명시한다. value_list 의 항목은 표현식, 메소드 호출일 수 있고, attribute_list 의 속성 위치와 도메인 형식이 일치해야 한다. 각 이름과 값은 콤마(,)로 구별된다.
icon_sub02.gif DEFAULT : 두 번째 구문 형식의 INSERT 문은 각각의 속성에 디폴트 값을 할당하여 데이터를 생성한다. 만약 테이블 정의에서 컬럼에 디폴트 값이 설정되어 있지 않으면 그 컬럼의 값으로 NULL이 할당된다.
2) 예제
icon_sub02.gif 다음은 athlete 테이블에 2008 베이징 올림픽 펜싱 은메달리스트 남현희 선수의 정보를 입력하는 예제이다. code 컬럼은 auto_increment이므로 값을 입력하지 않는다. 자세한 내용은 컬럼에서 자동 증가 특성 내용을 참조한다.
INSERT INTO athlete (name, gender, nation_code, event) VALUES ('Nam Hyun-Hee','W', 'KOR', 'Fencing');
icon_sub02.gif 다음은 olympic 테이블에 2008 베이징 올림픽의 대략적인 정보를 넣는 예제이다.
INSERT INTO olympic (host_year, host_nation, host_city, opening_date, closing_date) VALUES (2008, 'China', 'beijing', '2008-08-08','2008-08-24');
icon_sub02.gif 다음은 DEFAULT를 이용한 데이터 삽입을 보여주는 예제이다. 예제를 위해 de_test 테이블을 생성하고 데이터를 삽입한다. 아래와 같이 설정된 디폴트 값이 자동으로 삽입된 것을 알 수 있다.
CREATE TABLE de_test(
   a INT DEFAULT 10,
   b INT DEFAULT 20,
   c CHAR(1) DEFAULT 'M'
);
INSERT INTO de_test DEFAULT;

csql> SELECT * FROM de_test;
csql> ;x
=== <Result of SELECT Command in Line 1> ===
   a    b    c
===============
   10   20   'M'
1 rows selected.
2. 질의를 이용한 INSERT
INSERT 문에 질의를 사용하면 하나의 INSERT 문으로 다수의 데이터를 생성할 수 있다.
다른 테이블로부터 특정 검색 조건을 만족하는 데이터를 추출하고 싶은 경우 질의를 이용하면 조건을 만족하는 모든 데이터는 INSERT 문에 명시된 테이블의 데이터가 된다.
1) 구문
INSERT INTO table_name [ (attribute_list ) ] query_statement [ ; ]
icon_sub02.gif table_name : 데이터를 삽입할 테이블의 이름을 지정한다.
icon_sub02.gif attribute_list : 입력하고자 하는 값들의 컬럼 이름을 지정한다. 이 곳에 정의된 데이터 타입은 query_statement의 결과의 데이터 타입과 일치해야 한다.
icon_sub02.gif query_statement : 삽입할 데이터를 추출하는 질의문을 정의한다.
2) 예제
icon_sub02.gif 다음은 man 테이블을 생성하고 athlete 테이블에서 남자 선수들의 이름을 조회하여 결과를 삽입한다. 하나의 INSERT 문을 이용하여 4087건의 데이터가 삽입되는 것을 알 수 있다.
CREATE TABLE man (
   name VARCHAR(40)
);

csql> INSERT INTO man (name) SELECT name FROM athlete WHERE gender ='M';
csql> ;x
4087 rows inserted.
Current transaction has been committed.
1 command(s) successfully processed.
3. 부질의를 이용한 INSERT
INSERT 문의 VALUES 항목의 하나로 질의를 포함하여 데이터를 삽입할 수 있다.
1) 구문
INSERT INTO table_name [ ( attribute_list ) ]
VALUES ( value_list, query_statement ) [ ; ]
icon_sub02.gif table_name : 데이터를 삽입할 테이블의 이름을 지정한다.
icon_sub02.gif attribute_list : 입력하고자 하는 값들의 컬럼 이름을 지정한다.
icon_sub02.gif value_list : attribute_list의 컬럼에 대응되는 값들을 명시한다.
icon_sub02.gif query_statement : 부질의를 정의한다. 부질의의 결과는 해당 컬럼에 대응되는 하나의 값이어야 한다.
2) 예제
icon_sub02.gif 다음은 athlete 테이블에 2008 베이징 올림픽 유도 73kg 은메달 리스트 왕기춘 선수의 정보를 입력하는 예제이다.
INSERT INTO athlete VALUES (16800, 'Wang Ki-chun','M',SELECT code FROM nation WHERE name ='Korea', 'Judo');

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  83 명