SQL Basics

SQL 소개

DB의 필요성

In-Memory

  • 파이썬에서 데이터를 다룰 때 프로그램이 실행될 때만 존재하는 데이터가 있다.
  • 파이썬에서 변수를 만들어 저장해도 프로그램이 종료되는 순간 데이터도 같이 없어진다.
  • 데이터는 프로그램에 의존한다.
  • 원하는 데이터를 원하는 시간에 꺼내오기 힘들어지고 데이터 수명이 프로그램의 수명에 의존한다.

File I/O

  • 파일을 읽어오는 방식으로 작동하는 형태의 단점
    • 파일을 매번 읽어야 하는 것 자체가 단점이다. 특히 파일의 크기가 커질수록 버거워진다.
    • 파일이 손상되거나 여러 개의 파일을 동시에 다뤄야 하는 등 복잡하고 데이터량이 많을수록 힘들어진다.
  • 관계형 DB에서는 하나의 CSV 파일이나 엑셀 시트를 한 개의 테이블로 저장할 수 있다.
  • 한번에 여러 개의 테이블을 가질 수 있다.

SQL

  • SQL(Structured Query Language) : DB 언어 기준 주로 관계형 DB에서 사용됨
  • cf. MySQL, Oracle, SQLite, PostgreSQL 등
  • 구조화된 쿼리 언어

Query

  • query : 질의문
  • cf. 검색할 때 입력하는 검색어도 일종의 쿼리이며, 검색을 하게 된다면 기존 존재하는 데이터를 검색어로 필터하듯이 쿼리는 저장되어 있는 정보를 필터하기 위한 질문으로 볼 수 있다.
  • SQL : DB 용 프로그래밍 언어
    • DB에 Query를 보내 원하는 데이터만을 가져올 수 있게 해준다.
  • Relation 이라고 불리는 데이터가 구조화된 테이블을 사용하는 DB에서 활용이 가능하다.
  • NoSQL : 반면 데이터 구조가 고정되어 있지 않은 DB
    • 관계형 DB와 달리 테이블을 사용하지 않고 다른 형태로 데이터를 저장한다.
    • cf. MongoDB(문서 지향 DB)

종류

Data Definition Language (DDL)

  • DDL : 데이터를 정의할 때 사용되는 언어
  • cf. 테이블을 만들 때 사용하는 CREATE 나 테이블을 제거할 때 사용되는 DROP
  • 데이터베이스의 테이블과 같은 오브젝트를 정의할 때 사용된다.

Data Manipulation Language (DML)

  • DML : 데이터베이스에 데이터를 저장할 때 사용되는 언어
  • cf. INSERT 처럼 새로운 레코드를 추가할 때 사용되는 문법
  • 따라서 데이터를 삭제하는 DELETE 라든가 변경하는 UPDATE 등이 여기에 포함된다.

Data Control Language (DCL)

  • DCL : 데이터베이스에 대한 접근 권한과 관련된 문법
  • 어느 유저가 데이터베이스에 접근할 수 있는지 권한을 설정하거나 없애는 역할
  • cf. 권한을 주는 GRANT 나 권한을 가져가는 REVOKE 등이 포함

Data Query Language (DQL)

  • DQL : 정해진 스키마 내에서 쿼리를 할 수 있는 언어
  • 여기에 포함된 문법은 SELECT
  • 이렇게 따로 언어가 분류되지만 DQLDML 의 일부분으로도 본다.

Transaction Control Language (TCL)

  • TCL : DML 을 거친 데이터 변경사항 수정
  • cf. COMMIT 처럼 DML 이 작업한 내용을 데이터베이스에 커밋하거나 ROLLBACK 처럼 커밋했던 내용을 다시 롤백하는 문법

DB 설계

Relational DB

  • 구조화된 데이터가 하나의 테이블로 표현이 되는데, 사전에 정의된 테이블을 relation이라고도 한다.
  • 테이블을 사용하는 DB
  • RDB Keyword
    • 데이터 : 각 항목에 저장되는 값
    • 테이블(relation) : 사전에 정의된 행과 열로 구성되어 있는 체계화된 데이터
    • 필드(column) : 테이블의 열
    • 레코드(tuple) : 테이블의 한 행에 저장된 정보
    • 키 : 테이블의 각 레코드를 구분할 수 있는 값 각 레코드마다 고유값이어야 하며 기본키(Primary key)와 외래키(foreing key) 등이 있다.

관계종류

  1. 1:1
  2. 1:N
  3. N:N
  4. 테이블 자체 관계 : self referencing

1:1

  • 테이블의 레코드 하나당 다른 테이블의 한 레코드와 연결되어 있는 경우

스크린샷 2021-09-10 09 48 56

  • 흔치 않다. 어차피 1:1이라면 같이 적는 게 낫다.

1:N

  • 테이블의 레코드 하나당 여러 개의 레코드와 연결되어 있는 경우

스크린샷 2021-09-10 09 50 27

  • 한 유저가 여러 개의 전화번호를 가질 수 있는 경우
  • 하지만 그 반대는 성립할 수 없다.
  • 관계형 DB에서 제일 많이 사용된다.

N:N

  • 여러개의 레코드가 여러 개의 레코드를 가지는 관계
  • 따로 ‘조인 테이블’을 만들어 관리
  • 양방향에서 다수를 가질 수 있는 경우 해당

스크린샷 2021-09-10 09 52 49

  • N:N관계는 두 개의 1:N 관계
  • 양 테이블에서 1:N 관계를 형성할 수 있는 새로운 테이블을 만들어서 관리해줄 수 있다.

스크린샷 2021-09-10 09 53 56

자기참조 관계(Self Referencing Relationship)

  • cf. 추천인이 누구인지 파악하기 위한 목적, 조직 내 상하 관계 표현

스크린샷 2021-09-10 09 55 35

  • 각 유저당 한 명만 추천할 수 있지만 추천 받은 사람은 여러 명에서부터 추천을 받게 된다.
  • 1:N 관계와 비슷하다.

SQL Basics

기본 쿼리문

SQL

  • Select
  • Where
  • And, Or, Not
  • Order By
  • Insert Into
  • Null Values
  • Update
  • Delete
  • Count
  • Like
  • Wildcards
  • Aliases
  • Joins
    • Inner Join
    • Left Join
    • Right Join
  • Group By

DB

  • SQL Create DB
  • SQL Drop DB
  • SQL Create Table
  • SQL Drop Table
  • SQL Alter Table
  • SQL Not Null
  • SQL Unique
  • SQL Primary Key
  • SQL Foreign Key
  • SQL Default
  • SQL Auto Increment
  • SQL Dates

Reference

0%