SQL 개발자 시험 과목

 

과목 과목별 세부 항목 문항수 배점
데이터 모델링의 이해 데이터 모델링의 이해 10 20(문항당 2)
데이터 모델과 성능
SQL 기본 및 활용 SQL 기본 40 80(문항당 2)
주관식(8)
SQL 활용
SQL 최적화 기본 원리

 

- 검정 시간 90(1시간 30)

- 합격 기준 : 총점 60점 이상(과목별 40% 미만 과락)

- 50문제 중 30문제 맞추면 합격

 

- 20문제를 틀리면 합격. 포기할 부분은 포기(?)

 

지난번 “[SQL 개발자] 데이터 모델링의 이해 자격증 시험 요약에 이러 SQL 기본에 대해 요약을 해보았습니다.

 

아래 내용은 SQL 개발자 자격증에 대한 서적 중 [이기적 SQL 개발자]를 참고하여 요약을 하였습니다.

 

sql developer database

 

 

1. 관계형 데이터베이스(Relation Database)

 

1.1 데이터베이스의 종류

데이터를 어떠한 형태의 자료구조로 사용하느냐에 따라 분류

데이터베이스 설명
계층형 - 트리(Tree) 구조로 데이터를 저장하고 관리
- 1:N 관계 형성
네트워크형 - 오너(Owner)와 멤버(Member) 형태로 데이터를 저장
- 1:N, M:N 표현도 가능 하다.
관계형 - 릴레이션에 데이터를 저장하고 관리 한다.
- 집합연산과 관계연산이 가능 하다.

 

1) 집합 연산

집합 연산 설명
합집합(Union) - 두 개의 릴레이션을 하나로 합치는것
- 중복된 행(튜플)은 한 번만 조회된다.
차집합(Difference) 본래 릴레이션에는 존재하고 다른 릴레이션에는 존재하지 않는것 조회
교집합(Intersection) 두 개의 릴레이션 간에 공통된 것을 조회
곱집합( 각 릴레이션에 존재하는 모든 데이터를 조합하여 연산

 

2) 관계 연산

관계 연산 설명
선택 연산(Selection) 릴레이션에서 조건에 맞는 행(튜플)만을 조회
투영 연산(Projection) 릴레이션에서 조건에 맞는 속성만을 조회
결합 연산(Join) 여러 릴레이션의 공통된 속성을 사용해서 새로운 릴레이션을 만들어 낸다.
나누기 연산(Division) 기준 릴레이션에서 나누는 릴레이션이 가지고 있는 속성과 동일한 값을 가지는 행(튜플)을 추출하고 나누는 릴레이션의 속성을 삭제한 후 중복된 행을 제거하는 연산

 

3) 테이블(Table)의 구조

구성 요소 설명
기본키 (Primary key) 하나의 테이블에서 유일성(Unique)과 최소성, Not Null을 만족하면서 해당 테이블을 대표하는 것
(Row) 하나의 테이블에 저장되는 값으로 튜플(Tuple)이라고도 한다.
칼럼 (Column) 어떤 데이터를 저장하기 위한 필드(Field)로 속성이라고도 한다.
외래키 (Foreign key) - 다른 테이블의 기본키를 참조(조인)하는 칼럼
- 관계 연산 중에서 결합 연산(조인:Join)을 하기 위해서 사용

 

 

2. SQL(Structured Query Language) 종류

 

2.1 SQL(Structured Query Language) 종류

관계형 데이터베이스의 구조를 정의, 데이터 조작, 데이터 제어등을 할 수 있는 절차형 언어.

종류 설명
DDL : 데이터 정의어
(Data Definition Language)
관계형 데이터베이스의 구조를 정의하는 언어
(CREATE, ALTER, DROP, RENAME, TRUNCATE)
DML : 데이터 조작어
(Data Manipulation Language)
테이블에 저장된 데이터를 조작(입력,수정,삭제,조회) 한다.
(SELECT, INSERT, UPDATE, DELETE)
DCL : 데이터 제어어
(Data Control Language)
데이터베이스의 접근 권한을 부여, 제거하는 언어
(GRANT, REVOKE)
TCL : 트랜잭션 제어어
(Transaction Control Language)
DML문에 의한 변경사항을 관리(트랜잭션 제어)
(COMMIT, ROLLBACK, SAVEPOINT)

 

2.2 트랜잭션의 특성

특성 설명
원자성(Atomicity) 트랜잭션에 포함된 명령들은 모두 수행되거나, 모두 수행 안되어야 한다. (All or Nothing)
일관성(Consistancy) - 트랜잭션 실행 결과로 테이터베이스의 상태가 모순되지 않아야 한다.
- 트랜잭션 실행 후에도 일관성이 유지 되어야 한다.
고립성(Isolation) - 트랜잭션은 다른 트랜잭션과 독립적으로 실행되어야 한다.
- 부분적인 실행 결과를 다른 트랜잭션이 볼 수 없다.
지속성(Durability) 트랜잭션의 결과는 반드시 데이터베이스에 반영되어야 한다.

 

2.3 sql 실행순서

순서 설명
파싱(Parsing) - SQL문의 문법 확인과 SQL 서버가 이해할 수 있는 단위들로 분해.
- 분해, 분석된 SQL문을 Library Cache에 저장
실행(Execution) Optimizer가 수립한 실행 계획에 따라 SQL 실행
추출(Fetch), 인출 실행 결과의 데이터를 읽어서 전송한다.

 

 

3. DDL(Data Definition Language) : 관계형 데이터베이스의 구조를 정의하는 언어.

 

Table 관련 SQL

1) Table 생성 : Create Table [Table ] ( Column 정보, ...);
2) Table 변경 : Alter Table
- Table 명 변경
- Column 변경
3) Table 삭제 : Drop Table
4) View 생성 : Create View
5) View 삭제 : Drop View

 

Column 관련 SQL

1) Column 추가 : Alter Table ~ Add
2) Column 명 변경 : Alter Table ~ Rename Column ~ To
3) Column Type 변경 : Alter Table ~ Modify
4) Column 삭제 : Alter Table ~ Drop Column

 

3.1 Table 생성

Table 생성문의 구조



Create Table



설명

Create Table Create Table [Table ] (
   Column 설정,
);
Column 정보 - Column
- Data Type
- 기본 값(Default)
Data Type - Char : 고정된 크기의 문자 데이터
- Varchar2 : 가변길이의 문자열 데이터
- Number : 숫자 데이터
- Date : 날짜 데이터
기본키 - Column 명 옆에 primary key로 설정
- Constraint로 설정

Table 생성문을 이용하여 DEPTEMP 테이블을 생성하는 명령어 예제.

Create Table DEPT (
   deptno char(4) primary key,
   deptname varchar2(20)
);
Create Table EMP (
   empno number(10),
   ename varchar2(20),
   sal     number(10, 2) default 0,
   deptno char(4) not null,
   createdate date default sysdate,
   constraint emppk primary key(empno),
   constraint deptfk foreign key(deptno) references dept(deptno) ON DELETE CASCADE
);

 

3.2 Table 변경

Table 명을 변경하는 명령어

ALTER TABLE [old table ] RENAME TO [new table ];

   ALTER TABLE EMP RENAME TO NEWEMP;

 

3.3 Table 삭제

DROP TABLE [table ];

 

CASCADE CONSTRAINT 옵션 : 외래키로 참조한 슬레이브 테이블과 관련된 사항도 삭제한다.

 

3.4 Column 관련

Table의 구성 요소인 column을 변경하는 명령어

1) Column 추가

ALTER TABLE [table ] ADD (column 정보);

ALTER TABLE emp ADD (age number(2) default 1);

 

2) Column 변경

ALTER TABLE [table ] MODIFY (new column 정보);

  ALTER TABLE emp MODIFY (age number(3) default 0);

 

3) Column 명 변경

ALTER TABLE [table ] RENAME COLUMN [old column ] TO [new Column ];

   ALTER TABLE emp RENAME COLUMN age TO na2;

 

4) Column 삭제

ALTER TABLE [table ] DROP COLUMN [삭제할 column ];

ALTER TABLE emp DROP COLUMN na2;

 

3.5 View 생성

ViewTable 전체를 보여주기 싫거나 여러 개의 Table에서 필요한 column 정보만 추출 하여 사용할 때 생성하는 가상의 Table 이다.

CREATE VIEW [View ] AS SELECT * FROM [table ];

CREATE VIEW vemp AS SELECT * FROM emp;

 

3.6 View 삭제

DROP VIEW [View ];

DROP VIEW vemp;

 

3.6 View의 특징

- 뷰가 참조한 테이블의 내용이 변경 되면, 뷰도 자동적으로 변경 된다.
- 민감한 column은 공개하지 않아도 되므로 보안성을 향상 시킨다.
- 뷰는 가상의 테이블로 원본 Table에 영향을 받으므로 입력, 수정, 삭제에는 제약이 있다.
- 뷰는 Table로 생성된 것이 아니므로 Alter문을 사용하여 변경할 수 없다.
- 뷰의 제거는 Drop문을 사용하여 삭제한다. , 생성과 삭제만 가능 하다.

 

 

4. DML(Data Manipulation Language) : 데이터 조작어

DDL에서 CREATE문으로 생성한 Table에 실제로 데이터를 입력하고 수정, 삭제, 조회 하는 명령어

1. Insert : 테이블에 신규 데이트를 추가 한다.
2. Select : 테이블에 들어있는 데이터를 조회 한다.
3. Update : 테이블에 들어있는 데이터를 수정 한다.
4. Delete  : 테이블에 들어있는 데이터를 삭제 한다.

 

4.1 Insert

INSERT INTO [table ](column1, column2, ...) VALUES(expression1, expression2, ...);

INSERT INTO DEPT(deptno, deptname) VALUES(‘0001’, ‘인사과’);

INSERT INTO DEPT(deptno, deptname) VALUES(‘0002’, ‘총무과’);

 

4.2 Select

SELECT * FROM [table ];
SELECT column1, column2, ... FROM [table ];

SELECT * FROM dept;

SELECT deptno, deptname FROM dept;

 

4.3 Update

UPDATE [table ]
SET column1 = expression1
    , column2 = expression2
    ...
WHERE column1 = expression;

UPDATE dept

   SET deptname = ‘기획실

WHERE deptno = ‘0001’;

 

4.4 Delete

DELETE FROM [table ]
 WHERE column1 = expression1
column2 = expression2
...;

DELETE FROM dept

 WHERE deptno = ‘0002’;

 

 

5. WHERE

 

프로그래밍 언어의 IF 문과 같은 조건 절에 해당하는 기능을 한다.

데이터를 조회, 수정, 삭제 하기 위한 선별 조건으로 사용된다.

 

5.1 연산자

  - 비교 연산자

비교 연산자 설명
= (A = B) AB와 같은 것 조회
< (A < B) AB보다 작은 것 조회
<= (A <= B) AB보다 작거나 같은 것 조회
> (A > B) AB보다 큰 것 조회
>= (A >=B) AB보다 크거나 같은 것 조회

 

  - 부정 비교 연산자

부정 비교 연산자 설명
!= (A != B) A B가 같지 않은 것 조회
^= (A ^= B) A B가 같지 않은 것 조회
<> (A <> B) A B가 같지 않은 것 조회
NOT [column ] = (NOT A = B) A B가 같지 않은 것 조회
NOT [column ] > (NOT A > B) A B 보다 크지 않은 것 조회

 

- 논리 연산자

논리 연산자 설명
AND (BL1 AND BL2) 조건 B1과 조건 B2가 모두 참이어야 true
OR B1 OR B2) B1, B2 조건중 하나만 참이어도 true
NOT (NOT B1) B1 조건이 참이면 false, 거짓이면 true

 

- SQL 연산자

SQL 연산자 설명
LIKE ‘%문자열%’
LIKE ‘_문자열_’
문자열을 포함하는 ‘%’ 위치의 모든 값 조회
문자열을 포함하고 ‘_’ 위치의 단일 문자 조회
BETWEEN A AND B AB 사이의 값 조회
IN (list) list와 일치하는 값(OR 조건) 조회
A IS NULL A NULL 값 조회

 

- 부정 SQL 연산자

부정 SQL 연산자 설명
NOT BETWEEN A AND B AB 사이에 해당하지 않는 값
NOT IN (list) list와 일치하지 않는 값 조회
A IS NOT NULL ANULL이 아닌 값 조회

 

5.2 LIKE

와일드 카드(%, _)를 이용하여 조회를 한다.

와일드 카드 설명
% - 모든 것을 조회 한다.
- ‘%’ : ‘로 시작하는 모든 데이터 조회
- ‘%’ : ‘로 끝나는 모든 데이터 조회
_(underscore) - 한 개의 단일 문자를 대체
- ‘_코딩’ : ‘_’에 한글자만 다른 모든 것 조회

 

5.3 BETWEEN AND

BETWEEN A AND B : A B 사이의 범위에 포함되는 값 조회

 

5.4 IN

IN (list) : list에 동일 값이 있으면 참인 조건.

 

5.5 NULL 관련 함수

IS NULL : Null 값 조회

IS NOT NULL : Null 아닌 값 조회

NULL 함수 설명
NVL(A, V1) ANULL이면 V1 출력
NVL2(A, V1, V2) ANULL이 아니면 V!, NULL 이면 V2 출력
NULLIF(A,exp1, exp2) exp1 exp2가 같으면 NULL, 다르면 exp1 출력
COALESCE(exp1, exp2, exp3, ...) exp1부터 NULL이 아닌 첫번 째 값 출력

 

 

6. GROUP 연산

 

6.1 GROUP BY

Column에 동일한 값을 가진 행을 그룹화하여 합계, 평균, 최대값, 최소값 등을 계산 한다.

HAVING구를 이용하여 조건을 추가할 수 있다.

(예제는 Oracle HR 계정을 이용하여 테스트)

 

SQL> SELECT JOB_ID, SUM(SALARY)
  2  FROM EMPLOYEES
  3  GROUP BY JOB_ID;
 
JOB_ID               SUM(SALARY)
-------------------- -----------
IT_PROG                    28800
AC_MGR                     12008
AC_ACCOUNT                  8300
ST_MAN                     36400
PU_MAN                     11000
AD_ASST                     4400
AD_VP                      34000
SH_CLERK                   64300
FI_ACCOUNT                 39600
FI_MGR                     12008
PU_CLERK                   13900

 

Having을 사용하여 조건을 추가한 경우.

SQL> SELECT JOB_ID, SUM(SALARY)
  2  FROM EMPLOYEES
  3  GROUP BY JOB_ID
  4  HAVING SUM(SALARY) > 10000;
 
JOB_ID               SUM(SALARY)
-------------------- -----------
IT_PROG                    28800
AC_MGR                     12008
ST_MAN                     36400
PU_MAN                     11000
AD_VP                      34000
SH_CLERK                   64300
FI_ACCOUNT                 39600
FI_MGR                     12008
PU_CLERK                   13900
SA_MAN                     61000
MK_MAN                     13000

 

HAVINGWHERE를 같이 사용하면 먼저 WHERE에 의해 데이터들이 걸러지고 남은 데이터를 사용하여 GROUP BY HAVING이 진행 된다.

 

6.2 집계 함수 종류

집계함수 설명
COUNT() 행 수를 조회한다.
SUM() 합계를 계산한다.
AVG() 평균을 계산한다.
MAX() MIN() 최대값과 최소값을 계산한다.
STDDEV() 표준편차를 계산한다.
VARIAN() 분산을 계산한다.

 

SQL> SELECT COUNT(EMPLOYEE_ID), AVG(SALARY), MAX(SALARY), MIN(SALARY)
  2  FROM EMPLOYEES;
 
COUNT(EMPLOYEE_ID) AVG(SALARY) MAX(SALARY) MIN(SALARY)
------------------ ----------- ----------- -----------
               107  6461.83178       24000        2100

 

COUNT(*) NULL값을 포함한 모든 행의 수를 계산한다.

COUNT(칼럼명) NULL을 제외한 행 수를 계산한다.

 

6.3 SELECT 문 실행 순서

5  SELECT JOB_ID, SUM(SALARY)
  1  FROM EMPLOYEES
  2  WHERE SALARY > 5000
  3  GROUP BY JOB_ID
4  HAVING SUM(SALARY) > 10000
6  ORDER BY SALARY;

 

 

7. 명시적(Explicit) 형변환과 암시적(Implicit) 형변환

 

숫자와 문자열의 비교, 문자열과 날짜의 비교 등 데이터타입이 서로 같지않을 때 사용한다.

두 개의 데이터의 데이터 타입이 일치하도록 변환하는 것이다.

 

7.1 명시적(Explicit) 형변환

개발자가 SQL을 사용할 때 직접 형변환 함수를 사용해서 변환 한다.

[형변환 함수]

형변환 함수 설명
TO_NUMBER(문자열) 문자열을 숫자로 변환한다.
TO_CHAR(숫자, 날짜,[ FORMAT]) 숫자 혹은 문자를 지정된 FORMAT문자로 변환한다.
TO_DATE(문자열, FORMAT) 문자열을 지정된 FORMAT의 날짜형으로 변환한다.

 

7.2 암시적(Implicit) 형변환

개발자가 형변환을 하지 않은 경우 데이터베이스 관리시스템이 자동으로 형변환되는 것을 의미한다.

 

 

8. 내장형 함수

모든 데이터베이스 제품에는 제조사별로 조금씩 다르지만 비슷한 함수가 준비되어 사용자가 직접 구현하지 않고도 사용 가능하도록 되어 있다.

내장 함수는 형변환 함수, 문자열 함수, 숫자형 함수, 날짜형 함수 등이 있다.

 

8.1 문자열 함수

문자열 함수 설명
ASCII(문자) 문자 또는 숫자를 입력 하여 아스키코드 값으로 반환
CAHR(아스키 코드값) 아스키 코드값을 문자로 반환
SUBSTR(문자열, m, n) 컬럼 또는 문자열, m번 위치부터, n개를 골라낸다
CONCAT(문자열1,문자열2) 문자열1과 문자열2를 결합한다. ‘||’ 또는 ‘+’
LOWER(문자열) 영문자를 소문자로 변환
UPPER(문자열) 영문자를 대문자로 변환
LENGTH(문자열), LEN(문자열) 문자열의 길이를 반환
LTRIM(문자열, 제거할 문자) - 왼쪽에 있는 지정된 문자를 제거
- 제거할 문자를 생략 하면 공백 제거
RTRIM(문자열, 제거할 문자) - 오른쪽에 있는 지정된 문자를 제거
- 제거할 문자를 생략 하면 공백 제거
TRIM(문자열, 제거할 문자) - 왼쪽 및 오른쪽에 있는 지정된 문자를 제거
- 제거할 문자를 생략 하면 양쪽 공백 제거

 

8.2 숫자형 함수

숫자형 함수 설명
ABS(숫자) 숫자의 절대값을 돌려준다
SING(숫자) 숫자가 양수인지. 음수인지, 0인지를 구별한다
MOD(숫자1, 숫자2) - 숫자1을 숫자2로 나누어 나머지값을 리턴한다.
- % 연산자를 사용해도 된다.
CEIL/CEILING(숫자) 숫자보다 크거나 같은 최소 정수를 리턴
FLOOR(숫자) 숫자보다 작거나 같은 최대 정수를 리턴
ROUND(숫자, m) - 숫자를 소수점 m자리에서 반올림하여 리턴
- m을 생략하면 기본값은 0이다.
TRUNC(숫자, m) - 숫자를 소수점 m자리에서 잘라서 버린다.
- m을 생략하면 기본값은 0이다.

 

 

9. DECODE 문과 CASE

 

9.1 DECODE

프로그램 언어의 IF문과 동일한 기능으로 생각하면 된다.

두 개의 값을 비교하여 같으면 참을 다르면 거짓을 실행한다.

SQL> SELECT DECODE(EMPLOYEE_ID, 100, 'BOSS', 'WORKER')
  2  FROM EMPLOYEES;
 
DECODE(EMPLO
------------
BOSS
WORKER
WORKER
WORKER
WORKER
WORKER
WORKER
WORKER

EMPLOYEE_ID100이면 BOSS, 아니면 WORKER를 출력한다.

 

9.2 CASE

프로그래밍 언어의 IF~THEN ~ELSE-END 조건문과 같이 사용된다.

CASE [expression]
  WHEN condition_1 THEN result_1
  WHEN condition_2 THEN result_2
  ...
  WHEN condition_n THEN result_n
  ELSE result
END

 

SQL> SELECT
  2    CASE
  3      WHEN SALARY > 10000 THEN 'GOOD'
  4      WHEN SALARY > 5000 THEN 'S0S0'
  5      ELSE 'CHEAR UP'
  6    END
  7  FROM EMPLOYEES;
 
CASEWHENSALARY>1
----------------
GOOD
GOOD
GOOD
S0S0
S0S0
CHEAR UP
CHEAR UP

 

 

10. ROWNUMROWID

Oracle이라는 특정 데이터베이스에 국한된 설명이지만 다른 데이터베이스에도 비슷한 기능이 있는 경우가 있다.  (SQL Server : TOP(숫자),  MySQL : LIMIT 숫자 등)

 

10.1 ROWNUM

- SELECT문 결과에 대해서 논리적인 일렬번호를 부여한다.(첫번째 검색된놈, 두번째 검색된놈...)

- 조회되는 행 수를 제한할 때 많이 사용된다. (ROWNUM <= 10 : 10개만 검색)

- 만약 ROWNUM을 사용해서 페이지 단위 출력을 하기 위해서는 인라인 뷰(Inline View)를 사용해야 한다.

- 검색 결과에 무조건 1,2,3,4... 번호를 부여하기 때문에 다음 페이지 번호도 1, 2, 3,...이 부여되고 해결책으로는 (1,2,3...마지막) 번호를 가지고 있는 검색 결과에서 다시 조회 하는 방법이 인라인 뷰 이다.

SQL> SELECT *
  2  FROM (SELECT ROWNUM NUM, EMPLOYEE_ID, FIRST_NAME
  3          FROM EMPLOYEES)
  4  WHERE NUM BETWEEN 7 AND 10;
 
       NUM EMPLOYEE_ID FIRST_NAME
---------- ----------- -------------------------------
         7         167 Amit
         8         172 Elizabeth
         9         192 Sarah
        10         151 David

 

10.2 ROWID

- ORACLE 데이터베이스 내에서 자동으로 생성되는 데이터를 구분할 수 있는 유일한 값이다.

- SELECT ROWID, EMPNO FROM EMPLOYEE와 같은 SELECT문으로 확인할 수 있다.

- 데이터가 어떤 데이터 파일, 어느 블록에 저장되어 있는지 알 수 있다.

 

 

11. WITH

- WITH 구문은 서브쿼리를 사용해서 임시 테이블이나 뷰처럼 사용할 수 있는 구문이다.

- 서브쿼리 블록에 별칭을 지정할 수 있다.

- 옵티마이저는 SQL을 인라인 뷰나 임시 테이블로 판단한다.

- 여러 테이블들을 JOINI으로 해결 하기 힘든 경우 사용 한다.

WITH (별칭) AS
    (SELECT 문장)
    SELECT 문장;

 

SQL> WITH EMP_WITH AS
  2      (SELECT EMPLOYEE_ID, JOB_ID, DEPARTMENT_ID FROM EMPLOYEES
  3         UNION ALL
  4       SELECT EMPLOYEE_ID, JOB_ID, DEPARTMENT_ID FROM JOB_HISTORY)
  5      SELECT EMPLOYEE_ID, JOB_ID, DEPARTMENT_ID
  6        FROM EMP_WITH
  7       WHERE EMPLOYEE_ID = 200;
 
EMPLOYEE_ID JOB_ID               DEPARTMENT_ID
----------- -------------------- -------------
        200 AD_ASST                         10
        200 AD_ASST                         90
        200 AC_ACCOUNT                      90

 

 

12. DCL(Data Control Language)

GRANT REVOKE 명령어가 있다.

 

12.1 GRANT

- 데이터베이스 사용자(User)에게 접속권한, 오브젝트 생성권한, DBA 권한 등을 부여하는 명령어.

- 데이터베이스를 사용하기 위해서는 모든 명령어에 대해 권한이 필요하다.

GRANT privileges
    ON object
    TO user;

 

1) Privileges

권한 설명
SELECT 지정된 테이블에 대해 SELECT 권한을 부여 한다.
INSERT 지정된 테이블에 대해 INSERT 권한을 부여 한다.
UPDATE 지정된 테이블에 대해 UPDATE 권한을 부여 한다.
DELETE 지정된 테이블에 대해 DELETE 권한을 부여 한다.
REFERENCES 지정된 테이블을 참조하는 제약조건 생성 권한을 부여 한다.
ALTER 지정된 테이블을 수정 할 수 있는 권한을 부여 한다.
INDEX 지정된 테이블에 대해 INDEX를 생성하는 권한을 부여 한다.
ALL 지정된 테이블에 대해 모든 권한을 부여 한다.

 

2) WITH GRANT OPTION

옵션 설명
WITH GRANT OPTION - 특정 사용자에게 권한을 부여할 수 있는 권한을 부여
- 권한을 부여 받은 사용자가 다른 사용자에게 권한을 부여한 경우 상위 권한자의 권한이 취소되면 하위도 취소된다.
WITH ADMIN OPTION - 테이블에 대한 모든 권한을 부여 한다.
- 권한을 부여 받은 사용자가 다른 사용자에게 권한을 부여한 경우 상위 권한자의 권한이 취소 되어도 하위는 권한이 유지된다.

 

12.2 REBOKE

- 데이터베이스 사용자(User)에게 부여한 권한을 회수 한다.

REVOKE privileges
    ON object
    FROM user;

 

 

13. TCL(Transaction Control Language)

일반적으로 쿼리를 실행하면 데이터베이스에 바로 적용되지 않는다이를 이용하여 쿼리 실행을 전체 또는 일정 부분 취소하여 잘못된 쿼리로 데이터베이스의 데이터가 변경되지 않도록 한다.

 

13.1 COMMIT

- 모든 쿼리(INSERT, UPDATE, DELETE)가 데이터베이스에 반영되어 데이터가 변경된다.

- 데이터 변경을 위해 LOCK으로 잡고 있던 부분을 UNLOCK 한다.

- COMMIT 완료 후 다른 사용자는 변경된 데이터를 볼 수 있고 조작할 수 있다.

- COMMIT이 실행되면 하나의 트랜잭션이 완료된 것이다.

COMMIT;

 

13.2 ROLLBACK

- 모든 쿼리(INSERT, UPDATE, DELETE)가 취소되고 트랜잭션이 종료된다.

- 바로 이전 COMMIT 한곳 까지만 취소된다.

ROLLBACK;

 

13.3 SAVEPOINT

- 트랜잭션을 모두 취소하지 않고 부분으로 나누어 취소하려는 경우 사용한다.

- SAVEPOINT에 이름을 부여하여 그 위치까지 취소 처리 한다.

INSERT .....
UPDATE ....
SAVEPOINT S1;  -- SAVEPOINT 설정
DELETE .....
SAVEPOINT S2;  -- SAVEPOINT 설정
INSERT ....
 
ROLLBACK TO S1;  -- S1 까지 ROLLBACK

 

 

- copy coding -


+ Recent posts