공통된 컬럼의 연관관계가 성립되는 데이터들을 SQL문장에서 연결하여 조회하는 것을
★★JOIN★★ 이라고 한다
------------from에 써야함-----------------------------------------------------------
INNER JOIN 테이블명 on 조인조건 INNER JOIN 테이블명 on 조인조건
★★OUTER JOIN★★
A(+) = B
A테이블에 행이 부족해서 B의 데이터가 다 안나올때
NULL 값을 추가해서 B의 데이터가 다 나오게 해준다
(+) 붙는쪽에 NULL행을 추가해줌
그냥 행이 긴 테이블 위치에 맞춰서 left outer or rigth outer 선언하면 됨
ex)A가 15row , B가 14row 일때 A가 기준이 되어야하니깐
A a LEFT OUTER B b;
B b RIGHT OUTER A a;
집계함수 ---> max , min , sum , count , average ,표준편차 , 분산
group by 컬럼명 --> 컬럼명값을 기준으로 집계함수를 적용해줌
having ---> (select절에 조건을 사용하여 결과를 제한할떄는 where절에 사용하지만)
그룹의 결과를 제한 할때는 having 절을 사용해야한다.
order by 를 사용하려면 제일 뒤에 사용해야한다.
--------------------------------------------------------------------
subquery 과 subquery 사이의 집합연산
UINION 행들의 합집합
UNION ALL ``
INTERSECT 중복을 제거해준다. 교집합
MINUS 행들의 차집합
Outer query의 테이블과 Inner Subquery의 테이블이 조인
된 형태를 Co-related Subquery 라고 하며 다음의 순서로 실행된다.
1) Outer query의 테이블에서 행(또는 다음 행)을 하나 읽는다. 더 이상 읽을
행이 없으면 끝난다.
2) 1)에서 읽은 행의 데이터를 이용하여 Subquery를 수행한다.
3) 2)의 결과값으로 Outer query의 WHERE 절이 만족되는 지 확인하여 만족
되면 선택하고 아니면 버린다.
4) 1)번으로 돌아간다.
create table s_ord09
AS
select * from s_ORD
where date_ordered LIKE '92/09%'
s_ord 에서 나온 결과값을 table s_ord09 라는 이름의 테이블로 만든다.
START WITH : 첫 번째로 조회할 행의 조건을 명시하며, 첫 번째로 조회된
행들의 레벨은 1 이된다. manager_id IS NULL 이라는 조건은 회사의 사
장을 조회하는 것이다.
-. CONNECT BY : 다음 번에 조회할 행의 조건을 명시한다. PRIOR id 란 직
전 레벨에 찾아진 행들의 id 값을 의미한다. 즉, PRIOR id = manager_id
란 전 레벨의 id 가 다음 찾을 행의 manager_id 와 같은 행들을 찾는 것이
다.
-. 이와 같은 계층 구조 질의는 더 이상 CONNECT BY 절을 만족하는 다음 레
벨의 행들이 존재하지 않을 때까지 진행된다.
----------------------------------제약조건----------------------------------------------
name varchar2(20) not null ->name컬럼에 데이터입력시 null 값 입력 금지
컬럼레벨 -> 컬럼명 CONSTRAINT 제약조건이름 제약조건
talbe레벨 -> 컬럼명 CONSTRAINT 제약조건이름 제약조건(컬럼명)
->not null은 안됨 table레벨 제약조건을 걸때는 프라이머리키 여러개 선언가능함
컬럼명 CONSTRAINT 제약조건이름 제약조건(id,name)
//not null 에는 제약조건이름 안함 , 테이블에는 x , 컬럼생성할때만 제약조건이름넣음
primary key -> not null 안되해줘도 됨 자동 not null되고, 테이블당 primary key 1번만 가능
->근데 table레벨 제약조건을 걸때는 프라이머리키 여러개 선언가능함
unique 고유값을 가져야함 null데이터는 넣어줘도 됨. 인덱스 안만듬, not null 해줘도됨
ssn char(13) not null constraint uk-member_ssn unique
deptno number(3) references dept(deptno) -> member.deptno는 포리너키이고 dept.deptno(프라이머리키)를 참조한다.
프라이머리키를 where절로 조건을 주고 검색을 하면 index값으로 검색해서 값을 보여줌
테이블을 뒤지지 않기때문에 속도가 빠름.
CONSTRAINT fk_s_delivery_ordid_item_id
FOREIGN KEY(ord_id,item_id) REFERENCES
S_ITEM(ord_id, item_id)
복합키에 대한 foreign key 제약조건 생성
check( grade IN ('A' , 'B' , 'C' , 'D') --> In안에 값 외에는 전부 false
desc 테이블명 -> 테이블과 제약조건 확인
update emp
set deptno =70 , ename 'hong'
where empno=7369;
부모키를 참조하기때문에 deptno=70은 안된다.
-. 트랜잭션(Transaction)은 다음의 4가지 속성을 갖는다.
1) 원자성(Atomicity) : 트랜잭션은 연산들을 전부 실행하든지 전혀 실행하지
않아야지 일부만 실행해서는 안된다. All or Nothing
2) 일관성(Consistency) : 트랜잭션이 성공적으로 실행되면 데이터베이스 상
태는 모순되지 않고 일관된 상태가 된다.
3) 격리성(Isolation) : 트랜잭션 실행 도중의 연산 결과는 다른 트랙잭션에서
접근할 수 없다.
4) 영속성(Durability) : 트랜잭션이 성공적으로 완료되면 그 결과는 영속적이
다.
오라클 sequence 의 사용이유와 주의점 (0) | 2014.12.30 |
---|---|
자바 배열복사 , arraycopy , 주소값이 같은 sallowcopy , 주소값이다른 deepcopy (0) | 2014.12.29 |
이클립스 자바 파일 이름변경 하는 방법 (0) | 2014.12.23 |
오라클 개인공부 필기 141220 기준 (0) | 2014.12.20 |
SubQuery를 이용한 테이블 생성 (0) | 2014.12.20 |