본문 바로가기

카테고리 없음

DCL / DDL / TCL

DCL(Data Control Language)

- 데이터베이스 사용자에게 권한부여, 회수하는 언어

  권한의 종류 : SELET, INSERT, UPDATE, DELETE, REFERENCES, ALTER, INDEX, ALL

 

GRANT :  권한 부여, REVOKE :  권한 회수

권한 부여 GRANT 권한 ON 테이블 TO 유저;
  GRANT 권한 ON 테이블 TO 유저 WITH GRANT OPTION;
>> 부여받은 권한을 다른 유저에게 부여할 수 있게 됨
>> 부모의 권한이 회수될 때 자식의 권한도 회수
  GRANT 권한 ON 테이블 TO 유저 WITH ADMIN OPTION;
>> 부여받은 권한을 다른 유저에게 부여할 수 있게 됨
>> 부모의 권한이 회수되어도 자식의 권한은 유지
권한 회수 REVOKE 권한 ON 테이블 FROM 유저;

 


 

DDL(Data Definition Language)

- 데이터를 보관하고 관리하기 위한 객체의 구조정의하기 위한 언어

 

CREATE : 구조 생성

구조 생성 CREATE TABLE 테이블명 (
        컬럼명1  varchar2(10) primary key,
        컬럼명2  number(5) default 10000,
        컬럼명3  date not null
);

 

* 테이블명과 컬럼명 주의사항

  • 반드시 문자로 시작
  • A-Z, a-z, 0-9, #, $, _ 만 사용 가능
  • 다른 테이블명과 중복 불가능
  • 칼럼 뒤 데이터유형 반드시 지정

 

* 데이터 타입

number 숫자형
date 날짜형
varchar2 가변 길이 문자열
char 고정 길이 문자열
>> 할당된 길이보다 길 경우 자름

 

* 제약조건(CONSTRAINT)

default 기본값 지정
not null null 입력 불가
primary key 기본키 지정
>> PK는 not null이고, 테이블 내 중복 없는 unique한 값
foreign key 외래키 지정
>> 한 테이블 내 여러개 지정 가능

 

ALTER : 구조 변경, RENAME : 이름 변경

테이블명 변경 ALTER TABLE 현재_테이블명 RENAME TO 새_테이블명;
컬럼명 변경 ALTER TABLE 테이블명 RENAME COLUMN 현재_컬럼명 TO 새_컬럼명;
컬럼 속성 변경 ALTER TABLE 테이블명 MODIFY ( 변경할_컬럼명 varchar(10) NOT NULL );
컬럼 추가 ALTER TABLE 테이블명 ADD ( 추가할_컬럼명 varchar(15) );
컬럼 삭제 ALTER TABLE 테이블명 DROP COLUMN 삭제할_컬럼명;
제약 조건 추가/삭제 ALTER TABLE 테이블명 ADD/DROP CONSTRAINT

 

DROP :  구조 삭제, TRUNCATE : 테이블 초기화

컬럼 삭제 ALTER TABLE 테이블명 DROP COLUMN 삭제할_컬럼명;
테이블 삭제 DROP TABLE 삭제할_테이블명;
>> 테이블의 데이터와 구조까지 모두 삭제
  DROP TABLE 삭제할_테이블명 CASCADE CONSTRAINT;
>> 해당 테이블의 데이터를 외래키(FK)로 참조한 제약사항도 모두 삭제
>> Oracle에만 있는 옵션. SQL Server에는 존재하지 않음
>> FK 제약조건과 참조테이블 먼저 삭제하고, 해당 테이블을삭제한다.
테이블 초기화 TRUNCATE TABLE 테이블명
>> 테이블의 데이터만 삭제, 구조는 남음

 


 

TCL(Transaction Control Language)

- 트랜잭션(데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위)을 제어하기 위한 언어

 

COMMIT : 반영, ROLLBACK : 취소, SAVEPOINT : 위치 지정

위치 지정 SAVEPOINT 세이브포인트명;
취소 ROLLBACK TO SAVEPOINT 세이브포인트명;
>> SAVEPOINT가 없을 경우 가장 최신의 COMMIT 상태로 복원
반영 COMMIT;
>> DML은 자동 commit 되지 않음
>> SQL Server 기준 DDL은 자동 commit 됨

 

 

 

 

https://www.youtube.com/watch?v=8uP_E6SyiuM