[0304] SQL 쿼리 기초

dev.Lee·2024년 3월 4일
0

데브코스 TIL

목록 보기
1/1

학습 주제

  1. SQL이란 무엇인가
  2. 관계형 데이터베이스 vs 비관계형 데이터베이스
  3. SQL 기초 쿼리

주요 메모 사항 소개

SQL이란? (Structured Query Language)

SQL

  • 관계형 데이터베이스를 사용하기 위한 표준 언어
  • 관계형?
    데이터를 행, 열로 의미관계에 따라 저장함
    서로 다른 테이블 간에도 관계. 공통된 key(column)를 활용해 관계 관리

Query

  • '질의하다'라는 뜻. 즉, 데이터에 원하는 내용을 질의한다 라는 개념으로 이해

SQL 실습 순서

  1. http://sqlfiddle.com/
  2. 좌측 스키마 패널 > DDL/DML 코드 붙여넣기 > Build Schema
  3. Schema Ready > 우측 패널 SQL코드 타이핑 > 실습 진행

SQL 기본 쿼리

SELECT, FROM, WHERE

  • 데이터 조회의 가장 기본이 되는 쿼리

  • SELECT : 무엇을 (가져올 컬럼 지정)

  • FROM : 어디에서 (어느 테이블에서)

  • WHERE : 어떤 조건으로 (행 데이터중 가져올 값 조건)

  • AND : WHERE절의 추가 조건 입력

  • LIMIT n : 상위 n개 행 필터링
    MSSQL = TOP
    ORACLE = ROWNUM

주석 수동 입력 방법
: 내용 앞 '--'

코드 작성 사례

  • SELECT * : 모든 column 선택
  • WHERE 1=1 : WHERE 절 조건을 가독성 좋게 관리하기 위해, 무조건 참인 조건 입력.
    WHERE 옆에 조건을 '반드시 하나'는 입력해야 하기 때문.
    이 경우 WHERE 절 아래에 조건을 병렬 나열하여 가독성, 조건 추가삭제 관리 용이
    (예시 : WHERE 1=1
    AND category = '주방용품'
    AND price > 500)

비교 연산자

= (등호 연산자)

  • 일치 조건 입력
  • 사용 예시) category = '주방용품'

> < (부등호 연산자)

  • 값의 크기에 따른 조건 입력
  • 사용 예시) price > 500

논리 연산자

AND, OR

  • WHERE 절 데이터 조건 입력에 사용
  • 괄호가 있는 경우 : 괄호 안 연산 우선처리 (사칙연산과 동일)

NOT

  • 참, 거짓 반전에 사용
  • 사용 예시 ) AND NOT category = '주방용품'

IN()

  • 좌측 값이 IN 우측 () 안 조건 충족 시에만 반환
  • 사용 예시) AND category IN ('스포츠', '디지털', '식품')
  • NOT과 함께 사용 시
    AND category IN ('스포츠', '디지털', '식품')

LIKE

  • 문자열 검색에 사용 (부분일치 시 반환 등)
  • 사용 예시) AND name LIKE '%보호%'
    값의 일부에 '보호'가 포함된 경우 반환

BETWEEN

  • 사이 범위 값을 나타낼 때 사용 (부등호연산자 X)
  • 숫자, 문자 모두 가능
  • 사용 예시1) AND price between 5000 and 15000
  • 사용 예시2) AND purchase_date between
    '20231001' and '20231003'

정렬과 집계

ORDER BY (정렬)

  • 특정 열 값 기준 오름차순, 내림차순 정렬 (default = 오름차순)
  • 숫자, 문자 컬럼 모두 가능
  • 엑셀 필터와 유사
  • 사용 예시) ORDER BY price
  • 내림차순 예시) ORDER BY price DESC
  • 여러컬럼 예시) ORDER BY price DESC, name
    price 기준 우선 정렬, price 값이 같을 경우 name 기준 정렬
  • 컬럼 명 대신 SELECT에 선택된 컬럼 순서 입력하여 사용 가능
  • 사용 예시)
    SELECT category, price
    WHERE
    ORDER BY 1 DESC, 2

전체 집계

  • SELECT 문 옆에 입력
  • 엑셀 함수와 유사한 사용
  • as : 계산(집계)된 값을 변수로 저장

SUM, AVG

  • 사용 예시)
    SELECT sum(price) as sum_price,
    avg(price) as avg_price

COUNT

  • count(1) = count(*)
  • count(category)처럼 컬럼명 입력도 가능
    이때 NULL 값 제외 후 카운트
  • 사용 예시)
    SELECT count(1) as cnt

distinct

  • 유니크한 값 선택

  • 사용 예시) SELECT count (distinct price) as unique_price_cnt

  • 집계함수 = 필터링 이후 집계

  • 즉, WHERE 조건 적용 후 > SELECT문의 집계함수 실행

  • 사용 예시)
    SELECT count(1) as some_cnt
    FROM pruducts_v2
    WHERE 1=1
    AND category like '%용품%'

GROUP BY

HAVING

  • WHERE처럼 필터링 하는 구문
  • 단, 차이는 '그룹화' 이후 필터링

기초 SQL 함수

CONCAT

  • 값을 합쳐줄 때 사용 (concatenate)
  • 문자열에 대해 주로 사용하나 문자열 외에도 사용 가능
  • 사용 예시)
    SELECT CONCAT(category,'-',name) as comb_name

SUBSTRING

  • 문자열 일부 추출
  • SUBSTRING(name, 시작위치, 추출길이)
  • 엑셀처럼 추출 방향 지정 가능 : SUBSTR, LEFT, RIGHT
  • 사용 예시)
    SELECT SUBATRING(name, 1, 2) as sub_string
    • name의 첫 글자부터 두글자 추출

CEIL, ROUND, FLOOR

  • 올림, 반올림, 내림

TRUNCATE

  • 특정 자릿 수 이하 무시
  • ROUND와 사용 방법 동일

ABS

  • 절댓값

MOD(,)

  • 나머지
  • 첫 번째 인자 : 분자 / 두 번째 인자 : 분모

DDL, DML

DDL (Data Definition Language)

  • 데이터베이스 구조 정의 및 관리
  • 테이블/뷰/인덱스 명령어 : CREATE(생성), ALTER(구조 변경), DROP(삭제)

DML (Data Manipulation Language)

  • 데이터를 쿼리하거나 조작
  • SELECT(질의), INSERT(삽입), UPDATE(수정), DELETE(삭제)

공부하며 어려웠던 내용

  • GROUB BY, HAVING의 사용
  • 예상 결과물과 실제 결과물의 매치가 쉽지 않은 쿼리 중 하나
  • 충분한 실습, 복습 후 다시 한 번 내용 정리의 필요성을 느낀다
profile
백지를 벗어나고 싶은 학생

0개의 댓글

관련 채용 정보