Constraints

μˆ˜μ •Β·2024λ…„ 6μ›” 6일

DBMS

λͺ©λ‘ 보기
14/18

πŸ“Œ Constraints

  • ConstraintsλŠ” μ œμ•½μ‘°κ±΄μœΌλ‘œ CREATE TABLE으둜 ν…Œμ΄λΈ”μ„ 생성할 λ•Œ μ§€μ •ν•˜κ±°λ‚˜, ALTER TABLE둜 ν…Œμ΄λΈ”μ„ λ§Œλ“  ν›„ μˆ˜μ •ν•  λ•Œ μ§€μ •ν•  수 μžˆλ‹€.
	# ν…Œμ΄λΈ”μ„ 생성할 λ•Œ
	CREATE TABLE table_name (
    	column1 datatype constraint,
    	column2 datatype constraint,
    	....
	);
	
    # ν…Œμ΄λΈ”μ„ μˆ˜μ •ν•  λ•Œ
    ALTER TABLE table_name
    	MODIFY COLUMN column1 datatype constraint;

πŸ“ NOT NULL

  • 기본적으둜 열은 NULL값을 κ°€μ§ˆ 수 μžˆμ§€λ§Œ NOT NULL μ œμ•½μ„ κ±Έμ–΄ 열이 NULL 값을 κ°€μ§ˆ 수 없도둝 κ°•μ œν•œλ‹€.
	# ν…Œμ΄λΈ”μ„ 생성할 λ•Œ
    CREATE TABLE tabla_name (
    		column1 datatype NOT NULL
            , column2 datatype NOT NULL
    );
    
    # ν…Œμ΄λΈ”μ„ μˆ˜μ •ν•  λ•Œ
    ALTER TABLE tabla_name
    	MODIFY COLUMN column1 datatype NOT NULL;

πŸ“ UNIQUE

  • UNIQUE μ œμ•½μ‘°κ±΄μ€ μ—΄μ˜ λͺ¨λ“  값이 μ„œλ‘œ λ‹€λ₯Έμ§€ ν™•μΈν•œλ‹€.

  • UNIQUE μ œμ•½ 쑰건은 μ—΄ λ˜λŠ” μ—΄ μ§‘ν•©μ˜ κ³ μœ μ„±μ„ 보μž₯ν•œλ‹€.

	# ν…Œμ΄λΈ” 생성할 λ•Œ
    # 1
	CREATE TABLE table_name (
   		column_name datatype UNIQUE
    );
    # 2
    CREATE TABLE table_name (
    	column1 datatype NOT NULL
        , column2 datatype
        CONSTRAINT constraint_name UNIQUE (column1, column2)
    );
    
    # ν…Œμ΄λΈ” μˆ˜μ •ν•  λ•Œ
    # 1
    ALTER TABLE table_name
    	MODIFY COLUMN column1 UNIQUE;
    # 2
    ALTER TABLE table_name
    	ADD UNIQUE (column1);
    # 3
    ALTER TABLE table_name
    	ADD CONSTRAINT constraint_name UNIQUE (column1, column2);
        
    # μ‚­μ œ
    ALTER TABLE table_name
    	DROP INDEX constraint_name;

πŸ“ PRIMARY KEY

  • PRIMARY KEY μ œμ•½μ‘°κ±΄μ€ ν…Œμ΄λΈ”μ˜ 각 행을 κ³ μœ ν•˜κ²Œ μ‹λ³„ν•˜λŠ” 역할을 ν•œλ‹€.

  • PRIMARY KEY μ œμ•½μ‘°κ±΄μ—λŠ” UNIQUE 와 NOT NULL이 ν¬ν•¨λœλ‹€.

  • ν•˜μ§€λ§Œ UNIQUE 와 NOT NULL μ œμ•½μ‘°κ±΄μ€ ν…Œμ΄λΈ” λ‹Ή μ—¬λŸ¬ 개 μ‘΄μž¬ν•  수 μžˆμ§€λ§Œ PRIMARY KEYλŠ” ν…Œμ΄λΈ” λ‹Ή ν•˜λ‚˜λ§Œ μ‘΄μž¬ν•΄μ•Ό ν•œλ‹€.

	# ν…Œμ΄λΈ”μ„ 생성할 λ•Œ
    # 1
    CREATE TABLE tabla_name (
    	column_name datatype NOT NULL
        , column_name datatype
        , PRIMARY KEY (column1)
    );
    # 2
    CREATE TABLE table_name (
    	column1 datatype NOT NULL
        , column2 datatype PRIMARY KEY
    );
    # 3
    CREATE TABLE table_name (
    	column1 datatype NOT NULL
        , column2 datatype 
        , CONSTRAINT constrains_name PRIMARY KEY (column1, column2)
    );
    
    # ν…Œμ΄λΈ”μ„ μˆ˜μ •ν•  λ•Œ
    # 1
    ALTER TABLE tabla_name
    	MODIFY COLUMN column_name datatype PRIMARY KEY;
    # 2
    ALTER TABLE table_name
    	ADD PRIMARY KEY (column1);
    # 3
    ALTER TABLE table_name
    	ADD CONSTRAINT constraint_name PRIMARY KEY (column1, column2);
        
    # μ‚­μ œ
    ALTER TABLE table_name
    	DROP PRIMARY KEY;

πŸ“ FOREIGN KEY

  • FOREIGN KEY μ œμ•½μ‘°κ±΄μ€ ν…Œμ΄λΈ”κ°„μ˜ 링크가 λ¬΄λ„ˆμ§€λŠ” 것을 λ°©μ§€ν•œλ‹€.

  • FOREIGN KEYλŠ” PRIMARY KEYλ₯Ό μ°Έμ‘°ν•˜λŠ” ν•œ ν…Œμ΄λΈ”μ˜ ν•„λ“œμ΄λ‹€.

  • FOREIGN KEYκ°€ μžˆλŠ” ν…Œμ΄λΈ”μ„ ν•˜μœ„ ν…Œμ΄λΈ”μ΄λΌκ³  ν•˜λ©°, PRYIMARY KEYκ°€ μžˆλŠ” ν…Œμ΄λΈ”μ„ μƒμœ„ ν…Œμ΄λΈ” 이라고 ν•œλ‹€.

	# ν…Œμ΄λΈ”μ„ 생성할 λ•Œ
    # 1
    CREATE TABLE table1 (
    	column1 datatype NOT NULL
    	, column2 datatype NOT NULL
    	, column3 datatype
    	, PRIMARY KEY (column1)
    	, FOREIGN KEY (column3) REFERENCES table2(column3)
	);
    # 2
    CREATE TABLE table2 (
    	column1 datatype NOT NULL
    	, column2 datatype NOT NULL
    	, column3 datatype
    	, PRIMARY KEY (column1),
    	, CONSTRAINT constraint_name FOREIGN KEY (column3)
        	REFERENCES table2(column3)
	);

    
    # ν…Œμ΄λΈ”μ„ μˆ˜μ •ν•  λ•Œ
    # 1
    ALTER TABLE table_name
    	ADD FOREIGN KEY (column3)
        	REFERENCES table2(column3);
    # 2
    ALTER TABLE table_name
    	ADD CONSTRAINT constraint_name (column3)
        	FOREIGN KEY (column3) REFERENCES table2(column3);
            
    # μ‚­μ œ
    ALTER TABLE table_name
    	DROP FOREIGN KEY constraint_name;

πŸ“ CHECK

  • CHECK μ œμ•½μ‘°κ±΄μ€ μ—΄μ˜ 값이 νŠΉμ •μ‘°κ±΄μ„ λ§Œμ‘±ν•˜λŠ”μ§€ ν™•μΈν•œλ‹€.

  • 열에 CHECK μ œμ•½μ‘°κ±΄μ„ μ •μ˜ν•˜λ©΄ κ°’μ˜ λ²”μœ„λ₯Ό μ œν•œν•˜κ³  νŠΉμ • κ°’λ§Œ ν—ˆμš©λœλ‹€.

	# ν…Œμ΄λΈ”μ„ 생성할 λ•Œ
    # 1
    CREATE TABLE table_name (
    	column1 datatype NOT NULL
    	, column2 datatype NOT NULL
    	, CHECK (condition)
	);
    # 2 
    CREATE TABLE table_name (
    	column1 datatype NOT NULL,
    	column2 datatype NOT NULL,
    	CONSTRAINT constraint_name CHECK (condition1 AND condition2)
	);
    
    # ν…Œμ΄λΈ”μ„ μˆ˜μ •ν•  λ•Œ
    # 1
    ALTER TABLE table_name
		ADD CHECK (condition);
    # 2
    ALTER TABLE Persons
		ADD CONSTRAINT constraint_name CHECK (condition1 AND condition2);
        
    # μ‚­μ œ
    ALTER TABLE table_name
		DROP CHECK constraint_name;

πŸ“ DEFAULT

  • DEFAULT μ œμ•½μ‘°κ±΄μ€ 값이 μ§€μ •λ˜μ§€ μ•Šμ€ 경우 μ—΄μ˜ 기본값을 μ„€μ •ν•œλ‹€.
	# ν…Œμ΄λΈ”μ„ 생성할 λ•Œ
    CREATE TABLE table_name (
    	column1 datatype NOT NULL
    	, column2 datatype DEFAULT value
	);
    
    # ν•¨μˆ˜ μ‚¬μš©
    CREATE TABLE table_name (
    	column1 datatype NOT NULL,
    	column2 datatype DEFAULT CURRENT_DATE()
	);
    
    # ν…Œμ΄λΈ”μ„ μˆ˜μ •ν•  λ•Œ
    ALTER TABLE table_name
		ALTER column_name SET DEFAULT value;
        
    # μ‚­μ œ
    ALTER TABLE table_name
		ALTER column_name DROP DEFAULT;

πŸ“ CREATE INDEX

  • CREATE INDEXλŠ” λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 데이터λ₯Ό 맀우 λΉ λ₯΄κ²Œ μƒμ„±ν•˜κ³  κ²€μƒ‰ν•˜λŠ”λ° μ‚¬μš©λœλ‹€.
	# 쀑볡 값이 ν—ˆμš©λ˜λŠ” 인덱슀 생성
	CREATE INDEX index_name
		ON table_name (column1, column2, ...);
    
    # 쀑볡 값이 ν—ˆμš©λ˜μ§€ μ•ŠλŠ” 인덱슀 생성
    CREATE UNIQUE INDEX index_name
		ON table_name (column1, column2, ...);
    
    # μ‚­μ œ
    ALTER TABLE table_name
		DROP INDEX index_name;

0개의 λŒ“κΈ€