68일차 - [MySQL] CREATE, ALTER, DROP, 제약 조건
안녕하세요. pitang입니다.
오늘은 테이블 생성, 수정, 제거와 제약 조건에 대해 알아보겠습니다.
CREATE TABLE 문
CREATE TABLE 문을 사용하여 데이터를 저장할 테이블을 생성한다.
이 명령문 하나로 테이블에 대한 구조를 정의하고, 데이터를 저장하기 위한 공간을 할당한다.
테이블을 생성하기 위해서는 테이블명을 정의하고 테이블을 구성하는 칼럼의 데이터 타입과 무결성 제약 조건을 정의해야 한다.
테이블 및 칼럼명을 정의하기 위한 규칙은 다음과 같다.
- 문자로 시작해야 하며 30자 이내로 작성.
- 문자, 숫자, 특수문자만 사용 가능.
- 대소문자 구별이 없고, 소문자로 저장하려면 작은따옴표로 묶어 주어야 함.
- 동일 사용자가 소유한 다른 객체의 이름과 중복되지 않아야 함.
테이블을 생성하기 위한 기본 형식은 다음과 같다.
CREATE TABLE [schema.] table
(column datatype [DEFAULT expression][column_constraint clause][,...]);
datatype 은 칼럼에 대한 데이터 타입과 길이를 지정한다.
DEFAULT expression은 데이터 입력 시 값이 생략된 경우에 입력되는 기본 값이다.
column_constraint_clause은 칼럼에 대해 정의되는 무결성 제약 조건이다.
제약 조건에 대해서는 이 게시물 맨 마지막 개념에서 알아볼 것이다.
데이터 타입
CHAR | size 크기의 고정 길이 문자 데이터 타입 |
VARCHAR | size 크기의 가변 길이 문자 데이터 타입 |
DATE | 날짜 형식을 저장하기 위한 데이터 타입 |
DATETIME | 날짜와 시간까지 저장하기 위한 데이터 타입 |
INT | 정수형 숫자형식을 저장하기 위한 데이터 타입 |
DOUBLE | 실수형 숫자형식을 저장하기 위한 데이터 타입 |
DECIMAL(총 길이, 소수점 길이) = DEC | 실수형의 길이, 소수점 길이를 지정해 저장하기 위한 데이터 타입 |
ex1)
- CHAR
- VARCHAR
ex2)
- DATE, DATETIME
-> SELECT now(); 쿼리를 실행한 결과이다.
ex3)
- INT, DOUBLE, DECIMAL
데이터베이스 정규화
관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다.
제 1 정규형(1NF 또는 최소형)은 데이터베이스 정규화에서 사용하는 정규형 중 하나이다.
관계형 데이터베이스의 테이블이 1NF이면 최소한 테이블은 관계이며, 중복되는 항목이 없어야 한다.
제 2 정규형(2NF)는 데이터베이스 정규화에서 사용하는 정규형 중 하나로,
제 1 정규형인 테이블이 제 2 정규형을 충족시키는 필요충분조건은 다음과 같다.
- K와 K에 속하지 않는 속성 A가 있을 때, A를 결정하기 위해 K의 일부가 아닌 K 전체를 참조해야 하는 경우
제 3 정규형(3NF)은 데이터베이스 정규화의 세 번째 단계로,
제 2 정규형을 만족하고, 테이블 내의 모든 속성이 기본 키에만 의존하며 다른 후보 키에 의존하지 않는다.
ALTER TABLE 문
테이블을 생성하며 칼럼을 빠뜨렸거나 칼럼의 타입이나 길이를 변경하거나 칼럼을 제거해야 할 상황이 발생하여
테이블의 구조를 변경해야 할 경우에 ALTER TABLE 문을 사용한다.
ADD 명령문을 사용하여 새로운 칼럼을 추가하며 추가되는 칼럼에도 기본 값을 지정할 수 있다.
MODIFY 명령문을 이용하여 테이블에서 칼럼의 타입, 크기, 기본 값을 변경할 수 있다.
DROP COLUMN 명령문을 사용하여 테이블 내의 특정 칼럼과 칼럼의 데이터를 제거할 수 있다.
2개 이상의 칼럼이 존재하는 테이블에서만 삭제할 수 있으며, 한 번에 하나의 칼럼만 삭제할 수 있고, 복구할 수는 없다.
ex1)
ex2)
DROP TABLE 문
DROP TABLE 명령문을 사용하여 기존 테이블과 데이터를 모두 제거한다.
삭제할 테이블의 기본 키나 고유 키를 다른 테이블에서 참조하고 있는 경우에는 삭제가 불가능하다.
ex1)
제약 조건
데이터 무결성 제약 조건(Data Integrity Constraint Rule)이란,
테이블에 유효하지 않은 데이터가 입력되는 것을 방지하기 위해 테이블을 생성할 때 각 칼럼에 대해 정의하는 여러 가지 규칙을 말한다.
이러한 제약 조건은 새로운 데이터가 삽입되거나 기존 데이터가 수정, 삭제될 때에 적용된다.
제약 조건은 일반적으로 테이블이 생성될 때 생성되지만 ALTER TABLE로 제약 조건을 추가할 수 있으며 삭제도 가능하다.
제약 조건은 아래와 같다.
NOT NULL | 칼럼에 NULL 값을 포함하지 못하도록 지정. |
UNIQUE | 테이블의 모든 로우에 대해서 유일한 값을 갖도록 함. |
PRIMARY KEY | 테이블의 각 행을 식별하기 위한 것, NULL과 중복된 값을 모두 허용하지 않음. 즉, NOT NULL과 UNIQUE를 결합한 형태. |
FOREIGN KEY | 참조되는 테이블에 칼럼 값이 항상 존재해야 함. |
CHECK | 저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만을 허용. |
DEFAULT | 비어있는 칼럼에 기본값을 사용. |
AUTO_INCREMENT | 레코드의 값이 중복되지 않고 1씩 자동 증가시켜줌. |
ex1)
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- CHECK
- DEFAULT
- AUTO_INCREMENT
감사합니다.
* m1 맥북을 사용 중입니다.*