SQL (Structured Query Language)
한 마디로 데이터베이스와 대화를 하기 위한 언어다.
Query와 SQL의 차이점?
SQL 이란 언어를 이용하여 데이터베이스에 요청을 하는 질의를 Query라고 한다. 보통 데이터베이스에 요청을 할 때 "Query를 작성한다." 라는 말을 사용한다!
데이터베이스
데이터베이스란, 쉽게 말해 데이터가 저장되어있는 큰 폴더.
- 테이블(Table)과 컬럼(Column): 테이블은 엑셀과 유사한 구조로 데이터를 갖고 있고, 각 열을 컬럼 혹은 필드라고 부른다.
SQL 데이터 조회
- SELECT / FROM 문의 개념
SQL은 코드가 아니라 데이터베이스에 요청을 하기 위한 언어이므로, 작성 전에 어떤 요청을 할 지 생각해봐야 한다.
- 기본 명령어 한 눈에 보기
SELECT: 데이터를 가져오는 기본 명령어로, 데이터를 조회하는 모든 Query에 사용.
FROM: 데이터를 가져올 테이블을 특정해주는 문법.
*: 모든 컬럼을 가져와준다는 의미.
- SELECT / FROM 맛보기
먼저 SQL 스크립트를 열고 아래를 작성 후 Ctrl + Enter를 누르면?
SELECT *
FROM food_orders
놀랍게도 해당 테이블의 전체 데이터를 확인할 수 있다.
- 테이블에서 원하는 컬럼만 선택해서 가져오기
* 을 이용할 경우 모든 컬럼에서 데이터를 뽑아오지만, 필요한 부분만 가져오고 싶은 경우도 있다. 그럴 때는 SELECT에 * 이 아닌, 가지고 오고 싶은 컬럼을 지정해주면 된다.
ex. food_orders에서 'restaurant_name', 'cuisine_type' 컬럼만 가져와보자.
SELECT restaurant_name, cuisine_type
FROM food_orders
- 컬럼에 별명(alias) 주기
1) 컬럼 as 별명
2) 컬럼 별명
컬럼의 이름이 복잡할 경우 가독성에 문제가 생긴다. 따라서 별명을 붙여 사용하는 경우도 종종 발생한다.
ex. 식당명, 음식종류 별명 붙이기.
SELECT restaurant_name as "식당명", cuisine_type "음식종류"
FROM food_orders fo
- 조건에 맞는 데이터로 필터링하기
SQL의 WHERE 문법을 이용하면 전체 데이터 중 원하는 데이터만 필터링을 할 수 있다.
WHERE 구조
select *
from 테이블
where 필터링 조건
만약 한식을 주문한 사람만 조회하고 싶다면?
SELECT *
FROM food_orders fo
WHERE cuisine_type = "Korean"
뿐만 아니라 WHERE에는 여러가지 연산자도 사용할 수 있다.
- 비교 연산
- BETWEEN
BETWEEN: A 와 B 사이.
기본 문법: between a and b
ex. 나이가 10 과 20 사이: where age between 10 and 20
- IN
IN: 포함하는 조건 주기.
기본 문법: in (A, B, C)
ex. 나이가 15, 21, 31 세인 경우: age in (15, 21, 31)
- LIKE
LIKE: 완전히 똑같지는 않지만, 비슷한 값을 조건으로 주기.
기본 문법: like ‘시작문자%’ or like ‘%포함문자’ or like ‘%포함문자%’
ex. ‘김’ 으로 시작하는 이름 => name like '김%'
- 논리 연산
여러개의 필터링 조건을 한 번에 적용하는 방법을 알아보자.
문제 풀기
- 상품 준비시간이 20~30분 사이인, 한국음식점의 식당명과 고객번호 조회하기
SELECT restaurant_name, order_id
FROM food_orders fo
WHERE food_preparation_time BETWEEN 20 and 30
AND cuisine_type = "Korean"
엑셀과 진짜 유사한데...?
