검색결과 리스트
글
조인은 둘 이상의 테이블간 연계하여 데이터를 검색한다.
보통 PK와 FK를 이용하는데 조인 조건을 정의 하지않거나 잘못된 경우, 첫 테이블이 다음 테이블의 모든 행과 조인 될 경우 카테션 곱(Cartesian Product)이 일어나 상호 테이블간의 모든 데이터가 반환 되는 현상이 일어난다.
조인의 종류는 다음과 같다.
1. Equi Join - 조건절에 = 에 의해 일어난다.
SELECT A.DATA, B.DATA
FROM t_table A, t_table_sec B
WHERE A.ID = B.ID;
2. Non-Equi Join - = 외의 조인 조건을 가진는 경우
SELECT A.DATA, B.DATA
FROM t_table A, t_table_sec B
WHERE A.VALUE BETWEEN B.VALUE AND B.NEXT_VALUE;
3. Self-Join - 자기 스스로 조인 일어나는 것으로 두개의 테이블을 조인 하는 것 처럼 보이는 경우
SELECT A.DATA, B.DATA
FROM t_table A, t_table B
WHERE A.ID = B.ID;
4. Outer Join - LEFT, RIGHT, FULL OUTER JOIN이 있으며 두개의 테이블의 컬럼들에서 공통되는 값이 없을 경우 종종 이용한다. (+) 를 이용하여 사용하는데 값이 없는 측에 붙여 사용한다.
SELECT A.DATA, B.DATA
FROM t_table A, t_table_sec B
WHERE A.ID(+) = B.ID;
위와 같이 작성을 했으나 한쪽에 데이터가 맞지 않은 경우가 있다 가령 NULL 값이 들어간 경우이다.
결과가
A.DATA B.DATA
------- -------
1 1
2
나와야 하는 경우 1에 대한 행만 나왔다면 다른 조건을 걸어 (+) 시켜 줘야한다.
4.1 LEFT OUTER JOIN - 오른쪽에 조인시킬 컬럼 값이 없을 경우
SELECT A.DATA, B.DATA
FROM t_table A LEFT OUTER JOIN t_table_sec B
WHERE A.ID = B.ID;
4.2 RIGHT OUTER JOIN - 쪽에 조인시킬 컬럼 값이 없을 경우
SELECT A.DATA, B.DATA
FROM t_table A RIGHT OUTER JOIN t_table_sec B
WHERE A.ID = B.ID;
4.3 FULL OUTER JOIN - 양측에 OUTER JOIN을 거는 경우
SELECT A.DATA, B.DATA
FROM t_table A LEFT FULL JOIN t_table_sec B
WHERE A.ID = B.ID;
5. INNER JOIN - 일반 조인에서 콤마 대신 INNER JOIN을 넣고 WHERE 대신 ON 넣는 방법
SELECT A.DATA, B.DATA
FROM t_table A INNER JOIN t_table_sec B
ON A.ID = B.ID;
6. NATURAL JOIN - Equi Join과 동일한 형태로 동일한 이름을 지니는 컬럼은 모두 조인이 된다. 또한 Alias는 사용하지 못하며 동일한 컬럼이 두개 이상일 경우 JOIN~USING을 이용하여 제어가 가능하다.
SELECT DATA, NAME FROM t_table NATURAL JOIN t_table_sec
7. JOIN~USING - NATURAL JOIN에 나타나는 문제를 제어하기 위한 것으로 해당하는 컬럼을 선택해서 조인이 가능하다. 또한 USING절 안에 포함되는 컬럼에 Alias를 지정하면 오류가 난다.
SELECT A.DATA, B.NAME, ID FROM t_table A JOIN t_table_sec B USING (ID)
8. ON - 조인 조건을 지정하며 논리 연산과 서브쿼리 지정이 가능하다.
SELECT A.DATA, B.NAME
FROM t_table A JOIN t_table_sec B ON (A.DATA = B.DATA)
JOIN t_table_third C ON (C.ID = A.ID)
설정
트랙백
댓글
글
테이블은 데이터베이스 상에 가장 기본적인 데이터 저장 단위이다.
이들은 컬럼과 레코드로 구성이 되며 두개 이상의 엔티티간의 관계 또한 표기가 가능하다.
테이블 생성하는 방법은 다음과 같다.
CREATE TABLE t_table
(
ID NUMBER CONSTRAINT table_id PRIMARY KEY,
NAME VARCHAR(100)
);
위에 보면 CONSTRAINT를 이용하여 PRIMARY KEY로 제약 조건을 걸어 놓은 것을 볼 수 있다.
또한 로그인한 계정으로 만든 테이블 내역들을 보려면 USER_TABLES 를 조회하면 확인 할 수가 있다.
위에서 제약 조건이란 무결성 원칙을 위한 규칙 정용이라 생각을 하면 되며 이들은 데이터 사전에 모두 저장이된다.
다음은 그 예들이다.
1. NOT NULL
CREATE TABLE t_table
(
ID NUMBER CONSTRAINT table_id NOT NULL,
NAME VARCHAR(100)
);
2. CHECK - 해당 컬럼 값 범위 제한
ALTER TABLE t_table
ADD CONTRAINT table_ck CHECK (NO>=1 AND NO<=100); --추가
DROP CONTRAINT table_ck; --삭제
3. DEFAULT 지정
CREATE TABLE t_table
(
ID NUMBER CONSTRAINT table_id NOT NULL,
DATE DEFAULT SYSDATE
);
4. UNIQUE - 유일한 데이터, 자동 인덱스 생성
ALTER TABLE t_table
ADD CONSTRAINT uk_ID UNIQUE(ID); -- 추가
DROP CONTRAINT uk_ID; -- 삭제
5. PRIMARY KEY - 유일한 기본키, UNIQUE와 NOT NULL의 특성을 함께 가짐. 참조 무결성을 위해 이용함. 자동 인덱스 생성
CREATE TABLE t_table
(
ID NUMBER CONSTRAINT table_id NOT NULL,
NAME VARCHAR(100)
);
ARTER TABLE t_table ADD CONTRAINT pk_name PRIMARY KEY(NAME);
6. FOREIGN KEY - 기본키들을 참조하는 컬럼이나 컬럼들의 집합을 말하며 반드시 참조하는 PK와 데이터형이 일치해야한다.
ARTER TABLE t_table ADD CONTRAINT fk_ID
FOREIGN KEY(ID) REFERENCES t_table_sec(ID);
설정
트랙백
댓글
글
정보처리기사나 각종 서적에 보면 DDL, DML, DCL이라는 것을 볼 수가 있다.
여기에선 그 정의를 알아본다. 총 3가지로 나뉠 수가 있다.
DDL(Data Definition Language) - 데이터베이스 객체인 테이블이나 뷰, 인덱스, 시퀀스 등의 구조를 정의 하며 CREATE, DROP, ALTER를 이용한다.
DML(Data Manipulation Language) - 데이터의 삽입, 삭제, 업데이트 등을 처리
DCL(Data Control Language) - 데이터베이스 사용자 권한 제어한다. GRANT로 권한을 부여하고, REVOKE로 취소한다.
RECENT COMMENT