SQL의 DDL, DML, DCL, TCL

2021. 1. 12. 13:48· Backend/DataBase
목차
  1. 서론
  2. DDL(Data Definition Language) - 데이터 정의 언어
  3. CREATE
  4. ALTER
  5. DROP
  6. TRUNCATE
  7. DML(Data Manipulation Language) - 데이터 조작 언어
  8. SELECT
  9. INSERT
  10. UPDATE
  11. DELETE
  12. DCL(Data Control Language) - 데이터 제어 언어
  13. GRANT
  14. REVOKE
  15. COMMIT
  16. ROLLBACK
  17. SET TRANSACTION
  18. BEGIN
  19. SAVEPOINT
  20. LOCK
  21. TCL(Transaction Control Language)
  22. 결론
728x90

SQL의 DDL, DML, DCL, TCL

서론

  • SQL(Structured Query Language)란 구조적 질의 언어라는 의미로 질의 언어를 통해 데이터베이스를 제어, 관리 할 수 있다.
  • SQL은 DDL, DML, DCL로 나눌 수 있습니다.
  • 각 언어의 특징을 살펴보도록 하겠습니다.
  • 해당 모든 테스트는 MySQL 8.0.17 환경에서 진행합니다.

DDL(Data Definition Language) - 데이터 정의 언어

  • 데이터베이스를 정의하는 언어로 데이터베이스를 생성, 수정, 삭제 등의 역할을 하는 언어

CREATE

  • 데이터베이스, 테이블을 만드는 역할

  • 데이터베이스 생성

      CREATE database test

    sql_purpose_kinds-1

  • 테이블 생성

      CREATE table user (
          user_id int not null,
          name char(16) not null,
          email char(16) not null,
          primary key(user_id)
      );

    sql_purpose_kinds-2

ALTER

  • 테이블을 수정하는 역할

  • 테이블의 컬럼을 추가하는 SQL

      ALTER TABLE user ADD age int;

    sql_purpose_kinds-3

DROP

  • 데이터베이스, 테이블을 삭제하는 역할

  • 테이블 삭제하는 SQL

      DROP TABLE user;

    sql_purpose_kinds-4

TRUNCATE

  • 테이블을 초기화하는 역할

DML(Data Manipulation Language) - 데이터 조작 언어

  • 정의된 데이터베이스에 입력된 레코드를 삽입,조회,수정,삭제를 하는 언어

SELECT

  • 레코드를 조회하는 역할

  • 레코드 전체 조회 SQL

      SELECT * FROM user

    sql_purpose_kinds-2

INSERT

  • 레코드를 삽입하는 역할

  • 한개의 레코드를 삽입하는 SQL

      INSERT INTO user(user_id, name, email) VALUES (1, 'rutgo', 'ksy90101@gmail.com');

    sql_purpose_kinds-5

UPDATE

  • 레코드를 수정하는 역할

  • email을 변경하는 SQL

      UPDATE user 
      SET email='ksy90101@naver.com'
      WHERE user_id = 1;

    sql_purpose_kinds-6

DELETE

  • 레코드를 삭제하는 역할

      DELETE FROM user
      WHERE user_id = 1;

    sql_purpose_kinds-7

DCL(Data Control Language) - 데이터 제어 언어

  • 데이터베이스에 접근하거나 객체에 권한을 주는 역할을 하는 언어

GRANT

  • 데이터베이스 사용자에게 권한을 주는 역할

REVOKE

  • 데이터베이스 사용자에게 권한을 박탈하는 역할

COMMIT

  • 트랜잭션의 작업이 정상적이라면 반영하는 역할

ROLLBACK

  • 트랜잭션 작업이 비정상적이라면 다시 되돌리는 역할

SET TRANSACTION

  • 트랜잭션 모드 설정하는 역할
  • 예를들면 트랜잭션 격리 수준등을 설정한다

BEGIN

  • 트랜잭션 시삭

SAVEPOINT

  • 저장 지점을 설정하는 것으로 임시 저장이라고 생각하면 좋을거 같습니다.

LOCK

  • 데이터베이스의 리소스 접근 제한을 하기 위한 명령어

TCL(Transaction Control Language)

  • DCL에서 COMMIT과 ROLLBACK, SAVEPONT을 지칭한다.
  • 즉, 트랜잭션을 제어하는 언어이다.

결론

  • DDL을 통해 데이터베이스, 테이블을 생성,변경,제거를 하고
  • DML을 통해 레코드를 생성,변경,조회,제거를 하고
  • DCL을 통해 데이터베이스의 접근 권한이나 작업 결과를 반영, 리셋을 진행한다.
728x90
728x90
저작자표시 비영리 (새창열림)

'Backend > DataBase' 카테고리의 다른 글

[PostgreSQL] 데이터베이스의 모든 FK를 확인하는 방법  (0) 2024.04.07
Docker를 이용해 MySQL 연결해보기.  (0) 2023.04.30
🤔 CASE WHEN ~ THEN ~ ELSE END  (0) 2021.01.11
ORACLE, MYSQL 날짜에서 각 값들을 추출하기 🧐  (0) 2021.01.07
Transaction의 성질 - ACID  (0) 2020.12.19
  1. 서론
  2. DDL(Data Definition Language) - 데이터 정의 언어
  3. CREATE
  4. ALTER
  5. DROP
  6. TRUNCATE
  7. DML(Data Manipulation Language) - 데이터 조작 언어
  8. SELECT
  9. INSERT
  10. UPDATE
  11. DELETE
  12. DCL(Data Control Language) - 데이터 제어 언어
  13. GRANT
  14. REVOKE
  15. COMMIT
  16. ROLLBACK
  17. SET TRANSACTION
  18. BEGIN
  19. SAVEPOINT
  20. LOCK
  21. TCL(Transaction Control Language)
  22. 결론
'Backend/DataBase' 카테고리의 다른 글
  • [PostgreSQL] 데이터베이스의 모든 FK를 확인하는 방법
  • Docker를 이용해 MySQL 연결해보기.
  • 🤔 CASE WHEN ~ THEN ~ ELSE END
  • ORACLE, MYSQL 날짜에서 각 값들을 추출하기 🧐
Seyun(Marco)
Seyun(Marco)
개발, PO, PM, 기획과 관련된 서비스 관련 업무에 관심이 있습니다. 또한 성장,교육과 관련된 주제에 대해서도 관심이 많습니다. 티타임을 좋아하는 사람으로써, 혹시 티타임에 관심이 있으신 분은 ksy90101@gmail.com로 메일 보내주시면 감사하겠습니다 :) 과제를 제공해주고 피드백을 주는 서비스를 오픈하였습니다. 관심있으신 분들은 https://jobskill.notion.site/ 해당 사이트를 참고해주세요.
Enthusiastically, Steady, Slowly개발, PO, PM, 기획과 관련된 서비스 관련 업무에 관심이 있습니다. 또한 성장,교육과 관련된 주제에 대해서도 관심이 많습니다. 티타임을 좋아하는 사람으로써, 혹시 티타임에 관심이 있으신 분은 ksy90101@gmail.com로 메일 보내주시면 감사하겠습니다 :) 과제를 제공해주고 피드백을 주는 서비스를 오픈하였습니다. 관심있으신 분들은 https://jobskill.notion.site/ 해당 사이트를 참고해주세요.
250x250
Seyun(Marco)
Enthusiastically, Steady, Slowly
Seyun(Marco)
전체
오늘
어제
  • 분류 전체보기 (258)
    • Common (31)
      • ComputerScience (10)
      • Web (9)
      • Git (1)
      • 세미나 (8)
      • Testing (3)
    • Backend (129)
      • Java (35)
      • Kotlin (3)
      • Spring (26)
      • Ruby (11)
      • RubyOnRails (17)
      • Python (1)
      • Django (3)
      • Infra (3)
      • DataBase (9)
      • SQL (21)
    • Frontend (30)
      • HTML&CSS (1)
      • JavaScript (16)
      • TypeScript (1)
      • Vue (5)
      • Nuxt.js (3)
      • React (4)
    • Book (30)
      • 이펙티브 자바 3판 (9)
    • Lecture (26)
      • [인프런] Vue.js 시작하기 - Age of .. (14)
      • [Tacademy] JPA 프로그래밍 기본기 다지.. (8)
    • 회고 (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • REST API
  • 우아콘
  • MVC
  • rubyonrails
  • Nuxt3
  • 멱등성
  • JUnit
  • JavaScriprt
  • SCSS
  • IBM Plex Sans
  • java
  • 개발문화
  • system.out.println
  • ruby
  • locale
  • System.out.printlin
  • JAR index
  • scanner
  • Finalization
  • RESTful

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
Seyun(Marco)
SQL의 DDL, DML, DCL, TCL
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.