select subquery

단수행, 복수행, scalar subquery지원.
다른 컬럼의 값으로 조회할 때 사용.

단수행 서브쿼리

where절에 사용.

select 컬럼명
from 테이블명
where 컬럼명=(select,,,)

scalar subquery

조회하는 컬럼에 사용하는 subquery
테이블은 다르고 컬럼명이 같다면 컬럼을 식별하기 위해 "테이블명.컬럼명"의 문법을 사용한다.

  • scalar subquery는 단독으로 실행되지 않는다.
select 컬럼명,,,(select 컬럼명 from 테이블명 where 컬럼명=조건< 테이블명.컬럼명 >)
from 테이블명

복수행 서브쿼리

-조회결과(inline view)를 사용하여 재 조회하는 것.
-외부쿼리문은 실제테이블을 조회하는 것이 아닌 조회결과(inline view)를 사용한 조회를 하기 때문에 안쪽 테이블에서 컬럼명에 alias가 사용된다면 외부 쿼리문에서 alias만 컬럼명으로 인식된다.

select 컬럼명 // inline view의 컬럼명. 
//안쪽 쿼리가 alias를 사용하면 바깥쿼리에서는 alias만 사용.
from ( select 컬럼명,,, from 테이블명,,,)
where

rownum

조회되는 컬럼에 순차적인 번호를 부여하는 가상 컬럼(pseudo column).
-rownum을 where절에서 사용하면 시작값이 1번부터는 검색이 되나
1번을 초과한 값을 검색하면 검색되지 않는다.
-모든 select마다 생성되고 사용된다.
-order by절과 함께 사용되면 번호가 꼬인다.

select rownum

subquery exists

  • 조회결과가 하나라도 존재하는 경우에만 바깥 쿼리를 실행해야할 때
    연산자
  • 조회결과가 없다면 바깥 쿼리를 실행하지 않는다.
  • 속도가 빠르다.
where exists (select,,,)
             //조회 값을 가져오지 않고 레코드가 존재하는지만 확인하는 용도의 select.
             //select의 조회 컬럼은 실제 컬럼을 사용해도 되고, 1이나 임의 값을 

constraints(제약사항)

테이블에서 개발자가 원하는 값을 저장하기 위해서 사용하는 것.
primary key, foreign key, unique, not null, check, default
user_constraints DD에서 테이블에 설정된 제약사항을 확인 가능.
column 단위 제약사항 또는 table단위 제약사항으로 설정 가능.
alter를 사용하여 편집할 수 있다.

create table 테이블명(
  컬럼명 데이터형(크기) contraint 제약사항명 제약사항 종류
  // 컬럼단위 제약사항. Column level constraint
  // 제약사항을 받을 컬럼명 뒤에 제약사항을 선언하기 때문에 제약사항을 받을 컬럼명을 사용하지 않는다.
  // 모든 제약사항을 사용할 수 있다.

  ,,,
  
  contraint 제약사항명 제약사항 종류(적용컬럼명),
  // 테이블단위 제약사항. Table level constraint
  // 컬럼의 선언이 모두 끝난 뒤에 제약사항을 선언하기 때문에 제약사항을 적용받을 컬럼명을 명시해야한다.
  // primary key, foreign key, unique, check만 사용 가능.
  
  ,,,
  
);

primary key(주키, 기본키)

테이블에 하나만 설정할 수 있다.
컬럼 값이 null을 허용하지 않고 유일해야할 때 설정.
단일 컬럼으로 구성될 수도 있고, 복합컬럼으로 구성될 수도 있다.
다른 테이블(자식 테이블)에서 부모테이블로 참조할 수 있다.(테이블간의 관계가 )

-primary key를 생성하면 oracle에서는 index를 자동생성해준다.
-후보키 중에서 선정된다.

번호, 이름, 아이디, 주민번호, 이메일, 의료보험번호, 전화번호, 주소를 저장하는 테이블 생성.

DB-ERD(Entity Relationship Diagram)

테이블간의 관계를 도식화한 다이어그램.

primary key : ctrl shift enter
일반 컬럼 : ctrl enter

-column level constraint

create table 테이블명(
 컬럼명 데이터형(크기) constraint PK_테이블명 primary key
                   // 생략가능 : 생략하면 oracle에서 SYS_C로 시작하는 제약사항명을 자동으로 부여해준다.                   
)

-Table level constraint

create table 테이블명(
 컬럼명 데이터형(크기),
 .
 constraint 제약사항명 primary key(적용 컬럼명)
)

0개의 댓글