금오공대 컴퓨터공학전공 강의자료

Similar documents
금오공대 컴퓨터공학전공 강의자료

DBMS & SQL Server Installation Database Laboratory

금오공대 컴퓨터공학전공 강의자료

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - QVIZMVUMWURI.pptx

슬라이드 제목 없음

강의 개요

Microsoft PowerPoint - 사본 - DB06-SQL,시스템카탈로그,뷰.ppt

untitled

슬라이드 제목 없음

<C1A4BAB8C3B3B8AE5FBBEABEF7B1E2BBE75FC7CAB1E25F E687770>

< D53514C2CBAE42CBDC3BDBAC5DBC4ABC5BBB7CEB1D72D3130B3E2B0A3B1E2C3E2BAD0B7F9C1FD28C5EBC7D5292E687770>

MySQL-.. 1

6장. SQL

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch07_데이터베이스 언어 SQL.pptx

5장 SQL 언어 Part II

Microsoft PowerPoint - 10Àå.ppt

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

윈도우시스템프로그래밍

PowerPoint Presentation

The Relational Model

금오공대 컴퓨터공학전공 강의자료

PowerPoint Presentation

금오공대 컴퓨터공학전공 강의자료

SQL

PowerPoint Presentation

RDB개요.ppt

PowerPoint 프레젠테이션

Microsoft PowerPoint SQL 추가 기능

윈도우시스템프로그래밍

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

Database Applications - 멀티미디어 데이터베이스 – 제6장 텍스트 색인과 검색

TITLE

Microsoft PowerPoint - 사본 - OAS09-사무자동화 기술(DB).ppt

10.ppt

<4D F736F F F696E74202D20BFC0B6F3C5AC2D38C0E52DBAE4BFCD20BDC3BDBAC5DB20C4ABC5BBB7CEB1D72DBFC0B6F3C5AC2E BC8A3C8AF20B8F0B

PowerPoint 프레젠테이션

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

Microsoft PowerPoint - 5 [호환 모드]

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

Microsoft PowerPoint - 2장 (DBConcepts) [호환 모드]

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

PowerPoint 프레젠테이션

슬라이드 제목 없음

PowerPoint Presentation

Microsoft PowerPoint - 27.pptx

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

02-01 데이터베이스의필요성 데이터베이스의정의와특성

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

13주-14주proc.PDF

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2

Microsoft PowerPoint Python-DB

Microsoft PowerPoint SQL-99

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

슬라이드 제목 없음

Microsoft PowerPoint Predicates and Quantifiers.ppt

<4D F736F F F696E74202D20BFC0B6F3C5AC2D31C0E52DB5A5C0CCC5CDBAA3C0CCBDBA20BDC3BDBAC5DB2E BC8A3C8AF20B8F0B5E55D>

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

슬라이드 1

슬라이드 제목 없음

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]

쉽게 풀어쓴 C 프로그래밊

Chapter 1: 데이터베이스시스템개관

금오공대 컴퓨터공학전공 강의자료

슬라이드 제목 없음

Microsoft PowerPoint - 4(SQL-Data Definition,BasicQuery) [호환 모드]

<4D F736F F F696E74202D E DB0FCB0E820BBE7BBF3BFA120C0C7C7D120B0FCB0E820B5A5C0CCC5CDBAA3C0CCBDBA20BCB3B0E8>

lecture01

201502IC1AP-1 DB 구축 2015 학년도 2 학기 프로젝트특강보고서 프로젝트명 : DB 구축 ( DB ) 2015 년 11 월 20 일 지도교수 : 황치곤교수님 학과 : 정보통신공학과 1팀제출자 : 역할성명학번 조장 조재석 조원 송찬호 2

문서 템플릿

Spring Boot/JDBC JdbcTemplate/CRUD 예제

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

OCW_C언어 기초

빅데이터분산컴퓨팅-5-수정

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

PowerPoint Presentation

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

금오공대 컴퓨터공학전공 강의자료

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

MS-SQL SERVER 대비 기능

<4D F736F F F696E74202D E20B0FCB0E820B5A5C0CCC5CD20B8F0B5A8B0FA20B0FCB0E820B5A5C0CCC5CDBAA3C0CCBDBA20C1A6BEE020C1B6B0C7>

강의 개요

Java ...

12. 데이타베이스 설계

금오공대 컴퓨터공학전공 강의자료

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

chap 5: Trees

슬라이드 1

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

슬라이드 1

Intra_DW_Ch4.PDF

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

Microsoft PowerPoint - Database.ppt

VENUS Express 사용자 매뉴얼

MySQL-Ch10

Transcription:

데이터베이스및설계 Chap 6. SQL 2013.04.10. 오병우 컴퓨터공학과

SQL 의역사 SEQUEL(Structured English QUEry Language) 에연유 1974 년, IBM 연구소에서발표 IBM 은 'SYSTEM R' 의인터페이스로설계구현 실험적관계데이터베이스시스템인터페이스표준 SQL 1986 년, SQL-86 또는 SQL1 1992 년개정, SQL/92, SQL-92 또는 SQL2 다음버전 : SQL3, SQL-99 현재 상용 DBMS 인 DB2 와 SQL/DS 의데이터언어로사용 ORACLE, INFORMIX, SYBASE 등과같은다른회사에서도채택 미국표준연구소 (ANSI) 와국제표준기구 (ISO) 에서관계데이터베이스의표준언어로채택 Department of Computer Engineering 2

SQL(Structured Query Language) SQL 의의미 구조화질의어 종합데이터베이스언어역할 단순히검색만을위한데이터질의어가아님 데이터정의어 (DDL), 데이터조작어 (DML), 데이터제어어 (DCL) 의기능모두제공 Department of Computer Engineering 3

SQL 의특징 Relational algebra 의특징포함 + 확장된 relational calculus 기초 고급비절차적데이터언어 사용자친화적인인터페이스제공 SQL 의표준화 상용 RDBMS 간의전환용이 관계데이터베이스를접근하는데이터베이스응용프로그램을작성기능제공 온라인터미널을통해대화식질의어로사용 Department of Computer Engineering 4

SQL 의특징 (2) 응용프로그램에삽입된형태로도사용가능 Java, COBOL, C/C++ 등과같은범용프로그래밍언어로된응용프로그램 개개의레코드단위로처리하기보다는레코드집합단위로처리 선언적언어 SQL 명령문에는데이터처리를위한접근경로 (access path) 에대한명세가불필요 Note 관계모델의공식적용어대신일반적인용어사용 릴레이션 테이블, 투플 행, 애트리뷰트 열 Department of Computer Engineering 5

스키마와카탈로그 스키마 SQL 데이터정의문 하나의응용 ( 사용자 ) 에속하는테이블과기타구성요소등의그룹 스키마이름, 스키마소유자나허가권자, ( 테이블, 뷰, 도메인, 기타내용 ) 포함 CREATE SCHEMA UNIVERSITY AUTHORIZATION SHLEE ; 실제로 CREATE SCHEMA 보다 CREATE DATABASE 명령문을씀 카탈로그 use information_ schema; show tables; 한 SQL 시스템에서의스키마들의집합 Information_schema : 그카탈로그에속한모든스키마에대한정보제공 Department of Computer Engineering 6

일반형식 도메인정의문 (1) CREATE DOMAIN 도메인 _ 이름데이터 _ 타입 [ 기정값 _ 정의 ] [ 도메인 _ 제약조건 _ 정의리스트 ]; ex) CREATE DOMAIN Dept CHAR(4) DEFAULT '??? CONSTRAINT VALID-DEPT CHECK( VALUE IN ('COMP', 'ME', 'EE', 'ARCH', '???')); ALTER DOMAIN 도메인 _ 이름 < 변경내용 > 참조하는곳이없을때 이것중하나 DROP DOMAIN 도메인 _ 이름 RESTRICT CASCADE ; 따라가서삭제 Department of Computer Engineering 7

도메인정의문 (2) 데이터타입시스템데이터타입만사용 숫자 INTEGER, SMALLINT : 정수 FLOAT(n), REAL, DOUBLE PRECISION : 실수 DECIMAL(i, j), NUMERIC(i, j) : 정형숫자 문자스트링 CHAR(n) : 고정길이문자 VARCHAR(n) : 가변길이문자 비트스트링 BIT(n), BIT VARYING(n) 날짜 DATE : YY-MM-DD 시간 TIME : hh:mm:ss TIMESTAMP : DATE 와 TIME 포함 INTERVAL : DATE, TIME, TIMESTAMP 포함 Department of Computer Engineering 8

테이블의종류 기본테이블의생성 (1) 기본테이블 (base table) 원래 DDL 에의해만들어지는테이블 독자적으로존재가능 뷰 (view) DDL 로만들어지지만독자적으로존재불가 어떤기본테이블로부터유도 (derived) 되어만들어지는가상테이블 (virtual table) 임시테이블 (temporary table) DDL 에의해만들어지는것이아님 질의문처리과정의중간결과로만들어지는테이블 Department of Computer Engineering 9

일반형식 기본테이블의생성 (2) CREATE TABLE 기본테이블 ({ 열이름데이터타입 [NOT NULL] [DEFAULT 값 ],} + [PRIMARY KEY ( 열이름 _ 리스트 ),] {[UNIQUE ( 열이름 _ 리스트 ),]} * {[FOREIGN KEY( 열이름 _ 리스트 ) REFERENCES 기본테이블 [( 열이름 _ 리스트 )] [ON DELETE 옵션 ] [ON UPDATE 옵션 ],]} * [CONSTRAINT 이름 ] [CHECK( 조건식 )]); Department of Computer Engineering 10

예제 기본테이블의생성 (3) CREATE TABLE ENROL ( Sno DSNO NOT NULL, Cno DCNO NOT NULL, Grade INTEGER, PRIMARY KEY(Sno,Cno), FOREIGN KEY(Sno) REFERENCES STUDENT(sno) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(Cno) REFERENCES COURSE ON DELETE CASCADE ON UPDATE CASCADE, CHECK(Grade 0 AND Grade 100)); Department of Computer Engineering 11

기본테이블의제거와변경 (1) 기본테이블의제거 일반형식 DROP TABLE 기본 _ 테이블 _ 이름 { RESTRICT CASCADE } ; DROP TABLE COURSE CASCADE; 스키마제거 일반형식 DATABASE DROP SCHEMA 스키마 _ 이름 { RESTRICT CASCADE }; DROP SCHEMA UNIVERCITY CASCADE; Department of Computer Engineering 12

기본테이블의제거와변경 (2) 기본테이블의변경 일반형식 ALTER TABLE 기본 _ 테이블 _ 이름 예제 ([ADD 열 _ 이름데이터 _ 타입 ] [DEFAULT 기정값 ] [DROP 열 _ 이름 ] [CASCADE] [ALTER 열 _ 이름 (DROP DEFAULT SET DEFAULT 기정값 )]); ALTER TABLE ENROL ADD Final CHAR DEFAULT 'F'; ALTER TABLE ENROL DROP Grade CASCADE; Department of Computer Engineering 13

Example 대학 (University) 관계데이터베이스 학생 (STUDENT) 과목 (COURSE) 학번 (Sno) 이름 (Sname) 학년 (Year) 학과 (Dept) 100 나수영 4 컴퓨터 200 이찬수 3 전기 300 정기태 1 컴퓨터 400 송병길 4 컴퓨터 500 박종화 2 산공 과목번호 (Cno) 과목이름 (Cname) 학점 (Credit) 학과 (Dept) C123 프로그래밍 3 컴퓨터 C312 자료구조 3 컴퓨터 C324 화일구조 3 컴퓨터 C413 데이터베이스 3 컴퓨터 E412 반도체 3 전자 담당교수 (PRname) 김성국황수관이규찬이일로홍봉진 Department of Computer Engineering 14

Example (cont d) 대학 (University) 관계데이터베이스 등록 (ENROL) 학번 (Sno) 100 100 200 300 300 300 400 400 400 400 500 과목번호 (Cno) C413 E412 C123 C312 C324 C413 C312 C324 C413 E412 C312 성적 (Grade) A A B A C A A A B C B 중간성적 (Midterm) 90 95 85 90 75 95 90 95 80 65 85 기말성적 (Final) 95 95 80 95 75 90 95 90 85 75 80 Department of Computer Engineering 15

SQL 데이터조작문 데이터검색 기본구조 SELECT 열 _ 리스트 FROM 테이블 _ 리스트 WHERE 조건 ; 예 SELECT FROM WHERE Sname, Sno STUDENT Dept = ' 컴퓨터 '; 실행결과 Sname Sno 나수영 100 정기태 300 송병길 400 SELECT FROM WHERE STUDENT.Sname, STUDENT.Sno STUDENT STUDENT.Dept = ' 컴퓨터 '; Department of Computer Engineering 16

폐쇄시스템 (closed system) 데이터검색 (1) 기존테이블처리결과가또다른테이블이되는시스템 중첩질의문 (nested query) 의이론적기초 SQL 과이론적관계모델의차이점 SQL 의테이블 한테이블내에똑같은레코드 ( 행 ) 중복가능 Primary key를반드시가져야하는것은아님 이론상 SQL의테이블 투플의집합 같은원소의중복을허용하는다중집합 (multiset) 또는백 (bag) DISTINCT 명세 : 집합과같은결과를만듦 Department of Computer Engineering 17

일반적인형식 데이터검색 (2) SELECT [ALL DISTINCT] 열 _ 리스트 FROM 테이블 _ 리스트 [WHERE 조건 ] [GROUP BY 열 _ 리스트 [HAVING 조건 ]] [ORDER BY 열 _ 리스트 [ASC DESC]]; 검색결과에레코드의중복제거 SELECT DISTINCT Dept FROM STUDENT; 테이블의열전부를검색하는경우 SELECT * FROM STUDENT; Department of Computer Engineering 18

조건검색 데이터검색 (3) SELECT Sno,Sname FROM STUDENT WHERE Dept = ' 컴퓨터 ' AND Year = 4; 순서를명세하는검색 SELECT Sno, Cno FROM ENROL WHERE Midterm 90 ORDER BY Sno DESC, Cno ASC; 산술식과문자스트링이명세된검색 교재 p.142 ( 구교재 p.183) SELECT Sno AS 학번, ' 중간시험 = ' AS 시험, Midterm + 3 AS 점수 FROM ENROL WHERE Cno = 'C312'; Department of Computer Engineering 19

데이터검색 (4) 복수테이블로부터의검색 ( 조인 ) SELECT S.Sname, S.Dept, E.Grade FROM STUDENT S, ENROL E WHERE S.Sno = E.Sno AND E.Cno = 'C413'; 자기자신의테이블에조인하는검색 SELECT S1.Sno, S2.Sno FROM STUDENT S1, STUDENT S2 WHERE S1.Dept = S2.Dept AND S1.Sno < S2.Sno; Department of Computer Engineering 20

FROM 절에조인명세 데이터검색 (5) SELECT Sname, Dept, Grade FROM STUDENT JOIN ENROL ON (STUDENT.Sno=ENROL.Sno) WHERE ENROL.Cno = 'C413'; SELECT Sname, Dept, Grade FROM STUDENT JOIN ENROL USING(Sno) WHERE ENROL.Cno = 'C413'; SELECT Sname, Dept, Grade FROM STUDENT NATURAL JOIN ENROL WHERE ENROL.Cno = 'C413'; Department of Computer Engineering 21

데이터검색 (6) 집계함수 (aggregate function) 를이용한검색 집계함수 : COUNT, SUM, AVG, MAX, MIN SELECT COUNT(*) AS 학생수 FROM STUDENT; SELECT COUNT(DISTINCT Cno) FROM ENROL WHERE Sno = 300; SELECT AVG(Midterm) AS 중간평균 FROM ENROL WHERE Cno = C413 ; Department of Computer Engineering 22

GROUP BY 를이용한검색 데이터검색 (7) SELECT Cno, AVG(Final) AS 기말평균 FROM ENROL GROUP BY Cno; Cno에따라그룹으로분할 HAVING 을사용한검색 SELECT Cno, AVG(Final) AS 평균 FROM ENROL GROUP BY Cno HAVING COUNT(*) >= 3; GROUP BY에따른그룹의구성요건 Department of Computer Engineering 23

데이터검색 (8) 부속질의문 (Subquery) 을사용한검색 부속질의문 다른질의문에중첩 (nested) 되어사용된검색문 형태 : SELECT-FROM-WHERE-GROUP BY-HAVING 중첩질의문 : 부속질의문을포함하고있는질의문 IN 다음에사용 : 집합의멤버십연산자 ( ) 로해석가능 SELECT Sname FROM STUDENT WHERE Sno IN (SELECT Sno FROM ENROL WHERE Cno = 'C413'); Department of Computer Engineering 24

데이터검색 (9) 부속질의문을사용한검색 (cont d) SELECT FROM WHERE Sname STUDENT Sno NOT IN (SELECT Sno FROM ENROL WHERE Cno = C413 ); SELECT Sname, Dept FROM STUDENT WHERE Dept = (SELECT Dept FROM STUDENT WHERE Sname = 정기태 ); Department of Computer Engineering 25

데이터검색 (10) 부속질의문을사용한검색 (cont d) SELECT Sno, Cno FROM ENROL WHERE Final > ALL (SELECT Final FROM ENROL WHERE Sno = 500); Department of Computer Engineering 26

LIKE 를사용하는검색 LIKE 데이터검색 (11) 서브스트링패턴 (substring pattern) 비교연산자 % _ 어떤길이의어떤문자스트링도관계없음을의미 (underbar) 문자하나를의미 SELECT FROM WHERE Cno, Cname COURSE Cno LIKE 'C%'; Department of Computer Engineering 27

NULL 을사용한검색 NULL 데이터검색 (12) 누락된정보 (missing information) 값은있지만모르는값 (unknown value) 해당되지않는값 (unapplicable value) 의도적으로유보한값 (withheld value) NULL 이추가된 3- 값논리 (3-VL: 3-value logic) 논리값으로보면참 (true) 도거짓 (false) 도아닌미정 (unknown) AND T F U OR T F U NOT T F U T F U F F U U F U T F U T T T T F U T U U T F U F T U Department of Computer Engineering 28

데이터검색 (13) NULL 을사용한검색 (cont d) SELECT FROM WHERE Sno, Sname STUDENT Dept IS NULL; 열 _ 이름 IS [NOT] NULL 의형식만허용 열 _ 이름 = NULL 의형식은불법적형식 널값 : 조건식에서비교연산자와같이사용 항상거짓 Year 의값이널인경우다음은모두거짓이거나불법 Year > 3 Year 3 Year = 3 Year 3 Year = NULL ( 불법적형식 ) Year NULL ( 불법적형식 ) Department of Computer Engineering 29

EXISTS 를사용하는검색 데이터검색 (14) 과목 C413 에등록한학생의이름을검색하라. SELECT Sname FROM STUDENT WHERE EXISTS (SELECT * FROM ENROL WHERE Sno = STUDENT.Sno AND Cno = 'C413'); Note : EXISTS 이하 SELECT 문이참 ( 공집합이아님 ) 일때본 SELECT 문을실행 Department of Computer Engineering 30

데이터검색 (15) EXISTS 를사용하는검색 (cont d) 과목 C413 에등록하지않은학생의이름을검색하라. SELECT Sname FROM STUDENT WHERE NOT EXISTS (SELECT * FROM ENROL WHERE Sno = STUDENT.Sno AND Cno = 'C413'); Department of Computer Engineering 31

UNION 이관련된검색 SELECT Sno FROM STUDENT WHERE Year = 1 UNION SELECT Sno FROM ENROL WHERE Cno = 'C324'; 데이터검색 (16) Note : 중복되는투플은제거 Department of Computer Engineering 32

일반적인형식 UPDATE 데이터의갱신 (1) 테이블 SET { 열 _ 이름 = 산술식 } + [WHERE 조건 ]; 하나의레코드변경 UPDATE STUDENT SET Year = 2 WHERE Sno = 300; 복수의레코드변경 UPDATE COURSE SET Credit = Credit + 1 WHERE Dept = ' 컴퓨터 '; Department of Computer Engineering 33

부속질의문을이용한변경 데이터의갱신 (2) UPDATE ENROL SET Final = Final + 5 WHERE Sno IN ( SELECT Sno FROM STUDENT WHERE Dept = ' 컴퓨터 '); UPDATE STUDENT SET Dept = (SELECT Dept FROM COURSE WHERE Cname = 데이터베이스 ) WHERE Year = 4; Department of Computer Engineering 34

데이터의삽입 (1) 일반형식 INSERT INTO 테이블 [( 열 _ 이름 _ 리스트 )] VALUES ( 열값 _ 리스트 ); INSERT INTO 테이블 [( 열 _ 이름 _ 리스트 )] SELECT 문 ; Department of Computer Engineering 35

레코드의직접삽입 데이터의삽입 (2) INSERT INTO STUDENT(Sno, Sname, Year, Dept) VALUES (600, ' 박상철 ', 1, ' 컴퓨터 '); INSERT INTO VALUES STUDENT (600, ' 박상철 ', 1, ' 컴퓨터 '); INSERT INTO STUDENT(Sno, Sname, Year) VALUES (600, ' 박상철 ', 1); Department of Computer Engineering 36

데이터의삽입 (3) 부속질의문을이용한레코드삽입 INSERT INTO COMPUTER(Sno, Sname, Year) SELECT Sno, Sname, Year FROM STUDENT WHERE Dept = ' 컴퓨터 '; Department of Computer Engineering 37

데이터의삭제 (1) 일반형식 DELETE FROM 테이블 [WHERE 조건 ]; 하나의레코드삭제 DELETE FROM STUDENT WHERE Sno = 100; Note : Primary key 와 referential integrity( 참조무결성 ) 문제 Department of Computer Engineering 38

복수의레코드삭제 DELETE FROM ENROL; 데이터의삭제 (2) 부속질의문을사용한삭제 DELETE FROM ENROL WHERE Cno = 'C413' AND Final < 60 AND ENROL.Sno IN ( SELECT Sno FROM STUDENT WHERE Dept = ' 컴퓨터 '); Department of Computer Engineering 39

SQL 뷰 하나또는둘이상의기본테이블 (base table) 로부터유도되어만들어지는가상테이블 (Virtual table) 외부스키마는뷰와기본테이블들의정의로구성됨 기본테이블을들여다보는 ' 유리창 ' (window) 동적임 (dynamic) cf.) Snapshot: static 물리적인구현이아님 뷰의정의만시스템카탈로그 (SYSVIEWS) 에 SELECT-FROM- WHERE 의형태로저장됨 뷰에대한변경 테이블에대한변경 ( 제한적임 ) 불가능할수있음 (derived attribute) Error 가발생할수있음 (with check option) Null 로채워질수있음 ( 뷰에없는 attribute) Graphics 의 window & view 개념 Department of Computer Engineering 40

뷰의생성 (1) 일반형식 CREATE VIEW 뷰 _ 이름 [( 열 _ 이름리스트 )] AS SELECT 문 [WITH CHECK OPTION]; WITH CHECK OPTION 갱신이나삽입연산시조건확인 CREATE VIEW CSTUDENT2(Sno, Sname, Dept) AS SELECT Sno, Sname, Dept FROM STUDENT WHERE Dept = ' 컴퓨터 WITH CHECK OPTION; insert into CSTUDENT2 values (600, 아무로, 메카트로닉스 ) Error 발생 Department of Computer Engineering 41

뷰의생성 (2) CREATE VIEW CSTUDENT(Sno, Sname, Year) AS SELECT Sno, Sname, Year FROM STUDENT WHERE Dept = ' 컴퓨터 ; 기본테이블학생 (STUDENT) 의컴퓨터과학생 (CSTUDENT) 뷰 컴퓨터과학생 (CSTUDENT) 학번 이름 학년 Sno Sname Year 학과 Dept 100 나수영 4 컴퓨터 200 이찬수 3 전기 300 정기태 1 컴퓨터 400 송병길 4 컴퓨터 500 박종화 2 산공 Department of Computer Engineering 42

뷰의생성 (3) 예 (cont d) CREATE VIEW DEPTSIZE(Dept, Tstdn) AS SELECT Dept, COUNT(*) FROM STUDENT GROUP BY Dept; AS SELECT : 열의이름상속상속불가한경우나열이름이중복될경우반드시열이름명세 CREATE VIEW HONOR(Sname, Dept, Grade) AS SELECT STUDENT.Sname, STUDENT.Dept, ENROL.Final FROM WHERE 두개이상테이블조인 STUDENT, ENROL STUDENT.Sno = ENROL.Sno AND ENROL.Final > 90; Department of Computer Engineering 43

뷰의생성 (4) 예 (cont ) CREATE VIEW COMHONOR AS SELECT Sname FROM HONOR WHERE Dept = ' 컴퓨터 '; 정의된뷰를이용하여또다른뷰정의 Department of Computer Engineering 44

뷰의제거 (1) 일반형식 DROP VIEW 뷰 _ 이름 { RESTRICT CASCADE }; 예 RESTRICT 다른곳에서참조되고있지않는한데이터베이스에서제거 CASCADE 이뷰가사용된다른모든뷰나제약조건이함께제거 DROP VIEW DEPTSIZE RESTRICT; Note : Propagated Destroys 기본테이블이제거되면그위에만들어진인덱스나뷰도자동적으로제거됨 Department of Computer Engineering 45

뷰의조작연산 (1) 기본테이블에사용가능한검색 (SELECT) 문도뷰에사용가능변경 ( 삽입, 삭제, 갱신 ) 연산은제약 열부분집합뷰 (column subset view) CREATE VIEW STUDENT_VIEW1 AS SELECT Sno, Dept FROM STUDENT; Primary key 포함 : 이론적으로삽입, 삭제, 갱신, 검색가능 CREATE VIEW STUDENT_VIEW2 AS SELECT Sname, Dept FROM STUDENT; Primary key 불포함 : 이론적으로삽입, 삭제, 갱신, 검색불가 행부분집합뷰 (row subset view) CREATE VIEW STUDENT_VIEW3 AS SELECT Sno, Sname, Year, Dept FROM STUDENT WHERE Year=4; Department of Computer Engineering 46

조인뷰 (join view) 뷰의조작연산 (2) CREATE VIEW HONOR(Sname, Dept, Grade) AS SELECT STUDENT.Sname, STUDENT.Dept, ENROL.Final FROM STUDENT, ENROL WHERE STUDENT.Sno = ENROL.Sno AND ENROL.Final > 95; 통계적요약뷰 (statistical summary view) CREATE VIEW COSTAT(Cno, Avpoint) AS SELECT Cno, AVG(Midterm) FROM ENROL GROUP BY Cno; Department of Computer Engineering 47

뷰의조작연산 (3) 뷰는제한적인갱신만가능함 뷰이론적으로변경이가능한뷰 실제로변경이가능한뷰 Department of Computer Engineering 48

뷰의조작연산 (4) 변경연산이허용되지않는경우 1 뷰의열이상수나산술연산자또는함수가사용된산술식으로만들어질경우 2 집계함수 (COUNT, SUM, AVG, MAX, MIN) 가관련되어정의된경우 3 DISTINCT, GROUP BY, HAVING 이사용되어정의된경우 4 두개이상의테이블이관련되어정의된경우 5 변경할수없는뷰를기초로정의된경우 Department of Computer Engineering 49

뷰의장점 뷰의장단점 논리적독립성을제공 ( 확장, 구조변경 ) 데이터의접근을제어 ( 보안 ) 사용자의데이터관리를단순화 여러사용자에다양한데이터요구를지원 뷰의단점 정의를변경할수없음 삽입, 삭제, 갱신연산에제한이많음 Department of Computer Engineering 50