본격적으로 MySQL의 SQL문을 배워보도록 하겠습니다. 첫번째 순서로는 데이터 정의문에 대한 내용입니다. 명령어 실습은 윈도우 명령 프롬프트 상에서 진행되었습니다.
CREATE DATABASE
는 데이터베이스를 생성하는 명령입니다. MySQL에서는 데이터베이스를 스키마라고 하기 때문에 CREATE SCHEMA
로도 데이터베이스를 생성할 수 있습니다.
CREATE DATABASE 데이터베이스명;
CREATE SCHEMA 데이터베이스명;
명령어 입력후 Query OK라는 문구가 나오면 데이터베이스 생성에 성공한 것 입니다.
현재 존재하는 데이터베이스들을 확인할 수 있는 명령입니다.
SHOW DATABASES;
USE
명령은 데이터베이스를 선택하는 명령입니다. USE 뒤에 데이터베이스명을 표시해서 사용할 데이터베이스를 선택합니다.
USE 데이터베이스명;
데이터베이스를 처음 만들면 그 내부는 비어있기 때문에 우리는 내부에 테이블(릴레이션)을 정의해야합니다. CREATE TABLE
은 데이터베이스 내부에 테이블을 생성하는 명령입니다.
CREATE TABLE 테이블명 (
컬럼명 컬럼타입,
컬럼명 컬럼타입,
컬럼명 컬럼타입
);
단순히 테이블명만 적어서 빈 테이블만 우선 생성하고 추후에 컬럼을 추가할 수도 있고, 생성할 때 컬럼을 함께 생성할 수도 있습니다. 컬럼은 여러개를 작성하고 쉼표로 구분하며, 마지막 컬럼에 대해서는 쉼표를 붙이지 않습니다.
또한 컬럼 타입 이후로 컬럼에 대한 옵션들을 지정할 수 있습니다.
등장한 옵션들의 내용은 다음과 같습니다.
마찬가지로 SHOW TABLES
명령으로 현재 선택된 데이터베이스 내부에 존재하는 테이블들을 확인할 수 있습니다.
SHOW TABLES;
또한, DESCRIBE
명령으로 테이블 내부 구조를 시각화해서 볼 수 있습니다.
DESCRIBE 테이블명;
ALTER
는 변경하는 것에 대한 명령입니다. ALTER DATABASE
는 데이터베이스의 설정을 변경하게 하는 명령입니다.
status 명령을 입력하면 선택한 데이터베이스에 대한 정보들이 나옵니다.
status;
이 status 내용들 중 변경해야하는 내용이 있다면 ALTER DATABASE 명령으로 변경할 수 있습니다.
ALTER DATABASE 데이터베이스명 변경할_옵션;
여기서 중간에 characterset이라고 되어있는 옵션들의 값이 utf8, utf8mb4가 아니라면 다음 명령으로 utf8 계열로 변경해주세요.
ALTER DATABASE 데이터베이스명 CHARACTER SET = utf8;
ALTER TABLE
은 테이블 구조를 변경하는 명령입니다. 테이블 구조 수정에 대한 내용이 많아서 비교적 잘 사용되는 내용들만 몇가지 정리하려고 합니다.
ADD
명령은 테이블에 컬럼을 추가합니다.
ALTER TABLE 테이블명 ADD 컬럼명 컬럼타입;
MODIFY COLUMN
명령은 테이블의 컬럼 타입을 변경할 수 있는 명령입니다.
ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 컬럼타입;
CHANGE COLUMN
명령은 테이블의 컬럼타입과 컬럼 이름까지 변경이 가능한 명령입니다.
ALTER TABLE 테이블명 CHANGE COLUMN 컬럼명 변경할_컬럼명 컬럼타입;
DROP
명령은 테이블의 컬럼을 삭제할 수 있는 명령입니다.
ALTER TABLE 테이블명 DROP 컬럼명;
RENAME
명령은 테이블의 이름을 변경할 때 사용하는 명령입니다.
ALTER TABLE 테이블명 RANAME 변경할_테이블명;
그리고 같은 파일시스템 내부에서 테이블을 옮길 때도 RENAME 명령을 사용할 수 있습니다.
ALTER TABLE DB명.테이블명 TO 옮길_DB명.만들_테이블명;
인덱스란, 테이블의 컬럼을 빠르게 탐색할 수 있도록 만드는 컬럼의 식별자입니다.
인덱스 생성은 CREATE INDEX
명령으로 생성합니다.
CREATE INDEX 인덱스명 ON 테이블명 (컬럼이름, ...);
인덱스 삭제는 DROP INDEX
명령으로 삭제합니다.
DROP INDEX 인덱스명 ON 테이블명;