DCL
유저를 생성하고 권한을 제어할 수 있는 명령어
* Oracle
아이디와 비밀번호 방식으로 데이터 베이스에 접속.
유저마다 스키마에 오브젝트 생성 등의 권한을 부여 받음.
* SQL Server
방식 1 ) Microsoft Windows 인증방식으로 Windows에 대한 로그인 정보를 가지고 접속.
Windows에서 사용자 ID를 확인.
방식 2) Windows 인증방식, Oracle 인증 방식 둘다 가능.
Oracle 은 유저마다 스키마에 오브젝트 생성 권한을 가진다.
SQL Server 유저는 단지 스키마에 대한 권한만을 가진다.
스키마가 테이블과 같은 오브젝트를 소유를 하게 되며 유저는 스키마에 대해 특정한 권한을 가지는 것이다.
* 공통
PROCEDURE 는 EXECUTE 권한만 있음
테이블에만 INDEX 가능 ( VIEW, SEQUESNCE, PROCEDURE는 인덱스 불가능)
VIEW는 ALTER 불가능
ROLE
관리해야 할 유저가 점점 늘어 나고 자주 변경되는 상황, 많은 유저들과 권한들 사이에서 중개 역할
데이터베이스 관리자는 ROLE을 생성하고, ROLE에 각종 권한들을 부여한 후
ROLE을 다른 ROLE이나 유저에게 부여할 수 있다
빠르고 정확하게 필요한 권한을 부여할 수 있게 된다.
CONNECT는 CREATE SESSION과 같은 로그인 권한이 포함
RESOURCE는 CREATE TABLE과 같은 오브젝트의 생성 권한이 포함
유저를 생성할 때 기본 권한 CONNECT와 RESOURCE ROLE
DROP USER는 유저를 삭제하는 명령어
CASCADE 옵션을 주면 해당 유저가 생성한 오브젝트를 먼저 삭제한 후 유저를 삭제
SQL Server에서는 Oracle과 같이 Role을 자주 사용하지 않음
인스턴스 수준을 요구하는 로그인에는 서버 수준 역할부여
데이터베이스 수준을 요구하는 사용자에게는 데이터베이스 수준 역할을 부여한다
PL/SQL
* PL/SQL은 Block 구조로 되어 있어 각 기능별로 모듈화가 가능하다
* 변수, 상수 등을 선언하여 SQL 문장 간 값을 교환한다
* IF, LOOP 등의 절차형 언어를 사용하여 절차적인 프로그램이 가능하도록 한다
* DBMS 정의 에러나 사용자 정의 에러를 정의하여 사용할 수 있다
* PL/SQL은 Oracle에 내정되어 있으므로 Oracle과 PL/SQL을 지원하는 어떤 서버로도 프로그램을 옮길 수 있다
* PL/SQL은 응용 프로그램의 성능을 향상시킨다
* PL/SQL은 여러 SQL 문장을 Block으로 묶고 한 번에 Block 전부를 서버로 보내기 때문에 통신량을 줄일수 있다
* PL/SQL Block 프로그램을 입력받으면 SQL 문장과 프로그램 문장을 구분하여 처리.
* 프로그램 문장은 PL/SQL 엔진이 처리.
SQL 문장은 Oracle 서버의 SQL Statement Executor가 실행하도록 작업을 분리하여 처리.
PL : EXCEPTION
T-SQL : ERROR
T-SQL
* 변수 선언 기능 @@이라는 전역변수(시스템 함수)와 @ 이라는 지역변수가 있다.
* 지역변수는 시용자가 자신의 연결 시간 동안만 사용히기 위해 만들어지는 변수
* 전역변수는 이미 SQL서버에 내정된 값
* 데이터 유형 (Data Type) 을 제공한다.
즉 int, float, varchar 등의 자료형을 의미한다.
* 연산자(Operator)
산술연산자( +, -, *, /)와 비교연산자(=, <. > , <>) 논리연신자(and, or, not) 사용이 가능
* 흐름 제어 기능
IF-ELSE와 WHILE, CASE-THEN 사용이 가능하다.
* 주석 기능
한줄 주석 : -- 뒤의 내용은 주석
범위 주석 : /* 내용 */ 형태를 사용히며, 여러 줄도 가능
WITH 부분에 지정할 수 있는 옵션은 3가지가 있다.
1) RECOMPILE
데이터베이스 엔진에서 현재 프로시저의 계획을 캐시하지 않고 프로시저가 런타임에 컴파일 된다
데이터베이스 엔진에서 저장 프로시저 안에 있는 개별 쿼리에 대힌 계획을 삭제하려 할 때 RECOMPILE
쿼리 힌트를 사용한다.
2) ENCRYPTION
CREATE PROCEDURE 문의 원본 텍스트가 알아보기 어려운 형식으로 변환된다. 변조된 출력은 SQL
Server의 카탈로그 뷰 어디에서도 직접 표시되지 않는다. 원본을 볼 수 있는 방법이 없기 때문에 반드시
원본은 백업을 해두어 야 한다.
3) EXECUTE AS
해당 저장 프로시저를 실행할 보안 컨텍스트를 지정한다
<주의사항>
* PL/SQL에서 사용하는 SELECT 문장은 결과값이 반드시 있어야 히며, 그 결과 역시 반드시
하나여야 한다. 조회 결과가 없거나 하나 이상인 경우에는 에러를 발생시킨다. T-SQL에서는 결과 값이 없어도
에러가 발생하지 않는다
* T-SQL을 비롯하여 일반적으로 대입 연산자는 =을 시용하지만 PL/SQL에서는 :=를 사용한다
* Function 이 Procedure와 다른 점은 RETURN을 사용해서 하나의 값을 반드시 되돌려 줘야 한다는 것이다
Trigger
절차형 SQL을 이용해서 PROCEDURE, TRIGGER, USER DEFINED FUNCTION을 만들 수 있다
'DB > SQLD & SQLP' 카테고리의 다른 글
SQL 최적화 기본 원리 (옵티마이저와 실행계획, 인덱스, 조인수행원리) (0) | 2019.03.04 |
---|---|
제21회 SQLD 시험 후기 (1) | 2016.06.08 |
[SQLD] 정리 4 ( 반정규화 ) (0) | 2016.06.03 |
[SQLD] 정리 2 ( JOIN, 계층형질의, GROUP, WINDOW FUNCTION ) (0) | 2016.06.02 |
[SQLD] 정리 1 (데이터 모델링의 이해, SQL 기본) (0) | 2016.05.30 |