MySQL 명령어는 웹 프로그래밍 하면서 나름 익혔지만, 생각보다 익혀지지 않아서 가끔 헷갈릴 때가 있습니다.

이번 포스트에서는 MySQL 기본 명령어에 대해 알아보도록 합니다.


명령어는 DDL 명령어인 Data Define Language 명령어를 다뤄보려고 합니다.

DDL 명령어란 데이터 정의어로써 테이블과 같은 데이터 구조를 정의하는데 사용됩니다. 또한 데이터 구조를 정의함에 있어서 발생할 수 있는 이슈로 생성, 변경, 삭제, 이름 변경의 명령어도 함께 포함하고 있습니다.

따라서 아래에서 다룰 명령어는 CREATE, DROP, ALTER, RENAME, TRUNCATE의 명령어를 다뤄보려고 합니다.






 

 CREATE 명령어


CREATE 명령어는 테이블을 생성하거나 데이터베이스를 생성하는 명령어입니다.

먼저 각각 데이터베이스 생성, 테이블 생성으로 구분하여 명령어를 살펴보도록 하겠습니다.


 

 데이터베이스 생성


-- 데이터베이스 생성 명령어
CREATE DATABASE [dbname];

-- 데이터베이스 생성 및 속성 설정 명령어
CREATE DATABASE [dbname] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;


위의 명령어를 보면 되게 되게 간단합니다.

단, 데이터베이스를 생성할 때 속성을 미리 설정할 수 있으므로, 함께 설정하며 생성할 수 있습니다.


 

 테이블 생성


-- 테이블 생성 명령어
CREATE TABLE [tablename] (
	[column_name1] INT PRIMARY KEY AUTO_INCREMENT,
	[column_name2] VARCHAR(255) NOT NULL,
	[column_name3] DATETIME NOT NULL,
)CHARSET=utf8;


테이블 생성 명령도 되게 간단합니디.

위의 명령어에서는 나름 예제로써 NOT NULL, AUTO_INCREMENT 등의 값을 써주었습니다.






 

 DROP 명령어


DROP 명령어는 테이블을 삭제하거나 데이터베이스를 삭제하는 명령어입니다.

먼저 각각 데이터베이스 삭제, 테이블 삭제로 구분하여 명령어를 살펴보도록 하겠습니다.


 

 데이터베이스 삭제


-- 데이터베이스 삭제 명령어
DROP DATABASE [dbname];


CREATE 명령어보다 간단합니다. 삭제하고자 하는 데이터베이스 명을 작성하기만 하면 삭제가 가능합니다.

단 여기서 DROP 위데 DATABASE 라는 단어를 붙여줘야 합니다. 이는 테이블이냐 데이터베이스냐를 구분하기 위해서입니다.


 

 테이블 삭제


-- 테이블 삭제 명령어
DROP TABLE [table_name];


데이터베이스 삭제 명령과 비슷하고, DATABASE 대신 TABLE을 작성하면 됩니다.

크게 어려울 것이 없는 명령어입니다.






 

 ALTER 명령어


ALTER 명령어는 테이블의 내용을 수정할 수 있도록 하는 명령어입니다.

수정하는 명령어인 만큼 사용 방법이 꽤 다양합니다.


-- 테이블에 컬럼 추가하기
ALTER TABLE [table_name] ADD COLUMN [column_name] [column_type];

-- 테이블의 컬럼 타입 변경하기
ALTER TABLE [table_name] MODIFY COLUMN [column_name] [column_type];

-- 테이블의 컬림 이름 변경하기
ALTER TABLE [table_name] CHANGE COLUMN [old_column_name] [new_column_name] [new_column_type];

-- 테이블의 컬럼 삭제하기
ALTER TABLE [table_name] DROP COLUMN [column_name];

-- 테이블에 컬럼 인덱스 주기
ALTER TABLE [table_name] DROP INDEX [index_name];

-- 테이블에 PRIMARY KEY 만들기
ALTER TABLE [table_name] ADD PRIMARY KEY( column_name_on_this_table );

-- 테이블에 PRIMARY KEY 삭제하기
ALTER TABLE [table_name] DROP PRIMARY KEY;

-- 테이블 명 바꾸기
ALTER TABLE [old_table_name] RENAME [new_table_name]; 


위와 같이 ALTER 명령어는 매우 다양한 명령을 지원하고 있습니다.

위의 명령어 사용법을 이용하여 적절히 응용하면 보다 유연한 MySQL 사용이 가능합니다.






 

 RENAME 명령어


RENAME 명령어는 테이블의 이름을 변경하는 명령어 입니다.

데이터베이스의 이름을 변경하고자 하면, 별도의 작업을 해주셔야 합니다.(RENAME을 통해 데이터베이스 이름을 변경할 수 없습니다.)


 

 테이블 이름 변경


-- 테이블 이름 변경 명령어
RENAME TABLE [old_table_name] TO [new_table_name];

-- 여러 테이블 이름 변경 명령어
RENAME TABLE [old_table_name1] TO [new_table_name1], [old_table_name2] TO [new_table_name2];


위와 같이 여러 개의 테이블 이름을 한 번에 변경하거나, 하나의 테이블 이름을 변경해줄 수 있습니다.






 

 TRUNCATE


이 명령어는 DML의 명령어인 DELETE와 DDL 명령어인 DROP과 비슷한 형태로, 데이터를 삭제하는 명령어입니다.

그러나 이 명령어는 위의 두 명령어와는 차이가 있습니다.


DML의 DELETE 명령어의 경우 WHERE문과 같은 조건문을 붙여서 원하는 곳만 삭제할 수 있습니다.

DDL의 DROP 명령어의 경우 테이블 혹은 데이터베이스를 모두 삭제하는 명령어입니다.


TRUNCATE는 DROP 후 CREATE를 하는 특징을 가지고 있습니다. 

이러한 특징을 가진 명령어로써, 차이점은 다음과 같습니다.


 

 DELETE 명령어


데이터를 삭제하고 삭제한 공간을 재사용하기 위한 명령어입니다.


 

 TRUNCATE 명령어


데이터가 존재하던 공간까지 모두 제거합니다.

AUTO_INCREMENT로 지정하여 값이 증가하던 컬럼이 완전 초기화 됩니다.(MySQL 5.0.13 버전 이후)

[Table_name].frm 파일이 아직 유효할 경우, 데이터나 인덱스가 손상된 경우라도 빈 테이블로 재생성이 가능합니다.


-- 테이블의 데이터 삭제 명령어
TRUNCATE TABLE [table_name];








+ Recent posts