Achievement Goal
- SQL이 어떻게 이루어져 있는지 이해한다.
- SQL 기본 query문을 사용할 줄 안다.
- Schema 설계 방법과 나은 방향성을 고려한다.
- 서버와 클라이언트 사이에서 주고 받는 데이터를 database에 저장하여 영속성있게 저장 할 수 있다.
SQL이란?
- Structured Query Language -> 구조화된 Query 언어
- 데이터베이스용 프로그래밍 언어
- 데이터베이스에 query를 보내 원하는 데이터만을 뽑아올 수 있다.
Query란?
- 질의문
- 저장되어 있는 정보를 필터하기 위한 질문
Database가 필요한 이유
- In-Memory
- File Input/Output
- 원하는 데이터만 가져올 수 없고 항상 모든 데이터를 가져온 뒤 서버에서 필터링 필요
- Database
- 필터링 외에도 File I/O로 구현이 힘든 관리를 위한 여러 기능을 가지고 있는 데이터에 특화된 서버
SQL Query 예시
-
요청

-
응답

SELECT * FROM employ WHERE gender = 'M'
SQL 자주 쓰이는 명령어
- SELECT (*)
- 데이터베이스의 특정 데이터만 원할 때 사용
- 전체 데이터 선택시 SELECT *
- 부분은 SELECT column (부분 데이터)
- FROM
SELECT city FROM customers
=> customers의 데이터에서 city 정보만 검색
SELECT * FROM customers
=> customers 데이터의 모든 정보를 검색
- WHERE
- 데이터를 필터링 할 때 사용
- if와 같다고 생각하면 됨
- 문자열일경우 ''스트링안에 대소문자, 글자 간격 띄어쓰기 정확해야 검색 가능
SELECT * FROM customers WHERE city='Seoul'
=> customers의 모든 데이터중 city가 Seoul인 데이터만 검색
- AND, OR, NOT
- WHERE 내부에서 사용되어지는 추가 조건문
- AND
- && 와 비슷하다
- 모든 조건이 충족되는 경우만 필터링됨
SELECT * FROM customers WHERE city='Seoul' AND name='Dan'
=> customers의 모든 데이터중 city가 Seoul이고 name이 Dan인 데이터만 검색
- __OR__
- || 와 비슷하다
- 조건 중 __하나라도 충족되면__ 필터링됨
SELECT * FROM customers WHERE city='Seoul' OR age > 20
=> customers의 모든 데이터중 city가 Seoul이거나 나이가 20살을 초과하는 데이터를 검색
- __NOT__
- !== 과 비슷하다
- 조건과 __반대되는 경우__ 필터링됨
SELECT city FROM customers WHERE NOT city='Seoul'
=> customers의 city 데이터중 city가 Seoul이 아닌 모든 데이터를 검색
- ORDER BY
- 데이터를 정렬할 때 사용
- default로는 오름차순으로 정렬 (A-Z, 1-9)
- ASC (오름차순) (생략 가능)
- DESC (내림차순)
SELECT * FROM customers ORDER BY city => city의 오름차순으로 모든 데이터를 정렬
SELECT * FROM customers ORDER BY city DESC => city의 내림차순으로 모든 데이터를 정렬
SELECT * FROm customers ORDER BY city ASC => city의 오름차순으로 모든 데이터를 정렬
- INSERT INTO
- 데이터를 추가할 때 사용
- 테이블 키 순서를 정확하게 모르고, 일부 데이터가 누락되어 있을 경우
- INSERT INTO 테이블네임 (key1, key2, key3 ... ) VALUES (value1, value2, value3 ...)
- 입력하는 키 순서에 맞는 데이터를 입력
- 테이블 키 순서를 정확하게 알고, 모든 데이터를 가지고 있는 경우
- 키 생략 가능
- INSERT INTO 테이블네임 (value1, value2, value3, ...)