DAY 25 ~ 26

KSH·2022년 5월 22일

sub query

  • sql 내부에 sql이 있는 형태

  • (소괄호)와 함께한다

    예) emp 테이블에서 부서번호는 모르고 'SALES'부서의 모든 사람을 찾고 싶을 때.
    select * from emp
    where deptno = (select deptno from dept where dname = 'SALES');

view

  • 가상의 테이블을 만드는 방법
  • 실제 테이블에 접근을 제한하는 방법
  • create view [이름] as [서브쿼리]
  • 인사팀과 복지팀이 emp테이블을 공유하는데,
    복지팀에는 연봉정보를 보여 주고 싶지 않을 때, 만드는 것이 view.

view

  • 특정한 사용자를 위해, 데이터의 일부만 공개하는 기법
  • 예1) 복지팀에 급여 정보가 제외된 emp를 보여주고 싶을 때
    -> 복지팀은 emp4view2, 인사팀은 emp4
  • view를 통해서도 insert, update, delete 가능.(1개 테이블의 예)
  • view를 통한 update 규칙 : view를 만들 때 select된 컬럼만 수정 가능.

join view

  • 여러 테이블을 조인하여 만들어진 view.
  • 예) 택배 회사에 배송물품 정보를 줄 때, 주문/고객/제품에서 일부 데이터만 제공.
  • insert, update, delete 가능.
  • insert, delete 규칙 : 하나의 테이블만 가능.
  • update 규칙 : view를 만들 때 select된 컬럼만 수정 가능.

Procedureal Language / SQL : SQL을 기초로 한 절차적 언어.

  • 0단계 : set serveroutput on;

  • 1단계 : begin ~ end; ~ / : begin ~ end;는 코딩 공간.

  • 2단계 : declare ~begin ~ end; ~ / : declare는 변수 선언 공간.
    := (변수 대입 - 우항의 값을 좌함에 담아라)

  • 3단계 : 테이블명.속성명%type : emp.deptno%type -> number(2)를 의미.

  • 4단계 : select를 통해 변수에 값을 대입. : select ~ into ~ from ~ where

  • 5단계 : select문은 여러 개를 사용할 수 있다.

  • 6단계 : select 결과를 이용해서, 다시 select 할 수 있다.

  • if문 : if then ~ elsif then ~ elsif then ~ else ~ end if;

  • Loop문 : 반복문 : loop ~ end loop;

  • for문 : 반복문 : for ~ in ~ loop ~ end loop;

  • while문 : 반복문 : while ~ loop ~ end loop;

join : 연결방법
A B
10 10
A = B
select * from A, B where A = B;

프로시저와 펑션의 차이

  • procedure : pl/sql을 dbms에 저장했다가 사용하는 객체.
  • function : pl/sql을 dbms에 저장했다가 사용하는 객체.
  • 의미론적으로 procedure는 복잡한 업무용, function은 간단한 기능용.

0개의 댓글