SQL

최경락 (K_ROCK_)·2022년 2월 4일
0

SQL(Structured Query Language)

  • 관계형 데이터 베이스를 만드는 프로그래밍 언어
  • 데이터베이스에 요청(query) 을 보내 데이터를 가져오거나, 삽입 할 수 있다.
  • 구조화 된 쿼리 언어라는 뜻을 가지는데, 이는 SQL의 데이터가 스키마(Schema)를 통해 어떤 표(Table)의 모양으로 구조화 되어있기 때문이다.

왜 필요할까?

  • JS에서는 변수나 함수등의 데이터를 In-Memory 방식으로 저장하는데, 이는 프로그램이 종료되면 사라지는 휘발성 데이터이다.
  • 이는 돌발상황에서의 데이터 보호가 어렵고, 프로그램이 작동하지 않는 시간에는 원하는 데이터를 받아 올 수 없다.
  • 위의 대체재로 CSV엑셀시트같은 파일을 사용할 수는 있지만, 원하는 하나의 데이터를 가져오기 위해 파일을 전부 읽어들여야 하며, 파일이 손상된 경우나 여러 파일을 동시에 다뤄야한다면 작업이 힘들어진다.
  • 위의 한계를 개선하기 위해 SQL을 사용한다.

Table

field 1field 2field 3
record 1record 1record 1
record 2record 2record 2
  • SQL에서 어떤 데이터들을 저장한 표이며, 하나의 데이터베이스는 다수의 테이블을 포함한다.
  • 테이블을 만들기 위해서는 각 열이 가지는 이름과 데이터 타입을 지정해주어야 하며, 이를 필드(field) 혹은 컬럼(column)이라고 한다.
  • 각각의 필드에 들어간 값들을 가지는 행을 레코드(record) 혹은 튜플(Tuple)이라고 한다.
  • 저장된 값들을 데이터라고 한다.
  • 각각의 레코드들은 키(Key)를 가질 수 있으며, 해당 값은 중복되지 않는 고유한 값이여야한다.
    → 보통 id로 많이 사용한다.
  • 이렇게 지정된 Key내부키(Primary Key) 라고 하며, 이는 외부 테이블에서 외래키(Foreign Key)로써 참조 될 수 있다.

스키마(Schema)

  • 스키마(Schema) 란, 위키백과에 따르면 아래와 같은 정의를 가진다.

데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조.

  • 그냥, 쉽게 이해하자면 DB내부의 테이블들의 구조와 관계를 표현하는 것 이라고 봐도 좋을 듯 하다.

DB와 데이터 테이블을 만드는 과정

  • create database 데이터베이스 이름; 으로 데이터베이스를 생성한다.
  • use 데이터베이스 이름; 으로 해당 데이터베이스를 선택한다.
  • create table 테이블이름 (필드이름 데이터타입 옵션, ...); 으로 테이블과 필드를 지정한다.
  • insert into (필드이름1, 필드이름2, ...) values (데이터1, 데이터2, ...) 로 해당 필드에 맞는 값을 입력한다.

ACID

Transaction

  • 데이터 베이스의 상태를 변경시키는 기능을 수행하기 위한 하나 이상의 쿼리를 모아둔 하나의 작업 단위
    → 일종의 알고리즘으로 생각해 볼 수 있겠다.

ACID

  • 트랜젝션이 발생할 때, 그 안정성을 보장할 수 있는 성질
    1. Atomicity (원자성)
      • 하나의 트랜젝션 안에서는 모든 연산이 성공하던지 실패하여야한다.
      • 한쪽에서만 성공하거나, 한쪽에서만 실패하면 안된다.
        → 이 경우 다시 결과를 돌려놔야 한다.(일종의 롤백)
    2. Consistency (일관성)
      • 하나의 트랜젝션 전후에 데이터베이스의 일관된 상태가 유지되어야 함.
      • 어떤 데이터 내부에 A라는 이름의 값을 가지는데, 갑자기 해당 데이터베이스에 A가 없는 데이터를 추가해서는 안된다.
        → 이 경우 다른 데이터들은 A를 가지지만, 추가된 데이터는 A가 없는 상황이 된다.(불가)
    3. Isolation (고립성)
      • 각각의 트랜젝션은 독립적이며, 트랜젝션이 서로에게 영향을 줄 경우 실패한 것으로 간주한다.
        → A와 C로 데이터를 전달하는데, C에 의해 A의 데이터가 변경되거나 하는 경우
    4. Durability (지속성)
      • 하나의 성공된 트랜젝션에 대한 로그는 영구적으로 기록된다.
        → 이미 성공된 내용을 영구적으로 저장한다는 것

→ 금융 혹은 주식같은 전자상거래 환경에서 중요하게 지켜져야 한다.

0개의 댓글