[TIL] SQL

krkorklo·2022년 8월 29일
0

TIL

목록 보기
15/29

SQL

Structured Query Language(구조적 질의 언어)는 관계형 데이터베이스 시스템에서 자료를 관리 및 처리하기 위해 설계된 언어

  • 대소문자를 가리지 않음 (DBMS 종류에 따라 DB명 및 필드명에 대해 대소문자를 구분하기도 함)
  • 반드시 세미콜론으로 끝나야 함
  • 고유의 값은 따옴표('')로 감싸줌
  • 객체를 나타낼 때는 백틱(``)으로 감싸줌
  • --으로 주석 처리
  • 여러 줄 주석은 /**/으로 처리

DML (Data Manipulation Language)

  • 데이터 조작 언어로 데이터를 관리하기 위한 언어

  • insert : 테이블에 데이터 삽입

    INSERT INTO table_name VALUES (data~);
  • update : 데이터 내용 수정

    UPDATE table_name SET column1 = value WHERE condition;
  • delete : 데이터 삭제

    DELETE FROM table_name WHERE condition;
  • select : 칼럼 조회

    SELECT column1 FROM table_name;

DDL (Data Definition Language)

  • 데이터 정의 언어로 relation을 정의하기 위한 언어

  • create : 테이블 생성

    CREATE TABLE table_name (
    	column1 type condition,
    	column2 type condition,
    	PRIMARY KEY ~);
  • alter : 테이블 수정

    ALTER TABLE table_name ~;
  • drop : 데이터베이스나 테이블 삭제

    DROP TABLE table_name;
    DROP DATABASE db_name;
  • truncate : 테이블의 데이터를 모두 삭제

    TRUNCATE TABLE table_name;
  • rename : 테이블 이름 변경

    RENAME TABLE old_table TO new_table;

DCL (Data Control Language)

  • 데이터 제어 언어로 relation 및 데이터를 관리하고 접근하는 권한을 다루는 언어

  • grant : 사용자에 권한을 부여

    GRANT 권한 TO user;
  • revoke : 사용자의 권한을 회수

    REVOKE 권한 FROM user;

TCL (Transaction Control Language)

DCL(Data Control Language)에서 트랜잭션을 제어하는 명령인 COMMITROLLBACK만을 따로 분리해서 TCL로 정의

  • commit : 트랜잭션 처리가 정상적으로 종료되어 작업을 정상적으로 처리
  • rollback : 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성이 깨졌을 때 트랜젝션 처리 과정에서 발생한 변경사항을 취소
  • savepoint : 현재의 트랜젝션을 작게 분할
    SAVEPOINT C1;
    ROLLBACK TO C1;

추가 문법

  • LIMIT : 조회 결과 행의 수 제한
    SELECT * FROM table_name LIMIT 2;
  • GROUP BY : 특정 칼럼 기준의 데이터 그룹핑
    SELECT column1 FROM table_name GROUP BY column1;
  • ORDER BY : 특정 칼럼 기준으로 정렬
    • ASC : 오름차순 / DESC : 내림차순
    SELECT * FROM table_name ORDER BY column1 DESC;
  • DISTINCT : 중복 행을 제거
    SELECT DISTINCT column1 FROM table_name;
  • ALIAS : 칼럼에 별칭을 주고 조회
    SELECT column1 '별칭' FROM table_name WHERE id = 1;

SELECT 실행 순서

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY

JOIN

JOIN은 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것

INNER JOIN

  • 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있으면 출력
     SELECT <열 목록>
     FROM <첫 번째 테이블>
              INNER JOIN <두 번째 테이블>
              ON <조인될 조건>
     [WHERE 검색 조건]
  • INNER JOIN 대신 JOIN으로 입력해도 인식 가능

OUTER JOIN

  • 내부 조인과 달리 한쪽에만 데이터가 있어도 결과 출력
    SELECT <열 목록>
    FROM <첫 번째 테이블(LEFT 테이블)>
             <LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
              ON <조인될 조건>
    [WHERE 검색 조건]
  • LEFT OUTER JOIN: 왼쪽 테이블의 모든 값이 출력되는 조인
  • RIGHT OUTER JOIN: 오른쪽 테이블의 모든 값이 출력되는 조인
  • FULL OUTER JOIN: 왼쪽 또는 오른쪽 테이블의 모든 값이 출력되는 조인

CROSS JOIN

  • 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인

  • 상호 조인 결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 수

    SELECT * 
    FROM <첫 번째 테이블>
             CROSS JOIN <두 번째 테이블>

SELF JOIN

  • 자기 자신과 조인하므로 1개의 테이블을 사용
    SELECT <열 목록>
    FROM <테이블> 별칭A
            INNER JOIN <테이블> 별칭B
            ON <조인될 조건>
    [WHERE 검색 조건]

참고자료
https://edu.goorm.io/learn/lecture/15413/한-눈에-끝내는-sql/lesson/767683/sql이란
https://velog.io/@ygh7687/SQL-문법-정리
https://hongong.hanbit.co.kr/sql-기본-문법-joininner-outer-cross-self-join/

0개의 댓글