: 관계형 데이터베이스를 지원하는 언어
: 관계대수와 관계해석을 기초로할 혼합 데이터 언어
: 질의 기능 뿐 아니라 데이터의 구조 정의, 조작, 제어기능을 모두 갖춤
: 데이터 정의어
: DB 관리자나 설계자가 사용
: schema, domain, table, view, index, sequence 등을 정의하거나 변경,삭제할 때 사용
- CREATE SCHEMA
CREATE SCHEMA 스키마이름 AUTHORIZATION 사용자ID;
- CREATE DOMAIN
CREATE DOMAIN 도메인이름[AS] 데이터타입 [DEFAULT 기본값] [CONSTRAINT 제약조건이름 CHECK(범위값)];
- CREATE TABLE
CREATE TABLE 테이블 이름 (속성이름 데이터타입) [DEFAULT 기본값][NOT NULL]....;
- CREATE VIEW
CREATE VIEW 뷰이름 [(속성이름[, 속성이름.....])] AS SELECT문;
- CREATE INDEX
CREATE [UNIQUE] INDEX 인덱스이름 ON 테이블이름(속성이름[ASC | DESC] [,속성이름 [ASC | DESC]]) [CLUSTER];
- ALTER TABLE
ALTER TABLE 테이블이름 ADD | ALTER 속성이름 데이터타입;
ALTER TABLE 테이블이름 DROP COLUMN 속성이름 [CASCADE];
- DROP
DROP SCHEMA | DOMAIN | TABLE | VIEW | INDEX | CONSTRAINT [CASCADE | RESTRICT];
: 데이터 조작어
: DB 사용자가 저장된 데이터를 실질적으로 처리하는데 사용되는 언어
: 사용자와 관리자간의 인터페이스 제공.
- SELECT
SELECT * | 속성이름 FROM 테이블 이름 [WHERE 조건] [GROUP BY 속성이름][HAVING 조건][ORDER BY 속성이름[ASC | DESC]];
!!!!! 집합연산자 종류
1) UNION : 합집합(중복제거)
2) UNION ALL : 합집함 (중복허용)
3) INTERSECT : 교집합
4) EXCEPT : 차집합(첫번째 - 두번째)
: 데이터 제어어
: 데이터의 보안, 무결성, 회복, 병행수행 제어 등의 정의하는 언어
: DB 관리자가 데이터 관리를 목적으로 사용.
- GRANT/REVOKE
GRANT 사용자등급 TO 사용자_ID_리스트 [IDENTIFIED BY 비밀번호];
REVOKE 사용자등급 FROM 사용자_ID_리스트;
- COMMIT;
: 현재 DB의 상태를 저장.
: 자동으로 설정해놓으면 DML문이 성공적으로 완료되면 자동으로 COMMIT이 되고 실패하면 ROLLBACK이 됨.
- ROLLBACK;
: 아직 COMMIT 되지 않은 모든 내용을 취소하고 이전으로 되돌리는 기능.
- SAVEPOINT;
: ROLLBACK할 위치인 저장점을 지정.
: 저장점을 지정할때는 이름을 지정하고, ROLLBACK시 저장점까지의 처리내용이 취소됨.
: 2개이상의 테이블에 대해 연관된 튜플들을 결합하여 새로운 릴레이션 반환.
- INNER JOIN
: 관계가 설정된 두 테이블에서 조인된 필드가 일치하는 행만을 표시.
WHERE절 이용
SELECT [테이블이름1]속성명, [테이블2]속성명...FROM 테이블이름1, 테이블이름2 WHERE 테이블1.속성명= 테이블2.속성명;
NATURAL JOIN 이용
SELECT [테이블이름1]속성명, [테이블2]속성명...FROM 테이블이름1 NATURAL JOIN 테이블이름2;
: 조인할 속성을 따로 지정하지 않기 때문에 두테이블에는 이름과 도메일이 같은 속성이 반드시 있어야함.
JOIN ~ USING절 이용
SELECT [테이블이름1]속성명, [테이블2]속성명...FROM 테이블이름1 JOIN 테이블이름2 USING(속성명);
- OUTER JOIN
: JOIN 조건에 만족하지 않는 튜플도 결과로 출력하기 위한 방법.
LEFT OUTER JOIN
SELECT [테이블이름1]속성명, [테이블2]속성명...FROM 테이블이름1 LEFT OUTER JOIN 테이블이름2 ON 테이블이름1.속성명 = 테이블이름2.속성명;
: INNER JOIN의 결과(두테이블 모두 관련있는 행)를 구한뒤 좌측 릴레이션은 모두 표시하고 INNER JOIN결과를 붙임.
RIGHT OUTER JOIN
SELECT [테이블이름1]속성명, [테이블2]속성명...FROM 테이블이름1 RIGHT OUTER JOIN 테이블이름2 ON 테이블이름1.속성명 = 테이블이름2.속성명;
: INNER JOIN의 결과(두테이블 모두 관련있는 행)를 구한뒤 우측 릴레이션은 모두 표시하고 INNER JOIN결과를 붙임.