[DBMS] 스키마란?, SQL명령어 종류 (DDL, DML, DCL, TCL)

전예원·2021년 11월 20일
0

DBMS

목록 보기
6/7

💡 SQL 명령어 기초 모음

DDL, DML, DCL, TCL 명령어 기초에 대해 공부해보자~!

데이터베이스는 데이터 정의 언어(DDL)로부터 시작하고, SQL문을 효율적으로 사용하기 위해서 데이터 조작 언어(DML)를 깊이 공부해야 하고, 데이터베이스를 효과적으로 관리하기 위해서는 데이터 제어 언어(DCL)를 사용할 수 있어야함


스키마란?

  • 데이터 개체(Entity), 속성(Attribute), 관계(Relationship)와 같은 데이터베이스 구조와 기타 제약조건에 대한 명세를 기술한 것
  • 데이터 사전 (Data Dictionary or System Catalog)에 저장되며 메타데이터(Meta-data)라고도 함
  • 스키마는 개념 스키마, 외부 스키마, 내부 스키마로 나누어지며 이를 스키마 3계층이라고 함
  1. 개념 스키마 (Conceptual Schema)

    • 데이터베이스의 전체적인 구조를 논리적으로 표현한 것
    • 객체 간의 관계 및 제약조건, 무결성 규칙, 데이터베이스 접근권한 및 보안 등의 명세를 정의
    • 하나의 데이터베이스에 대해 한개만 존재
    • 데이터베이스에 대한 전체적인 뷰(view)를 나타냄
    • 단순히 스키마(Schema)라고 하면 보통 개념 스키마를 의미
  2. 외부 스키마 (External Schema) = 서브 스키마

    • 사용자나 개발자 입장에서 논리적으로 데이터베이스의 구조를 정의한 것
    • 하나의 데이터베이스에 대해 여러 개가 존재할 수 있음
    • 사용자 뷰(view) 관점에서의 스키마
  3. 내부 스키마 (Internal Schema)

    • 데이터베이스의 물리적인 구조를 정의한 스키마
    • 데이터의 속성이나 저장 크기 등을 기술하고 있음
    • 시스템 프로그래머나 시스템 설계자 관점에서의 스키마

즉, 데이터베이스에서 스키마란!! 데이터베이스가 데이터를 저장하기 위한 저장 틀이라고 볼 수 있을 것 같다.


🔴 SQL 구문의 3가지 종류

  • 데이터 정의 언어(DDL : Data Definition Language) - CREATE, ALTER, DROP 등
  • 데이터 조작 언어(DML : Data Manipulation Language) - SELETE, INSERT, UPDATE, DELETE 등
  • 데이터 제어 언어(DCL : Data Control Language) - GRANT, REVOKE 등

🟠 데이터 정의문

  • DDL는 데이터의 저장구조를 정의하는 언어
  • 스키마의 정의 수정, 삭제하는 명령문과 인덱스의 생성 및 삭제 명령문을 뜻함

❗️ 데이터베이스이름, 테이블이름, 같은 테이블 안에 필드명은 중복 되면 ❌❌
❗️ charset은 utf-8을 권장
❗️ 테이블 컬럼을 삭제하면 기존에 해당 필드에 입력된 모든 자료도 같이 삭제됨

🟡 데이터 조작문

  • DML는 데이터에 접근 및 조작하는 언어
  • 튜플의 검색, 삽입, 삭제 수정과 같은 명령문을 뜻함
    • 튜플은 행을 의미함

❗️ 데이터 값이 문자열이면 반드시 작은따옴표(')로 감싸기
❗️ where 절이 없는 delete문을 사용하여 테이블에 저장된 모든 데이터가 삭제되더라도 테이블의 구조와 AUTO_INCREMENT의 자동증가 값은 여전히 남아 있음 -> 해당 테이블까지 삭제하고 싶은 경우에는 DROP TABLE문을 사용해야함
❗️ where 절에는 여러개의 다른 컬럼을 조건으로 사용할 수 있음
❗️ 테이블의 레코드를 모두 삭제할 경우에는 DELETE문 보다 TRUNCATE문 사용하기 -> 자동 증가 값이 설정된 컬럼이 존재 시 DELETE문과 다르게 테이블 생성시의 초기 값 부터 생성됨

🟢 데이터 제어문

  • DCL는 데이터를 제어하는 언어로 데이터의 보안, 무결성, 회복, 병행 수행제어 등을 정의하는데 사용되는 언어
  • 데이터베이스에 접근하고 객체들을 사용할 수 있도록 권한을 주고 회수하는 명령문을 사용

📌 데이터베이스의 사용자 3가지 분류
1. 일반 사용자 : 비절차적 DML(질의어)를 통한 데이터베이스 접근이 가능함.
2. 응용 프로그래머 : 프로그래밍 언어에 DML을 삽입하여 데이터베이스에 접근.
3. 데이터베이스 관리자(DBA) : DDL과 DCL을 통해 데이터베이스를 정의하고 제어하는 사람

🖍 사용자 계정 생성, 삭제

  • 사용자 계정은 MySQL의 데이터베이스명 'mysql'의 'user'테이블에 저장
  • use mysql; -> select host, user from user;

❗️ 사용자 계정 생성할 때, '' 꼭 넣어주기
❗️ create user 'my'@% identified by '1234'; -> %는 외부에서 접근을 허용한다는 뜻, 그 외 특정 IP나 DNS에 등록된 명칭으로 지정하면, 그곳에서만 접근이 가능
❗️ 사용자 계정을 만들 때 생성한 호스트와 동일한 호스트를 사용해야만함

🔵 트랜잭션 (TCL)

  • TCL(Transaction Control Language) : DCL에서 트랜잭션을 제어하는 명령인 COMMIT과 ROLLBACK만을 따로 분리해서 TCL이라고 표현
profile
앞으로 나아가는 중~

0개의 댓글