데이터 정의어 ( Data Definition Language, DDL)
- 데이터 정의어란?
- DB를 정의하는 언어, 데이터를 생성, 수정, 삭제등의 데이터 전체 골격을 결정하는 역할을 한다.
- INDEX, VIEW, SCHEMA, DOMAIN, TABLE을 정의하거나, 변경 또는 삭제할 때 쓰이는 언어
- 데이터 베이스 관리자나 설계자가 사용한다.
- 구문
- CREATE : DB & Table 생성
- DROP : DB & Table 삭제
- ALTER : 테이블 수정
- TRUNCAT : 테이블 초기화
- RENAME : 테이블 이름 변경
☆ RDB에서 말하는 데이터와 레코드...
- DB라는 전체 저장소에 테이블이라는 형식의 데이터를 저장하고, 테이블에는 각각의 값에 해당하는 레코드를 행으로 저장한다.
데이터 조작어 (Data Manipulation Language, DML)
- 데이터 조작어란?
- 정의된 DB 데이터(테이블)에 레코드의 값을 조회, 삭제, 수정 등의 작업을 하는 실질적인 수행을 하는 조작어를 일컫는다.
- DB 사용자와 DBMS 간에 상호작용할 수 있는 인터페이스 역할
- 구문
- SELECT : 레코드 조회
- DELETE : 레코드 삭제
- UPDATE : 레코드 수정
- INSERT : 레코드 삽입
데이터 제어어 (Data Controll Language, DCL)
- 데이터 제어어란?
- 데이터 베이스에 대한 접근 권한 제어에 사용하는 언어로, 각종 권한을 부여, 회수한다.
- 접근 권한을 관리함으로써 시스템의 보안성을 유지한다.
-구문
- GRANT : 권한을 부여하는 구문
- REVOKE : 권한을 회수하는 구문
- 트렌젝션 제어어 (Transaction Controll Language, TCL)
- 트랜젝션을 제어하는 언어로, DCL과 함께 묶여서 따로 분리하지 않고 사용하기도 한다.
- 구문
- COMMIT : 정상적으로 수행된 작업을 DB에 영구적으로 반영시키는 구문
- ROLLBACK : 작업 이전의 상태로 돌리는 구문
- SAVEPOINT : ROLLBACK 과 함께 쓰이며 지정된 시점으로 ROLLBACK 하도록 하는 구문
DELETE 와 TRUNCATE/DROP은 Capacity 측면에서 어떤 차이가 있을까?
- 할당된 공간의 데이터만 지우는 DELETE와 달리 TRUNCATE/DROP은 그 공간을 데이터와 함께 통째로 지워버린다는 특징이있다.
- 즉, 데이터만 삭제 -> DELETE, 공간까지 삭제 -> TRUNCATE/DROP
참조 무결성
- 참조 무결성이란?
- DB 상의 참조(외래키)가 모두 유효함을 나타내는 말이다.
- 외래키 제약조건을 통해 강제된다.
- 외래키가 참조하는 테이블의 기본키와 일치하는 값을 가져야 하며, 참조하는 데이터가 삭제(ON DELETE)되거나, 변경(ON UPDATE)될 경우 해당 변경이 외래키에도 적절히 반영되어야 함을 의미합니다.
- 즉, 관계형 DB에서 2개의 관련있는 관계 변수 간의 일관성을 말한다.
- ON DELETE, ON UPDATE : 각각 삭제와 업데이트시 제약조건을 설정해주는 구문이다.
- MySQL
- CASCADE : 변경/삭제 시 삭제
- ON ACTION : 변경/삭제를 거부하는 것 -> 트랜잭션의 끝에서 이를 확인하여 거부 반환
- RESTRICT : 변경/삭제를 거부하는 것 -> 해당 값 접근시 바로 거부 반환
- SET NULL / DEFAULT : 변경/삭제 시 NULL값이나 개발자가 설정한 DEFAULT 값으로 바꾸는 것
참고 자료 : https://velog.io/@ksk5401/DDL-DML-DCL-%EC%9D%B4%EB%9E%80,
https://icedhotchoco.tistory.com/entry/SQL-DDL-DML-DCL-TCL,
https://www.mindscale.kr/docs/mysql/foreign-keys
'DB' 카테고리의 다른 글
순차 IO / 랜덤 IO (0) | 2024.11.14 |
---|---|
구조적 질의어 (SQL, Structured Query Language) ( 3 ) (1) | 2024.11.08 |
구조적 질의어 (SQL, Structured Query Language) ( 1 ) (1) | 2024.11.05 |
MySQL - InnoDB (2) | 2024.11.01 |
MySQL Server (0) | 2024.11.01 |