[MySQL] 테이블
테이블
테이블
테이블
테이블은 2차원 구조로 행과 열로 구성되어 있습니다. 행은 로우(row)나 레코드(record)로 부르며, 열은 컬럼(column) 또는 필드(filed)라고 부릅니다.
테이블 생성
테이블을 생성하려면 CREATE TABLE
문을 사용합니다.
CREATE TABLE 테이블명 (
컬럼1 데이터타입 제약조건,
...
);
데이터 타입
데이터 타입
데이터 타입은 열의 데이터 종류를 식별하기 위해 사용됩니다.
숫자 데이터 타입
타입 | 바이트 | Signed 범위 | Unsigned 범위 |
---|---|---|---|
TINYINT | 1 | -128 ~ 127 | 0 ~ 255 |
SMALLINT | 2 | -32768 ~ 32767 | 0 ~ 65535 |
MEDIUMINT | 3 | -8388608 ~ 8388607 | 0 ~ 16777215 |
INT | 4 | -2147483648 ~ 2147483647 | 0 ~ 4294967295 |
BIGINT | 8 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 0 ~ 18446744073709551615 |
날짜 및 시간 데이터 타입
타입 | 데이터 형식 | 범위 |
---|---|---|
DATE | ‘YYYY-MM-DD’ | ‘1000-01-01’ ~ ‘9999-12-31’ |
TIME | ‘hh:mm:ss’ | ‘-838:59:59.000000’ ~ ‘838:59:59.000000’ |
DATETIME | ‘YYYY-MM-DD hh:mm:ss’ | ‘1000-01-01 00:00:00’ ~ ‘9999-12-31 23:59:59’ |
TIMESTAMP | ‘YYYY-MM-DD hh:mm:ss’ | ‘1970-01-01 00:00:01’ ~ ‘2038-01-19 03:14:07’ |
YEAR | YYYY | 1901 ~ 2155 |
문자열 데이터 타입
타입 | 범위 | 설명 |
---|---|---|
CHAR | 0 ~ 255 | 고정 길이 문자열을 저장하는데 사용됩니다. |
VARCHAR | 0 ~ 65,535 | 가변 길이 문자열을 저장하는데 사용됩니다. |
TEXT | 최대 65,535 | 가변 길이 문자열을 저장하는데 사용됩니다. |
BLOB | 최대 65,535 | 이미지, 비디오 파일 등과 같은 바이너리 데이터를 저장하는데 사용됩니다. |
ENUM | 최대 65,535개의 개별 요소 | 열거한 값 중 하나의 값만 저장하는데 사용됩니다. |
제약 조건
제약 조건
제약 조건은 테이블에 저장된 데이터의 무결성 및 일관성을 보장하기 위해 테이블에 적용할 수 있는 조건입니다.
NOT NULL
NOT NULL
선언된 컬럼은 NULL 값이 포함될 수 없습니다. 즉, 모든 컬럼은 데이터를 반드시 가져야 합니다.
CREATE TABLE 테이블명 (
컬럼 데이터타입 NOT NULL,
...
);
UNIQUE
UNIQUE
로 선언된 컬럼은 각 컬럼마다 고유한 값을 가집니다. 즉, 컬럼에 중복된 값이 있을 수 없습니다.
CREATE TABLE 테이블명 (
컬럼 데이터타입 UNIQUE,
...
);
PRIMARY KEY
PRIMARY KEY
로 선언된 컬럼은 빈 값을 가질 수 없는 고유 인덱스입니다. NOT NULL
을 명시적으로 선언하지 않으면 자동으로 선언됩니다. PRIMARY KEY
는 테이블마다 하나씩만 가질 수 있습니다.
CREATE TABLE 테이블명 (
컬럼 데이터타입 PRIMARY KEY,
)
-- 또는
CREATE TABLE 테이블명 (
컬럼 데이터타입,
PRIMARY KEY (컬럼)
)
FOREIGN KEY
FOREIGN KEY
는 한 테이블의 값을 다른 테이블의 값에 연결하여 두 테이블 간의 관계를 설정합니다. 다른 테이블의 연결될 컬럼은 PRIMARY KEY
또는 UNIQUE
가 선언되어 있어야 합니다.
CREATE TABLE 테이블명 (
컬럼 데이터타입,
...,
FOREIGN KEY (컬럼) REFERENCES 부모테이블명 (컬럼) [ON DELETE 참조옵션] [ON UPDATE 참조옵션]
);
FOREIGN KEY
의 참조옵션은 부모테이블의 행이 수정되거나 삭제되면 하위 테이블의 관련 행에 어떤 일이 발생해야 하는지 정의하는 옵션입니다.
CASCADE
는 부모 데이터가 삭제 또는 수정되면 자식 데이터도 삭제 또는 수정됩니다.
CREATE TABLE 테이블명 (
컬럼 데이터타입,
...,
FOREIGN KEY (컬럼) REFERENCES 부모테이블명 (컬럼) ON DELETE CASCADE ON UPDATE CASCADE
);
SET NULL
은 부모 데이터가 삭제 또는 수정되면 자식 데이터는 NULL로 수정됩니다.
CREATE TABLE 테이블명 (
컬럼 데이터타입,
...,
FOREIGN KEY (컬럼) REFERENCES 부모테이블명 (컬럼) ON DELETE SET NULL ON UPDATE SET NULL
);
SET DEFAULT
는 부모 데이터가 삭제 또는 수정되면 자식 데이터는 DEFAULT값을 수정됩니다.
CREATE TABLE 테이블명 (
컬럼 데이터타입,
...,
FOREIGN KEY (컬럼) REFERENCES 부모테이블명 (컬럼) ON DELETE SET DEFAULT ON UPDATE SET DEFAULT
);
RESTRICT
는 자식 데이터가 존재할 경우 부모 데이터는 삭제 또는 수정이 불가능합니다.
CREATE TABLE 테이블명 (
컬럼 데이터타입,
...,
FOREIGN KEY (컬럼) REFERENCES 부모테이블명 (컬럼) ON DELETE RESTRICT ON UPDATE RESTRICT
);
NO ACTION
은 RESTRICT
와 동일하고 옵션을 지정하지 않으면 자동으로 선언됩니다.
CREATE TABLE 테이블명 (
컬럼 데이터타입,
...,
FOREIGN KEY (컬럼) REFERENCES 부모테이블명 (컬럼)
);
CHECK
CHECK
조건은 데이터가 삽입되거나 수정될 때 만족해야 하는 조건을 정의합니다.
CREATE TABLE 테이블명 (
컬럼 데이터타입 CHECK (조건문),
...
);
age 값이 0보다 큰 값만 삽입되어야 하는 경우
CREATE TABLE person (
age INT CHECK (age > 0)
);