Programming/데이터베이스

[MySQL] 데이터 정의문 DDL

Bam_t 2022. 1. 20. 16:30
728x90

본격적으로 MySQL의 SQL문을 배워보도록 하겠습니다. 첫번째 순서로는 데이터 정의문에 대한 내용입니다. 명령어 실습은 윈도우 명령 프롬프트 상에서 진행되었습니다.


1. CREATE DATABASE/CREATE SCHEMA

CREATE DATABASE는 데이터베이스를 생성하는 명령입니다. MySQL에서는 데이터베이스를 스키마라고 하기 때문에 CREATE SCHEMA로도 데이터베이스를 생성할 수 있습니다.

CREATE DATABASE 데이터베이스명;
CREATE SCHEMA 데이터베이스명;

명령어 입력후 Query OK라는 문구가 나오면 데이터베이스 생성에 성공한 것 입니다.

 

 

2. SHOW DATABASES

현재 존재하는 데이터베이스들을 확인할 수 있는 명령입니다.

SHOW DATABASES;

 

 

 

3. USE

USE 명령은 데이터베이스를 선택하는 명령입니다. USE 뒤에 데이터베이스명을 표시해서 사용할 데이터베이스를 선택합니다.

USE 데이터베이스명;

 

 

 

4. CREATE TABLE

데이터베이스를 처음 만들면 그 내부는 비어있기 때문에 우리는 내부에 테이블(릴레이션)을 정의해야합니다. CREATE TABLE은 데이터베이스 내부에 테이블을 생성하는 명령입니다.

CREATE TABLE 테이블명 (
  컬럼명 컬럼타입,
  컬럼명 컬럼타입,
  컬럼명 컬럼타입
);

단순히 테이블명만 적어서 빈 테이블만 우선 생성하고 추후에 컬럼을 추가할 수도 있고, 생성할 때 컬럼을 함께 생성할 수도 있습니다. 컬럼은 여러개를 작성하고 쉼표로 구분하며, 마지막 컬럼에 대해서는 쉼표를 붙이지 않습니다.

또한 컬럼 타입 이후로 컬럼에 대한 옵션들을 지정할 수 있습니다.

  • NOT NULL: 컬럼 내용이 NULL일 수 없다.
  • AUTO_INCREMENT: NULL일 경우 자동 생성
  • DEFAULT: 뒤에 오는 값을 기본값으로 설정
  • PRIMARY KEY: 기본키 설정 (괄호)안에 기본키로 설정할 컬럼 입력
  • UNIQUE INDEX: 유니크 인덱스로 지정된 컬럼에 오는 데이터들은 중복될 수 없음을 설정

마찬가지로 SHOW TABLES; 명령으로 현재 선택된 데이터베이스 내부에 존재하는 테이블들을 확인할 수 있습니다.

SHOW TABLES;

또한, DESCRIBE 명령으로 테이블 내부 구조를 시각화해서 볼 수 있습니다.

DESCRIBE 테이블명;

 

 

 

5. ALTER DATABASE

ALTER는 변경하는 것에 대한 명령입니다. ALTER DATABASE는 데이터베이스의 설정을 변경하게 하는 명령입니다.

status 명령을 입력하면 선택한 데이터베이스에 대한 정보들이 나옵니다.

status

이 status 내용들 중 변경해야하는 내용이 있다면 ALTER DATABASE 명령으로 변경할 수 있습니다.

ALTER DATABASE 데이터베이스명 변경할 옵션 내용;

여기서 중간에 characterset이라고 되어있는 옵션들의 값이 utf8, utf8mb4가 아니라면 다음 명령으로 utf8 계열로 변경해주세요.

ALTER DATABASE 데이터베이스명 CHARACTER SET = utf8;

 

 

 

6. ALTER TABLE

ALTER TABLE은 테이블 구조를 변경하는 명령입니다. 테이블 구조 수정에 대한 내용이 많아서 비교적 잘 사용되는 내용들만 몇가지 정리하려고 합니다.

ADD

ADD 명령은 테이블에 컬럼을 추가합니다.

ALTER TABLE 테이블명 ADD 컬럼명 컬럼타입;

 

MODIFY COLUMN

MODIFY COLUMN명령은 테이블의 컬럼 타입을 변경할 수 있는 명령입니다.

ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 컬럼타입;

 

CHANGE COLUMN

CHANGE COLUMN명령은 테이블의 컬럼타입과 컬럼 이름까지 변경이 가능한 명령입니다.

ALTER TABLE 테이블명 CHANGE COLUMN 컬럼명 변경할_컬럼명 컬럼타입;

NOT NULL옵션을 빼먹었습니다... 죄송합니다.

 

DROP

DROP명령은 테이블의 컬럼을 삭제할 수 있는 명령입니다.

ALTER TABLE 테이블명 DROP 컬럼명;

 

RENAME

RENAME명령은 테이블의 이름을 변경할 때 사용하는 명령입니다.

ALTER TABLE 테이블명 RANAME 변경할_테이블명;

그리고 같은 파일시스템 내부에서 테이블을 옮길 때도 RENAME 명령을 사용할 수 있습니다.

ALTER TABLE DB명.테이블명 TO 옮길_DB명.만들_테이블명;

 

 

 

7. 인덱스

인덱스란, 테이블의 컬럼을 빠르게 탐색할 수 있도록 만드는 컬럼의 식별자입니다. 

인덱스 생성은 CREATE INDEX명령으로 생성합니다.

CREATE INDEX 인덱스명 ON 테이블명 (컬럼이름, ...);

인덱스 삭제는 DROP INDEX명령으로 삭제합니다.

DROP INDEX 인덱스명 ON 테이블명;
728x90