Structured Query Language
현업에서 쓰이는 relational DBMS의 표준 언어
종합적인 database 언어 : DDL + DML + VDL
relational data model | -> | SQL |
---|---|---|
relation | -> | table |
attribute | -> | column |
tuple | -> | row |
domain | -> | domain |
SQL은 RDBMS의 표준 언어이지만 실제 구현에 강제가 없기 때문에 RDMBS마다 제공하는 SQL의 스펙이 조금씩 다르다. 예를 들면, MySQL과 ORACLE에서 사용하는 SQL의 문법이 조금씩 다르다.
MySQL을 통해 IT 회사 관련 DB를 만들면서 실습을 진행하겠다.
MySQL에서는 DATABASE와 SCHEMA가 같은 뜻을 의미한다.
CREATE DATABASE company = CREATE SCHEMA company
다른 RDBMS에서는 의미가 다르게 쓰인다.
CREATE DATABASE company;
: database 만들기
SHOW DATABASES;
: 내 mysql에 존재하는 database 목록을 보여준다.
DROP DATABASE company;
: database 삭제
USE company;
: 사용할 database 선택
SELECT database();
: 어떤 database가 활성화되어 있는지 알려준다.
위의 스키마를 참고하여 테이블을 생성할 수 있다.
컬럼에 밑줄이 그어진건 primary key라는 뜻이다.
NOT NULL
과 UNIQUE
를 같이 많이 쓴다.attribute의 값을 제한하고 싶을 때 사용
선언 방법
MySQL 에서는 RESTRICT와 NO ACTION은 동일한 기능을 수행한다.(참조값 삭제/변경 금지)
MySQL 에서는 SET DEFAULT를 제대로 지원하지 않는다.
table의 schema를 변경하고 싶을 때 사용한다.
사용 방법
이미 서비스 중인 table의 schema를 변경하는 것은 위험부담이 크다. 따라서, 변경 작업 때문에 서비스의 백엔드에 어떤 영향을 줄지 충분히 검토한 후에 변경해야한다.
만들려는 서비스의 스펙과 데이터 일관성, 편의성, 확장성 등을 종합적을 고려하여 DB 스키마를 적절하게 정의하는 것이 중요하다.