03 Database와 SQL

park·2022년 12월 5일

Database

Database는 '데이터의 집합'이라고 할 수 있다.

DBMS

  • DBMS 는 ‘Database Management System’ 의 약자로 Database를 관리하고 운영하는 소프트웨어를 의미한다.

RDBMS

  • RDBMS는 ‘Relational DBMS’의 약자로 관계형 데이터베이스라고 불린다.
  • RDBMS는 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 열(column)과 행(row)으로 이루어져 있다.

H2

In-memory DB의 대표 주자인 H2
인메모리 DB란 서버가 작동하는 동안에만 내용을 저장하고, 서버가 작동을 멈추면 데이터가 모두 삭제되는 데이터베이스를 말한다.

MySQL

  • MySQL은 우리가 서비스를 배포할 때 사용할 데이터베이스이다.
  • AWS RDS 라는 서비스를 사용해 붙여볼 예정이다.
  • 스프링과 궁합이 좋아서 많은 회사에서 사용하고 있다.

SQL

SQL은 ‘Structured Query Language’ 의 약자로 RDBMS에서 사용되는 언어입니다.
수 많은 정보를 Database에서 조작하고 관리하기 위해서는 SQL 언어를 사용 해야 한다.

DDL

‘Data Definition Language’ 의 약자로 테이블이나 관계의 구조를 생성하는데 사용한다.

  • CREATE : 새로운 데이터베이스 및 테이블을 생성해 준다.
  • ALTER : 데이터베이스와 테이블의 내용을 수정할 수 있다.
  • DROP : 데이터베이스와 테이블을 삭제할 수 있다. 데이터 및 테이블 전체를 삭제한다.
  • TRUNCATE : 데이터베이스와 테이블을 삭제할 수 있다. 최초 테이블이 만들어졌던 상태 즉, 컬럼값만 남긴다.

DCL

‘Data Control Language’ 의 약자로 데이터의 사용 권한을 관리하는데 사용한다.

  • GRANT : 사용자 또는 ROLE에 대해 권한을 부여할 수 있다.
  • REVOKE : 사용자 또는 ROLE에 부여한 권한을 회수할 수 있다.

DML

‘Data Manipulation Language’ 의 약자로 테이블에 데이터를 검색, 삽입, 수정, 삭제하는데 사용한다.

  • INSERT : 테이블에 새로운 row를 추가할 수 있다.
  • SELECT : 테이블의 row를 선택할 수 있다.
  • UPDATE : 테이블의 row의 내용을 수정할 수 있다.
  • DELETE : 테이블의 row를 삭제할 수 있다.

CREATE

제약조건

  • AUTO_INCREMENT : 컬럼의 값이 중복되지 않게 1씩 자동으로 증가하게 해줘 고유번호를 생성해 준다.
  • NOT NULL : 해당 필드는 NULL 값을 저장할 수 없게 된다.
  • UNIQUE : 해당 필드는 서로 다른 값을 가져야만 한다.
  • PRIMARY KEY : 해당 필드가 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가지게 된다.

PRIMARY KEY 이해하기

PRIMARY KEY 즉, 기본키는 테이블 내에서 '유일하게 존재하는 값의 조합'을 설정해서 중복된 데이터가 테이블에 삽입되는 것을 방지하는 제약조건

❓기본키를 사용하는 이유?

  1. 데이터의 중복을 방지한다.
  • 만약 기본키를 설정하지 않고서 회원을 관리하는 테이블이 있을 때 기존에 있던 회원이 예전에 가입한 것을 잊고서 다시 회원가입을 하는데
    최근에 번호 및 주소가 바뀌었다면?
  • 우리는 둘 중에 어느 정보가 정확한 정보인지 판단하기 어렵습니다. 즉, 데이터의 무결성이 깨집니다.
  1. 데이터를 매우 빠르게 찾을 수 있게 된다.
  • 기본키를 설정하면 DBMS는 인덱스를 만든다.
  • 이 인덱스는 해당 데이터를 빨리 찾을 수 있게 도와주는 일종의 목차라고 생각해도 된다.
  • 만약 주민번호 컬럼에 기본키가 설정 되어있지 않는다면 ?
  • 우리는 주민번호가 절대 중복될 수 없다는 것을 알지만 DBMS는 그것을 모르기 때문에 주민번호가 중복될 수 있는 것을 가정하여 5000만 row를 전부 확인 한다.
  • 이럴 때 주민번호에 기본키 설정이 되어있으면 row를 전부 확인하지 않고 1개만 찾으면 바로 해당 데이터를 반환한다.

FOREIGN KEY이해하기

하나의 테이블을 다른 테이블에 의존하게 만들며 데이터의 무결성을 보장해 준다. FOREIGN KEY 즉, 외래키는 두개의 테이블을 연결하는 다리 역할을 해주는 키입니다.

  • FK 를 가지는 테이블이 참조하는 기준 테이블의 열은 반드시 PK, UNIQUE 제약조건이 설정되어 있어야 한다.

CASCADE : FOREIGN KEY 로 연관된 데이터를 삭제,변경할 수 있다.

JOIN 이해하기

  • JOIN은 나누어진 테이블을 하나로 합치기 위해 데이터베이스가 제공하는 기능이다.
  • JOIN 은 ON이라는 키워드를 통해 기준이 되는 컬럼을 선택하여 2개의 테이블을 합쳐 준다.
  • JOIN을 할 때에는 적어도 하나의 컬럼을 서로 공유하고 있어야 하기 때문에 테이블에 외래키가 설정 되어 있다면 해당 컬럼을 통해 JOIN을 하면 해당 조건을 충족할 수 있다.

다만 JOIN을 하기 위해 외래키를 설정하는 것이 항상 좋은 선택이 아닐 수도 있다.

  • 외래키를 설정하면 데이터 무결성을 확인하는 추가 연산이 발생한다.
  • 또한 무결성을 지켜야하기 때문에 상황에 따라 개발하는데 불편할 수 있다.

👉 결론은 항상 테이블에 모든 제약조건을 걸어야 하는 것은 아니다. 프로젝트의 상황에 따라 가장 효율적인 제약조건을 테이블에 적용해야한다.

0개의 댓글