[MySQL] 테이블

테이블

테이블

테이블

테이블은 2차원 구조로 행과 열로 구성되어 있습니다. 행은 로우(row)나 레코드(record)로 부르며, 열은 컬럼(column) 또는 필드(filed)라고 부릅니다.

테이블 생성

테이블을 생성하려면 CREATE TABLE 문을 사용합니다.

CREATE TABLE 테이블명 (
  컬럼1 데이터타입 제약조건,
  ...
);

데이터 타입

데이터 타입

데이터 타입은 열의 데이터 종류를 식별하기 위해 사용됩니다.

숫자 데이터 타입

타입바이트Signed 범위Unsigned 범위
TINYINT1-128 ~ 1270 ~ 255
SMALLINT2-32768 ~ 327670 ~ 65535
MEDIUMINT3-8388608 ~ 83886070 ~ 16777215
INT4-2147483648 ~ 21474836470 ~ 4294967295
BIGINT8-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,8070 ~ 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’
YEARYYYY1901 ~ 2155

문자열 데이터 타입

타입범위설명
CHAR0 ~ 255고정 길이 문자열을 저장하는데 사용됩니다.
VARCHAR0 ~ 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 ACTIONRESTRICT와 동일하고 옵션을 지정하지 않으면 자동으로 선언됩니다.

CREATE TABLE 테이블명 (
  컬럼 데이터타입,
  ...,
  FOREIGN KEY (컬럼) REFERENCES 부모테이블명 (컬럼)
);

CHECK

CHECK 조건은 데이터가 삽입되거나 수정될 때 만족해야 하는 조건을 정의합니다.

CREATE TABLE 테이블명 (
  컬럼 데이터타입 CHECK (조건문),
  ...
);

age 값이 0보다 큰 값만 삽입되어야 하는 경우

CREATE TABLE person (
  age INT CHECK (age > 0)
);


© 2023.06. by 고개

Powered by 고개