사용도 높음.
뷰 자체가 테이블에 있는 데이터를 뷰를 통해 일부 볼 수 있음.
뷰를 통해 있는 데이터는 원본 테이블에 있는 데이터를 그대로 보여줌. -> 단순뷰
변형해서 보여줌 ex salary*12 -> 복합뷰
create view empvo80
as select employee_id, last_name, salary // as뒤부터 서브쿼리. 서브쿼리의 결과만을 (일부) 볼 수 있음.
from employees
where department_id = 80;
뷰 수정 : create or replace dd에 저장돼있는 셀렉트 문장을 변경해서 저장.
알리아스 쓸 때는 쭉 알리아스 쓰기. 첫문장에 먼저 알리아스 명시 해도 됨.
단순뷰 일때만 dml연산 가능.
뷰 제거 DROP VIEW
논리적인 독립성 : 뷰 지워져도 원본 데이터는 변경/삭제 안됨.
이름, 셀러리 부서이름 그 부서의 최대급여 출력
최대급여보다 더 적은 급여를 받는 사람을 출력하시오.
SELECT e.last_name, e.salary, e.department_id, d.max(salary)
FROM (select department_id, max(salary)
from employees
group by department_id) d
WHERE e.department_id = d.department_id
AND a.salary < d.max(salary)
rownum > 4
결과로 출력이 되고 나서 행의 번호를 돌려 주니까 값을 할당하지 못함
SELECT column_namem ROWUNM
FROM (select column_name
from table
order by TOP-N column_name)
WHERE rownum <= N
* 프롬절에 있는 서브쿼리에서 가져옴.
* ROWUNM:서브쿼리에서 반환되는 각 행의 1부터 시작하는 순차값.
* WHERE:반환될 N개의 행 지정. <, <= 연산자 사용해야함.
* 최대값 출력 = desc 사용
테이블에서 데이터 검색 방법
실행계획 -> 테이블 풀스캔 : 전체 데이터를 메모리로 불러들이고 데이터를 순차적으로 검색해서 찾아가는 방식. (기본 방식)
사잇값 찾을 때 인덱스 아주좋음
pk와uk 설치하면 자동으로 인덱스 저장. -> 중복이 없으니까.
fifo:first in first out
캐시의 기능: 메모리의 기능을 나만 사용할 수 있도록 고정공간을 만듦.
CREATE SEQUENCE
nocache 디폴트.
nocycle 반복. pk설치할 때 사이클 옵션 안주는 게 좋음.
시퀀스는 값을 저장하는 거 아님. 음료수 자판기.
시퀀스는 추출을 해버린 값은 롤백해도 안돌아옴. -> 갭 발생할 수 있음.
시퀀스는 공용객체. 데이터가 있는 게 아니라 보안적으로 중요하지 않아서 공용객체. -> 갭 발생 할 수 있음.
보안
접근성이 없는 사람의 DB 접근 방지 -> 외부
권한이 있는 유저들의 불법 행위를 방지 -> 내부 =>DCL로 권한 부여/회수
롤 = 권한을 모아놓은 집합.
CONNECT RESOURCE
연산자 한꺼번에 못씀!
(80<a>=70) 안되고 (80>a && 70>=a) 이렇게 써야함.
Scanner s = new Scanner(System.in);
System.out.prin("월 입력");
int month = s.nextInt();
switch(month){
case 1:
case 2:
case 12:
System.out.println(month+"월은 겨울입니다.")
break;
//case 12, 1, 2 : <- 이클립스 구버전은 지원 안됨.
int a = 0;
String b = ""
정수형, 문자형 기본 초기화. 문제마다 달라질 수는 있음.