느리더라도 꾸준히

회고록(24)- SQL 본문

(CodeStates)Daily memoir

회고록(24)- SQL

테디규 2022. 12. 1. 19:41

1. 데일리 일기

네트워크에 비해 오늘 배운 SQL은 그다지 어렵지 않았다. 기초적인 문법만 배웠기때문에 오랜만에 저녁시간이 남을 수 있었다.
네트워크 부분들이 한번에 배우다보니 혼선들이 조금있는거 같아서, 블로그에 하나씩 정리해볼 예정이다. 일단 오늘 하나부터 시작하자.

2. 오늘 배운 내용

RDBMS

정의

  • 정보를 테이블, 행, 열의 정보로 구조화 하여 보관하는 방식이다. 조인 기능을 통해 여러 정보간의 관계를 나타낼 수 있다.

왜 사용할까?

  • 인 메모리 방식은 프로그램이 종료되면 메모리도 종료되어 초기화 되는 단점이 있다.

  • File I/0 는 파일 자체를 옮겨야하는 단점이 있으며, 대용량 파일일 수록 관리가 힘들다.

  • RDBMS 에서는 하나의 파일을 테이블의 형태로 저장한다. 그리고 SQL을 활용해 한번에 여러개의 테이블에 접근할 수 있으므로 필요한 데이터를 불러오기 수월하다.

SQL

정의

  • Structured Query Language로 구조화된 질의문 으로 관계형 데이터베이스에서 사용하는 언어이다.

쿼리란?

  • 저장되어있는 정보를 필터링해서 가져올수 있도록 해주는 질의문이다.

NOSQL

정의

  • 비관계형 데이터베이스에서 사용하는 언어이다.

특징

  • key-value 타입의 데이터 베이스
  • 문서형 데이터베이스
  • Wide-column 데이터베이스
  • 그래프 데이터베이스

SQL과 NOSQL의 차이점

SQL, NOSQL 순서로 작성함.

  • 데이터 저장 방식
    • 테이블형식 vs key-value, 문서, graph, wide-column
  • 스키마
    • 스키마 형식에 따름 vs 동적으로 스키마를 관리함.
  • 쿼리
    • 구조화된 쿼리언어 SQL을 사용 vs 구조화되지 않은 쿼리언어로 데이터를 요청
  • 확장성
    • 수직적 구조로 확장(잡아먹는 리소스(비용, 시간)가 크다.) vs 수평적 구조로 확장(잡아먹는 리소스가 작다.)

SQL과 NOSQL 활용 케이스 비교

SQL

  • 데이터베이스가 ACID 성질을 준수하는 데이터일때
  • 데이터가 규모있는 서버를 필요로 하지 않고 구조적이고 일관적일때

NOSQL

  • 데이터의 구조가 거의 없으며, 대용량 데이터를 사용할때
  • 클라우딩 컴퓨팅 및 저장공간을 최대한 활용해야 할때 확장이 용이하므로 저렴한 비용으로 가능하다.
  • 빠르게 서비스를 구축해야하고 데이터 구조를 자주 업데이트 하는경우

사실 위의 장단점들을 모아서 둘다 요구 사항에 맞게 사용하는 것이 중요하다.

트랜잭션

트랜잭션이란

  • 여러개의 작업을 하나로 묶어놓은 단위를 말한다.

트랜잭션을 사용하는 데이터베이스는 ACID 성질을 가지고 있다.

ACID

  • Atomicity(원자성) : 트랜잭션 속 여러 작업들중 하나라도 실패하면 실패라고 간주한다.(데이터 보호를 위함)
  • Consistency(일관성) : 트랙잭션 이전과 이후로 데이터베이스의 상태가 이전과 똑같아야한다.
  • Isolation(고립성) : 각각의 트랙잭션은 독립적으로 진행되어, 트랙잭션 끼리는 서로의 작업을 알지못한다. 그러므로 두 트랜잭션을 연속해서 실행했을때와 결론이 같아야한다.(영향을 서로 주지않아야한다.)
  • Durability(지속성) : 성공한 트랙잭션은 성공한 기록을 log로 남겨 영구적으로 보관해야한다. 만약 서버에 문제가 생기더라도 로그는 남아있어야한다.

쿼리동작 순서

  • from
  • on
  • join
  • where
  • group by
  • having
  • select 및 select의 statement
  • order by

혼자 공부로 새로 알게 된 내용

  • SQL은 대소문자를 딱히 구분하지 않았다.
  • delete 명령어는 레코드 기준, (drop, alter ) 명령어는 테이블 또는 column 기준으로 동작한다.
  • where의 문자열이 올경우 ' ' 또는 " "를 붙여야한다.
  • where의 between은 알파벳 순으로 레코드를 가져와 주기도 한다.
Comments