SQL 개념

Organ·2023년 10월 22일

데이터베이스

목록 보기
3/5

SQL 기본 개념

  • Structured Query Language
  • 현업에서 쓰이는 relatinal DBMS의 표준 언어
  • 종합적인 databse 언어 : DDL + DML + VDL

SQL에서 relation이란 relational data model에서의 relation이랑은 개념이 조금 다른데 multiset of tuples 라는 특징이 있다. 이 말은 중복된 tuple을 허용한다는 뜻이다.

attribute data type : 숫자

key constraints

primary key

primary key가 tean_id 와 back_number로 구성된 상황에서 1,2번재 줄은 중복된 값을 가지고 있고 3번재 줄은 NULL을 가지고 있어서 잘못된 예시이다.

  • primary key를 선언하는 방법
    • attribute 하나로 구성될 떄
      create table PLAYER(
      	id	INT	PRIMARY KEY
      );
    • attribute 하나 이상으로 구성될 때
      create table PLAYER(
      	TEAN_ID		VARCHAR(12),
      	BACK_NUMBER	INT,
          :
          PRIMARY KEY(TEAM_ID, BACK_NUMBER)
      );

UNIQUE

  • UNIQUE를 선언하는 방법
    • attribute 하나로 구성될 때
      CREATE TABLE PLAYER(
      		ID   INT   UNIQUE
           ...
      )
    • attribute 하나 이상으로 구성될 때
      CREATE TABLE PLAYER(
      		TEAM_ID 	VARCHAR(12),
           BACK_NUMBER	INT,
           ...
           UNIQUE(TEAM_ID, BACK_NUMBER)
      )

NOT NULL

  • NOT NULL 선언하는 방법
    NOT NULL은 attribute 래벨에서만 선언이 가능하다.
CREATE TABLE STUDENT(
		...
        PHONE_NUMBER INT NOT NULL  UNIQUE,
        ...
        );

UNIQUE가 NULL의 경우에는 중복을 허용할 수 있기 때문에 NOT NULL의 경우에는 UNIQUE를 보통 같이 써주는 경우가 많다.

정리


이 부분을 이해할 수 있으면 된다.

attribute DEFAULT

attribute의 default 값을 정의할 때 사용한다. 새로운 tuple을 정의할 때 해당 attribute에 대한 값이 없다면 default 값으로 저장.

  • DEFAULT 선언하는 방법
CREATE TABLE ORDERS(
	MENU VARCHAR(15) DEFAULT '짜장면'
);

CHECK

  • CHECK constraint 선언하는 방법
    • attribute 하나로 구성될 때
      CREATE TABLE EMPLYEE(
      		AGE INT CHECK(AGE >= 20)
      );
    • attribute 하나 이상으로 구성될 때
      CREATE TABLE PROJECT(
      		START_DATE 		DATE,
           END_DATE		DATE,
      		:
           CHECK (START_DATE < END_DATE)
      );
      
      

FOREIGN KEY


FOREIGN KEY로 저장된 값은 다른 테이블의 PRIMARY KEY에 반드시 존재하는 값이어야 한다.

  • FOREING KEY를 선언하는 방법
    • REFERENCE 뒤에는 어떤 테이블을 레퍼런스 하고 테이블 이름을 적어주고 그 테이블의 ATTRIBUTE이름을 같이 적어줘야 한다.
    • 참조하고 있던 값이 삭제되거나 업데이트 될 때 FOREIGN KEY의 VALUE를 어떻게 해줄지가 중요한데 DELETE 되거나 UPDATE될 때 주는 옵션의 종류는 5가지가 있다.

정리


이 부분을 이해할 수 있으면 된다.

constraint 이름 명시하기

  • 이름을 붙이면 어떤 constraint를 위반했는지 쉽게 파악할 수 있다.
  • constraint를 삭제하고 싶을 때 해당 이름으로 삭제 가능
CREATE TABLE TEST(
	AGE INT CONSTRAINT AGE_OVER_20 CHECK (AGE > 20)
    );

ALTER TABLE로 schema 변경하기

  • DEPARTMENT 테이블에는 FOREIGN KEY를 선언하지 않았기 때문에(DEPARTMENT 테이블을 만들 당시엔 DEPARTMENT밖에 없어서) 연결되는 테이블들을 다 만든 이후에 FOREIGN KEY를 선언하는 모습
  • ALTER TALBE 변경하려는 테이블 DEPARTMENT의 LEADER_ID에 FOREIGN KEY를 추가할 거라 ADD FOREIGN KEY(LEADER_ID) 이렇게 적어준다.
  • LEADER_ID는 레퍼런스 하는게 EMPLOYEE 테이블의 ID이기 때문에
    REFERENCES EMPLYEE(ID)
  • 참조하는 값이 업데이트 될 때마다 똑같이 반영되도록
    ON UPDATE CASCADE
  • 참조하는 값이 DELETE 되면 DEPARTMENT의 LEADER_ID는 NULL로 바뀌도록
    ON DELETE SET NULL
ALTER TABLE 의 종류


이미 서비스 중인 TABLE의 SCHEMA를 변경하는 것이라면 변경 작업 때문에 서비스의 백엔드에 영향이 없을지 검토한 후에 변경하는 것이 중요하다.

DROP TABLE

테이블을 사용할 때 사용
DROP TABLE 테이블이름;

출처

https://www.youtube.com/watch?v=c8WNbcxkRhY&t=674s

0개의 댓글