MySQL, MariaDB

테이블 생성 삭제 / 데이터 입력 삭제

SungWookKang 2015. 7. 16. 12:45
반응형

테이블 생성 삭제 / 데이터 입력 삭제

 

  • Version : Mariadb 5.5.4.2-WinX64

 

테이블 생성 삭제에 대해서 알아본다.

 

[테이블 생성]

  • 기본 문법

CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name

(create_definition,...) [table_options ]... [partition_options]

CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name

[(create_definition,...)] [table_options ]... [partition_options]

select_statement

CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name

{ LIKE old_table_name | (LIKE old_table_name) }

select_statement:

[IGNORE | REPLACE] [AS] SELECT ... (Some legal select statement)

 

create table tbl_a (

num int,

name nvarchar(50)

)

 

 

 

[테이블 삭제]

drop table tbl_a

 

 

[자동증가 값이 있는 테이블 생성]

AUTO_INCREAMENT 옵션으로 컬럼에 자동증가 값을 부여 할 수 있다. (MS SQL Server에서는 Identity 명령어를 사용한다.)

 

create table tbl_a (

num int AUTO_INCREMENT,

name nvarchar(50),

primary key (num)

);

 

insert into tbl_a (name) values ('kang');

insert into tbl_a (name) values ('sung');

 

select * from tbl_a

 

 

SET INSERT_ID = ? 명령을 사용하여 자동 증가값의 시작 값을 변경 할 수 있다.

set insert_id = 10;

 

insert into tbl_a (name) values ('wook');

 

select * from tbl_a;

 

 

INSERT_ID 값을 이미 존재하는 값으로 변경하고 데이터를 입력하면 옵션은 오류 없이 적용 되지만 데이터를 입력 할 때 PRIMARY 오류가 발생한다.

set insert_id = 2;

 

insert into tbl_a (name) values ('kang1');

 

 

위 예제에서 INSERT_ID = 3을 입력하고 데이터를 입력하면 정상적으로 입력되며 (현재 3 값이 없기 때문에) 다음 값은 마지막 INCREMENT 값 + 1인 11로 입력 된다.

 

 

[데이터 삭제]

기본 문법

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name

[WHERE where_condition]

[ORDER BY ...]

[LIMIT row_count]

[RETURNING select_expr [, select_expr ...]]

 

delete from tbl_a

 

 

[기타]

AUTO_INCREAMENT에 관한 정보를 찾다 보니 InnoDB에서 AUTO_INCREAMENT를 맹신하지 말라는 글이 있다.

 

글 내용을 요약하면 MyISAM테이블을 성능 및 안정성 이슈로 InnoDB로 전환 후 서버 재시작 시 매번 Primary Key 중복 오류가 발생한 사례가 있다. Auto_Increment는 스토리지 엔진 별로 다르게 동작하기 때문에 예기치 못한 문제가 발생 할 수 있다고 한다. MyISAM경우 파일 기반이며 InnoDB는 메모리 기반의 스토리지이기 때문에 다른 방식으로 관리된다고 한다. 따라서 DB가 처음 구동이 되면 Auto_Increament 속성을 가진 테이블은 초기화 된다고 한다. 마지막 값이 NULL이면 1로 초기화 된다고 한다.

 

자세한 내용은 원문을 참고 한다.(http://gywn.net/2013/02/mysql-innodb-auto-increment/)

 

 

2015-04-10 / 강성욱 / http://sqlmvp.kr

 

 

MySQL, MariaDB, 마리아DB, 마이에스큐엘, MariaDB 설치, MySQL 생성, 데이터베이스, MariaDB 생성, 데이터베이스 생성, MariaDB 인코딩 변경, MySQL인코딩 변경

반응형

'MySQL, MariaDB' 카테고리의 다른 글

외부접속 허용하기  (0) 2015.07.16
데이터 타입  (0) 2015.07.16
데이터베이스 생성 삭제  (0) 2015.07.16
HeidiSQL 툴 살펴보기  (0) 2015.07.16
MariaDB 설치  (0) 2015.07.16