1주차

Suhyeon Lee·2024년 8월 26일
0

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‘라고 부름
      • 강의에서는 Column이라 명명

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을 가져온다는 의미
    • 기본 문법 실행하기
      • [참고] Query 실행 방법
      1. DBeaver Query 창에서 실행 버튼(▶️) 클릭
      2. 실행할 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

  • payments 테이블의 데이터 조회하기
SELECT *
FROM payments
  • customers 테이블의 데이터 조회하기
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'
profile
2 B R 0 2 B

0개의 댓글