ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQL] SQL(Structured Query Language)이란?
    Data Analysis/SQL 2023. 3. 23. 23:27

    Table of Contents

    1. Introduction
    2. SQL이란?
    3. Reference

    Introduction

     데이터베이스는 비즈니스, 의료, 교육, 금융, 정부 등 다양한 산업과 분야에서 널리 사용되고 있다고 할 수 있다. 대량의 데이터를 저장하고 관리해야 하는 거의 모든 조직이나 애플리케이션은 데이터베이스를 사용하여 이점을 얻을 수 있다. 특히, 데이터베이스는 데이터를 저장하고 구성하여 검색할 수 있는 중앙 집중형 데이터 관리를 하고 있기 때문에 조직이 정보를 기반으로한 의사 결정을 내리고 운영을 개선하는데 도움을 준다. 이러한 모습은 그림1과 같이 소프트웨어 아키텍처의 일반적은 패턴으로 나타나며,  다양한 조직에서 해당 아키텍처를 적용하고 있다. 오늘날 디지털 시대에 데이터의 중요성이 커짐에 따라 데이터베이스의 사용은 계속 증가할 것으로 보인다. 

    [그림 1] 아키텍처 패턴 기본 구성

    SQL이란?

     SQL(구조화된 쿼리 언어)은 관계형 데이터베이스를 관리하고 조작하는 데 사용되는 표준 언어입니다. 데이터베이스에서 데이터를 저장, 검색, 업데이트 및 삭제하는 데 사용됩니다. SQL은 MySQL, Microsoft SQL Server, Oracle, PostgreSQL 등 다양한 유형의 데이터베이스 관리 시스템(DBMS)과 함께 사용할 수 있다.

     일반적으로 프로그래밍 언어는 명령형과 선언형으로 분류할 수 있다. SQL은 선언적 언어이므로 사용자가 데이터베이스에서 수행 방법을 지정하는 대신 원하는 작업을 정의한다. 사용자는 SQL을 사용하여 데이터베이스에 명령을 실행하고, 데이터베이스는 요청된 데이터 또는 요청된 작업이 완료되었다는 확인으로 응답한다. SQL은 소규모 비즈니스 데이터베이스부터 대기업에서 사용하는 대규모 데이터 웨어하우스에 이르기까지 다양한 애플리케이션에서 사용된다. 이러한 데이터베이스는 고객관계관리(Customer Relationship Management; CRM), 재고관리, 공급망 관리(Supply Chain Management; SCM) 등에 활용 된다. 따라서, 데이터 분석가, 데이터 과학자, 데이터베이스 관리자, 소프트웨어 개발자 등 데이터로 작업하는 모든 사람에게 중요한 기술이다.

     

    SQL 예제

    SELECT는 한 개나 그 이상의 테이블로부터 데이터를 검색할때 사용하는 문법이다. 가장 기본적인 문법으로 고객 테이블에서 성, 이름, 연령, 성별 그리고 이메일 주소를 불러오는 쿼리를 입력해보자.

    SELECT FIRST_NAME
         , LAST_NAME
         , AGE
         , SEX
         , EMAIL
      FROM CUSTOMER

    WHERE 문은 조회하려고 하는 데이터에서 특정값으로 필터하기 위해 사용하는 조건문이다. SELECT 문을 먼저 작성하고 마지막에 WHERE 문을 넣어 조건을 작성할 수 있는데, 고객 테이블에서 성, 이름, 연령, 성별 그리고 이메일 주소를 불러오고자 한다. 단, 30세 이상의 고객만 불러오는 쿼리를 입력해보자.

    SELECT FIRST_NAME
         , LAST_NAME
         , AGE
         , SEX
         , EMAIL
      FROM CUSTOMER
     WHERER AGE >= 30

    WHERE 문 안에는 다양한 연산자가 올 수 있다.

    연산자 예시 의미
    >, < AGE < 10
    AGE > 30
    10세 미만
    30세 초과
    >=, <= AGE <= 20
    AGE >= 40
    20세 이하
    40세 이상
    = SEX = 'M' SEX가 M인 값
    != LAST_NAME != '김' LAST_NAME이 김씨가 아닌 사람
    AND AGE > 10 AND AGE < 30 10세 초과 30세 미만
    OR AGE <= 20 OR AGE >= 80 20세 이하이거나 80세 이상
    NOT NOT LAST_NAME = '박' 박씨가 아닌 사람
    BETWEEN AGE BETWEEN 20 AND 30 연령이 20과 30 사이의 값
    IN LAST_NAME IN ('정', '박', 김') 성이 정, 박, 김인 사람
    NOT IN LAST_NAME NOT IN ('정', '박', 김') 성이 정, 박, 김이 아닌 사람

     

     

    ORDER BY 문은 SELECT 문을 통해 조회한 데이터를 오름차순이나 내림차순으로 정렬하는 쿼리이다. 고객 테이블로부터 성, 이름, 연령, 성별 그리고 이메일 주소를 불러오고 연령이 높은 순서대로 정렬을 해서 불러오는 쿼리를 입력해보자. 내림차순일 경우 DESC를 입력하고 오름차순일 경우 ASC를 입력한다.

    SELECT FIRST_NAME
         , LAST_NAME
         , AGE
         , SEX
         , EMAIL
      FROM CUSTOMER
     ORDER
        BY AGE DESC
     
    GROUP BY 문은 집계 함수를 활용하여 그룹별 집계하는 쿼리이다. 고객 테이블로부터 성별에 따른 고객 수가 몇 명이나 되는지 확인하기 위해 쿼리를 입력해보자.
    SELECT SEX
         , COUNT(*)
      FROM CUSTOMER
     GROUP
        BY SEX

    집계함수는 아래와 같이 있다.

    집계함수 사용법 의미
    SUM SELECT SEX
                 , SUM(SALES)
       FROM CUSTOMER
     GROUP
             BY SEX
    합계
    AVG SELECT SEX
                 , AVG(SALES)
       FROM CUSTOMER
     GROUP
             BY SEX
    평균
    MIN SELECT SEX
                 , MIN(SALES)
       FROM CUSTOMER
     GROUP
             BY SEX
    최솟값
    MAX SELECT SEX
                 , MAX(SALES)
       FROM CUSTOMER
     GROUP
             BY SEX
    최댓값
    COUNT SELECT SEX
                 , COUNT(*)
       FROM CUSTOMER
     GROUP
             BY SEX
    개수
     
    LIMIT 문은 SELECT 문을 통해 조회한 데이터 중 제한된 수의 결과만 출력하기 위해 사용하는 쿼리이다. 고객 테이블로부터 성, 이름, 연령, 성별 그리고 이메일 주소를 불러오는데 10줄만 불러오는 쿼리를 입력해보자.
    SELECT FIRST_NAME
         , LAST_NAME
         , AGE
         , SEX
         , EMAIL
      FROM CUSTOMER
     LIMIT 10

     

    Reference

    "Software architecture patterns", Mark Richards, https://bit.ly/3lsX0QI

    "명령형 VS 선언형 프로그래밍", iborymagic, https://iborymagic.tistory.com/73

    "SQL Tutorial", W3schools, https://www.w3schools.com/sql/default.asp

     

    댓글

Designed by Tistory.