부트캠프 기록/Serction2

[데이터베이스] SQL

bbangduck 2022. 10. 6. 22:29

▶목차

 

 

▶ SQL 정의

 

Structured Query Language 구조화된 Query 언어

데이터베이스 용 프로그래밍 언어

데이터베이스에 쿼리를 보내 원하는 데이터만 뽑아올 수 있음

 

 

 데이터베이스가 필요한 이유

 

- 클라이언트 쪽의 인메모리는 전원이 꺼지면 사라짐

 

- 서버에서 File로 저장

1. 각각의 프로그램별로 데이터 파일을 가지고 있다보니 데이터 종속성(데이터의 구성 방법이나 접근 방법을 변경할 때 이것을 기초로 한 응용 프로그램도 변경해야 함) 이 발생

2. 원하는 데이터만 가져올 수 없고 항상 모든 데이터를 가져온 뒤 서버에서 필터링 필요

 

- 데이터베이스

필터링 외에도 File I/O로 구현이 힘든 데이터 관리를 위한 기능들을 적용할 수 있는 데이터 집합

 

 

▶ 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
    • Having

 

실습사이트

 

SQL Exercises

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

 

 SELECT 실행 순서

  • FROM
  • WHERE
  • GROUP BY
  • HAVING
  • SELECT
  • ORDER BY

 

 

 ACID

 

Atomicity ( 원자성 )

하나의 트랜잭션에 속해있는 모든 작업이 전부 성공하거나 전부 실패

Consistency ( 일관성 )

하나의 트랜잭션 이전과 이후, 데이터베이스 상태는 이전과 같이 유효해야 함

Isolation ( 격리성, 고립성 )

모든 트랜잭션은 다른 트랜잭션으로부터 독립되어야 함

Durability ( 지속성 )

하나의 트랜잭션이 성공적으로 수행됐다면, 해당 트랜잭션에 대한 로그가 남아야 하고, 해당 기록이 영구적이어야 함

 

 

 SQL (구조화 쿼리 언어) vs NoSQL(비구조화 쿼리 언어)

 

  • SQL
    • 데이저 저장: 테이블에 데이터 저장
    • 스키마: 고정된 형식의 스키마, 처리하려는 데이터 속성별로 열에 대한 정보를 미리 정해둬야 함. 나중에 스키마를 변경할 땐 데이터베이스 전체를 수정하거나 오프라인으로 전환해야 함
    • 쿼리: 데이터베이스에 대해  정보를 요청하는 질의문
    • 확장성: 수직적 확장 
    • ACID를 준수해야 하는 경우, 소프트웨어에 사용되는 데이터가 구조적이고 일관적인 경우
    • MySQL, Oracle, SQLite, PostgresSQL, MariaDB

 

  • NoSQL 
    • 데이터 저장: key-value, document, wide-column, graph 등의 방식
    • 스키마: 비교적 동적으로 관리 가능. 행을 추가할 때 즉시 새로운 열 추가 가능, 개별 속성에 대해서 모든 열에 대한 데이터를 반드시 입력하지 않아도 됨
    • 쿼리: 데이터 그룹 자체를 조회
    • 확정성: 수평적 확장
    • 데이터의 구조가 거의 또는 전혀 없는 대용량인 경우, 클라우드 컴퓨팅 및 저장공간을 최대한 활용하는 경우, 빠르게 서비스를 구축하는 과정에서 데이터 구조를 자주 업데이트 하는 경우
    • Key-Value 타입: RedisDynamo
    •  문서형 DB: MongoDB
    •  Wide-Column DB : Cassandra, HBase
    • 그래프 DB: Neo4J, InfiniteGraph

 

 

참고