본문 바로가기

백엔드 스터디/데이터베이스

SQL의 개념

SQL

- Structrued Query Language

- 현업에서 쓰이는 relational DBMS의 표준언어

- 종합적인 database 언어 : DDL + DML + VDL

 

SQL 주요 용어

relational data model SQL
relation table
attribute column
tuple row
domain domain

 

SQL에서의 relation

- multiset(= bag) of tuples @ SQL

- 중복된 tuple을 허용한다

 

SQL & RDBMS

SQL은 RDBMS의 표준 언어이지만 실제 구현에 강제가 없기 때문에 RDBMS마다 제공하는 SQL의 스펙이 조금씩 다르다

 

 

DATABASE vs SCHEMA

- MySQL에서는 DATABASE와 SCHEMA가 같은 뜻을 의미

- CREATE DATABASE company = CREATE SCHEMA company 

- 다른  RDBMS에서는 의미가 다르게 쓰임

- PostgreSQL에서는 SCHEMA가 DATABASE의 namespace를 의미

 

 

Key constraints: PRIMARY KEY

- primary key : table의 tuple을 식별하기 위해 사용, 하나 이상의 attribute(s)로 구성

- primary key는 중복된 값을 가질 수 없으며, NULL도 값으로 가질 수 없다

 

Key constraints: UNIQUE

- UNIQUE로 지정된 attribute(s)는 중복된 값을 가질 수 없다

- 단, NULL은 중복을 허용할 수도 있다(RDBMS마다 다름)

 

NOT NULL constraint

- attribute가 NOT NULL로 지정되면 해당 attribute는 NULL을 값으로 가질 수 없다

 

attribute DEFAULT

- attribute의 default 값을 정의할 때 사용

- 새로운 tuple을 저잘할 때 해당 attribute에 대한 값이 없다면 default 값으로 저장

 

CHECK constraint

- attribute의 값을 제한하고 싶을 때 사용

 

Referential integrity constraint: FOREIGN KEY

- attribute(s)가 다른 table의 primary key나 unique key를 참조할 때 사용

 

 

ALTER TABLE

- table의 schema를 변경하고 싶을 때 사용

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

 

 

DROP TABLE

- table을 삭제할 때 사용

- DROP TABLE table_name;

 

database를 구조를 정의할 때 중요한 점

만들려는 서비스의 스펙과 데이터 일관성, 편의성, 확장성 등을 종합적으로 고려하여 DB스키마를 적절하게 정의하는 것이 중요하다

 

 

출처 - 소스코드 SQL의 개념과 SQL로 데이터베이스를 정의하는 법

https://youtu.be/c8WNbcxkRhY?si=tDF3dGC90lMOewva