๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[๊ฐœ๋ฐœ] Practice/SQL Database

[SQL / Database] ์ปฌ๋Ÿผ์— ์ œ์•ฝ์กฐ๊ฑด(Constraints)์ฃผ๊ธฐ

by Connecting-the-dots 2023. 5. 28.
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ก์ปฌ๋Ÿผ์— ์ œ์•ฝ์กฐ๊ฑด(Constraints)์ฃผ๊ธฐ

CREATE TABLE ํ…Œ์ด๋ธ”๋ช… (
    ์ปฌ๋Ÿผ๋ช…1 datatype NOT NULL,
    ์ปฌ๋Ÿผ๋ช…2 datatype UNIQUE,
    ์ปฌ๋Ÿผ๋ช…3 datatype CHECK(์กฐ๊ฑด์‹),
    ์ปฌ๋Ÿผ๋ช…4 datatype PRIMARY KEY,
    ์ปฌ๋Ÿผ๋ช…5 datatype AUTO_INCREMENT
)

๐Ÿ’œ ๋‹ค์–‘ํ•œ ์ œ์•ฝ์กฐ๊ฑด

๐Ÿค NOT NULL

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ NULL ์ด ๋œ๋‹ค.
  • NOT NULL ์€ ์ž…๋ ฅ ๊ธˆ์ง€๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์ง€ ์•Š์œผ๋ฉด ์ €์žฅ์ด ๋˜์ง€ ์•Š๊ฒŒ ํ•จ์œผ๋กœ์จ ๋นˆ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

๐Ÿค UNIQUE

CREATE TABLE ํ…Œ์ด๋ธ”๋ช… (
    ์ปฌ๋Ÿผ๋ช…1 datatype,
    ์ปฌ๋Ÿผ๋ช…2 datatype,
    ์ปฌ๋Ÿผ๋ช…3 datatype,
    UNIQUE(์ปฌ๋Ÿผ๋ช…2, ์ปฌ๋Ÿผ๋ช…3)
)

 

  • UNIQUE ๋Š” ์ค‘๋ณต ๊ธˆ์ง€๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ์ด๋ฏธ ๋‹ค๋ฅธ ํ–‰์— ์žˆ๋Š” ๊ฐ’์ด๋ผ๋ฉด ์ €์žฅ๋˜์ง€ ์•Š๋„๋ก ํ•จ์œผ๋กœ์จ ๋ชจ๋“  ํ–‰์ด ๊ฐ๊ฐ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ์ƒํƒœ๋กœ ์œ ์ง€๋˜๋„๋ก ํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐํƒ€์ž… ๋’ค์— UNIQUE ๋ฅผ ๋ถ™์—ฌ๋„ ๋˜์ง€๋งŒ, ์œ„์™€ ๊ฐ™์ด ๋งˆ์ง€๋ง‰ ์ค„์— UNIQUE() ๋ฅผ ๋ถ™์ธ ํ›„ ๊ด„ํ˜ธ ์•ˆ์— ์ปฌ๋Ÿผ๋ช…๋“ค์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    (๋‹จ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปฌ๋Ÿผ๋ช…์„ ๋„ฃ๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์ปฌ๋Ÿผ๋“ค์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ๊ฐ™์•„์•ผ ์ €์žฅ๋˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.)

๐Ÿค CHECK

  • CHECK ๋Š” ๊ด„ํ˜ธ ์•ˆ์˜ ์กฐ๊ฑด์‹์„ ๋งŒ์กฑํ•˜๋Š”์ง€์˜ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ปฌ๋Ÿผ์— ๋“ค์–ด๊ฐˆ ๊ฐ’์— ์ œ์•ฝ์„ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค.
  • ์ผ๋ฐ˜ ์กฐ๊ฑด์‹์ฒ˜๋Ÿผ ๋“ฑํ˜ธ, ๋ถ€๋“ฑํ˜ธ, AND, OR ์€ ๋ฌผ๋ก  IN ์—ฐ์‚ฐ์ž๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿค PRIMARY KEY

  • PRIMARY KEY ์—ญํ•  ์ปฌ๋Ÿผ ํ‘œ์‹œํ•œ๋‹ค.
  • ์ฆ‰, ์ปฌ๋Ÿผ์„ ํ–‰๊ตฌ๋ถ„์„ ์œ„ํ•œ ์ปฌ๋Ÿผ์œผ๋กœ ์ง€์ •ํ•˜๋ฉฐ ํ•ด๋‹น ์ปฌ๋Ÿผ์€ NOT NULL, UNIQUE ์ œ์•ฝ์กฐ๊ฑด์ด ์ž๋™์œผ๋กœ ๋ถ€์—ฌ๋œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋กœ๋Š” ๋ณดํ†ต์€ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆซ์ž๋ฅผ ๋„ฃ์œผ๋ฉฐ, ์—ฌ๋Ÿฌ ์ปฌ๋Ÿผ์„ ๋ฌถ์–ด์„œ PRIMARY KEY ๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿค AUTO_INCREMENT

CREATE TABLE ํ…Œ์ด๋ธ”๋ช… (
    ์ปฌ๋Ÿผ๋ช… datatype GENERATED BY DEFAULT ALWAYS AS IDENTITY
)
  • ์ฃผ๋กœ PRIMARY KEY ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ๋”ฐ๋กœ ์ž…๋ ฅํ•  ํ•„์š” ์—†์ด ํ–‰์ด ์ถ”๊ฐ€๋  ๋•Œ ์ž๋™์œผ๋กœ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ •์ˆ˜๊ฐ€ ๋ถ€์—ฌ๋œ๋‹ค.
  • ์›๋ž˜๋Š” ์œ„์™€ ๊ฐ™์€ ํ˜•์‹์ด SQL ํ‘œ์ค€๋ฌธ๋ฒ•์ด๊ธฐ ๋•Œ๋ฌธ์— Oracle, PostgreSQL ์€ ์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑํ•จ์œผ๋กœ์จ PRIMARY KEY, AUTO_INCREMENT ์ œ์•ฝ์กฐ๊ฑด ๋ถ€์—ฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ’œ CONSTRAINT

// ์ œ์•ฝ์กฐ๊ฑด ์ฃผ๋Š” ๋ฐฉ๋ฒ•1
CREATE TABLE ํ…Œ์ด๋ธ”๋ช… (
    ์ปฌ๋Ÿผ๋ช…1 datatype PRIMARY KEY,
    ์ปฌ๋Ÿผ๋ช…2 datatype,
    ์ปฌ๋Ÿผ๋ช…3 datatype CHECK(์กฐ๊ฑด์‹)
) 

// ์ œ์•ฝ์กฐ๊ฑด ์ฃผ๋Š” ๋ฐฉ๋ฒ•2
CREATE TABLE ํ…Œ์ด๋ธ”๋ช… (
    ์ปฌ๋Ÿผ๋ช…1 datatype,
    ์ปฌ๋Ÿผ๋ช…2 datatype,
    ์ปฌ๋Ÿผ๋ช…3 datatype,
    PRIMARY KEY (์ปฌ๋Ÿผ๋ช…1),
    CHECK(์กฐ๊ฑด์‹)
) 

// ์ œ์•ฝ์กฐ๊ฑด ์ฃผ๋Š” ๋ฐฉ๋ฒ•3
CREATE TABLE ํ…Œ์ด๋ธ”๋ช… (
    ์ปฌ๋Ÿผ๋ช…1 datatype,
    ์ปฌ๋Ÿผ๋ช…2 datatype,
    ์ปฌ๋Ÿผ๋ช…3 datatype,
    CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ž‘๋ช…1 PRIMARY KEY (์ปฌ๋Ÿผ๋ช…1),
    CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด์ž‘๋ช…2 CHECK(์กฐ๊ฑด์‹)
)
  • ์ œ์•ฝ์กฐ๊ฑด์„ ์ฃผ๋Š” ๋ฐฉ๋ฒ•์€ ์œ„์™€ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๋“ค์ด ์กด์žฌํ•œ๋‹ค.
  • CONSTRAINT ๋ฌธ๋ฒ•์œผ๋กœ ์ œ์•ฝ์กฐ๊ฑด์— ์ด๋ฆ„์„ ๋ถ™์—ฌ์ฃผ๊ฒŒ ๋˜๋ฉด ๋‚˜์ค‘์— ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ์ด๋ฆ„๋ถ™์—ฌ์ง„ ์ œ์•ฝ์กฐ๊ฑด๋•Œ๋ฌธ์— ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค๊ณ  ํ‘œ๊ธฐ๊ฐ€ ๋˜๋ฏ€๋กœ ๋ฒ„๊ทธ์ฐพ๋Š” ๊ณผ์ •์ด ์ข€ ๋” ์šฉ์ดํ•  ์ˆ˜ ์žˆ๋‹ค.
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… MODIFY ์ปฌ๋Ÿผ๋ช… datatype ์ œ์•ฝ์กฐ๊ฑด
  • ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์ปฌ๋Ÿผ์— ์ œ์•ฝ์กฐ๊ฑด์„ ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด ALTER TABLE  ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
728x90
๋ฐ˜์‘ํ˜•