select subquery
- 단수행, 복수행, scalar subquery지원
- 다른 컬럼의 값으로 조회할 때 사용.
- 단수행 서브쿼리
- where절에 사용.
- select 컬럼명,,,,
from 테이블명
where 컬럼명 = (select,,,,)
- 복수행 서브쿼리
- 조회결과를 사용하여 재 조회하는 것.
- 외부 커리문은 실제테이블을 조회하는 것이 아닌 조회결과(inline view)를 사용한 조회를 하기 때문에 안쪽 테이블에서 컬럼명에 alias가 사용된다면 외부 쿼리문에서 alias만 컬럼 명으로 인식된다.
- 문법 )
- select
from ( select 컬럼명,,, from 테이블명,,, )
- select 컬럼명: 실제 컬럼명이 아닌 inline view column 명
- 안쪽 쿼리가 alias를 사용하면 바깥쿼리에서는 alias 명만 사용가능
scalar subquery
- 조회하는 컬럼에 사용하는 subquery
- 테이블은 다르고 컬럼명이 같다면 컬럼을 식별하기 위해'테이블명.컬럼명'의 문법을 사용한다.
- scalar subquery는 단독으로 실행되지 않는다.
- 문법 )
- select 컬럼명 ,,, (select 컬럼명 from 테이블명 where 컬럼명 = 조건)
from 테이블명
rownum
- 조회되는 컬럼에 순차적인 번호를 부여하는 가상 컬럼. (pseudo column)
- rownum을 where절에서 사용하면 시작값이 1번부터는 검색이 되나
1번을 초과한 값을 검색하면 검색되지 않는다.
- 모든 select마다 생성되고 사용된다.
- order by절과 함께 사용되면 번호가 꼬인다.
- 사용법 )
select rownum
subquery exists
- 조회 결과가 하나라도 존재하는 경우에만 바깥 쿼리를 실행해야할 때 사용하는 연산자.
- 조회 결과가 없다면 바깥 쿼리를 실행하지 않습니다.
- 속도가 빠르다.
- 사용법 )
- where exists ( select,,,, )
- select : 조회 값을 가져오지 않고 레코드가 존재하는지만 확인하는 용도의 select
- select의 조회 컬럼은 실제 컬럼을 사용해도 되고, 1이나 임의 값을 사용해도 된다.
Constraints ( 제약사항 )
- 테이블에서 개발자가 원하는 값을 저장하기 위해 사용하는 것.
- primary key, foreign key, unique, not null, check, default
- default : 제약사항은 아니지만 같이 묶어서 봄
- user_constraints DD에서 테이블에 설정된 제약사항을 확인할 수 있다.
- column 단위 제약사항 또는 table 단위 제약사항으로 설정할 수 있다.
- alter를 사용하여 편집할 수 있다.
- 문법 )
- create table 테이블명(
컬럼명 데이터형(크기) constraint 제약사항명 제약사항 종류,
. ,
. ,
constraint 제약사항명 제약사항 종류(적용컬럼명),
.
.
.
);
- constraint 제약사항명 제약사항 종류
- 컬럼단위 제약사항. Column level constraint
- 제약사항을 받을 컬럼명 뒤에 선언하기 때문에 제약사항을 받을 컬럼명을 사용하지 않는다.
- 모든 제약사항을 사용할 수 있다.
- constraint 제약사항명 제약사항 종류(적용컬럼명)
- 테이블 단위 제약사항. Table level constraint
- 컬럼의 선언이 모두 끝난 뒤에 제약사항을 선언하기 때문에
제약사항을 적용받을 컬럼명을 명시해야한다.
- 모든 제약사항을 사용할 수 있다.
- primary key, foreign key, unique, check만 사용가능하다.
DB-ERD ( Entity Relationship Diagram )
primary key (주키, 기본키)
- 테이블당 하나만 설정할 수 있다.
- 컬럼 값이 null을 허용하지 않고 유일해야할 때 설정.
- 단일 컬럼으로 구성될 수도 있고, 복합컬럼으로 구성 될 수 도 있다.
- 다른 테이블(자식테이블)에서 부모테이블로 참조할 수 있다.(테이블간의 관계가)
- primary key를 생성하면 Oracle에서는 index를 자동생성해준다.
- index : User_indexes DD에서 확인 가능하다.
- 후보키 중에서 선정된다.
- 번호, 이름, 아이디, 주민번호, 이메일 , 의료보험번호, 전화번호, 주소를 저장하는 테이블 생성

- 문법 )
- Column level constraint
- create table 테이블명(
컬럼명 데이터형(크기) constraint pk_테이블명 primary key
- constraint PK 테이블명 : 생략 가능 -> 생략하면 Oracle에서 SYS_C로 시작하는
제약사항명을 자동으로 부여해줌
- Table level constraint
- create table 테이블명(
컬럼명 데이터형(크기),
constraint 제약사항명 primary key(적용컬럼명)