- 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블이다.

 - 뷰는 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 간주된다.






뷰 정의


CREATE VIEW 뷰이름[속성이름[,속성이름]]

AS SELECT문;


ex ) CREATE VIEW 춘천고객(성명, 전화번호)

AS SELECT 성명, 전화번호

FROM 고객

WHERE 주소 = '춘천시';







뷰 삭제


DROP VIEW 뷰이름 {RESTRICT | CASCADE};

RESTRICT : 뷰를 다른 곳에서 참조하고 있으면 삭제가 취소된다.

CASCADE : 뷰를 참조하는 다른 뷰나 제약 조건까지 모두 삭제된다.


ex ) DROP VIEW 춘천고객 RESTRICT;




'ComputerScience > Database' 카테고리의 다른 글

SQL - DML  (0) 2017.10.20
SQL - DDL  (0) 2017.10.20
정규화  (0) 2017.10.19


SELECT 


SELECT Predicate [테이블명.]속성명1, [테이블명.]속성명2, ...

FROM 테이블명1, 테이블명2, ...

[WHERE 조건]

[GROUP BY 속성명1, 속성명2, ...]

[HAVING 조건]

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

SELECT

 - 속성명 : 기본 테이블을 구성하는 모든 속성을 지정할 때는 '*'를 기술한다.

    두 개 이상의 테이블을 대상으로 검색할 때는 '테이블명.속성명'으로 표현한다.

 - predicate :  불러올 튜플 수를 제한할 명령어를 기술한다.

    ALL(생략), DISTINCT(중복 제거), DISTINCTROW

FROM

WHERE

 - 비교연산자 : =, <, >, <=, >=, IN(포함)

 - 논리 연산자 : NOT, AND, OR

 - LIKE : *, %, ?, _, #를 사용한 문자패턴 검색

GROUP BY : 특정 속성을 기준으로 그룹화하여 검색할 때 그룹화할 속성을 지정

 - COUNT(속성명) : 그룹별 튜플 수를 구하는 함수

 - MAX(속성명) : 그룹별 최대값을 구하는 함수

 - MIN(속성명) : 그룹별 최소값을 구하는 함수

 - SUM(속성명) : 그룹별 합계를 구하는 함수

 - AVG(속성명) : 그룹별 평균을 구하는 함수

HAVING : GROUP BY와 함께 사용되며, 그룹에 대한 조건을 지정한다.

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


ex1 ) SELECT * FROM 사원;

ex2 ) SELECT DISTINCT 주소 FROM 사원;

ex3 ) SELECT 부서, "부서의", 이름, "의 월급", 기본급+10 FROM 사원;


ex4 ) SELECT * FROM 사원 WHERE 부서='기획' OR 부서='인터넷';

ex5 ) SELECT * FROM 사원 WHERE 이름 LIKE "김%";

ex6 ) SELECT * FROM 사원 WHERE 생일 BETWEEN #01/09/69 AND #10/22/73#;


ex7 ) SELECT * FROM 사원 ORDER BY 부서 ASC, 이름 DESC;

ex8 ) SELECT 부서, AVG(부서) AS 평균 FROM 사원 GROUP BY 부서;

ex9 ) SELECT 부서, COUNT(*) AS 사원수 

FROM 사원 

WHERE 기본급>=100 

GROUP BY 부서 

HAVING COUNT(*)>=2;


ex10 ) SELECT * FROM 사원 WHERE 이름 NOT IN (SELECT 이름 FROM 여가활동);

ex11 ) SELECT 사원.이름 사원.부서, 여가활동.취미, 여가활동.경력

FROM 사원, 여가활동

WHERE 여가활동.경력>=10 AND 사원.이름=여가활동.이름;


ex12 ) SELECT * FROM 사원

UNION

SELECT * FROM 직원;







INSERT INTO 

 - 기본 테이블에 새로운 튜플을 삽입할 때 사용


INSERT INTO 테이블명(속성명1, 속성명2, ...)

VALUES(데이터1, 데이터2, ...);








DELETE FROM

 - 기존 테이블에 있는 튜플들 중에서 특정 튜플을 삭제할 때 사용


DELETE FROM 테이블명 WHERE 조건;








UPDATE SET

 - 기본 테이블에 있는 튜플들 중에서 특정 튜플의 내용을 변경할 때 사용


UPDATE 테이블명 

SET 속성명=데이터[, 속성명=데이터]

WHERE 조건;


'ComputerScience > Database' 카테고리의 다른 글

뷰(VIEW)  (0) 2017.10.25
SQL - DDL  (0) 2017.10.20
정규화  (0) 2017.10.19


Data Define Language

 - SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 명령문

 - DDL로 정의된 내용은 Meta-data가 되며, 시스템 카탈로그에 저장한다.






CREATE SCHEMA

 - 스키마를 정의하는 명령문

 - 스키마의 식별을 위해 스키마 이름과 소유권자나 허가권자를 정의한다.


CREATE SCHEMA 스키마이름 AUTHORIZATION 사용자아이디;

ex ) CREATE SCHEMA 대학교 AUTHORIZATION 홍길동







CREATE DOMAIN

 - 도메인을 정의한느 명령문이다.

 - 임의의 애트리뷰트에서 취할 수 있는 원자값의 범위가 SQL에서 지원하는 data_type에 

포함하는 전체 값이 아니고 일부분일 때 사용자가 그 값의 범위를 사용자의 data_type으로 정의


CREATE DOMAIN 도메인이름 data_type

[DEFAULT 초기값정의]

[CONSTRAINT VALID-도메인이름 CHECK (범위값)];

ex ) CREATE DOMAIN SEX CHAR(1)

DEFAULT '여'

CONSTRAINT VALID-SEX CHECK(VALUE IN ('남', '여', '?'));







CREATE TABLE

 - 기본 테이블을 정의하는 명령문


CREATE TABLE 기본테이블이름

(속성명 data_type [NOT NULL], ... ,

PRIMARY KEY(기본키속성명),

UNIQUE(대체키속성명),

FOREIGN KEY(외래키속성명),

REFERENCES 참조테이블(기본키속성명),

CONSTRAINT 제약조건명 CHECK(조건식));

ex ) CREATE TABLE 학생

(이름 VARCHAR(15) NOT NULL,

학번 VARCHAR(15) NOT NULL,

전공 VARCHAR(15) NOT NULL,

성별 SEX,

생년월일 DATE,

PRIMARY KEY(학번),

FOREIGN KEY(전공),

REFERENCE 학과(학과코드),

CONSTRAINT 성별제약 CHECK(성별='남'));







CREATE INDEX

 - 인덱스를 정의하는 명령문


CREATE [UNIQUE] INDEX 인덱스이름

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

[CLUSTER]

UNIQUE : 기본키나 대체키 같은 중복되는 값이 없는 속성으로 인덱스를 생성할 때

ASC : 오름차순 정렬

DESC : 내림차순 정렬

CLUSTER : 동일 인덱스 값을 갖는 튜플들을 그룹으로 묶을 때 사용


ex ) CREATE UNIQUE INDEX 고객번호INX

ON 고객(고객번호 ASC);








ALTER TABLE

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


ALTER TABLE 기본테이블이름 ADD 속성이름 data_type [DEFAULT '기본값'];

ALTER TABLE 기본테이블이름 ALTER 속성이름 [SET DEFAULT '기본값'];

ALTER TABLE 기본테이블이름 DROP 속성이름 [CASCADE];

ADD : 새로운 속성을 추가

ALTER : 특정 속성의 DEFAULT 값을 변경할 때 사용

DROP : 특정 속성을 삭제할 때 사용


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







DROP

 - 스키마, 도메인, 기본 테이블 , 뷰 테이블, 인덱스 등을 삭제하는 명령문이다.


DROP SCHEMA 스키마이름 [CASCADE | RESTRICTED];

DROP DOMAIN 도메인이름  [CASCADE | RESTRICTED];

DROP TABLE 기본테이블이름  [CASCADE | RESTRICTED];

DROP VIEW 뷰이름  [CASCADE | RESTRICTED];

DROP INDEX 인덱스이름

CASCADE : 삭제할 요소를 참조하는 다른 모든 개체를 함께 삭제한다.

RESTRICTED : 삭제할 요소를 다른 개체가 참조중일 때는 삭제를 취소한다.




'ComputerScience > Database' 카테고리의 다른 글

뷰(VIEW)  (0) 2017.10.25
SQL - DML  (0) 2017.10.20
정규화  (0) 2017.10.19


 - 함수의 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 

더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정

 - 정규화를 거치지 않으면 Anomaly가 발생할 수 있다.

 - 1NF, 2NF, 3NF, BCNF, 4NF, 5NF





1NF(제1정규형)

 - 릴레이션에 속한 모든 도메인이 원자값만으로 되어 있는 릴레이션








2NF(제2정규형)

 - 릴레이션 R이 1NF이고, 키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속 관계를 만족








3NF(제3정규형)

 - 릴레이션 R이 2NF이고, 키가 아닌 모든 애트리뷰트가 기본키에 대해 이행적 종속 관계를 이루지 않도록 제한한 관계형이다.







BCNF(Boyce-Codd 정규형)

 - 릴레이션 R에서 결정자가 모두 후보키인 관계형







4NF(제4정규형)

 - 릴레이션 R에 A->B가 성립하는 경우 R의 모든 속성이 A에 함수적 종속이면 이 릴레이션 R은 4정규형에 속한다.







5NF(제5정규형, PJ/NF)

 - 릴레이션 R의 모든 조인 종속성(JD)의 만족이 R의 후보키를 통해서만 만족될 때 그 릴레이션 R은 제5정규형 또는 PJ/NF에 속한다.

'ComputerScience > Database' 카테고리의 다른 글

뷰(VIEW)  (0) 2017.10.25
SQL - DML  (0) 2017.10.20
SQL - DDL  (0) 2017.10.20

+ Recent posts