● VIEW
- 기존의 테이블은 그대로 놔둔 채 필요한 컬럼들 및 새로운 컬럼을 만든 가상 테이블
- 실제 데이터가 저장되는 것은 아니지만 VIEW를 통해서 데이터를 관리할 수 있다.
1. 독립성
- 다른 곳에서 접근하지 못하도록 하는 성질
2. 편리성
- 긴 쿼리문을 짧게 만드는 성질
3. 보안성
- 기존의 쿼리문이 보이지 않는다.
● VIEW 문법
CREATE VIEW VIEW이름 AS 쿼리문;
● 시퀀스
- 원하는 시작점을 설정할 수 있고, N씩 증가하는 값이다.
- 기본 시작점은 1이고, 기본 증가량은 1이다.
- 시퀀스명.NEXTVAL : 다음 시퀀스를 가져올 때
실습(DCL)
1. HR 계정의 DEPT 테이블을 새로 만든 계정으로 복사, 복사한 테이블에서 LOC별 평균 급여 검색
※ 쿼리 작성 전에 CMD에서 권한 부여를 해준다.
SQL> conn hr/hr
SQL> grant select on dept to baby;
SQL> grant select on emp to baby;
- 테이블 복사
CREATE TABLE COPY_DEPT AS SELECT * FROM HR.DEPT;
- LOC별 평균 급여 검색
CREATE TABLE SALARY_OF_LOCATION AS
(SELECT LOC, ROUND(AVG(SAL), 2) "AVG"
FROM COPY_DEPT D JOIN HR.EMP E
ON D.DEPTNO = E.DEPTNO
GROUP BY LOC);
실습(VIEW)
※ 조회한 결과 테이블은 ORDER BY를 작성해서는 안된다.
※ CMD에서 VIEW 생성 권한을 부여한 후 진행한다.(grant create view to hr;)
1. PLAYER 테이블에서 나이 컬럼을 추가한 뷰 만들기
/*SYSDATE : 현재 시각*/
CREATE VIEW VIEW_PLAYER
AS
(SELECT TRUNC((SYSDATE - BIRTH_DATE) / 365) AGE, PLAYER.* FROM PLAYER);
※ 확인
SELECT * FROM VIEW_PLAYER;
2. EMPLOYEES 테이블에서 사원 이름과 그 사원의 매니저 이름이 있는 VIEW 만들기
※ FIRST_NAME과 LAST_NAME은 CONCATENATION을 사용하여 연결해준다.
CREATE VIEW VIEW_EMPLOYEES AS
(
SELECT
E1.FIRST_NAME || ' ' || E1.LAST_NAME EMPLOYEE_NAME,
E2.FIRST_NAME || ' ' || E2.LAST_NAME MANAGER_NAME,
J.JOB_TITLE
FROM EMPLOYEES E1, EMPLOYEES E2, JOBS J
WHERE E1.MANAGER_ID = E2.EMPLOYEE_ID AND E2.JOB_ID = J.JOB_ID
);
3. PLAYER 테이블에 TEAM_NAME 컬럼을 추가한 VIEW 만들기
CREATE VIEW VIEW_PLAYER AS
(SELECT T.TEAM_NAME, P.* FROM PLAYER P JOIN TEAM T
ON P.TEAM_ID = T.TEAM_ID);
실습(시퀀스)
1. 시퀀스 생성
CREATE SEQUENCE SEQ_USER;
2. 테이블 생성
CREATE TABLE TBL_USER(
USER_NUMBER NUMBER PRIMARY KEY,
USER_ID VARCHAR2(1000) UNIQUE,
USER_PW VARCHAR2(1000),
USER_NAME VARCHAR2(1000),
USER_AGE NUMBER,
USER_PHONE_NUMBER VARCHAR2(1000),
STATUS NUMBER DEFAULT 0
);
3. 데이터 추가
INSERT INTO TBL_USER(USER_NUMBER, USER_ID, USER_PW, USER_NAME, USER_AGE, USER_PHONE_NUMBER)
VALUES(SEQ_USER.NEXTVAL, 'hong1234', '1234', '홍길동', '20', '01012341234');
4. 결과 확인
SELECT * FROM TBL_USER;
'웹 개발 > DBMS' 카테고리의 다른 글
[Web_DBMS_MySQL] 01 (0) | 2022.05.25 |
---|---|
[Web_DBMS] 11 (0) | 2022.04.09 |
[Web_DBMS] 10 (0) | 2022.04.08 |
[Web_DBMS] 09 (0) | 2022.04.07 |
[Web_DBMS] 08 (0) | 2022.04.06 |