1. 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어
    1. 관계 해석(relational calculus)
      1. 원하는 데이터만 명시하고 질의를 어떻게 수행할 것인가는 명시하지 않는 선언적인 언어
    2. 관계 대수(relational algebra)
      1. 어떻게 질의를 수행할 것인가를 명시하는 절차적 인어
      2. 관계 대수는 상용 관계 DBMS들에서 널리 사용되는 SQL의 이론적인 기초
      3. 관계 대수는 SQL을 구현하고 최적화하기 위해 DBMS의 내부 언어로서도 사용됨
  2. SQL
    1. 상용 관계 DBMS들의 사실상의 표준 질의어인 SQL을 이해하고 사용할 수 있는 능력은 매우 중요함
    2. 사용자는 SQL을 사용하여 관계 데이터베이스에 릴레이션을 정의하고, 관계 데이터베이스에서 정보를 검색하고, 관계 데이터베이스를 갱신하며, 여러 가지 무결성 제약조건들을 명시할 수 있음
  3. 관계 연산자 종류와 표기법
  4. 관계연산자 표기법과 SQL
    1. 사용 테이블
      1. EMPLOYEE
      2. DEPARTMENT
    2. 실렉션1 : σtitle=’사원’(EMPLOYEE)
      1. SELECT * FROM EMPLOYEE WHERE title=’사원’;
    3. 실렉션2 : σdno=3(EMPLOYEE)
      1. SELECT * FROM EMPLOYEE WHERE dno=3;
    4. 프로젝션 : πdno(EMPLOYEE)
      1. SELECT  dno  FROM EMPLOYEE;
      2. SELECT  DISTINCT dno  FROM EMPLOYEE;
    5. 합집합 : σtitle=’사원’(EMPLOYEE) ∪ σdno=3(EMPLOYEE)
      1. SELECT * FROM EMPLOYEE WHERE title=’사원’
        UNION
        SELECT * FROM EMPLOYEE WHERE dno=3;
    6. 교집합 : σtitle=’사원’(EMPLOYEE) ∩ σdno=3(EMPLOYEE)
      1. SELECT * FROM EMPLOYEE WHERE title=’사원’
        INTERSECT
        SELECT * FROM EMPLOYEE WHERE dno=3;
    7. 차집합 : σtitle=’사원’(EMPLOYEE) – σdno=3(EMPLOYEE)
      1. SELECT * FROM EMPLOYEE WHERE title=’사원’
        EXCEPT
        SELECT * FROM EMPLOYEE WHERE dno=3;
    8. 카티션 곱 : EMPLOYEE × DEPARTMENT
      1. SELECT * FROM EMPLOYEE, DEPARTMENT
    9. 디비전 : EMPLOYEE ÷ EMPDIV
      1. 사용 테이블 EMPDIV
      2. SQL문 정의가 어려움, 이 예제에 대해서만 만족하는 Sql임
        SELECT empno, empname, title, manager, salary
        FROM EMPLOYEE
        WHERE DNO IN (SELECT DNO FROM EMPDIV);
    10. 동등 조인(equijoin) : 세타 조인 중 비교 연산자가 =인 조인
      1. 세타 조인(=, <>, <=, <, >=, > 중 하나를 비교 연산자로 사용)
      2. EMPLOYESS ▷◁ dno=deptno DEPARTMENT
      3. SELECT * FROM EMPLOYEE, DEPARTMENT
        WHERE EMPLOYEE.DNO = DEPARTMENT.DEPTNO;
        또는
        SELECT * FROM EMPLOYEE JOIN DEPARTMENT
        ON EMPLOYEE.DNO = DEPARTMENT.DEPTNO;
    11. 자연 조인(natural join)
      1. 동등조인에서 중복되는 dno와 deptno중 하나를 제거한 조인
      2. EMPLOYESS * dno=deptno DEPARTMENT
      3. 동등 조인과 별 차이 없음
      4. 보통은 dno, deptno 둘다 표시 하지 않음, 왜냐하면 부서번호보다는 부서명이 더 필요하기 때문
      5. SELECT empno, empname, title, manager, salary, deptname, floor
        FROM EMPLOYEE JOIN DEPARTMENT
        ON EMPLOYEE.DNO = DEPARTMENT.DEPTNO
    12. 외부조인 :
      1. LEFT OUTER JOIN
      2. RIGHT OUTER JOIN : sqlite는 지원 안 함, mysql은 지원 함,
      3. FULL OUTER JOIN : sqlite, mysql은 지원 안 함 , 다른 DBMS는 ?
      4. SELECT empno, empname, title, deptno, deptname
        FROM DEPARTMENT LEFT OUTER JOIN EMPLOYEE
        ON EMPLOYEE.DNO = DEPARTMENT.DEPTNO
error: Content is protected !!