▶목차
▶ 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
실습사이트
▶ 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 타입: Redis, Dynamo
- 문서형 DB: MongoDB
- Wide-Column DB : Cassandra, HBase
- 그래프 DB: Neo4J, InfiniteGraph
참고
더보기
1) INNER 조인과 OUTER 조인 차이
2) DBMS 필요성
'부트캠프 기록 > Serction2' 카테고리의 다른 글
[데이터베이스] 이상현상과 정규화 (1) | 2022.10.08 |
---|---|
[데이터베이스] SQL DB Schema (0) | 2022.10.07 |
[네트워크]HTTP통신 (0) | 2022.10.05 |
[네트워크] 웹 애플리케이션 작동원리 (0) | 2022.10.01 |
[JAVA] Collectors 와 Collections 차이 (0) | 2022.09.28 |