[MySQL/DB] DDL(데이터 정의어) - 생성(CREATE), 수정(ALTER), 삭제(DROP, TRUNCATE)DB2023. 1. 7. 19:54
Table of Contents
728x90
728x90
[ CREATE (생성) ]
DB 생성
MySQL에서는 CREATE문을 사용하여 데이터베이스와 테이블을 만들 수 있다.
CREATE DATABASE 데이터베이스이름
해당 데이터베이스를 사용하기 위해서는 USE문을 사용하여 사용할 데이터베이스를 선택해야 한다.
USE 데이터베이스이름
테이블을 만들기 위해서 CREATE TABLE 키워드를 사용한다.
CREATE TABLE 테이블이름
( 컬럼명 데이터타입 조건,
컬럼명 데이터타입 조건,
...
)
테이블 생성 시 주의사항
- 객체를 의미할 수 있는 적절한 이름을 사용해야 한다.
- 다른 테이블의 이름과 중복되지 않도록 지정해야 한다.
- 한 테이블 내에서는 컬럼명이 중복되게 지정할 수 없다.
- 테이블 이름을 지정하고 각 컬럼들은 괄호로 묶어서 지정한다.
- 각 컬럼들은 , 로 구분되고, 테이블 생성문의 끝은 ; 기호로 맺는다.
- 컬럼뒤에 데이터 유형은 꼭 지정되어야 한다.
- 테이블 명과 컬럼 명은 반드시 문자로 시작한다.
- 벤더사마다 사전에 정의한 예약어는 사용 불가능하다.
- A-Z, a-z, 0-9, _, $, # 문자만 허용된다.
컬럼에 대한 규칙
- DATETIME 유형에는 별도로 크기를 지정하지 않는다.
- 문자 데이터 유형은 반드시 가질 수 있는 최대 길이를 표시해야 한다.
- 컬럼의 구분은 , 로 하되 마지막 컬럼은 콤마를 찍지 않는다.
- 컬럼에 대해서 CONSTRAINT 를 이용하여 제약조건을 추가 가능하다.
데이터타입
컬럼에 지정할 수 있는 데이터타입의 종류는 숫자형, 문자, 시간형 등이 있고 대표적인 것만 정리했다.
데이터타입 | 설명 |
CHAR | 고정길이 문자열 / CHAR(10) : 10자리 문자열 |
VARCHAR | 가변길이 문자열. 최대 길이를 지정한다. |
INT | 정수타입 / tinyint < smallint < int < bigint |
DECIMAL | 숫자에 사용 / 소수점 저장이 가능 |
DATE | 날짜에 사용 / YYYY-MM-DD 형태 |
제약 조건
데이터의 무결성을 지키기 위해 데이터를 입력받을 때 실행되는 검사 규칙이다.
CREATE, ALTER에 사용 가능하다.
제약조건 | 설명 |
NOT NULL | NULL을 허용하지 않을 때 |
UNIQUE | 중복 값을 허용하지 않을 때 |
PRIMARY KEY | 기본 키를 지정할 때 사용하며 테이블 당 한 개의 기본키만 생성 가능 / NOT NULL+ UNIQUE |
FOREIGN KEY | 외래 키를 지정할 때 |
DEFAULT | 값이 없이 입력됐을 때 디폴트에 지정된 값으로 입력 |
CHECK | 특정 조건에 맞는 데이터만 입력받고 싶을 때 |
INDEX | 인덱스를 지정할 때 |
AUTO_INCREMENT | 해당 필드의 값을 1부터 시작하여 새로운 레코드가 추가될 때마다 증가된 값을 저장 |
테이블 생성
CREATE DATABASE EXAM;
USE EXAM;
CREATE TABLE EXAM1(
ID INT(5) NOT NULL AUTO_INCREMENT,
CONTENT VARCHAR(30) NOT NULL,
CREATE_DATE DATETIME,
PRIMARY KEY(ID)
);
-- 만약 동일한 테이블을 추가로 생성하고 싶다면 아래와 같이 작성하면 된다.
CREATE TABLE EXAM2 AS
SELECT * FROM EXAM1 WHERE 1=2;
기본 키(PK)값이 ID인 EXAM1 테이블을 생성했다.
[ ALTER (수정) ]
ALTER문을 사용하여 데이터베이스와 테이블의 컬럼을 추가, 삭제 및 변경할 수 있다.
사용되는 키워드는 다음과 같다
키워드 | 설명 |
ADD | 테이블의 컬럼을 추가 |
DROP | 테이블의 컬럼을 제거 |
MODIFY | 기존 컬럼의 데이터 타입이나 위치 변경 |
CHANGE | 기존 컬럼의 이름과 데이터 타입을 변경 |
RENAME TO | 테이블의 이름 변경 |
CHANGE, MODIFY에 의해 데이터 타입이 변경될 때 데이터의 손실이 발생할 수 있다.
추가하기
ALTER TABLE EXAM1 ADD COLUMN SUBJECT VARCHAR(20) NOT NULL;
-- FIRST, SECOND, THIRD, BEFORE, LAST등을 사용하여 순서 지정 가능.
ALTER TABLE EXAM1 ADD COLUMN SUBJECT VARCHAR(20) NOT NULL AFTER `ID`;
삭제하기
ALTER TABLE CUSTOMER DROP COLUMN SUBJECT;
변경하기
-- ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입
ALTER TABLE EXAM1 MODIFY COLUMN CONTENT INTEGER;
ALTER TABLE EXAM1 MODIFY COLUMN CONTENT INTEGER AFTER CREATE_DATE;
-- ALTER TABLE 테이블명 CHANGE 기존컬럼명 변경할컬럼명 데이터타입
ALTER TABLE EXAM1 CHANGE COLUMN CONTENT CONTINENT VARCHAR(20);
-- ALTER TABLE 테이블명 RENAMTE TO 변경할테이블명;
ALTER TABLE EXAM1 RENAME TO EXAM3;
삭제하기
-- 컬럼 제거
ALTER TABLE EXAM1 DROP COLUMN CONTINENT;
[ DROP, TRUNCATE (삭제) ]
DROP : 데이터베이스와 테이블을 삭제할 수 있다.
TRUNCATE : 테이블의 데이터만을 지우고 싶을 때 사용한다.
-- DROP
DROP DATABASE DB이름
DROP TABLE 테이블이름
-- TRUNCATE
TRUNCATE TABLE 테이블이름
-- IF EXISTS 절을 사용해 삭제하려는 DB나 테이블이 존재하지 않을 때
-- 발생하는 에러를 미리 방지할 수 있다.
DROP DATABASE IF EXISTS DB명
DROP TABLE IF EXISTS 테이블명
728x90
300x250
@mag1c :: 꾸준히 재밌게
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!