πŸ“ŠSQL ν…Œμ΄λΈ” 생성, μˆ˜μ •, μ‚­μ œ, μ œμ•½μ‘°κ±΄ (CREATE, DROP, ALTER)

hamsangΒ·2022λ…„ 5μ›” 9일
0

SQLD

λͺ©λ‘ 보기
2/4
post-thumbnail

πŸ“ƒ CREATE TABLE

  • CREATE TABLE 속성 이름
  • μƒˆ ν…Œμ΄λΈ”μ„ λ§Œλ“€ λ•Œ μ‚¬μš©
-- PEREON ν…Œμ΄λΈ” 생성 예제

CREATE TABLE Persons(
  PersonID int,
  LastName varchar(255),
  FirstName varchar(255),
  Address varchar(255),
  City varchar(255),  
);

πŸ“ƒ DROP TABLE

  • κΈ°μ‘΄ ν…Œμ΄λΈ”μ„ μ‚­μ œν•  λ•Œ μ‚¬μš©
  • TRUNCATE TABLE : ν…Œμ΄λΈ”μ€ μ‚­μ œν•˜μ§€ μ•Šκ³  ν…Œμ΄λΈ” λ‚΄λΆ€ λ°μ΄ν„°λ§Œ μ‚­μ œ
-- TABLE μ‚­μ œ 예제
 DROP TABLE table_name ;

-- 
-- TABLE λ‚΄λΆ€ λ°μ΄ν„°λ§Œ μ‚­μ œ
TRUNCATE TABLE table_name;

πŸ“ƒ ALTER TABLE

  • κΈ°μ‘΄ ν…Œμ΄λΈ”μ— μ—΄ μΆ”κ°€, μ‚­μ œ, μˆ˜μ •μ‹œ μ‚¬μš©
  • κΈ°μ‘΄ ν…Œμ΄λΈ”μ— λ‹€μ–‘ν•œ μ œν•œ 쑰건을 μΆ”κ°€ν•  λ•Œλ„ μ‚¬μš©λœλ‹€.

ALTER 속성 μΆ”κ°€ κΈ°λ³Έ ν˜•μ‹
ALTER TABLE ν…Œμ΄λΈ”μ΄λ¦„ ADD 속성이름 μžλ£Œν˜•;

ALTER 속성 λ³€κ²½ κΈ°λ³Έ ν˜•μ‹
ALTER TABLE ν…Œμ΄λΈ”μ΄λ¦„ MODIFY 속성이름 λ°”κΎΈκ³ μžν•˜λŠ”νƒ€μž…;

ALTER 속성 μ‚­μ œ κΈ°λ³Έ ν˜•μ‹
ALTER TABLE ν…Œμ΄λΈ”μ΄λ¦„ DROP COLUMN 속성이름;

--newbook ν…Œμ΄λΈ”μ— varchar2(13)의 μžλ£Œν˜•μ„ 가진 isbn 속성을 μΆ”κ°€ν•˜μ‹œμ˜€.
ALTER TABLE newbook ADD isbn varchar2(13);

--newbook ν…Œμ΄λΈ”μ— isbnμ†μ„±μ˜ μžλ£Œν˜•μ„ 가진 numberν˜•μœΌλ‘œ λ³€κ²½ν•˜μ‹œμ˜€.
ALTER TABLE newbook MODIFY isbn number;

--newbook ν…Œμ΄λΈ”μ˜ isbn 속성을 μ‚­μ œν•˜μ‹œμ˜€.
ALTER TABLE newbook DROP COLUMN isbn;

--newbookν…Œμ΄λΈ”μ˜ 속성에 not null μ œμ•½μ‘°κ±΄μ„ μ μš©ν•˜μ‹œμ˜€.
ALTER TABLE newbook MODIFY bookid number not null;

--newbookν…Œμ΄λΈ”μ˜ bookid속성을 κΈ°λ³Έν‚€λ‘œ λ³€κ²½ν•˜μ‹œμ˜€.
ALTER TABLE newbook ADD primary key(bookid); --PK적용

πŸ“Š SQL μ œμ•½ 쑰건 λ§Œλ“€κΈ°

  • CREATE TABLE ν˜Ήμ€ ALTER TABLE둜 μž‘μ„±λ  λ•Œ μ œν•œ 쑰건을 지정할 수 μžˆλ‹€.
  • 데이터가 μ œν•œ 쑰건에 μœ„λ°°λ˜λ©΄ μ‹€ν–‰ 쀑단
  • μ œν•œ 쑰건을 지정해 λ°μ΄ν„°μ˜ μ‹ λ’°μ„±κ³Ό 정확성을 보μž₯ν•  수 μžˆλ‹€.
  • NOT NULL : 데이터λ₯Ό μ‚½μž…ν•  λ•Œ ν•΄λ‹Ή 속성값에 NULL이 λ“€μ–΄κ°€λ©΄ μœ„λ°°λ¨.
  • UNIQUE : ν•΄λ‹Ή 속성값에 λ™μΌν•œ λ‘κ°œ μ΄μƒμ˜ 값이 λ“€μ–΄κ°€λ©΄ μœ„λ°°λ¨.
  • PRIMARY KEY : NOT NULLκ³Ό UNIQUE의 μ‘°ν•©. ν…Œμ΄λΈ”μ˜ 각 행을 κ³ μœ ν•˜κ²Œ 식별
  • FOREIGN KEY : λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ ν–‰ / λ ˆμ½”λ“œλ₯Ό κ³ μœ ν•˜κ²Œ 식별
  • CHECK : μ†μ„±κ°’μ˜ 도메인을 지정 (μ†μ„±κ°’μ˜ λ²”μœ„)
  • DEFAULT : 값이 μ§€μ •λ˜μ§€ μ•Šμ€ 경우(NULL이면) μ—΄μ˜ 기본값을 μ„€μ •
  • INDEX : λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 데이터λ₯Ό 맀우 μ‹ μ†ν•˜κ²Œ 생성 및 κ²€μƒ‰ν•˜λŠ” 데 μ‚¬μš©

PK와 FK도 μ œμ•½ 쑰건이닀!


πŸ“Œ NOT NULL μ œμ•½ 쑰건

κΈ°λ³Έμ μœΌλ‘œλŠ” NULL값을 포함할 수 μžˆμœΌλ‚˜ NOT NULL μ œμ•½ 쑰건은 NULL값을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€.


πŸ“Œ UNIQUE μ œμ•½ 쑰건

  • λͺ¨λ“  μ—΄μ˜ 값듀이 μ„œλ‘œ λ‹€λ₯Έμ§€ 확인
  • PK μ œμ•½ μ‘°κ±΄μ—λŠ” μžλ™μœΌλ‘œ UNIQUE μ œμ•½ 쑰건이 μ μš©λœλ‹€
  • μ—¬λŸ¬ 개의 UNIQUE μ œμ•½ 쑰건을 κ°€μ§ˆ 수 μžˆμ§€λ§Œ, PKλŠ” 였직 ν•œ κ°œμ—¬μ•Ό ν•œλ‹€.
-- CREATE TABLE ν•˜λ‚˜μ˜ μ†μ„±μ—λ§Œ UNIQUE 지정
CREATE TABLE Persons (
    ID int NOT NULL UNIQUE,
  );
  
-- μ—¬λŸ¬κ°œ 속성에 UNIQUE μ œμ•½ 쑰건 지정
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    CONSTRAINT UC_Person UNIQUE(ID,LastName)
  );

-- ALTER TABLE
-- ν•œκ°œμ˜ 경우
ALTER TABLE Persons
ADD UNIQUE (ID);
-- μ—¬λŸ¬κ°œ
ADD CONSTRAINT UC_Person UNIQUE (ID,LastName);

-- DROP
ALTER TABLE Persons
DROP INDEX UC_Person;

πŸ“Œ PRIMARY KEY μ œμ•½μ‘°κ±΄

  • λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ”μ˜ 각 λ ˆμ½”λ“œλ₯Ό κ³ μœ ν•˜κ²Œ 식별
  • κΈ°λ³Έν‚€λŠ” UNIQUE 값을 ν¬ν•¨ν•΄μ•Όν•˜λ©°, NULL 값은 포함할 수 μ—†λ‹€.
  • ν…Œμ΄λΈ”μ—λŠ” PKλŠ” ν•˜λ‚˜λ§Œ μžˆμ–΄μ•Ό ν•œλ‹€. PKλŠ” ν•˜λ‚˜ λ˜λŠ” μ—¬λŸ¬ 개 ν•„λ“œλ‘œ ꡬ성이 κ°€λŠ₯ν•˜λ‹€.
CREATE TABLE Persons (
    ID int NOT NULL PRIMARY KEY,
);

-- ν•œ 개 μ΄μƒμ˜ ν•„λ“œλ₯Ό κΈ°λ³Έν‚€λ‘œ λ§Œλ“€ λ•Œ
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    CONSTRAINT PK_Person PRIMARY KEY (ID,LastName)
);


-- 이미 λ§Œλ“€μ–΄μ§„ ν…Œμ΄λΈ”μ˜ κΈ°λ³Έν‚€ λ°”κΏ€ λ•Œ
-- 이 경우, NULL 값을 ν¬ν•¨ν•˜μ§€ μ•Šλ„λ‘ 이미 μ„ μ–Έ λ˜μ–΄ μžˆμ–΄μ•Ό ν•œλ‹€ .
ALTER TABLE Persons
ADD PRIMARY KEY (ID);
-- λ‘κ°œ μ΄μƒμ˜ ν•„λ“œλ₯Ό κΈ°λ³Έν‚€λ‘œ ν•  λ•Œ
ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID, LastName);

-- κΈ°λ³Έν‚€ μ‚­μ œ
ALTER TABLE Persons
DROP PRIMARY KEY;

πŸ“Œ FOREIGN KEY μ œμ•½ 쑰건

  • μ™Έλž˜ν‚€(FK)λŠ” 두 ν…Œμ΄λΈ”μ„ μ„œλ‘œ μ—°κ²°ν•  λ•Œ μ‚¬μš©ν•˜λŠ” 킀이닀.
  • μ™Έλž˜ν‚€λŠ” λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ PRIMARY KEYλ₯Ό μ°Έμ‘°ν•˜λŠ” ν…Œμ΄λΈ”μ˜ ν•„λ“œμ΄λ‹€.
  • μ™Έλž˜ν‚€κ°€ λ“€μ–΄μžˆλŠ” ν…Œμ΄λΈ”μ„ ν•˜μœ„ ν…Œμ΄λΈ”μ΄λΌκ³ ν•˜κ³ , 후보킀가 λ“€μ–΄μžˆλŠ” ν…Œμ΄λΈ”μ„ μ°Έμ‘° 된 ν…Œμ΄λΈ” ν˜Ήμ€ μƒμœ„ ν…Œμ΄λΈ”μ΄λΌκ³  ν•œλ‹€.
CREATE TABLE Orders(
  OrderID int NOT NULL PRIMARY KEY,
  PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);

--  ν…Œμ΄λΈ”μ΄ 생성 된 ν›„, μ™Έλž˜ν‚€ μ œμ•½ 쑰건을 λ§Œλ“€ λ•Œ
ALTER TABLE Orders
ADD FOREGIN KEY (PersonID) REFERENCES Persons(PersonID);

-- 이름 생성 및 μ—¬λŸ¬ μ—΄μ˜ μ™Έλž˜ν‚€ λ§Œλ“€λ•Œ
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

πŸ“Œ CHECK μ œμ•½ 쑰건

  • 열에 배치 ν•  수 μžˆλŠ” κ°’ λ²”μœ„λ₯Ό μ œν•œ ν•  λ•Œ μ‚¬μš©
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int CHECK (Age>=18)
);

-- κΈ°μ‘΄ ν…Œμ΄λΈ” μ œμ•½ 쑰건 λ§Œλ“€λ•Œ
ALTER TABLE Persons
ADD CHECK (Age>=18);

πŸ“Œ DEFAULT μ œμ•½ 쑰건

  • μ—΄μ˜ 기본값을 μ œκ³΅ν•˜λŠ”λ° μ‚¬μš©
  • 값을 μ§€μ •ν•˜μ§€ μ•Šμ„ 경우, 기본값이 λͺ¨λ“  μƒˆ λ ˆμ½”λ“œμ— μΆ”κ°€λœλ‹€.
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    City varchar(255) DEFAULT 'Sandnes'
);

-- ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬, μ‹œμŠ€ν…œ 값을 μ‚½μž…ν•˜λŠ”λ°λ„ κ°€λŠ₯
CREATE TABLE Orders (
    ID int NOT NULL,
    OrderNumber int NOT NULL,
    OrderDate date DEFAULT GETDATE()
);
profile
햄생

0개의 λŒ“κΈ€