본문 바로가기
DB/DB 공통

(DB) 데이터베이스 DDL, DML, DCL 쿼리문

by 미니몬 2023. 7. 31.

목차

    728x90
    반응형

    Summary

    이 포스트에서는 Mysql DB를 이용해 SQL(Structured Query Language)이라는 데이터베이스 언어를 사용하여

    DB를 사용함에 있어 기본이 되는 데이터베이스 조작 방법에 대해 설명하겠습니다.

     

     

    SQL은 크게 세가지 유형으로 나뉩니다.

     - DB를 정의하는 DDL(Data Definition Language)

     - DB의 데이터를 관리하는 DML(Data Maniplulation Language)

     - DB의 접근권한을 설정하는 DCL(Data Control Language)

    이 세 가지 유형의 쿼리문에 대해 자세히 알아보겠습니다.

     

     

    1. DDL(Data Definition Language)

    DDL은 데이터베이스, 테이블, 인덱스 등 데이터베이스의 구조를 정의하거나 변경하는데 사용되는 SQL문입니다. 

    DDL에는 CREATE, ALTER, DROP, TRUNCATE 등의 명령어가 있습니다.

     

    • CREATE : 테이블 생성
      데이터베이스나 테이블을 생성합니다.

      예를 들어, 'users'라는 이름의 테이블을 생성하는 쿼리는 다음과 같습니다.
    CREATE TABLE users (
      id INT PRIMARY KEY,
      username VARCHAR(50),
      password VARCHAR(50)
    );

     

    • ALTER : 테이블 구조 수정
      이미 존재하는 데이터베이스나 테이블의 구조를 변경합니다.

      'users' 테이블에 'email' 이라는 칼럼을 추가하는 쿼리는 다음과 같습니다.
    ALTER 
    TABLE users 
    ADD email VARCHAR(255);

     

    • DROP : 테이블 삭제
      데이터베이스나 테이블을 삭제합니다.

      'users' 테이블을 삭제하는 쿼리는 다음과 같습니다.
    DROP TABLE users;

     

    • TRUNCATE : 테이블 데이터 제거
      테이블의 모든 데이터를 삭제합니다.

      'users' 테이블의 모든 데이터를 삭제하는 쿼리는 다음과 같습니다.
    TRUNCATE TABLE users;

     


    2. DML(Data Manipulation Language)

    DML은 테이블 내 데이터를 조회하거나, 입력 및 수정하는 등 데이터를 조작하는데 사용되는 SQL문입니다. 

    DML에는 SELECT, INSERT, UPDATE, DELETE 등의 명령어가 있습니다.

     

    • SELECT : 데이터 조회
      테이블에서 데이터를 검색합니다.

      'users' 테이블에서 원하는 Column 데이터를 검색하는 쿼리는 다음과 같습니다.
    SELECT column1, column2, ...
    FROM users;

     

    만약 모든 데이터를 조회하고 싶다면 Column 대신 아래처럼 사용할 수 있습니다.

    SELECT *
    FROM users;

     

    • INSERT : 데이터 삽입
      테이블에 새로운 데이터를 추가합니다.

      'users' 테이블에 새로운 데이터를 추가하는 쿼리는 다음과 같습니다.
    INSERT INTO users (id, username, password) 
    VALUES (1, 'admin', 'password');

     

    • UPDATE : 데이터 수정
      테이블에서 기존 데이터를 수정합니다.

      'users' 테이블에서 'admin' 사용자의 비밀번호를 수정하는 쿼리는 다음과 같습니다.
    UPDATE users 
    SET password = 'new_password' 
    WHERE username = 'admin';

     

    • DELETE : 데이터 삭제
      테이블에서 데이터를 삭제합니다

      'users' 테이블에서 'admin' 사용자를 삭제하는 쿼리는 다음과 같습니다
    DELETE 
    FROM users 
    WHERE username = 'admin';

    데이터를 제거할 때 DROP(DDL), TRUNCATE(DDL), DELETE(DML) SQL문을 사용합니다.
    데이터를 제거하는 기능을 하는 비슷한 명령어이지만,

    명령문에 큰 차이점이 있으므로 상황에 따라 적절한 SQL문을 사용하여야 합니다.

     

    각 특징에 대해서 정리된 내용을 보시려면 아래 링크를 클릭해주세요.

    [DB] - [데이터 제거와 트랜잭션]

     


    3. DCL(Data Control Language)

    DCL은 데이터베이스에 대한 접근을 제어하는데 사용되는 SQL문입니다. 

    개인이 혼자 LOCAL에서 사용하는 DB의 경우에는 크게 관심갖지 않아도 되는 SQL문 입니다.

    DCL에는 GRANT, REVOKE 등의 명령어가 있습니다.

     

    • GRANT : 사용자의 특정 권한 부여
      GRANT 명령은 사용자에게 데이터베이스 객체(테이블, 뷰, 루틴 등)에 대한 특정 권한을 부여하는 데 사용됩니다

      GRANT 라인을 통해 어떤 권한을 부여할지 표시하고,
      ON 라인에서는 어떤 객체에 부여할 지를 표시합니다.
      그리고 TO 라인을 통해 어느 사용자에게 부여할 것인지를 지정합니다.
      GRANT 문의 일반적인 구조는 다음과 같습니다.
    GRANT privilege_type 
    ON database_name.table_name 
    TO 'username'@'hostname';

     

    privilege_type은 부여하려는 권한 유형을 지정합니다.

    다양한 권한 유형이 있으며, 각 권한 유형에 따른 설명은 아래 표에서 확인할 수 있습니다.

    권한 유형 설명
    ALL PRIVILEGES 모든 권한
    CREATE 테이블 생성 권한
    DROP 테이블을 삭제 할 수 있는 권한
    DELETE 데이터(레코드)를 삭제할 수 있는 권한
    INSERT 레코드를 추가/삽입/입력 하는 권한
    SELECT 데이터를 조회하는 권한
    UPDATE 레코드를 업데이트/수정 하는 권한
    GRANT OPTION 다른 사용자에게 권한을 부여할 수 있는 권한

     

    예를 들어, 'user1' 사용자에게 'database1' 데이터베이스의 'table1' 테이블에 대한 

    SELECT, INSERT, UPDATE 권한을 부여하려면 다음과 같은 쿼리를 사용할 수 있습니다.

    GRANT SELECT, INSERT, UPDATE 
    ON database1.table1 
    TO 'user1'@'localhost';

     

    • REVOKE : 사용자의 특정 권한 회수
      REVOKE 명령은 사용자로부터 데이터베이스 객체에 대한 특정 권한을 회수하는 데 사용됩니다

      REVOKE 문의 일반적인 구조는 다음과 같습니다
    REVOKE privilege_type 
    ON database_name.table_name 
    FROM 'username'@'hostname';

     

    예를 들어, 'user1' 사용자로부터 'database1' 데이터베이스의 'table1' 테이블에 대한 

    INSERT 권한을 회수하려면 다음과 같은 쿼리를 사용할 수 있습니다.

    REVOKE INSERT 
    ON database1.table1 
    FROM 'user1'@'localhost';

     


    Conclusion

    이처럼 SQL의 DDL, DML, DCL은 데이터베이스를 사용함에 있어 기본적으로 알아야 하며,

    DB를 효과적으로 관리하기 위한 필수 도구입니다.

    이 기본적인 명령어를 이해하고 사용하는 것이 데이터베이스 조작의 첫걸음이라고 할 수 있습니다.

    이 포스트가 여러분의 데이터베이스 학습에 도움이 되었길 바랍니다.

     

     

    728x90
    반응형