SQL(Structured Query Language) -** RDB를 위한 표준 질의어, 비절차적 데이터 언어

    • 유래 : IBM이 개발한 SEQUEL에서 유래, ANSI와 ISO에 의해 현재까지도 표준화 및 용어 통일.

    방식 :

    1. 대화식 SQL : DBMS에 직접 접근해 질의를 작성 및 실행
    2. 삽입 SQL : 프로그래밍 언어로 작성된 응용 프로그램에 삽입 (MyBatis, Hibernate.. 등)

    SQL은 완전한 프로그래밍 언어가 아닌 data sublanguage로 분류
    -> 데이터와 메타 데이터에 대해서만 생성하고 처리하는 문법을 가지고 있다.

    SQL은 클라이언트/서버 구조로 구성되어 있다.
    -> 분산형 구조로 클라이언트에서 질의(요청)를 하면 서버에서 그 질의를 받아 처리하고 응답을 돌려준다.

    SQL의 분류

    SQL은 그 용도에 따라 세가지로 나눌 수 있다.

    1. DML(Data Manipulation Lang.) : 데이터 조작어, 데이터의 삽입, 삭제, 검색, 수정 등의 처리를 요구
      • SELECT, INSERT, DELETE, UPDATE..
    2. DCL(Data Control Lang.) : 내부적으로 필요한 규칙이나 기법을 정의. 트랜잭션 제어, 접근권한 제어. 등
      • GRANT, REVOKE..
    3. DDL(Data Definition Lang.) : 테이블을 생성하고 변경, 제어하는 기능을 제공. 테이블이나 관계의 구조를 생성한다.
      • CREATE, ALTER, DROP..
    • SELECT : 데이터를 검색한다. SELECT 구는 속성을 선택한다.
    1. FROM [테이블명]

    2. WHERE [조건식] : 조건식이 참인 행을 가져온다.

      • LIKE : 부분적으로 일치하는 데이터를 검색.
      • 패턴매칭 : 와일드카드 '%' : 문자열을 대치, '_' : 문자를 대치
    3. GROUP BY

      • GROUPING, 특정 속성의 값이 같은 행을 모아 그룹을 만들고, 그룹별로 검색한다.

      • GROUP BY로 투플을 그룹으로 묶은 후, SELECT 절에는 GROUP BY에서 사용한 속성과 집계 함수만이 올 수 있다!!

      • ex) SELECT custid,

      • HAVING : HAVING 키워드를 이용해 그룹에 대한 조건을 명세한다. (그룹별 검색에서 WHERE과 같은 역할)

        • HAVING의 조건에는 SUM, AVG, COUNT.. 등 집계 함수가 와야한다.
      • 예제
        8000원 이상 도서 두권 이상 구매한 고객별 주문도서 수량
        but, 아래의 쿼리는 8000원 이상 도서 두권 이상 구매한 고객의 '8000원 이상 도서 구매수량'을 나타낸다.

        SELECT custid, COUNT(_) AS `수량`  
        FROM Orders  
        WHERE saleprice >= 8000  
        GROUP BY custid  
        HAVING COUNT(_) >= 2;
      • 8000원 이상 도서를 구매했고, 총 두권 이상 책을 구매한 히스토리가 있는 사람에 총 도서 구매 수량

        SELECT custid, COUNT(*) AS num_purchases 
        FROM Orders 
        WHERE custid IN (     
            SELECT custid 
            FROM Orders 
            WHERE saleprice >= 8000) 
        GROUP BY custid 
        HAVING COUNT(*) >= 2;
    4. ORDER BY : 결과 행을 정렬해서 가져온다.

      • ASC/DESC : 오름차순/내림차순으로 결과행을 정렬한다.
      • MySQL에서 NULL 값은 가장 작은 값으로 취급, 오름차순의 경우 가장 먼저 온다.

    연산

    1. IS NULL / IS NOT NULL : 해당 하는 속성 값이 NULL인지 확인. NULL이면 참, 아니면 거짓.

    집계함수

    집계함수는 특정 속성 값을 통계적으로 계산한 결과를 검색하기 위해 사용한다.

    • 집계함수는 NULL인 값을 제외하고 계산한다.
    • WHERE 절에서는 사용 불가, SELECT, HAVING 절에서만 사용 가능하다.
    1. SUM
    2. AVG
    3. MAX
    4. MIN
    5. COUNT : 정확한 개수를 계산하기 위해서는, 기본키 속성이나 '*'를 주로 사용한다.
      • 'COUNT(DISTINCT attribute) AS 별칭'으로 중복을 제거하면서 COUNT하고 별칭을 붙일 수 있다.
    • 질문
    1. SELECT에서 WHERE -> SELECT -> ORDER BY 순으로 처리, 나머지 LIMIT, GROUP BY, HAVING..의 순서는?
      • 내부적으로 FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY, LIMIT 순으로 처리된다.

    '강의요약 > 데이터베이스' 카테고리의 다른 글

    [DB] 6. DDL  (0) 2023.04.17
    [DB] 5. JOIN  (0) 2023.04.11
    [DB] 3. 관계대수  (0) 2023.03.20
    [DB] 2.2 키(key)  (0) 2023.03.20

    댓글