심심한잉여의 잡동사니

[SQLD] DML,DCL,DDL,TCL 본문

자격증/SQLD

[SQLD] DML,DCL,DDL,TCL

심심한잉여 2022. 5. 6. 15:39
반응형

DBMS
효율적인 데이터 관리뿐만 아니라 예기치 못한 사건으로 인한 데이터의 손상을 피하고 필요시, 필요한 데이터를 복구하기 위한 강력한 기능의 소프트웨어

SQL
DB 관계형에서 데이터 정의,조작,제어를 위해 사용하는 언어

테이블(TABLE)
DB의 기본 단위, 데이터를 저장하는 객체
 - 가로 = 행 = 로우 = 튜플 = 인스턴스
 - 세로 = 열 = 컬럼

데이터 유형
 - CHAR : 고정 길이 문자열
 - VARCHAR2 : 가변 길이 문자열
 - NUMBER : 정수, 실수 등 숫자
 - DATE : 날짜와 시각

CHAR VS VARCHAR 문자열 비교

 - CHAR
공백을 채워서 비교, 우선 짧은 쪽의 끝에 공백을 추가하여 2개의 데이터가 같은 길이가 되도록 한다.
그리고 앞에서부터 한 문자씩 비교한다.
끝의 공백만 다른 문자열은 같다고 판단한다.

 - VARCHAR
맨 처음부터 한 문자씩 비교하고 공백도 하나의 문자로 취급하므로 끝의 공백이 다르면 다른 문자로 판단한다.

제약조건
 - 기본키(PRIMARY KEY) : 테이블에 존재하는 각 행을 한가지 의미로 특정 할 수 있는 한 개 이상의 컬럼
기본키의 제약은 고유키(UNIQUE) + NOT NULL과 동일하다

 - 고유키(UNIQUE KEY) : 고유하게 식별하기 위한 고유 제약, NULL 값 가진 행은 중복 가능

 - 외부 키(FOREIGN KEY) : 다른 테이블의 기본키로 사용되고 있는 관계를 연결하는 컬럼

 - NULL : 아직 정의되지 않은 미지의 값, 현재 데이터를 입력하지 못하는 경우

 - NOT NULL : NULL이 들어오지 못하게 만드는 제약

 - DEFAULT : 시본값을 사전에 설정, 데이터 지정하지 않는 경우 사전에 정의된 기본값 자동 먼저 입력됨


DDL(데이터 정의어)

데이터 구조를 정의하는데 사용되는 명령어 - CREATE, ALTER, DROP, RENAME, TRUNCATE

테이블 생성
CREATE TABLE TEST_TABLE(TEST_COL VARCHAR2(50) NOT NULL)

테이블 구조 변경
 - 테이블 추가 : ALTER TABLE TEST_TABLE ADD(DDL_TEST VARCHAR2(50))
 - 테이블 삭제 : ALTER TABLE TEST_TABLE DROP COLUMN DDL_TEST
 - 테이블 수정 : ALTER TABLE TEST_TABLE MODIFY(TEST_COL_ALTER VARCHAR2(50) DEFAULT 'test' NOT NULL)
 - 제약조건 삭제 : DROP CONSTRAINT
 - 테이블 컬럼명 수정 : RENAME TEST_TABLE TO TEST_TABLE_RENAME
 - 테이블 삭제 : DROP TABLE TEST_TABLE_RENAME
 - 테이블 데이터 삭제 : TRUNCATE TABLE TEST_TABLE
 - 컬럼명 변경 : ALTER TABLE TEST_TABLE RENAME COLUMN TEST_COL TO TEST_COL_RENAME


DML(데이터 조작어)

자료들을 입력, 조회, 수정, 삭제 - INSERT, SELECT, UPDATE, DELETE
실시간으로 테이블에 영향을 미치지 않으며 COMMIT을 이용해 TRANSACTION을 종료해야 실제 테이블에 반영

 - 입력 : INSERT INTO TEST_TABLE (TEST_COL) VALUE('TEST1')

 - 조회 : SELECT DISTINCT TEST_COL AS T_C FROM TEST_TABLE WHERE TEST_COL = 'TEST' ORDER BY TEST_COL

 - 수정 : UPDATE TEST_TABLE  SET TEST_COL = 'TEST_UPDATE' 

 - 삭제 : DELETE (FROM) TEST_TABLE (FROM 생략 가능)


TCL(트랜젝션 제어어)

DML에 의해 조작된 결과를 작업단위(트랜젝션) 별로 제어하는 명령어 - COMMIT, ROLLBACK

 - COMMIT : 올바르게 반영된 데이터를 DB에 반영
 - ROLLBACK : COMMIT 되지 않은 모든 트랜젝션을 트랜젝션 시작 이전의 상태로 되돌림
 - SAVEPOINT : 저장 지점 설정 3개까지 가능

트랜젝션
 - 밀접히 관련되어 분리될 수 없는 1개 이상의 DB조작, 논리적 연산단위

트랜젝션의 특징 4가지 (ACID)

 - 원자성 : 트랜젝션에 정의된 연산들은 모두 성공하던지 모두 실패하여 실행되지 않은 상태로 남아 있어야 한다.

 - 일관성 : 실행 전 데이터베이스 내용이 잘못되어 있지 않다면 트랜젝션 실행 이후에도 데이터가 같아야 한다.

 - 지속성 : 트랜젝션이 성공적으로 수행되었다면 데이터베이스에 영구적으로 저장된다.

 - 고립성 : 트랜젝션 실행 도중 다른 트랜젝션의 영향을 받으면 안된다.


DCL

유저를 생성하고 권한을 제어할 수 있는 명령어
대부분의 데이터 베이스에서는 데이터 보호와 보안을 위해 유저와 권한을 관리한다.
개별 오브젝트에 대한 작업을 위해 오브젝트 권한 부여 필요

 - GRANT : 권한 부여
 - REVOKE : 권한 취소 

GRANT CREATE USER TO SCOTT
GRANT CREATE  SESSION TO PJS
GRANT CREATE TABLE TO PJS
REVOKE CREATE TABLE FROM PJS

반응형