<TIL> 25. Database와 SQL

YUJIN LEE·2023년 2월 25일
0

개발log

목록 보기
21/149

Database

"데이터의 집합"
DB는 정보를 저장하고 관리를 해준다.

DBMS

Database Management System
데이터베이스를 관리하고 운영하는 소프트웨어

RDBMS

Relational DBMS 관계형 데이터베이스
테이블(table)이라는 최소 단위로 구성, 이 테이블은 열(column)과 행(row)로 이루어짐.

사용할 RDBMS

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

SQL

Structured Query Language - RDBMS에서 사용되는 언어.
수 많은 정보를 Database에서 조작하고 관리하기 위해서는 SQL언어를 사용해야함.

  • 국제표준화기구에서 SQL에 대한 표준을 정해서 발표하고 있음.
  • DBMS를 만드는 회사가 여러곳이기 때문에 DBMS 마다 표준 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를 삭제할 수 있다.

SQL 연습하기

CREATE

제약조건

  • AUTO_INCREMENT: 컬럼의 값이 중복되지 않게 1씩 자동으로 증가하게 해줘 고유번호를 생성해준다.
  • NOT NULL: 해당 필드는 NULL 값을 저장할 수 없게 된다.
  • UNIQUE: 해당 필드는 서로 다른 값을 가져야만 한다.
  • PRIMARY KEY: 해당 필드가 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가지게 된다.
    * PRIMARY KEY 이해하기
    • PRIMARY KEY 즉, 기본키는 테이블 내에서 '유일하게 존재하는 값의 조합'을 설정해서 중복된 데이터가 테이블에 삽입되는 것을 방지하는 제약 조건.

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

    1. 데이터의 중복을 방지
    • 만약 기본키를 설정하지 않고 회원을 관리하는 테이블이 있을 때 기존 회원이 예전에 가입한걸 잊고 다시 회원가입을 하는데 최근 번호 및 주소가 바뀌었다면 우리는 둘 중에 어느 정보가 정확한 정보인지 판단하기 어렵다.
      즉, 데이터의 무결성이 깨진다.
    1. 데이터를 매우 빠르게 찾을 수 있음
    • 기본키를 설정하면 DBMS는 인덱스를 만든다.
    • 이 인덱스는 해당 데이터를 빨리 찾을 수 있게 도와주는 일종의 목차.
    • 만약 주민번호 컬럼에 기본키가 설정되어있지 않으면, 우리는 주민번호가 절대 중복될 수 없다는 것을 알지만, DBMS는 그것을 모르기 때문에 주민번호가 중복될 수 있는 것을 가정해 모든 row를 전부 확인함. 이럴때 주민번호에 기본키가 설정이 되어있으면 1개만 찾으면바로 해당 데이터를 반환.
  • FOREIGN KEY: 하나의 테이블을 다른 테이블에 의존하게 만들며 데이터의 무결성을 보장.
    * FK를 가지는 테이블이 참조하는 기준 테이블의 열은 반드시 PK, UNIQUE 제약조건이 설정되어 있어야 함.
    • FOREIGN KEY 이해하기
    • FOREIGN KEY 즉, 외래키는 두개의 테이블을 연결하는 다리 역할.
      기본키가 하나의 테이블에서 중복된 데이터가 삽입되는걸 방지하는 역할을 하는데, 외래키는 데이터가 새롭게 추가될 때 외래키에 해당하는 값이 외래키가 참조하는 테이블에 존재하는지 확인.
    • CASCADE: FOREIGN KEY로 연관된 데이터를 삭제, 변경할 수 있다.

JOIN

JOIN 이해하기

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

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

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

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

profile
인정받는 개발자가 되고싶습니다.

0개의 댓글