MySQL(DDL) : CREATE, ALTER, TRUNCATE, DROP

msung99·2022년 10월 26일
0

SQL(Structed Query Language)

SQL 이란 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그램 언어를 의미합니다. 이런 SQL 의 문법에 대해 알아보도록 하겠습니다.


SQL 문법의 종류

  • SQL 의 문법은 크게 4가지로 나눌 수 있습니다. 그들은 바로 DDL, DML, DCL, TCL 이라고 합니다. 그 중에서 이번 포스팅에서는 DDL 에 대해서만 알아보도록 하겠습니다.

DDL (데이터 정의어 : Data Definition Language)

DDL 의 명령어 종류는 아래와 같습니다.

CREATE : 데이터베이스(테이블)을 "생성"
ALTER : 데이터베이스(테이블)을 "수정"
DROP : 데이터베이스(테이블)을 "삭제"
TRUNCATE : 데이터베이스(테이블)을 "초기화"


1-1. 스키마/데이터베이스 정의

스키마(DB) 생성

정확한 의미의 스키마와 데이터베이스는 다르지만 MySQL 에서는 같은 것으로 봅니다.

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

스키마(DB) 삭제

DROP SCHEMA 스키마명;
DROP DATAVASE 데이터베이스명;

1-2. 테이블(TABLE) 정의

테이블 생성 (CREATE)

CREATE TABLE 테이블명(
열이름1 데이터타입 [DEFAULT 형식],
열이름2 데이터타입 [DEFAULT 형식],
...
);

제약조건

PRIMARY KEY : 기본키

  • 기본키 설정
  • PRIMARY KEY = UNIQUE & NOT NULL

UNIQUE KEY : 고유키

  • NULL 기능
  • 중복된 값 불가

NOT NULL

  • NULL 값을 금지

CHECK

  • 입력할 수 있는 값의 범위등을 제한
  • True 또는 False 로 평가할 수 있는 논리식을 지정
  • MySQL 에서 적용할 수 있지만, 데이터의 무결성을 강요하지 않음 => 적용안됨!

FOREIGN KEY : 외래키

  • 테이블 간의 관계를 정의하기 위해 다른 테이블의 기본키를 외래키로 지정
예시

CREATE TABLE `User` (
    `userIdx` int AUTO_INCREMENT NOT NULL ,
    `name` varchar(30)  NOT NULL ,
    `profileImgUrl` text  NULL ,
    `status` varchar(10)  NOT NULL DEFAULT 'active',
    `createdAt` timestamp  NOT NULL DEFAULT current_timestamp,
    PRIMARY KEY (
        `userIdx`
    )
);

테이블 수정 (ALTER)

컬럼추가 - ADD

  • 형태1)
    ALTER TABLE 테이블명
    ADD [컬럼명 데이터타입 DEFAULT 표현] ...);

  • 형태2)
    ALTER TABLE 테이블명
    ADD 컬럼명 데이터타입;
형태

ALTER TABLE table01
ADD (birth date);  
// table01 테이블에서 date 데이터 타입을 가지는 birth 컬럼을 새롭게 추가

컬럼 수정 - MODIFY

  • 형태1)
    ALTER TABLE table01
    MODIFY ([컬럼명 데이터아입 DEFAULT 표현식]...);

  • 형태2)
    ALTER TABLE 테이블명
    MODIFY 컬럼명 데이터타입;
예제

ALTER TABLE table01
MODIFY (ename varchar(10)); 
// ename 컬럼의 크기를 10으로(=varchar(10)) 으로 변경

컬럼명 수정 - CHANGE

ALTER TABLE 테이블명
CHANGE 기존컬럼명 새컬럼명 데이터타입;

컬럼 삭제 - DROP

ALTER TABLE 테이블명
DROP COLUMN 컬럼명;

ALTER TABLE table01
DROP COLUMN ename;    // table01 테이블에서 ename 컬럼을 삭제

테이블 초기화 (TRUNCATE)

TRUNCATE TABLE 테이블명;

=> 테이블의 모든 행을 지웁니다.


테이블 삭제 (DROP)

DROP TABLE 테이블명;

=> DROP 은 테이블 자체를 삭제하고, TRUNCATE 는 테이블은 유지하고 데이터들만 삭제합니다.


참고

https://wonit.tistory.com/218

profile
https://haon.blog

0개의 댓글