# 뷰를 사용하는 것이 일반 테이블을 생성하는 것보다 효율이 좋음
# 파싱 : 검증, 실행계획, 실행
효율적인 경로탐색
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 |