본문 바로가기

Programming/Database

데이터베이스 8강

# 뷰를 사용하는 것이 일반 테이블을 생성하는 것보다 효율이 좋음

# 파싱 : 검증, 실행계획, 실행
           효율적인 경로탐색
           table full stack(데이터를 모두 부름)하고 순차 검색이 default.

파싱한 결과는 데이터 딕셔너리로 저장
shared pool을 먼저 탐색하고 재사용 및 없으면 데이터딕셔너리를 탐색하여 파싱
data buffer cache
redo log buffer


2권 35페이지

# 인라인 뷰
SELECT a.last_name, a.salary, a.department_id, b.maxsal
FROM employees a, (SELECT department_id, max(salary) maxsal
                          FROM employees
                          GROUP BY department_id) b
WHERE a.department_id = b.department_id
AND a.salary < b.maxsal



# TOP-N 분석
# rownum column : 출력이 되는 행의 순서번호를 출력
                         처음부터만 출력가능
SELECT rownum, last_name, salary
FROM employees;

# 정렬을 DESCENDING으로 연봉설정하고 rownum으로 상위 연봉 출력
# WHERE절이 ORDER BY보다 먼저 출력

SELECT rownum, last_name, salary
FROM (SELECT last_name, salary
FROM employees
ORDER BY salary)
WHERE rownum <4


SELECT rownum, last_name, annsal
FROM (SELECT last_name, 12*salary annsal
FROM employees
ORDER BY annsal)
WHERE rownum <4/


# 컬럼 이름을 작성해야 할 때 함수를 이름으로 포함하면 안됨
SELECT rownum, department_id, avgsal
FROM (SELECT department_id, AVG(salary) avgsal
         FROM employees
         GROUP BY department_id
         ORDER BY avgsal)
WHERE rownum < 6



# 정렬하지 않고 순위처리 (시험 나옴)
SELECT last_name, salary, rank() over  (order by salary)
FROM employees



2권 43페이지

# 인덱스가 설치되면 table full stack이 아닌 인덱스를 탐색(인덱스 스캔)
# 검색 속도향상(4% 미만의 검색일 때 좋음)
# 범위 검색할 때 인덱스가 좋음
# SELECT가 좋음
# DML은 안 좋음
# 고급 프로그래머는 인덱스로 데이터베이스 튜닝



# 시퀀스
번호를 중복되지 않게 생성
공유 가능
primary key를 생성할 때 할당
한 번 추출된 시퀀스는 다시 추출 안됨, 간격이 발생해서 연속 숫자가 아님

# 시퀀스의  start with는 바꿀 수 없음, 이미 생성한 시퀀스의 중복 발생
  새로 추출하는 값부터 INCREMENT BY 적용

# 시퀀스 제거  : DROP을 해도 추출한 시퀀스는 다시 안 나옴


# 1. 테이블 생성
table : 데이터를 저장할 수 있는 창고
CREATE TABLE test (a numbe(7), b char(7), CONSTRAINT test_a_pk primary key(a));

# 2. 데이터 삽입
INSERT INTO test
VALUES(10, 'b');

INSERT INTO test
VALUES(60, null);


2권 171페이지
# 데이터 딕셔너리는 오라클 서버가 관리해서 내용을 못 지움

# DBA로 접속 (시험)
conn system/12345

# 최 상위 DBA로 접속
CONN /as sysdba

# 유저 생성 (시험)
CREATE USER test
identified by test;

# 패스워드 변경 (시험)
alter user test
identified by test1;

# 잠긴패스워드 풀어주기 (시험)
alter user test
account unlock;

# 패스워드 잠금
alter user test
account lock;

# 회원가입
grant create session to test;

# 권한부여
grant create table to test;
grant connect, resource to test;

# 권한 회수
revoke create session from test;
revoke connect, resource from test;

# 유저 삭제
drop user test cascade;



# with grant option : DBA로부터 권한을 받은 사용자가 다른 사용자에게 옵션의 권한을 이양할 수 있게 함
# with admin option : 시스템으로부터 권한 이양받음
# 권한은 종속적으로회수됨

'Programming > Database' 카테고리의 다른 글

사용자 생성 테이블 삭제  (0) 2020.06.15
데이터베이스 9강  (0) 2020.03.10
데이터베이스 7강  (0) 2020.03.10
데이터베이스 6강  (0) 2020.03.10
데이터베이스 5강  (0) 2020.03.10