SQL 기본 개념, DB 구조 정의

JEREGIM·2023년 3월 31일
0

데이터베이스

목록 보기
3/6

📌SQL 기본 개념

SQL

  • Structured Query Language

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

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

SQL 주요 용어

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

SQL에서 relation

  • multiset of tuples. 즉, 중복된 tuple을 허용한다.

SQL & RDBMS

SQL은 RDBMS의 표준 언어이지만 실제 구현에 강제가 없기 때문에 RDMBS마다 제공하는 SQL의 스펙이 조금씩 다르다. 예를 들면, MySQL과 ORACLE에서 사용하는 SQL의 문법이 조금씩 다르다.


📌SQL로 DB 정의

MySQL을 통해 IT 회사 관련 DB를 만들면서 실습을 진행하겠다.

DATABASE vs SCHEMA

  • MySQL에서는 DATABASE와 SCHEMA가 같은 뜻을 의미한다.

  • CREATE DATABASE company = CREATE SCHEMA company

  • 다른 RDBMS에서는 의미가 다르게 쓰인다.

DB 만들기

  • CREATE DATABASE company; : database 만들기

  • SHOW DATABASES; : 내 mysql에 존재하는 database 목록을 보여준다.

  • DROP DATABASE company; : database 삭제

  • USE company; : 사용할 database 선택

  • SELECT database(); : 어떤 database가 활성화되어 있는지 알려준다.

attribute data type

숫자

문자열

날짜와 시간

그 외

table 만들기

company DB 스키마

  • 위의 스키마를 참고하여 테이블을 생성할 수 있다.

  • 컬럼에 밑줄이 그어진건 primary key라는 뜻이다.

테이블 생성 SQL문

department table

employee table

project table

works_on table

key constraints

PRIMARY KEY

  • table의 tuple을 식별하기 위해 사용. 하나 이상의 attribute로 구성
  • 중복된 값은 가질 수 없으며, NULL 값도 가질 수 없다.
  • 선언 방법

UNIQUE

  • UNIQUE로 지정된 attribute는 중복된 값을 가질 수 없다.
  • 단, NULL은 중복을 허용할 수 있다.(RDBMS마다 다른데 MySQL은 가능)
  • 선언 방법

NOT NULL

  • attribute가 NOT NULL로 지정되면 해당 attribute는 NULL 값을 가질 수 없다.
  • 선언 방법
  • 보통 NOT NULLUNIQUE를 같이 많이 쓴다.

attribute DEFAULT

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

CHECK

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

  • 선언 방법

  • MySQL 에서는 RESTRICT와 NO ACTION은 동일한 기능을 수행한다.(참조값 삭제/변경 금지)

  • MySQL 에서는 SET DEFAULT를 제대로 지원하지 않는다.

FOREIGN KEY

  • attribute가 다른 table의 primary key나 unique key를 참조할 때 사용
  • 선언 방법

constraint 이름 명시하기

  • 이름을 붙이면 어떤 constraint를 위반했는지 쉽게 파악할 수 있다.
  • constraint를 삭제하고 싶을 때 해당 이름으로 삭제할 수 있다.
  • 선언 방법

department에 외래키 추가

  • 처음 departmet 테이블을 만들 때는 leader_id를 참조할 employee 테이블이 생성되지 않았기 때문에 나중에 외래키를 추가해주었다.

ALTER TABLE

  • table의 schema를 변경하고 싶을 때 사용한다.

  • 사용 방법

  • 이미 서비스 중인 table의 schema를 변경하는 것은 위험부담이 크다. 따라서, 변경 작업 때문에 서비스의 백엔드에 어떤 영향을 줄지 충분히 검토한 후에 변경해야한다.

DROP TABLE

  • table을 삭제할 때 사용
  • DROP TABLE 테이블이름;

db 구조 정의시 중요한 점

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

0개의 댓글