|
|
데이터 정의 및 타입 - INSERT |
|
|
|
1. 데이터 삽입(INSERT INTO) |
|
테이블 이름은 RENAME 구문을 사용하여 변경할 수 있다. |
|
1) 구문 |
INSERT INTO table_name [ ( attribute_list ) ] VALUES ( value_list ) [ ; ] INSERT INTO table_name DEFAULT [ VALUES ] [ ; ] |
|
|
table_name : 데이터를 생성하고자 하는 테이블 이름을 지정한다. |
|
attribute_list : 입력하고자 하는 값의 컬럼 이름을 지정한다. 만약 attribute_list를 명시하지 않으면 테이블에 정의된 모든 컬럼에 대한 값을 채워야 한다. 만약attribute_list에 일부 컬럼만 명시가 된다면 나머지 컬럼에는 정의된 디폴트 값이 할당되며 디폴트 값이 없을 경우 NULL 값이 할당된다. |
|
value_list : attribute_list 의 컬럼에 대응되는 값을 명시한다. value_list 의 항목은 표현식, 메소드 호출일 수 있고, attribute_list 의 속성 위치와 도메인 형식이 일치해야 한다. 각 이름과 값은 콤마(,)로 구별된다. |
|
DEFAULT : 두 번째 구문 형식의 INSERT 문은 각각의 속성에 디폴트 값을 할당하여 데이터를 생성한다. 만약 테이블 정의에서 컬럼에 디폴트 값이 설정되어 있지 않으면 그 컬럼의 값으로 NULL이 할당된다. |
|
2) 예제 |
|
다음은 athlete 테이블에 2008 베이징 올림픽 펜싱 은메달리스트 남현희 선수의 정보를 입력하는 예제이다. code 컬럼은 auto_increment이므로 값을 입력하지 않는다. 자세한 내용은 컬럼에서 자동 증가 특성 내용을 참조한다. |
INSERT INTO athlete (name, gender, nation_code, event) VALUES ('Nam Hyun-Hee','W', 'KOR', 'Fencing'); |
|
|
다음은 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'); |
|
|
다음은 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 [ ; ] |
|
|
table_name : 데이터를 삽입할 테이블의 이름을 지정한다. |
|
attribute_list : 입력하고자 하는 값들의 컬럼 이름을 지정한다. 이 곳에 정의된 데이터 타입은 query_statement의 결과의 데이터 타입과 일치해야 한다. |
|
query_statement : 삽입할 데이터를 추출하는 질의문을 정의한다. |
|
2) 예제 |
|
다음은 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 ) [ ; ] |
|
|
table_name : 데이터를 삽입할 테이블의 이름을 지정한다. |
|
attribute_list : 입력하고자 하는 값들의 컬럼 이름을 지정한다. |
|
value_list : attribute_list의 컬럼에 대응되는 값들을 명시한다. |
|
query_statement : 부질의를 정의한다. 부질의의 결과는 해당 컬럼에 대응되는 하나의 값이어야 한다. |
|
2) 예제 |
|
다음은 athlete 테이블에 2008 베이징 올림픽 유도 73kg 은메달 리스트 왕기춘 선수의 정보를 입력하는 예제이다. |
INSERT INTO athlete VALUES (16800, 'Wang Ki-chun','M',SELECT code FROM nation WHERE name ='Korea', 'Judo'); |
|
|