본문 바로가기
Oracle

Oracle Review : DCL/DDL/DML/TCL 정의 및 종류

by Growing time 2022. 8. 7.
반응형
반응형

강의 들으며 리뷰하기~

 

 

 


 

DCL : Data Control Language

 

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

 

GRANT : 권한 부여

           주관식) Grant 권한 on 테이블 to 유저;

                                With grant option 특정 사용자에게 권한 부여 가능한 권한을 부여함

REVOKE : 권한 회수

           주관식) Revoke 권한 on 테이블 from 유저;

                                With admin option  테이블에 대한 모든 권한 부여

l  권한의 종류 : Select~~~

 

문제 1.

유저 h가 아래의 코드와 같은 작업을 수행할 수 있도록 권한을 부여하는 DCL을 작성하기

Update h_qualification.data
Set col2 =’합격
Where col1 ='SQLD';
정답
Grant select, Update
On h_ qualification.data
To h;

 

 

문제 2.

데이터베이스상에서 많은 사용자들에게 개별적으로 권한을 부여하고 관리하는 어려움을 해소하고자

다양한 권한을 하나의 그룹으로 묶어서 관리할 수 있도록 하는 논리적인 권한의 그룹(명령어) 을 칭하는 말?

= 다양한 권한을 다양한 유저를 대상으로 관리하기 위한 명령어이다.

= 여러 사용자에게 동일한 ROLL 부여 가능하다.

= ROLE의 생성은 [Create Role] 권한을 가진 유저가 할 수 있다.

= 관리자 권한의 명령어는 무엇인가요?

ROLE : 관리자 권한 집합

 


DDL : Data Definition Language

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

 

1.     Create : 데이터베이스 상 테이블 구조 생성

컬럼명  :영문, 한글,숫자 모두 가능 (시작만 문자로 한다.)

데이터타입 : number : 숫자형

              : date : 날짜형

              : varchar2 : 가변길이 문자열 '호호’ != ‘호호       (공백도 센다)

              : char : 고정된 크기 문자열 할당된 길이만큼 문자 채움 ''='   

컬럼 뒤 데이터 유형 지정하는 것은 필수이다.

제약조건 : Constraint

            : Default : 기본값 지정

            : Not null : null 입력 불가

            : Primary key : 기본키 지정 > Not null, Unique한 값(중복 없음)

            : Foreign key : 외래키 지정, 테이블당 여러 개 가능

 

문제 3. 김호호씨가 아래와 같이 테이블 menu를 생성한 후, 유효한 튜플 값 4개를 삽입했다.

이 경우 SQL-a SQL-b의 실행 결과를 각각 구하시오

 

<테이블 생성>
Create table menu(
      메뉴명 varchar(!0) primary key,
      가격 number(!0)
);
<SQL-a> A, B
Select count(*) from menu;
Select count(메뉴명) from menu;
<SQL-b> A, B
Select count(*) from menu;
Select count(가격) from menu;
결과 : A,B 4개 출력된다.
 
count(*) 전체 행의 수 카운트, null포함
count(컬럼명) null 제외한 행 수 카운드
 
메뉴명 컬럼은 PK이므로 null값을 가질 수 없다.
따라서 *을 통해 전체 행을 추출한 sql-a와 메뉴명이란 컬럼명을 명시한 b결과가 동일하다.
 
sql-b : 가격컬럼에 포함된 null값의 개수에 따라 서로 실행 결과가 다를 수 있다.

 

Null 말 문제 대비

l  Null은 모르는 값을 상징하고 값이 없음(부재)를 의미한다.

l  Null Is Null =true

l  Null 과의 모든 비교(ex Null =0)은 알 수 없음(NULL)을 반환함

l  Null은 숫자 0이나 공백 문자(‘ ‘)와 동일하지 않음(값이 있다.)

 

 

 

2.     Alter : 테이블과 컬럼에 대해 이름, 속성 변경, 추가, 삭제 등 구조 수정(변경)

ALTER 테이블명 수정사항  
테이블명 변경
테이블명 다수 동시변경
ALTER table Menu
RENAME table Menu
Rename To ho_Menu ;
To ho_Menu ;
컬럼명 변경 ALTER table Menu Rename Column phone To 전번 ;
컬럼 속성 변경 ALTER table Menu Modify (이름 varchar(20) not null) ;
컬럼 추가 ALTER table Menu Add (거주지역 varchar(10)) ;
컬럼 삭제 ALTER table Menu Drop Column 이름 ;
제약조건 추가/삭제 ALTER table Menu Add
Drop
Constraint ~~ ;
Constraint ~~ ;

 

문제 6 null값이 발생하지 않게 추가하고자 한다. 올바른 SQL문장을 기술하시오

l  Alter table RIDING Modify (Phone varchar(15) Not Null);

 

3.     Drop : 테이블 및 컬럼 삭제 / 구조 삭제

컬럼 삭제 ALTER table Menu Drop Column 이름 ;
테이블 삭제 Drop table Menu; 테이블 관련해서 구조, 데이터 모두 삭제
Truncate table Menu 테이블 데이터만 삭제되고 구조는 살아있다.
Drop table Menu Cascade constraint;
-       해당 테이블의 데이터를 외래키(FK)로 참조한 제약사항도 모두삭제
-       [] 오라클에만 있는 옵션, SQL Server에는 존재하지 않음
-       [] FK제약조건과 참조테이블 먼저 삭제하고 해당 테이블을 삭제
Drop 테이블 정의를 완전 삭제함,
테이블이 사용했던 모든 저장공간을 Release
Truncate 테이블을 초기상태로 만듦,
테이블 최초 형성시 사용했던 저장공간만 남기고 Release

 

4.     Rename : 이름 변경

5.     Truncate : 테이블 초기화

 

 

 

 

 

 

 

 


DML :  Data Manipulation Language

정의된 데이터베이스에 레코드를 입력, 수정, 삭제, 조회하기 위한 명령 언어

 

데이터 변형

 

Insert Insert Into menu (menu_name) Values (‘연어');
Update Update menu SET discount_rate =10 (where name =’연어');
Delete Delete From menu (where name =’연어’);

 

 DML은 자동 commit 반영되지 않는다.

 RollBack, Drop은 되돌릴 수 없다는 말은 ?? [SQL서버]기준 DDL =자동 commit

 

문제)  DELETE에 관한 설명 중 틀린 것은?

1.     삭제된 데이터에 대해 로그를 남길 수 있는 방법이다.

        ð  Truncate(컬럼 남김) Drop(모두 삭제)은 로그(데이터)를 남기지 않는다.

2.     특정 행은 지울 수 없다.  

        ð  Where문을 사용하여 특정 행을 지울 수 있다.                     

3.     삭제된 데이터를 다시 되돌릴 수 있다.

         ð  DB에 반영되기 전까지는 되돌릴 수 있다.

         ð  DDL Truncate Drop은 불가능하다

4.     데이터는 삭제되지만 용량이 줄어들지 않는다.

 

데이터 조회

 다음글에~

 


TCL

트랜잭션을 제어하기 위한 언어

 

  트랜잭션 : 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위

COMMIT 데이터에 대한 변화를 DB에 반영하기 위한 명령어
SAVEPOINT 코드를 분할하기 위한 저장 포인트 지정
ROLLBACK 트랜잭션이 시작되기 이전의 상태로 되돌리기 위한 언어,
최신 Commit이나 특수한 SavePoint로 되돌릴 수 있는 명령어

 

Commit RollBack 효과

1.     데이터 무결성을 보장할 수 있다.

2.     영구적인 변경 전 데이터에 대한 변동사항을 확인할 수 있다.

3.     논리적 연관성 있는 작업을 그룹화하여 처리할 수 있다.

 

l  SAVEPOINT가 없을 경우 가장 최신의 COMMIT 상태로 복원된다.

반응형

'Oracle' 카테고리의 다른 글

Oracle 문제 풀이 리뷰)  (0) 2022.08.15
Oracle Review : Join / 등가 조인 / 외부 조인 / 자가 조인  (0) 2022.08.07
Oracle Review : 서브 쿼리  (0) 2022.07.23
Oracle Review : Group By절  (0) 2022.07.23

댓글