EMP테이블
DEPT테이블
1. EXISTS
- 서브쿼리의 데이터가 존재하는가의 여부를 먼저 따져 존재하는 값들만을 결과로반환
2. 다중열 서브쿼리
- Pairwise(쌍비교) Subquery: 서브쿼리의 결과값이 '두 개 이상의 컬럼을 반환'하는 서브쿼리
- 서브쿼리가 한 번 실행되면서 모든 조건을 검색해서 주 쿼리로 넘겨준다.
3. FROM절 상의 서브쿼리 (사용빈도 높음)
- 이해: 원래 '테이블을 필터' SELECT한다
- SQL 작성: SELECT * FROM (SELECT 컬럼1, 컬림2... FROM EMP WHERE 조건컬럼 = 값) ⭐별칭 WHERE 별칭.컬럼 > 조건값;
4. paging
- SQL 작성: SELECT * FROM(서브쿼리) 별칭 WHERE ROWNUM <= row 수 x 페이지 수
- where rownum <=3*2 의미는 "한 페이지 3명 볼거고, 2페이지 사원목록이 필요한 경우"
경우1) 한 페이지에 3명 * 2페이지
경우2) 한 페이지에 3명
5. UNION
- UNION은 두 테이블의 결합을 나타내며, 결합시키는 두 테이블의 중복되지 않은 값들을 반환 합니다.
경우1)
경우2)
6. INTERSECT
- INTERSECT는 두 행의 집합중 공통된 행을 반환 합니다.
- SQL 작성 예) SELECT DEPTNO FROM EMP INTERSECT SELECT DEPTNO FROM DEPT;
7.MINUS
- MINUS는 첫번째 SELECT문에 의해 반환되는 행중에서 두번째 SELECT문에 의해 반환되는 행에 존재하지 않는 행들을 반환 합니다.
- SELECT DEPTNO FROM DEPT MINUS SELECT DEPTNO FROM EMP;
8.조인(Join)
- 둘 이상의 테이블을 연결하여 데이터를 검색하는 방법입니다.
- 보통 둘 이상의 행들의 공통된 값 Primary Key 및 Foreign Key 값을 사용하여 조인합니다.
- 그러므로 두 개의 테이블을 SELECT문장 안에서 조인하려면 적어도 하나의 칼럼이 그 두
테이블 사이에서 공유 되어야 합니다.
조인 종류 다이어그램
- INNER JOIN == JOIN: 이너조인은 '공집합'을 의미한다
경우1)
경우2)
-
Equijoin(동등조인, 내부조인): '='를 사용하여 값들이 정확하게 일치하는 경우에 사용하는 조인을 의미하고 '단순 조인' '내부 조인'이라고 한다. .
-
Non-equi join: 조인 조건이 정확히 일치하지 않는 경우에 사용
salgrade(급여 등급) 테이블:
- Self join: 때때로 자체적으로 테이블을 조인할 필요가 있다.
- LEFT OUTER JOIN(LEFT JOIN): 왼쪽 및 공집합을 의미한다. null 값이 나오는 쪽에 +연산자를 해준다
명시적인 방법
- FULL OUTER JOIN
- INNER JOIN ~ USING: 조인 양쪽 테이블의 필드명이 같은 필드끼리 조인할 때 테이블을 생략
즉 짧게, USING(deptno) == on e.deptno = d.depno
9. VIEW
-
CREATE OR REPLACE VIEW 뷰이름 AS 서브쿼리
예시)
CREATE VIEW testview
AS
SELECT EMPNO, ENAME, SAL FROM EMP;
-
에러:Ask your database administrator or designated security
administrator to grant you the necessary privileges
해결법: cmd창에서 sys as sysdba 로그인 후 SQL> grant create view to scott
- SELECT * FROM TAB; 조회를 하면 TABTYPE은 VIEW라고 나온다.
경우1)
경우2)
여러 문제들
시스템 권한
어떤 유저가 있나 ?
show user
접속
SQL> conn system/master1234
아이디 만들기
SQL> create user test identified by 1234;
권한주기
SQL> grant create session to test;
SQL> create table a(f number); *에러: ORA-01031: insufficient privileges
아이디/비번 바꾸기
alter user test identified by 5678
권한 회수
revoke create session from test;
유저 없앰
drop user test;