092 SQL 개념
DDL(Data Define Language, 데이터 정의어)
- SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 언어
- DDL(데이터 정의어)의 세가지 유형
명령어 |
기능 |
CREATE |
SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의 |
ALTER |
TABLE에 대한 정의를 변경 |
DROP |
SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 삭제 |
DML(Data Manipulation Language, 데이터 조작어)
- 데이터베이스 사용자가 응용 프로그램이나 질의어를 통해 저장된 데이터를 실질적으로 처리하는데 사용되는 언어
- DML(데이터 조작어)의 네가지 유형
명령어 |
기능 |
SELECT |
테이블에서 조건에 맞는 튜플 검색 |
INSERT |
테이블에 새로운 튜플 삽입 |
UPDATE |
테이블에서 조건에 맞는 튜플의 내용 변경 |
DELETE |
테이블에서 조건에 맞는 튜플 삭제 |
DCL(Data Control Lanaguage, 데이터 제어어)
- 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의하는데 사용되는 언어
- DCL(데이터 제어어)의 종류
명령어 |
기능 |
COMMIT |
명령에 의해 수행된 결과를 실제 물리적 디스크로 저장, DB 조작 작업이 정상적으로 완료되었음을 관리자에게 알림 |
ROLLBACK |
DB 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구 |
GRANT |
DB 사용자에게 사용 권한 부여 |
REVOKE |
DB 사용자의 사용 권한 취소 |
093 DDL
CREATE TABLE
CREATE TABLE 테이블명
(속성명 데이터_타입 [DEFAULT 기본값][NOT NULL], ...
[, PRIMARY KEY(기본키_속성명, ...)]
[, UNIQUE(대체키_속성명, ...)]
[, FOREIGN KEY(외래키_속성명, ...)]
[REFERENCES 참조테이블(기본키_속성명, ...)]
[ON DELETE 옵션]
[ON UPDATE 옵션]
[, CONSTRAINT 제약조건명][CHECK (조건식)];
- 테이블을 정의하는 명령문
- 표기 형식
- 기본 테이블에 포함될 모든 속성에 대하여 속성명과 그 속성의 데이터 타입, 기본값, NOT NULL 여부 지정
- PRIMARY KEY : 기본키로 사용할 속성 or 속성의 집합 지정
- CHECK : 속성 값에 대한 제약 조건 정의
ALTER TABLE
ALTER TABLE 테이블명 ADD 속성명 데이터_타입 [DEFAULT '기본값'];
ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT '기본값'];
ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];
- 테이블에 대한 정의를 변경하는 명령문
- 표기 형식
- ADD : 새로운 속성(열) 추가
- ALTER : 특정 속성의 Default 값을 변경할 때 사용
- DROP COLUMN : 특정 속성 삭제
DROP
DROP SCHEMA 스키마명 [CASCADE | RESTRICT];
DROP DOMAIN 도메인명 [CASCADE | RESTRICT];
DROP TABLE 테이블명 [CASCADE | RESTRICT];
DROP VIEW 뷰명 [CASCADE | RESTRICT];
DROP INDEX 인덱스명 [CASCADE | RESTRICT];
DROP CONSTRAINT 제약조건명;
- 스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스, 제약 조건 등을 제거하는 명령문
- 표기 형식
- CASCADE : 제거할 요소를 참조하느느 다른 모든 개체를 함께 제거
- 주 테이블의 데이터 제거시 각 외래키와 관계를 맺고 있는 모든 데이터를 제거하는 참조 무결성 제약 조건 설정
- RESTRICT : 다른 개체가 제거할 요소를 참조중일 때는 제거 취소
094 DCL
GRANT / REVOKE
- GRANT : 권한 부여를 위한 명령어
- REVOKE : 권한 취소를 위한 명령어
- 테이블 및 속성에 대한 권한 부여 및 취소
GRNAT 권한_리스트 ON 개체 TO 사용자 [WITH GRANT OPTION];
REVOKE [GRANT OPTION FOR] 권한_리스트 ON 개체 FROM 사용자 [CASCADE];
COMMIT
- 트랜잭션이 성공적으로 끝나면 db가 새로운 일관성(Consistency) 상태를 가지기 위해 변경된 모든 내용을 DB에 반영하는 명령어
ROLLBACK
- 아직 COMMIT 되지 않은 변경된 모든 내용들을 취소하고 DB를 이전 상태로 되돌리는 명령어
SAVEPOINT
- 트랜잭션 내 ROLLBACK 할 위치인 저장점을 지정하는 명령어
095 DML
삽입문(INSERT INTO ~)
INSERT INTO 테이블명([속성명1, 속성명2, ...])
VALUES (데이터1, 데이터2, ...);
- 기본 테이블에 새로운 튜플 삽입
- 대응하는 속성과 데이터는 개수와 데이터 유형이 일치해야 함
- 기본 테이블의 모든 속성을 사용할 때는 속성명 생략 가능
삭제문(DELETE FROM ~)
DELETE
FROM 테이블명
[WHERE 조건];
- 기본 테이블에 있는 튜플들 중에서 특정 튜플(행) 삭제
- 모든 레코드를 삭제할 때는 WHERE절 생략
- 모든 레코드를 삭제하더라도 테이블 구조는 남아있음
- 디스크에서 테이블을 완전히 제거하는 DROP과 다름
갱신문(UPDATE ~ SET ~)
- 기본 테이블에 있는 튜플들 중에서 특정 튜플의 내용 변경
UPDATE 테이블명
SET 속성명 = 데이터[, 속성명=데이터, ...]
[WHERE 조건];
DML(데이터 조작어)의 네가지 유형
- SELECT(검색) : SELECET ~ FROM ~ WHERE ~
- INSERT(삽입) : INSERT INTO ~ VALUES ~
- DELETE(삭제) : DELETE FROM ~ FROM ~ WHERE ~
- UPDATE(변경) : UPDATE ~ SET ~ WHERE ~
096 DML - SELECT-1
일반 형식 및 기본 검색
SELECT [PREDICATE] [테이블명.]속성명1, [테이블명2.]속성명2, ...
FROM 테이블명[, 테이블명, ...]
- SELECT 절
- PREDICATE : 불러올 튜플 수를 제어할 명령어 기술
- DISTINCT : 중복된 튜플이 있으면 그 중 첫번째 한개만 검색
- 속성명 : 검색하여 불러올 속석(열) 및 수식들 지정
- FROM 절
- 질의에 의해 검색될 데이터들을 포함하는 테이블명 기술
조건 연산자
- 논리 연산자 : NOT, AND, OR
- LIKE : 대표 문자를 이용해 지정된 속성 값이 문자 패턴과 일치하는 튜플을 검색하기 위해 사용
- * OR % : 모든 문자를 대표
- _ : 문자 하나를 대표
- # : 숫자 하나를 대표
조건 지정 검색
SELECT [테이블명.]속성명1, [테이블명2.]속성명2, ...
FROM 테이블명[, 테이블명, ...]
[WHERE 조건];
- WHERE절에 조건을 지정하여 조건에 만족하는 튜플만 검색
- BETWEEN 연산자
- 생일이 '01/09/69'에서 '10/22/73' 사이인 자료만 검색
- WHERE 생일 BETWEEN #01/09/69# AND #10/22/73#
정렬 검색
- ORDER BY절에 특정 속성을 지정하여 지정된 속성으로 자료를 정렬하여 검색
SELECT [테이블명.]속성명1, [테이블명2.]속성명2, ...
FROM 테이블명[, 테이블명, ...]
[WHERE 조건];
[ORDER BY 속성명 [ASC | DESC]];
- 속성명 : 정렬의 기준이 되는 속성명 기술
- [ASC | DESC]
하위 질의
- 조건절에 주어진 질의를 먼저 수행하여 그 검색 결과를 조건절의 피연산자로 사용
- ex) '취미'가 '게임'인 사원의 '이름'과 '주소' 검색
SELECT 이름, 주소
FROM 사원
WHERE 이름 = (SELECT 이름 FROM 여가활동 WHERE 취미 = '게임');
097 DML - SELECT-2
그룹 지정
SELECT [테이블명.]속성명, [테이블명.]속성명, ...
FROM 테이블명[, 테이블명, ...]
[WHERE 조건]
[GROUP BY 속성명, 속성명, ...]
[HAVING 조건];
- 특정 속성을 기준으로 그룹화하여 검색할 때 그룹화할 속성 지정
- GROUP BY절
- 특정 속성을 기준으로 그룹화하여 검색할 때 사용
- 그룹 함수와 함께 사용
- HAVING절
- GROUP BY절과 함께 사용
- 그룹에 대한 조건 지정
그룹 함수
- COUNT(속성명) : 그룹별 튜플 수를 구하는 함수
- SUM(속성명) : 그룹별 합계를 구하는 함수
- AVG(속성명) : 그룹별 평균을 구하는 함수
- MAX(속성명) : 그룹별 최대값을 구하는 함수
- MIN(속성명) : 그룹별 최소값을 구하는 함수
집합 연산자
- 2개 이상의 테이블의 데이터를 하나로 통합하는 연산자
098 DML - JOIN
INNER JOIN
- EQUI JOIN
- JOIN 대상 테이블에서 공통 속성을 기준으로 '='(EQUAL) 비교에 의해 같은 값을 가지는 행 연결
- JOIN 조건이 '='일 때 동일한 속성이 두번 나타남
- NATURAL JOIN : 이중 중복된 속성을 제거하여 같은 속성을 한번만 표기하는 방법
- NON-EQUI JOIN
- JOIN 조건에 '=' 조건이 아닌 나머지 비교 연산자
- >, <, <>, >=, <= 연산자를 사용하는 JOIN 방법
OUTER JOIN
- 릴레이션에서 JOIN 조건에 만족하지 않는 튜플도 결과로 출력하기 위한 JOIN 방법
- LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN
SELF JOIN
- 같은 테이블에서 2개의 속성을 연결하여 EQUI JOIN 하는 JOIN 방법