개발 공부 기록하기/02. DB & SQL

MySQL DDL 총 모음

lannstark 2020. 8. 30. 23:18

업무를 진행하면서 간혹 DDL을 써야 할 때가 있는데, 그때마다 구글 검색을 하는 것이 여간 번거로운 일이 아니다. 때문에 아싸리 총 정리를 해서 여기만 보려고 한다.

혹시 저처럼 구글 검색이 귀찮으신 분이 계시다면 이 페이지 즐겨찾기 추천드립니다 ^^,,
빠진 DDL이 있다면 댓글로 알려주세요! 추가하겠습니다 :)

DB의 구조 및 정의를 생성하거나 변경하는 쿼리를 DDL이라 한다.

데이터 베이스

DB 생성

CREATE DATABASE [IF NOT EXISTS] employees;
CREATE DATABASE [IF NOT EXISTS] employees CHARACTER SET utf8;
CREATE DATABASE [IF NOT EXISTS] employees CHARACTER SET utf8 COLLATE utf8_general_ci;

목록 조회

SHOW DATABASES;
SHOW DATABASES LIKE '%이나 _를 활용할 수 있는 문장';

DB 접근

USE db_이름;

문자집합 혹은 콜레이션 변경

ALTER DATABASE db_이름 CHARACTER SET = euckr;
ALTER DATABASE db_이름 CHARACTER SET = euckr COLLATE = euckr_korean_ci;

DB 삭제

DROP DATABASE [IF EXISTS] db_이름;

테이블

테이블 생성

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name (
  column_이름 타입 [CHARACTER SET 'utf8'] [COLLATE 'utf8_general_ci'] [NOT NULL] [DEFAULT 기본값]
  PRIMARY KEY (pk_column),
  UNIQUE INDEX unique_index_name (unique_column1, unique_column2),
  INDEX index_name (index_colum1, index_column2),
  FOREIGN KEY (fk_name) REFERENCES 다른_table(column)
) ENGINE = InnoDB;

테이블 구조 확인

SHOW CREATE table table_name;

DESC table_name;

테이블 구조 변경

ALTER TABLE table_name CHARACTER SET 'euckr';
ALTER TABLE table_name ENGINE=myisam;

테이블 이름 변경

RENAME TABLE table1 TO table2, table3 TO table4;

테이블 DB 변경

RENAME TABLE db_이름.table_name TO db2_이름.table_name

테이블 상태 조회

SHOW TABLE status LIKE '%이나 _를 활용할 수 있는 문장'\G

테이블 삭제

DROP TABLE table_name;
  • 레코드 건수가 많은 테이블을 삭제하는 작업은 상당히 부하가 큰 작업에 속한다.
  • 테이블이 크다면 서비스 도중 삭제 작업을 수행하지 않는 것이 좋다.

칼럼

칼럼 추가

ALTER TABLE table_name ADD COLUMN column_이름 타입;
ALTER TABLE table_name ADD COLUMN column_이름 타입 AFTER column2_이름;

칼럼 삭제

ALTER TABLE table_name DROP COLUMN column_이름;

칼럼 이름 변경

# colum1을 colum2 타입으로 변경한다
ALTER TABLE table_name CHANGE colum1 colum2 타입;

칼럼 이름은 그대로 이지만 타입이나 NULL 여부 변경

ALTER TABLE table_name MODIFY COLUMN colum1 타입 NOT NULL;

인덱스

인덱스 추가

ALTER TABLE table_name ADD INDEX index_name (column1, column2);

인덱스 조회

SHOW INDEX FROM table_name;

인덱스 삭제

ALTER TABLE table_name DROP INDEX index_name;

추가적인 DDL

프로세스 조회

SHOW PROCESSLIST;

프로세스 강제 종료

KILL QUERY id; # 쿼리만 종료
KILL id; # 스레드도 같이 종료 (트랜잭션 정상 종료 X)

시스템 변수 조회 및 변경

SHOW GLOBAL VARIABLES;
SHOW GLOBAL VARIABLES LIKE '%이나 _를 활용할 수 있는 문장';
SHOW SESSION VARIABLES LIKE '%이나 _를 활용할 수 있는 문장';
SHOW VARIABLES LIKE '%이나 _를 활용할 수 있는 문장';
SET GLOBAL variable_name=값;
SET variable_name=값; # 기본값으로는 SESSION 변수를 설정

MySQL 서버에서 사용할 수 있는 권한 조회

SHOW PRIVILEGES;

특정 사용자가 가지고 있는 권한조회

SHOW GRANTS FOR 'account'@'ip';