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로 데이터베이스를 정의하는 법
'백엔드 스터디 > 데이터베이스' 카테고리의 다른 글
SQL로 데이터 조회하기 - select를 활용해서 데이터를 읽어오는 기본적인 문법 (0) | 2024.07.04 |
---|---|
SQL 데이터 추가(insert), 수정(update), 삭제(delete) (0) | 2024.07.03 |
관계형 데이터베이스(relational database) 개념 - RDBMS (0) | 2024.07.01 |
데이터베이스(database) 기본 개념 (0) | 2024.07.01 |
데이터베이스 기초 (0) | 2024.06.29 |