- 테이블을 구성하는 튜플들 중에서 전체 또는 조건을 만족하는 튜플을 검색하여 주기억장치에 임시테이블로 구성

 

1. SELECT문의 일반 형식

SELECT [PREDICATE] [테이블명.]속성명 [AS 별칭][, 테이블명.][속성명]

FROM 테이블명[, 테이블명]

[WHERE 조건]

[GROUP BY 속성명[, 속성명]]

[HAVING 조건]

[ORDER BY 속성명 [ASC | DESC][, 속성명 ASC|DESC]] ;


1) SELECT

- PREDICATE : 검색할 튜플을 제한할 목적으로 사용되는 조건

   ALL : 모든 튜플 검색

   DISTINCT : 중복 튜플 제거

   DISTINCTROW : 중복 튜플 제거 + 튜플의 전체 값을 대상으로 함 (선택된 속성 값X)

- 속성명 : 검색하여 불러올 속성 또는 수식

  두 개 이상 테이블 대상으로 검색할 시 테이블명.속성명

- AS : 속성 및 연산의 이름을 다른 제목으로 표시하기 위해 사용 (속성처럼 이름을 붙여서 표시함)


2) FROM

- 검색할 데이터가 들어 있는 테이블명


3) WHERE

- 검색할 조건 기술.

다양한 조건 연산자의 사용이 가능. 연산자 우선순위 따름


4) GROUP BY

- 특정 속성을 기준으로 그룹화 하여 검색할 때 사용

- 그룹 함수와 함께 잘 사용


5) HAVING

- 그룹에 대한 조건을 기술 (조건 만족 안하면 그룹으로 표시 자체가 안됨)


6) ORDER BY

- 특정 속성을 기준으로 정렬하여 검색할 때 사용

- 속성명 / 차순 ...


* 주의할 연산자

- <> : 같지 않다

- LIKE 연산자 : 대표 문자를 이용해 지정된 속성의 값이 문자 패턴과 일치하는 튜플을 검색하기 위해 사용

%

_

#

모든 문자를 대표함

문자 하나를 대표함

숫자 하나를 대표함


- 그룹함수

COUNT(속성명)

그룹별 튜플 수

 

SUM(속성명)

그룹별 합계

MAX(속성명)

그룹별 최대값

 

AVG(속성명)

그룹별 평균

MIN(속성명

그룹별 최소값

 

 

 


* 다양한 SELECT문 사용 예시

1) SELECT Trim(이름)+“월급은” AS 이름, 기본급+10 AS 기본급

 

-> 이름에 공백 제거 후 뒤에 월급은 붙인 것이 이름이라는 속성 밑에 도메인으로 들어가

기본급에 10 더해진 값이 기본급이라는 속성 밑에 도메인으로 들어가

는 듯 가상테이블 구성

2) WHERE 부서 = ‘기획’ OR 부서 = ‘인터넷’ == WHERE 부서 IN (‘기획’. ‘인터넷’)

3) WHERE 이름 LIKE ‘%’

첫 번째 글자가 김인 모든 튜플

4) WHERE 기본급 BETWEEN 80 AND 100

BETWEEN A AND B .. A B 사이...

5) 하위 질의

조건절에 주어진 하위 질의를 먼저 수행하여 그 검색 결과를 조건절의 피연산자로 사용

상위 질의를 이루는 것은 모두 상위 질의 FROM 테이블의 속성들이고

하위 질의문 괄호 안은 전부 하위 질의

즉 하위 질의의 결과로 찾게되는 상위 질의의 속성을 찾는 것

WHERE 이름<상위> IN (SELECT 이름<하위> FROM 여가활동 WHERE 취미 = ‘나이트 댄스’;


1. DDL의 개념

- 스키마, 도메인, 테이블, , 인덱스를 정의, 정의 변경, 제거

- DDL로 정의된 내용은 메타데이터가 됨-> 시스템 카탈로그에 저장(데이터사전)

    스키마!! 가 메타데이터.. 데이터 사전에 저장된 정보임

CREATE

스키마, 도메인, 테이블, 인덱스, , 트리거를 정의

ALTER

테이블에 대한 정의를 변경

DROP

스키마, 도메인, 테이블, 인덱스, , 트리거를 제거(CONSTRAINT 도 제거..제약조건)

 

2. CERATE SCHEMA

- 스키마 : 하나의 응용(사용자)에 속하는 테이블과 기타 구성 요소 등을 그룹 짓기 위한 것

- 스키마 이름, 해당 스키마 소유권자나 허가권자를 정의-> 스키마 식별

CREATE SCHEMA 스키마명 AUTHORIZATION 사용자_ID;

CREATE SCHEMA 대학명 AUTHORIZATION 홍길동;

 

3. CERATE DOMAIN

- 도메인 :

하나의 속성이 취할 수 있는 동일한 타입의 원자 값들의 집합.

특정 속성에서 사용 할 데이터 범위를 사용자가 정의하는 사용자 정의 데이터 타입

임의의 속성에서 취할수 있는 값의 범위가 SQL에서 지원하는 전체 데이터 타입의 값이 아니고 일부분일 때 그 값의 범위를 도메인으로 정의할 수 있음

- 정의된 도메인 명은 일반적인 데이터 타입처럼 사용

(SEX 도메인은 이미 도메인이 CREATE 되어 있어 SEX로만 쳐도 도메인으로 바로 사용 가능)

CREATE DOMAIN 도메인명 데이터_타입

[DEFAULT 기본값]

[CONSTRAINT 제약조건명 CHECK (범위 값)] ;

CREATE DOMAIN SEX CHAR(1)

DEFAULT ‘

CONSTRAINT VALID-SEX CHECK(VALUE IN(‘’, ‘’));

* 데이터 타입

정수

INT(4Byte) SMALLINT(2Byte)

고정길이 비트열

BIT(n)

실수

FLOAT REAL DOUBLE PRECISION

가변길이 비트열

VARBIT(n)

형식화된 숫자

DEC(i ,j) i:전체 자릿수, j:소수부 자릿수

날짜

DATE

고정길이 문자

CHAR(n) n:문자 수

시간

TIME

가변길이 문자

VARCHAR(n) n:최대 문자 수

 

 

 

4. CERATE TABLE

CREAT TABLE 테이블명

(속성명 데이터_타입[NOT NULL] ...

[, PRIMARY KEY (기본키_속성명, ... )]

[, UNIQUE (대체키_속성명...)]

[, FOREIGN KEY (외래키_속성명...)

REFERNCES 참조테이블(기본키_속성명 ...)]

[ON DELETE 옵션]

[ON UPDATE 옵션]

[, CONSTRAINT 제약조건명] [CHECK (조건식)] ) ;

기본 테이블에 포함될 모든 속성에 대해 속성명, 속성의 데이터 타입, NOT NULL(생략가) 지정

PRIMARY KEY : 기본키

UNIQUE : 대체키

FOREIGN KEY ~ REFERENCES ~ : 외래키, 참조 테이블. 외래키 지정되면 참조 무결성의 CASCADE 법칙 적용 됨


FOREIGN KEY ~ 에서의 옵션

- NO ACTION

- CASCADE : 참조 테이블의 튜플이 삭제되면 기본

테이블의 관련 튜플도 모두 삭제, 속성이 변경되면 관련

튜플의 속성 값도 모두 변경

- SET NULL

- SEL DEFAULT


->

ON DELETE 옵션 : 참조 테이블 튜플 삭제 시 기본테이블이 취해야 할 사항

ON UPDATE 옵현 : 참조 테이블의 속성 값이 변경되었을 때 기본 테이블이 취해야 할 사항

- CONSTRAINT : 제약조건의 이름 지정. 이름 지정할 필요 없으면 CHECK절만 사용해 속성 값에 대한 제약조건 명시

- CHECK : 속성 값에 대한 제약 조건 지정


CREATE TABLE 학생

(이름 VARCHAR(15) NOT NULL,

학번 CHAR(8),

전공 CHAR(5),

성별 SEX,-- 앞에서 미리 정의해 둔 도메인 SEX--

생년월일 DATE,

PRIMARY KEY(학번),

FOREIGN KEY(전공) REFERENCES 학과(학과코드)

ON DELETE SET NULL

ON UPDATE CASCADE

CONSTRAINT 생년월일제약

CHECK(생년월일>=1980-01-01));

기본키 지정하는 다른 방법

선언 시 속성 옆에 예약어 PRIMARY KEY를 추가

 

FOREIGN 절에 CONSTRAINT 절 사용

외래키에 이름 달기 가능

CONSTRAINT 외래키 이름 FOREIGN KEY (외래키 속성명) REFERENCES 참조테이블(기본키)

 

5. CERATE VIEW

- : 하나 이상의 기본 테이블로부터 유도되는 이름을 갖는 가상 테이블

CREATE VIEW 뷰명[속성명[, 속성명,, ...])]

AS SELECT;

- SELECT 문을 서브쿼리로 사용해서 SELECT문의 결과로서 뷰를 생성

속성명을 기술하지 않으면 SELECT문의 속성명 자동 사용

CREATE VIEW 안산고객(성명, 전화번호)

AS SELECT 성명, 전화번호

FROM 고객

WHERE 주소 = ‘안산시’ ;

 

 

6. CERATE INDEX

- 인덱스 : 검색을 빠르게 하기 위해 만든 보조적인 데이터 구조

CREATE [UNIQUE] INDEX 인덱스명

ON 테이블명({속성명 [ASC | DESC] [, 속성명 [ASC | DESC]]})

[CLUSTER] ;

- UNIQUE : 사용되면 중복 값 없는 속성으로 인덱스 생성 / 사용 안 되면 중복 값 있는 속성으로 생성

ASC : 오름차순 정렬 (생략 시 기본)

DESC : 내림차순 정렬

CLUSTER : 지정된 키에 따라 튜플들을 그룹으로 지정

CREATE UNIQUE INDEX 고객번호_IDX

ON 고객(고객번호 DESC) ;

 

  

7. CERATE TRIGGER

- 트리거 :

데이터의 입력, 갱신, 삭제 등의 이벤트가 발생할 때 마다 자동적으로 수행되는 사용자 정의 프로시저

SQL의 제약조건 방법을 통해 명시할 수 없는 무결성 제약조건을 구현, 관련 테이블의 데이터 일치시킬 때 사용

CREATE TRIGGER 트리거명 [동작시기][동작옵션] ON 테이블명

REFERENCING [NEW|OLD] TABLE AS 테이블명

FOR EACH ROW

WHEN 조건식

트리거 BODY

동작 시기 옵션 : 트리거가 실행 될 때 지정

AFTER : 테이블 변경 된 후

BEFORE : 테이블 변경 전

동작 옵션 : 트리거 실행(발동)시킬 작업 종류

INSERT / DELETE / UPDATE

테이블 선택 옵션 : 트리거가 적용될 테이블

종류

NEW : 새로 추가되거나 변경에 참여할 튜플

들의 집합

OLD : 변경된 튜플들의 집합(테이블)

트리거 적용

WHEN : 트리거가 실행되면서 지켜야 할 조건

트리거 BODY : 트리거의 본문 코드 입력 부분

BEGIN 으로 시작 ~ END 로 끝

적어도 하나 이상의 SQL구문 있어야 함(없음 오류 발생)

변수 치환 시 예약어 SET 사용

CREATE TRIGGER 학년정보_TRI BEFORE INSERT ON 학생

REFERENCING NEW TABLE AS new_table

FOR EACH ROW

WHEN new_table.학년 = ‘’

BEGIN

SET new_table.학년 = ‘신입생

END ;

 

 

8. ALRTER TABLE

- 테이블에 대한 정의를 변경하는 명령문

ALTER TABLE 테이블명 ADD 속성명 데이터_타입 [DEFAULT ‘기본값’];

ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT ‘기본값’];

ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];

ADD : 새 속성 추가

ALTER : 속성 기본 값 변경

DROP COLUMN : 속성 제거

ALTER TABLE 학생 ADD 학년 VARCHAR(3);

 

9. DROP

- 스키마, 도메인, 테이블, , 인덱스, 트리거, 제약조건(CONSTRAINT) 제거

DROP SCHEMA 스키마명 [CASCADE | RESTRICT];

DROP DOMAIN 도메인명 [CASCADE | RESTRICT];

DROP TABLE 테이블병 [CASCADE | RESTRICT];

DROP VIEW 뷰명 [CASCADE | RESTRICT];

DROP INDEX 인덱스명 [CASCADE | RESTRICT];

DROP TRIGGER 트리거명 [CASCADE | RESTRICT];

DROP CONSTRAINT 제약조건명;

CASCADE : 제거할 개체를 참조하는 다른 모든 개체 함께 제거

참조 무결성 제약 조건을 설정하기 위해 사용

RESTRICT : 다른 개체가 제거할 개체를 참조중일 경우 제거가 취소됨

 

 

 

1. 관계대수의 개념

- 관계형 DB에서 원하는 정보와 그 정보를 유도하는 방법을 기술하는 절차적 언어

- 하나 또는 두 개의 릴레이션을 입력으로 받아들여 결과로 새 릴레이션 생성하는 연산들의 집합

- 기본 연산 / 집합 연산 등

 

2. 순수 관계 연산자

- 조건에서는 비교 연산 허용 ➁∟(NOT) (AND) (OR) 논리 연산 허용

1) SELECT

- 릴레이션에 존재하는 튜플들 중 특정 조건을 만족하는 튜플들의 부분집합을 구하여 새 릴레이션 생성

- 수평 연산 : 릴레이션의 행에 해당하는 튜플을 구함

- 표기 형식 : 시그마 σ 

2) PROJECT

- 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만 추출하여 새로운 릴레이션 형성

- 연산 결과에 중복 발생 시 중복 제거

- 수직 연산 : 릴레이션에서 열에 해당하는 속성을 추출하는 것

- 표기 형식 : 파이 π 

3) JOIN

- 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐서 새로운 릴레이션 생성

- JOIN 연산의 결과로 만들어진 릴레이션의 차수 = 두 릴레이션 차수의 합

- JOIN의 연산 결과 = CARTENSIAN PRODUCT(교차곱) 연산 후 SELECT 연산 수행한 결과

- 표시 형식 : ▷◁     

- 세타 조인(θ-JOIN) : 비교 연산자를 θ로 일반화 하여 θ로 표현될 수 있는 조인

- 동일 조인(Equi JOIN) : θ‘=’인 동일 조인

- JOIN 조건이 = EO 동일 속성이 2번 나타나게 됨 (이름 = 이름 중복되는 속성 도메인 값..) 자연 조인 : 중복된 속성의 제거하여 같은 속성 1번만 나오게 하는 연산

4) DIVISION

두 릴레이션 사이에 서로 관계가 있는 속성들을 추출하되, 앞 릴레이션 속성에서 뒤 릴레이션 속성을 뺀 나머지 속성 값을 추출하여 새 릴레이션 생성

- 표기 형식 : 릴레이션 R [속성 r ÷ 속성 s] 릴레이션 S

R의 속성 r S의 속성 s 그리고 r = s


3. 일반 집합 연산자

- 합병 조건 : 합병하려는 두 릴레이션 간에 속성의 수가 같고, 대응되는 속성별로 도메인이 같아야 함

연산자

기능 및 수학적 표현

카디널리티

합집합

UNION

중복되는 튜플은 제거됨

- RS ={t | tR tS}

|RS| |R| + |S|

합집합의 카디널리티는 두 릴레이션 카디널리티의 합보다 크지 않다

교집합

INTERSECTION

- RS ={t | tR tS}

|RS| Min{|R|,|S|}

교집합의 카디널리티는 두 릴레이션 중 카디널리티가 적은 릴레이션의 카디널리티보다 크지 않다.

차집합

DIFFERNCE -

- R-S ={t | tR tS}

|R-S| |R|

차집합의 카디널리티는 릴레이션 R의 카디널리티보다 크지 않다.

교차곱

CARTENSIAN

PRODUCT ×

두 릴레이션에 존재하는 튜플들의 결합된 정보를 구하는 연산

R×S ={rs| rR sS}

|R×S| = |R| * |S|

카티시언 프로덕트의 카디널리티는 두 릴레이션의 카디널리티를 곱한 것과 같다.

(모든 속성들 사이의 속성 값들을 각각 다 곱하는 거 같더라)

 

4. 관계 해석

- 관계 데이터 모델의 제안자인 코드(E. F Codd)가 수학의 술어해석에 기반을 두고 제안

- 관계 데이터의 연산을 표현하는 방법

- 원하는 정보를 정의할 때는 계산 수식을 사용

- 원하는 정보가 무엇이라는 것만 정의하는 비절차적 언어

- 튜플 관계 해석 / 도메인 관계 해석

- 관계 해석과 관계 대수는 관계 DB 처리 기능과 능력 면에서 동등

- 관계 대수로 표현한 식은 관계 해석으로 표현 가능

- 질의어로 표현

1. 무결성의 개념

데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실세계의 실제 값이 일치하는 정확성

무결성 제약 조건 : DB에 저장된 데이터의 정확성을 보장하기 위해 정확하지 않은 데이터가 DB 내에 저장되는 것을 방지하기 위한 제약 조건

 

2. 무결성의 종류

NULL 무결성

릴레이션 특정 속성 값이 NULL이 될 수 없도록 하는 규정

고유 무결성

특정 속성에 대해 각 튜픙리 갖는 값들이 서로 달라야 한다는 규정

도메인 무결성

특정 속성 값이 그 속성에 정의된 도메인에 속한 값이어야 한다는 규정

키 무결성

하나의 릴레이션에는 적어도 하나의키가 존재해야 한다는 규정

관계 무결성

릴레이션에 어느 한 튜플의 삽입 가능 여부 or 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정

참조 무결성

외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 한다는 규정

개체 무결성

기본 릴레이션의 기본키를 구성하는 어떤 속성도 NULL 일 수 없다는 규정


1, 슈퍼키

- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키

- 튜플을 유일하게 구분할 수 있는 속성의 집합

  릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 송성의 집합과 동일한 값은 나타나지 않음

- 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족 / 최소성은 불만족

2. 후보키

- 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합

- 유일성과 최소성을 모두 만족

- 복합키 : 2개 이상의 필드를 조합하여 만든 키.. 후보키 가능하다!

3. 기본키

- 후보키 중 특별히 선정된 키 -> 후보키의 성질을 지님

  즉 유일성 + 최소성 만족 / 튜플 식별 시 반드시 필요

- 중복된 값 가질 수 없음

- Null 값 가질 수 없음

4. 대체키

- 후보키 중 기본키 제외한 나머지 후보키

5. 외래키

- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합

- 릴레이션 간 관계를 표현할 때 사용

- 참조 릴레이션의 기본키와 동일한 키 속성 지님

한 릴레이션에 속한 속성 A와 참조 릴레이션 기본키 B 가 같은 도메인상 정의 되었으면 속성 A 는 외래키


- 관계형 데이터 모델 : 데이터를 테이블 또는 릴레시견의 구조로 표현하는 논리적 데이터 모델

 

1. 관계형 데이터 구조 : 릴레이션

- 릴레이션 : 데이터를 원자 값으로 갖는 이차원의 테이블로 표현

- 논리적 구조이므로 다양한 정렬 기준을 통하여 릴레이션 표현 가능

릴레이션의 구성

구조 : 릴레이션 스키마

릴레이션에 데이터를 넣을 수 있도록 하는 릴레이션 틀

실제 값 : 릴레이션 인스턴스

어느 시점의 릴레이션에 들어있는 튜플들의 집합


- 속성 : 디그리 = 속성의 수 = 차수

- 튜플 : 카디널리티 = 튜플의 수 = 기수

 

2. ER모델을 관계형 데이터모델로 변환


- 개체는 개체 릴레이션으로 표현. 각 개체의 속성들은 개체 릴레이션의 속성으로 정의, 기본키는 밑줄

- 관계

1 : 1 관계

rel A의 기본키 <-or-> rel B의 외래키

 

ISA관계 상위객체 A 하위객체 B ,C

1 : N 관계

rel A의 기본키 -only-> rel B의 외래키

 

1) rel A 기본키 -> B C 외래키

N : M 관계

rel A 기본키 + rel B 기본키 모두 포함한 

별도의 릴레이션 생성

-> 교차 릴레이션 / 교차 엔티티

 

모든 개체의 릴레이션이 생성됨

2) A 속성을 BC가 각자 포함

 

 

 

B C 릴레이션만 생성되고 A 속성이 각 rel에 들어있음

상호 릴레이션 간 관계 존재 X 별도 릴레이션으로 관리


3. 릴레이션 스키마의 다른 표현

1) 속성만 기록한 도형으로 표기

- 논리 개체 관계도 (논리 ERD) / 논리 개체 관계 모델 (논리 ERD 모델)

2) 속성에 자료의 형과 크기를 표시한 도형으로 표기

- 물리 개체 관계도 (물리 ERD) / 물리 개체 관계 모델 (물리 ERD 모델)

 

3) 정보 공학적 도형을 이용하여 표기

- 대응수를 정보 공학적 그래픽 표기법을 이용해 표기

기호

의미

 

관계

표현

의미

|

필수

 

1 : 1

양쪽에 반드시 1개씩 존재

o

선택적

 

1:0 or 1:1

왼쪽 반드시 1/ 오른쪽 없거나 1개 존재

<

다중

 

1:N

왼쪽 반드시 1/ 오른쪽 반드시 여러 개 존재

 

 

 

1:1 or 1:N

왼쪽 반드시 1/ 오른쪽 1개 또는 여러 개 존재

 

 

 

1:0 or 1:1 or 1:N

왼쪽 반드시 1/ 오른쪽 0 or 1 or 여러 개 존재

 

4) 식별관계 / 비식별 관계

(1) 식별 관계

- 개체 A, B 사이의 관계에서 A 개체의 기본키가 B 개체의 외래키이면서 동시에 기본키가 되는 관계

- B 개체의 존재 여부가 A 개체의 존재 여부에 의존적인 경우

(2) 비식별 관계

- 개체 A, B 사이의 관계에서 A 개체의 기본키가 B 개체의 비 기본기 영역에서 외래키가 되는 관계

- B 개체의 존재 여부는 A 개체의 존재 여부와 관계 없이 존재

 

5) 테이블 정의서

- 테이블에 대한 자세한 설명과 컬럼에 대하여 정의한 문서

논리적 데이터 설계 시 클래스 다이어그램, 시퀀스 다이어그램 등의 문서와 같이 산출

- 시스템명, 테이블ID, 테이블명, 작성일 및 작성자, 컬럼ID, 컬럼명, 데이터 타입, 길이, 키정보, Null값 허용 여부 등

- 관계형 데이터 모델에서는 테이블 정의서 외에 뷰, 인덱스 등에 대한 정의서도 작성

+ Recent posts