본 쿼리 안에 소괄호를 사용해 select 문을 사용하는것을 서브쿼리라고 한다. 실행순서는 소괄호의 서브쿼리가 본쿼리보다 먼저 시행이 된다. 물론 서브쿼리 역시 하나의 쿼리문이므로 전체 쿼리순서자체에는 위배될수 없고, 실행된 서브쿼리의 결과값을 본쿼리에서 사용하는 방식으로 진행된다. 서브쿼리는 크게 3가지로 분류한다. 1. 스칼라 서브쿼리 select 절에서 사용할 서브쿼리로 단일행만을 결과값으로 가져올수 있도록 해야한다. 2. 인라인뷰 서브쿼리 from 절에서 사용할 서브쿼리로 select 문의 결과값이 하나의 임시테이블인것을 이용하는것이다. 3. 중첩 서브쿼리 where 절이나 having 절에서 사용할 서브쿼리로 결과값을 튜플의 조건, 그룹의 조건으로 사용한다. 단일행의 경우 = 연산사, 다중행의 ..
튜플을 유일하게 식별하기 위한 수단으로 인덱스, 기본키로 사용이 가능하게끔 값을 부여하며 그 값 자체엔 의미가 없는것을 관리해주는 기술을 시퀀스라고 한다. 예를 들면 회원의 아이디는 의미가 있으므로 시퀀스로 관리할수 없지만 글번호 같이 의미는 없지만 유일한 데이터로 식별이 가능한것을 관리해주는 기술을 시퀀스라고 한다. 시퀀스 생성 명령어) // 시퀀스 생성 create sequence 시퀀스명 increment by 숫자 // 얼마나 증가시킬것인지 start with 숫자 // 시퀀스 시작번호 // 시퀀스 사용 시퀀스명.nextval // 현재 시퀀스의 다음값을 가져옴 시퀀스명.currval // 현재 시퀀스의 값을 가져옴 이런 시퀀스의 사용을 통해 의미없지만 식별할수 있는 데이터를 자동으로 부여해줄수 ..
ROWNUM은 검색문을 통해서 임시테이블을 만들때 각 튜플에 번호를 매겨주는것으로 select 문을 사용한 데이터의 출력시 원하는 구간의 데이터 (ex. 페이징) 만을 출력하고 싶은경우 사용한다. ROWNUM의 장점은 원하는 구간만을 잘라서 데이터를 가져오므로 모든 데이터를 순회할 필요없어 프로그램의 성능적 향상을 가져올 수 있다는 이점이 있다. 이때 ROWNUM을 사용할때 주의할것은 단순히 where 절에서 사용할 경우엔 첫번째 컬럼부터 순서를 매겨서 컬럼을 검색해서 가져오므로 문제가 없지만, // ex select * from 테이블명 where rownum < 5; // 출력 // 1 번째부터 4번째 튜플 출력 서브쿼리를 사용해 order by로 나름의 정렬후 조건문에서 특정 구간만을 가져오려할 경..
오라클에서 조인은 역정규화위해 하는것으로 역정규화는 사용자의 편의를 위해 사용자가 원하는 데이터를 묶어서 보기위해 이루어진다. 조인은 여러가지가 있지만 현재 포스팅에서는 이너조인과 아우터조인만 다루도록한다. 1. 이너조인(inner join) 조인하려는 테이블의 겹치는 컬럼을 조건으로 조인을 진행, 조인 조건에 해당하는 튜플만을 가져오는 조인이다. 이 때 보통 겹치는 컬럼은 외래키를 통해 부모릴레이션과 자식 릴레이션의 관계로 참조관계에 있는 컬럼을 말한다. // 이너조인 // 방법 1 select 검색할 컬럼 from 테이블1, 테이블2 where 겹치는 컬럼 = 겹치는 컬럼; // 방법 2 select 검색할 컬럼 from 테이블1 inner join 테이블2 // inner 키워드 생략 가능 on 겹..