SQL이 무엇인지 이해하기
1. SQL이란?
- SQL = DB와 대화하기 위한 언어
- 옆 사람에게 필요한 것을 요청할 때 “A 좀 줄래?” 하는 것처럼 DB에게 A를 달라고 이야기할 때 사용하는 언어
- 처음 접하는 사람에게는 복잡한 SQL문이 어렵게 느껴질 수 있음
- 하지만 SQL도 다른 언어와 동일하게 일정한 문법을 갖고 있으니 긴 코드를 보기 전에 기본 구조를 배운다면 SQL문을 이해하고 사용할 수 있음
- SQL과 Query
- Query: DB에 SQL 언어를 이용해 요청을 하는 ’질의‘를 뜻함
- SQL과 Query는 동일한 것이라 볼 수 있음 → DB에 SQL을 작성한다 = Query를 작성한다
- SQL: “A를 주세요.“라고 말하기 위한 여러 가지 문법
- Query: 실제로 ”A를 주세요.“라고 말하는 것 자체
2. 강의 진행
- SQL로 데이터를 뽑아보는 일에 초점이 맞춰진 강의
- 이론, 실습, 숙제가 한 세트
- 매 강의마다 SQL 기본 구조와 문법 학습
- 이론 배운 뒤 직접 실습을 하며 SQL을 사용해보는 시간을 가짐
- 강의 뒤에 과제 있음
- 강의에서 배운 것을 자신의 것으로 만들기 위해 과제 꼭 하기
- 복잡해 보이는 첫 모습에 놀라지 말고 일단 시작하기
- 실수하거나 SQL문이 실행되지 않아도 실망하거나 포기하지 않기
프로그램 설치 및 DB 개념 이해하기(Table, Column)
1. 프로그램 설치: DBeaver
- DBeaver: SQL을 보다 손쉽게 사용할 수 있도록 도와주는 도구
- 강의에서는 DBeaver Community 사용
2. DB 연결하기
- New Database Connection (Ctrl+Shift+N) > MySQL > DB 정보 입력란에서 정보를 입력하고 좌측 하단 ‘Test Connection’ 버튼 클릭
- Connection Test 창에 Connected 뜬 거 확인하고 OK 클릭 > Finish 클릭
- Driver가 설치되어 있지 않으면 Download 버튼을 눌러주기
3. Data가 있는 곳, Database
- Database = Data가 저장되어 있는 큰 Folder
- DB와 저장소, Data의 형태 등 여러 가지 분류가 있지만 이 강의에서 다룰 내용만 생각하면 이 정도로만 정의해도 OK
- 강의에서 다룰 DB에도 ‘데이터베이스’라는 폴더가 있고 그 안에 ‘테이블’이라는 파일이 있다고 생각할 수 있음
4. Table과 Column
- Table
- ‘엑셀 파일‘처럼 생겼음 → 행과 열
- 엑셀과 유사한 구조로 데이터를 갖고 있음
- Column
- 각 열을 ’Column’ 또는 ‘Field‘라고 부름
5. 예시를 통해 알아보기
- 실습에서 사용하는 DB Table 목록
- food_orders: 음식 주문 정보 테이블
- order_id: 주문 번호
- customer_id: 고객 번호
- restaurant_name: 음식점 이름
- cuisine_type: 음식 종류
- price: 가격
- quantity: 주문 수량
- day_of_the_week: 주말 구분
- rating: 음식점 평점
- food_preparation_time: 음식 준비 시간(분)
- delivery_time: 음식 배달 시간(분)
- addr: 음식점 주소
- payments: 결제 정보 테이블
- order_id: 주문 번호
- pay_type: 결제 수단
- vat: 수수료
- date: 결제 일자(년-월-일)
- time: 결제 시간(시:분:초)
- customers: 고객 정보 테이블
- customer_id: 고객 번호
- name: 고객명
- email: 이메일 주소
- gender: 성별
- age: 나이
SQL 데이터 조회하기(SELECT, FROM)
1. SELECT / FROM문의 개념
- SELECT, FROM: SQL의 가장 기본 구조
- Query 작성 전 생각해 볼 사항
- SQL은 ‘코드’가 아니라 DB에 요청을 하기 위한 ‘언어’ → 작성 전 어떤 요청을 할 지 생각해 봐야 함
- 가장 기본적인 사항은 “어느 테이블에서 데이터를 가져올까” → SELECT, FROM
- SELECT, FROM은 원하는 곳에서 데이터를 가져오는 기본 명령어
- SELECT: 데이터를 가져오는 기본 명령어. 데이터를 조회하는 모든 Query에 사용됨
- FROM: 데이터를 가져올 테이블을 특정해주는 문법
- *: 모든 Columm을 가져온다는 의미
- 기본 문법 실행하기
- DBeaver Query 창에서 실행 버튼(▶️) 클릭
- 실행할 Query문에서 단축키(Ctrl+Enter)
- open SQL script (existing or new) > SQL 작성 가능한 창 뜨면 아래와 같이 입력하고 Execute SQL query (Ctrl+Enter)
SELECT *
FROM food_orders
💡 모든 Query는 위의 구조를 가지므로 문법 구조 기억해두기: 모든 SQL에는 SELECT문과 FROM문이 반드시 들어간다.
2. [실습] SELECT, FROM
SELECT *
FROM payments
SELECT *
FROM customers
필요한 항목만 뽑아서 사용하기
1. 원하는 Column 선택하기
- table의 특정 Column만 선택하여 조회 가능
SELECT column1, column2
FROM food_orders
또는
SELECT column1,
column2
FROM food_orders
💡 가독성 차이
2. Column에 별명(alias) 주기
- Column명이 너무 길고 영문이라 보기 어렵다고 느껴질 때 별명을 지정하여 변경할 수 있음
- 별명 지정 방법: Column 옆쪽에 별명 적기
column1 AS "별명1"
column1 AS alias1
또는
column2 "별명2"
column2 alias2
구분 | 영문, 언더바 | 한글, 특수문자 |
---|
예시 | ord_no, address | “주문번호”, ”ord no” |
3. [실습] column 선택하고 별명 지정하기
- 주문(food_orders) 테이블에서 order_id, price, quantity를 가져와서 ord_no, 가격, 수량으로 별명 지어주기
SELECT order_id ord_no,
price "가격",
quantity "수량"
FROM food_orders
- 고객(customers) 테이블에서 name, email을 가져와서 이름, e-mail로 별명 지어주기
SELECT name "이름",
email "e-mail"
FROM customers
💡 hyphen은 특수문자: 큰 따옴표 안에 넣기
조건에 맞는 데이터로 필터링(WHERE clause)
1. WHERE절의 개념
- 필터링의 기초 문법
- SQL의 ‘WHERE’ 문법을 이용하면 전체 데이터 중 원하는 데이터만 필터링 할 수 있음
- 구조
SELECT column1, column2, ...
FROM table_name
WHERE condition
SELECT *
FROM customers
WHERE age=21
SELECT *
FROM customers
WHERE gender='female'
💡 MYSQL 환경에서 대소문자 구분
2. [실습] WHERE절을 이용한 필터링
- 주문(food_order) 테이블에서 한국음식을 주문한 경우
SELECT *
FROM food_orders
WHERE cuisine_type = 'Korean'
- 결제(payments) 테이블에서 카드로 결제한 경우
SELECT *
FROM payments
WHERE pay_type = 'card'