## 공부정리
과목2 2장 SQL 활용 4편
7) DCL
8) 절차형 SQL
#7 DCL
1 DCL
- 유저를 생성하거나 권한을 제어하는 명령어, 보안을 위해 필요
- GRANT : 권한 부여 (SQL -> GRANT 권한 ON 오브젝트 TO 유저명;)
- REVOKE : 권한 제거 (SQL -> REVOKE 권한 ON 오프젝트 TO 유저명;)
2 권한
- SELECT, UPDATE, INSERT, DELETE, ALTER, ALL : DML 관련 권한
- REFFERENCES : 지정된 테이블을 참조하는 제약조건을 생성하는 권한
- INDEX : 지정된 테이블에서 인덱스를 생성하는 권한
3 Oracle 기본 유저 종류
유저 | 역할 |
SCOTT | Oracle 테스트용 샘플 유저 Default 패스워드 : TIGER |
SYS | DBA ROLE을 부여받은 유저 |
SYSTEM | 데이터베이스의 모든 시스템 권한을 부여받은 DBA 유저 Oracle 설치 완료 시에 패스워드 설정 |
4 ROLE을 이용한 권한 부여
- 많은 데이터베이스에서 유저들관 권한들 사이에서 중개 역할을 하는 ROLE을 제공
- 권한의 집합, 권한을 일일이 부여하지 않고 ROLE로 편리하게 여러 권한을 부여
- 시스템 권한, 오브젝트 권한 모두 부여 가능
- ROLE은 유저에게 직접 부여하거나 다른 ROLE에 포함되어 유저에게 주여될 수 있다
Oracle>>
CONN SYSTEM/MANAGER
CREATE ROLE 롤이름;
GRANT 부여권한, 부여권한, ...TO 롤이름;
GRANT 롤이름 TO 유저명;
5 Oracle에서 제공하는 ROLE 종류
- CONNECT : CREATE SESSION 과 같은 로그인 권한
- RESOURCE : CREATE TABLE과 같은 오브젝트(리소스) 생성 권한
6 유저 삭제 명령어와 권한
- DROP USER 유저명 CASCADE;
- CASCADE 옵션은 해당 유저가 생성한 오브젝트를 먼저 삭제 후 유저를 삭제
7 SQL Server에서 서버 수준 역할명
- 서버 수준 역할명(SQL Server 사례)
7 SQL Server에서 데이터베이스 수준 역할명
- 데이터베이스 수준 역할명(SQL Server 사례)
#8 절차형 SQL
1 절차형 SQL
- 일반적인 개발 언어처럼 절차 지향적인 프로그램을 작성할 수 있도록 DBMS 벤더별로 절차별 SQL 제공
- SQL문의 연속적인 실행이나 조건에 다른 분기처리를 이용하여 특정 기능을 수행하는 저장 모듈을 생성
2 PL/SQL (Oracle)
- Oracle의 PL/SQL은 Block 구조로 되어 있고 Block 내에는 DML 문장과 QUERY 문장, 그리고 철파형 언어(IF, LOOP)
등을 사용할 수 있음
- 절차적 프로그래밍을 가능하게 하는 트랜잭션 언어
- PL/SQL 기본 문법
CREATE OR REPLACE Procedure 프로시저명 (argument1 mode data_type1, ...) IS AS ...
BEGIN .....
EXCEPTION ....
END; /
- 생성된 프로시저 삭제
DROP Procedure 프로시저명;
3 T-SQL (SQL Server)
- T-SQL은 근본적으로 SQL Server를 제어하기 위한 언어
- MS사에서 ANSI/ISO 표준의 SQL에 약간의 기능을 더 추가해 보완
① 기능
- 변수 선언 기능 : @@ - 전역변수(시스템함수), @ - 지역변수
- 데이터 타입을 제공 (INT,FLOAT,VARCHAR 등의 자료형)
- 산술연산자, 비교연산자, 논리연산자 사용이 가능
- 흐름 제어 기능 : IF-ELSE 와 WHILE, CASE-THEN 사용이 가능하다.
- 주석 기능 : 한줄 주석은 -- 뒤의 내용 주석, 범위 주석은 /* 내용 */ 형태를 사용하며 여러 줄도 가능
② T-SQL 기본 문법
CREATE Procedure 스키마명.프로시저명 @parameter1 data_type 1 mode, ...
WITH AS ...
BEGIN ...
ERROR 처리 ...
END;
DROP Procedure 스키마명.프로시저명
4 프로시저 (Procedure)
- 주로 DML을 사용해 주기적으로 진행해야 되는 작업을 저장
- 별도의 호출을 통해 실행
- CREATE OR REPLACE PROCEDURE 문으로 프로시저를 생성
* OR REPLACE는 기존에 같은 이름의 프로시저가 있으면 새로운 내용으로 덮어쓴다.
- 작업의 결과를 DB에 저장 (트랜잭션 처리)
- BEFIN ~ END문 사이에 작업 영역 생성(1~3은 섞어서 사용하고, 4번만 마지막에 작성)
-> 1) 조건/반복 영역
-> 2) SQL을 사용해 데이터 관리하는 영역
-> 3) 예외 처리 영역
-> 4) 트랜잭션 영역(작업 결과를 실제로 반영하거나 취소하는 영역)
5 사용자 정의 함수(User Defined Fuction)
- 절차형 SQL을 로직과 함께 DB내에 저장해 놓은 명령문 집합
- REUTRN을 통해 반드시 하나의 값 반환(↔프로시저는 DB에 저장)
6 트리거(Trigger)
- DML문이 수행되었을 때 자동으로 동작하는 프로그램(↔프로시저는 EXECUTE로 실행)
- DCL과 TCL 사용 불가(↔프로시저는 사용 가능)
- 데이터의 무결성과 일관성을 위해서 사용
- Trigger는 데이터베이스 보안의 적용, 유효하지 않은 트랜잭션의 예방, 업무 규칙 자동 적용 제공 등에 사용
7 프로시저와 트리거의 차이
- 프로시저는 BEGIN~END절 내에 COMMIT, ROLLBACK과 같은 트랜잭션 종료 명령어 사용
- 데이터베이스 트리거는 BEGIN~END 절 내에 사용할 수 없다.
프로시저 | 트리거 |
CREATE Procedure 문법사용 | CREATE Trigger 문법사용 |
EXECUTE 명령어로 실행 | 생성 후 자동으로 실행 |
COMMIT, ROLLBACK 실행 가능 | COMMIT, ROLLBACK 실행 안됨 |
'SQL 공부일지' 카테고리의 다른 글
SQL 공부 일지 12일차 230901 (0) | 2023.09.01 |
---|---|
SQL 공부 일지 10일차 230829 (0) | 2023.08.30 |
SQL 공부 일지 9일차 230825 (1) | 2023.08.27 |
SQL 공부 일지 8일차 230823 (0) | 2023.08.23 |
SQL 공부 일지 7일차 230820 (1) | 2023.08.20 |