[SQL] DDL, DML, DCL

항니·2021년 12월 13일
0
post-thumbnail

저는 지난 9월에 SQLD(SQL개발자) 시험을 쳤었는데요. 시험을 위해 공부를 할 때는 말 그대로 sql을 '글로 배웠기' 때문에 감이 잘 안왔어요.

그런데 요새 MYSQLAWS를 사용하기 시작하면서 직접 쿼리를 작성하고 데이터를 처리하는 재미에 빠지게 되었어요😁 확실히 파이썬과는 또 다른 매력이 있답니다! 오늘은 SQL의 기본 중의 기본을 살펴보도록 할게요! lego~!


1. SQL이란?

SQL(Structured Query Language): 데이터베이스를 정의, 조작, 제어하기 위해 사용하는 언어
Database: 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합체

SQL은 데이터 정의 언어(DDL), 데이터 조작 언어(DML), 데이터 제어 언어(DCL)로 구성되어 있습니다.

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

DDL은 데이터베이스, 테이블 등 데이터가 담기는 틀을 생성하고, 삭제하고, 변경하는 등 데이터의 구조에 대해 기능하는 언어입니다.

  • CREATE : SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 생성

  • ALTER : Table에 대한 정의를 변경하는 데 사용

  • DROP : SCHEMA, DOMAIN, TABLE, VIEW, INDEX 를 삭제

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

DML은 테이블에 데이터를 삽입, 삭제하거나, 조건에 맞는 데이터를 조회, 갱신 하는 언어입니다.

  • SELECT : 테이블에서 조건에 맞는 튜플을 검색

  • INSERT : 테이블에 새로운 튜플을 삽입

  • DELETE : 테이블에서 조건에 맞는 튜플을 삭제

  • UPDATE : 테이블에서 조건에 맞는 튜플의 내용을 변경

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

DCL은 데이터의 무결성, 보안 및 권한 제어, 복구를 위한 언어입니다. 데이터를 보호하고 데이터를 관리하는 목적으로 사용됩니다.

  • GRANT : 데이터베이스 사용자에게 사용 권한을 부여합니다.

  • REVOKE : 데이터베이스 사용자의 사용 권한을 취소합니다.

  • COMMIT : 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고, 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려줍니다.

  • ROLLBACK : 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구합니다.


실습!!!!

먼저, mysql에 root 계정으로 접속합니다.

1) cd /usr/local/mysql/bin (위치 이동)
2) mysql -u root -p 를 입력 후, password를 입력해 접속

Tip!

  • sql은 쿼리 끝에 ;을 찍어줘야합니다. 안그럼 안끝나요😂 ;을 안찍고 엔터를 눌렀다면 당황하지말고 찍은 후에 다시 엔터를 치시면 됩니다.
  • 명령어는 소문자로 작성해도 상관없으나 대문자로 작성한다면 가독성이 높아질 것입니다😊

✔️ DDL

데이터베이스

  • 현재 데이터베이스 목록 확인
    SHOW databases;

  • 데이터베이스 생성
    CREATE DATABASE dbname;

    >깨짐방지
    CREATE DATABASE dbname DEFAULT CHARACTER SET utf8mb4;
  • 해당 데이터베이스로 이동(사용)
    USE dbname;

  • 데이터베이스 삭제
    DROP DATABASE dbname;

테이블

  • 현재 테이블 목록 확인
    SHOW TABLES;

  • 테이블 생성
    CREATE TABLE tablename (column1 int, column2 float, column3 varchar(16), ... ) ;

  • 테이블 정보 확인(컬럼, 데이터타입,널 여부, 기본키 여부, 기본값 등)
    DESC tablename;

  • 테이블 이름 변경
    ALTER TABLE tablename RENAME new_tablename;

  • 테이블 삭제
    DROP DATABASE dbname;

컬럼

  • 컬럼 추가
    ALTER TABLE tablename ADD COLUMN columnname datatype;

  • 컬럼 변경 - 데이터타입
    ALTER TABLE tablename MODIFY COLUMN columnname datatype;

  • 컬럼 변경 - 이름
    ALTER TABLE tablename CHANGE COLUMN old_columnname new_columnname new_datatype;

  • 컬럼 삭제
    ALTER TABLE tablename DROP COLUMN columnname;


✔️ DCL

유저 관리

  • 유저 조회
    USE mysql;
    SELECT host, user FROM user;

    사용자 정보는 mysql에서 관리하므로 일단 mysql 데이터베이스로 이동 후 조회!

  • 유저 생성 - localhost
    CREATE USER 'username'@'localhost' identified by 'password';

    현재 PC에서만 접속 가능한 사용자를 비밀번호와 함께 생성

  • 유저 생성 - %
    CREATE USER 'username'@'%' identified by 'password';

    외부에서 접속 가능한 사용자를 비밀번호와 함께 생성

  • 유저 삭제
    DROP USER 'username'@'localhost';
    DROP USER 'username'@'%';

    접근 범위에 따라 같은 이름의 사용자여도 별도로 삭제

권한 관리

  • 권한 확인
    SHOW GRANTS FOR 'username'@'localhost';

  • 권한 부여
    GRANT ALL ON dbname.* to 'username'@'localhost';

  • 권한 제거
    REVOKE ALL ON dbname.* from 'username'@'localhost';

  • 참고 - 새로고침
    FLUSH PRIVILEGES;

profile
3D 모델 플랫폼에서 데이터 분석을 하고 있습니다

0개의 댓글