✏️ [Database] (1) SQL의 개념과 데이터베이스와 테이블 생성하기

박상민·2023년 11월 15일
0

Database

목록 보기
3/9
post-thumbnail

내용

  • SQL 기본 개념
  • 데이터베이스 생성하기
  • 테이블 생성하기
  • attribute data type 소개

⭐️ 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(= bag) of tuples @ SQL
    • 중복된 tuple을 허용한다.

SQL과 RDMBS

  • SQL은 RDBMS의 표준 언어이지만 실제 구현에 강제가 없기 때문에 RDBMS마다 제공하는 SQL의 스펙이 조금씩 다르다.
    • h2에서 제공하는 문법과 mySql 등에서 제공하는 문법은 조금씩 다르다.

⭐️ 예제를 통해 SQL로 DB 생성하기

IT 회사 관련 RDB 만들기

  • 부서, 사원, 프로젝트 관련 정보들을 저장할 수 있는 관계형 데이터베이스를 만들겠습니다.
    • 사용할 RDBMS는 MYSQL(InnoDB)

Database 정의하기

데이터베이스를 구축을 하려고 하는 것이기 때문에 데이터베이스를 새로 하나 만들어주겠습니다. 이때 명령어는 어떻게 하냐면

데이터베이스 생성

CREATE DATABASE company;

##결과##
Query OK, 1 row affected (0.01sec)

데이터베이스를 생성하려면 CREATE DATABASE 를 작성하고 그 뒤에 내가 만들 데이터베이스의 이름을 적어주면 됩니다.
company 데이터베이스를 생성해줬으니 SHOW DATABASES; 를 해서 데이터베이스를 확인해봅시다.

확인해보니 제일 위에 company라는 데이터베이스가 생성된 것을 볼 수 있습니다.

여기서 끝이 아닙니다. 데이터베이스를 생성했을 뿐이지 실제로 어떤 데이터베이스를 사용하겠다는 명령을 주지 않았습니다.

여기서 궁금증이 생깁니다.
Q. 다섯 개의 데이터베이스가 있는데 현재 내가 사용하겠다고 지정한 데이터베이스는 무엇일까?

선택된 데이터베이스

SELECT database();

A. 이럴 때 사용하는 명령어가 있습니다. 바로 SELECT database(); 입니다.

지금 선택된 데이터베이스가 알고 싶다면 SELECT database(); 명령어를 실행하면 됩니다. 명령어를 날려주면 내가 사용하겠다고 지정한 데이터베이스를 결과로 출력해줍니다.
사진은 NULL이라고 되어 있는데 선택된 데이터베이스가 없는 것입니다.

자 그럼 생성된 데이터베이스를 보는 명령어와 선택된 데이터베이스를 보여주는 명령어를 알아봤습니다. 여기서 한가지 생각이 듭니다. 그래서 데이터베이스는 어떻게 선택하는데?

데이터베이스 선택

USE company;

데이터베이스를 선택하는 명령어는 USE입니다. USE 뒤에 사용하고자 하는 데이터베이스를 넣어주면 됩니다. 저는 USE company를 해보겠습니다.

USE company;

## 결과 ##
Database changed

company를 선택했더니 Database changed라는 응답이 왔습니다.

Database가 변경됐다고 하니 확인을 해볼까요?

아까는 NULL이 있었는데 이제는 company가 나와있습니다.

선택된 데이터베이스 삭제

DROP DATABASE company;

선택된 데이터 베이스는 DROP DATABASE 명령어로 삭제가 가능합니다. company를 삭제한다면 선택된 데이터베이스는 다시 아까처럼 NULL이 있을겁니다.

📌 DATABASE vs SCHEMA

  • MySQL에서는 DATABASE와 SCHEMA가 같은 뜻을 의미
  • CREATE DATABASE company = CREATE SCHEMA company
    • 다른 RDBMS에서는 의미가 다르게 쓰임
  • i.g. PostgreSQL에서는 SCHEMA가 DATABASE의 namespace를 의미

⭐️ Table 생성하기

IT 회사 RDB(Relational DataBase) 만들기

  • 부서, 사원, 프로젝트 관련 정보들을 저장할 수 있는 관계형 데이터베이스를 만들겁니다.

언더바( _ )가 되어 있는 값은 PK입니다.

위 사진처럼 Schema를 정의했으니 SQL을 통해서 4가지 테이블을 생성해보겠습니다.
우선 Department 테이블을 생성해봅시다.

📌 attribute data type

숫자형

문자열

날짜와 시간

그 외

primary key 설정부터는 다음글에서 이어서 작성하겠습니다.


출처
글에 사용된 내용 및 사진은 모두 아래 영상의 자료입니다.
유튜브-쉬운코드
시니어 백엔드 개발자가 알려주는 데이터베이스 개론 & SQL

profile
스프링 백엔드를 공부중인 대학생입니다!

0개의 댓글