MySQL 명령어에서 이건 왜 사용하는걸까요?

shockwave·2024년 9월 12일

TIL

목록 보기
27/49

오늘은 DEFAULT, NOT NULL, Unique, Primary Key, Foreign Key 등 MySQL DB에서 사용하는 명령어에 대해 사용하면서 이해한 것들을 적으려고 합니다.

DEFAULT

CREATE TABLE Person (
	ID int DEFAULT 1,
    Age int DEFUALT 20,
);

DEFAULT는 기본값을 설정하는 것입니다.
따로 값을 입력받지 않으면 기본값으로 설정한 대로 데이터가 생성됩니다.

NOT NULL


CREATE TABLE Person (
	ID int NOT NULL,
    Last Name varchar(255) NOT NULL,
    First Name varchar(255) NOT NULL,
    Age int
);

DB에 저장할 Person이라는 테이블을 만들어서
ID, Last Name, First Name, Age 필드에 요소로 넣어주었습니다.
Age를 제외한 나머지엔 뒤에 NOT NULL을 붙였습니다.
단순히 그냥 NULL을 주기 싫다고요?
너무 딱딱한 사고방식아닌지...
NULL을 주지 않겠다는 것은,
반드시 NULL이 아닌 어떤 값이 필요하다는 것이 됩니다.

즉, required Value라는 것입니다.

해당 필드들은 Person 테이블에 종속되는 어떤 데이터 하나를 DB에 생성할 때
반드시 입력 받아야 한다고 지정해 준 것입니다.
즉, 이 Person 테이블로 만들어지는 데이터는
항상 ID와 Last Name, First Name에 값을 입력받아 만들어져야합니다. (나이는 어떻게 되도 상관없다는 상남자식 데이터 선언)

Unique

CREATE TABLE Persons (
    ID        int NOT NULL,
    LastName  varchar(255) NOT NULL,
    FirstName varchar(255),
    Age       int,
    UNIQUE (ID)
);
CREATE TABLE Persons (
	ID        int UNIQUE NOT NULL,
    LastName  varchar(255) NOT NULL,
    FirstName varchar(255),
    Age       int
);

Unique는 중복을 허용하지 않는 '고유'값을 가지게 하는 명령어입니다.
우리가 어떤 게임에서 캐릭터를 생성할 때 캐릭터의 닉네임이 중복되지 않도록 만들고 싶다면 이 UNIQUE를 사용하면 됩니다.
위의 코드에서는 ID가 중복이 안되도록 생성되어야겠네요.

Primary Key

CREATE TABLE Persons (
	ID        int PRIMARY KEY,
    LastName  varchar(255) NOT NULL,
    FirstName varchar(255),
    Age       int
);

기본적으로 기본 키(Primary Key)는 unique(고유)와 NOT NULL(필수) 특성 두 가지를 모두 갖는다.
하나의 테이블에 하나의 필드에만 선언 가능합니다.

CREATE TABLE Persons (
	ID int,
    LastName  varchar(255) NOT NULL,
    FirstName varchar(255),
    Age       int,
    CONSTRAINT Stranger PRIMARY KEY (ID,LastName) // ID, LastName값을 갖는 stranger
);

다른 방법으로 여러 가지를 기본 키값와 하는 방법이 있긴 합니다... (쓰게 될 지는 모르겠습니다.)

Foreign Key

CREATE TABLE Item
(
    itemId INT(11)      NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name     VARCHAR(255) NOT NULL,
    address  VARCHAR(255) NOT NULL
);

CREATE TABLE ItemStorage
(
    itemStorageId  INT(11)      NOT NULL AUTO_INCREMENT PRIMARY KEY,
    itemId         INT(11)      NOT NULL,
    name           VARCHAR(255) NOT NULL,
    FOREIGN KEY (itemId) REFERENCES Item (itemId)
);

해당 필드를 통해 다른 테이블과 연결해주는 역할입니다.
테이블끼리 상속하는 개념으로 생각하면 쉽습니다.

profile
생각을 많이. 입은 무겁게. 심장은 항상 열심히 뛰는 사람이 되자.

0개의 댓글