슬라이드 제목 없음

Similar documents
Microsoft PowerPoint - QVIZMVUMWURI.pptx

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>

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

<4D F736F F F696E74202D E DB0FCB0E820BBE7BBF3BFA120C0C7C7D120B0FCB0E820B5A5C0CCC5CDBAA3C0CCBDBA20BCB3B0E8>

Microsoft PowerPoint SQL-99

Microsoft PowerPoint - 5 [호환 모드]

내용 3.1 관계모델의개념 3.2 관계제약조건과관계형데이타베이스스키마 3.3 갱신연산과트랜잭션그리고제약조건의위반처리 3.4 요약 Ch6 Fundamentas of Database Systems 2

슬라이드 제목 없음

슬라이드 제목 없음

슬라이드 제목 없음

Microsoft PowerPoint - 13(FD1) [호환 모드]

Microsoft PowerPoint 관계 DB의 FD와 정규화

Microsoft PowerPoint - 6 [호환 모드]

Microsoft PowerPoint 관계 대수 및 관계 해석(Part 1)

<4D F736F F F696E74202D E20B0FCB0E BCB3B0E820BECBB0EDB8AEC1F2B0FA20C3DFB0A1C0FB20C1A4B1D4C7FC>

Microsoft PowerPoint SQL 추가 기능

untitled

PowerPoint Presentation

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

DBMS & SQL Server Installation Database Laboratory

5장 SQL 언어 Part II

<4D F736F F F696E74202D20BFC0B6F3C5AC2D38C0E52DBAE4BFCD20BDC3BDBAC5DB20C4ABC5BBB7CEB1D72DBFC0B6F3C5AC2E BC8A3C8AF20B8F0B

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

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

<C1A4BAB8C3B3B8AE5FBBEABEF7B1E2BBE75FC7CAB1E25F E687770>

MySQL-.. 1

PowerPoint 프레젠테이션

슬라이드 제목 없음

6장. SQL

TITLE

PowerPoint Presentation

Microsoft PowerPoint - 10Àå.ppt

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

강의 개요

13주-14주proc.PDF

슬라이드 제목 없음

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

10.ppt

RDB개요.ppt

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

슬라이드 제목 없음

<4D F736F F F696E74202D E20B0FCB0E820B5A5C0CCC5CD20B8F0B5A8B0FA20B0FCB0E820B5A5C0CCC5CDBAA3C0CCBDBA20C1A6BEE020C1B6B0C7>

SQL

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

Microsoft PowerPoint 관계 대수 및 관계 해석(Part 2)

Microsoft PowerPoint - 7(ERModeling) [호환 모드]

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

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

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

< D53514C2CBAE42CBDC3BDBAC5DBC4ABC5BBB7CEB1D72D3130B3E2B0A3B1E2C3E2BAD0B7F9C1FD28C5EBC7D5292E687770>

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

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

PowerPoint 프레젠테이션

The Relational Model

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

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

Microsoft PowerPoint - 27.pptx

PowerPoint Presentation

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

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

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

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

Spring Boot/JDBC JdbcTemplate/CRUD 예제

6 장. 데이터베이스언어 SQL SQL 에서의단순질의하나이상의릴레이션을포함하는질의부질의 (subquery) 릴레이션전체를다루는연산데이터베이스변경 SQL 에서릴레이션스키마의정의뷰정의 2

윈도우시스템프로그래밍

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT

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

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

문서 템플릿

PowerPoint Presentation

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

쉽게 풀어쓴 C 프로그래밊

PowerPoint 프레젠테이션

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

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

Microsoft PowerPoint Python-DB

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

PowerPoint 프레젠테이션

PowerPoint Presentation

VENUS Express 사용자 매뉴얼

03-01 데이터모델링과데이터모델의개념 개체-관계모델 논리적데이터모델

윈도우시스템프로그래밍

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

PowerPoint 프레젠테이션

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

CH04) 쿼리 (Query) 데이터베이스일반 1- 쿼리 (Query) 1) 쿼리의개념 테이블의데이터에서사용자가원하는조건에의해필드를추출하거나레코드를추출할수있는개체로즉, 여러가지방법으로데이터를보고, 변경하고, 분석할수있음 쿼리를폼, 보고서, 데이터액세스페이지등의레코드원본

강의 개요

PowerPoint Presentation

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

MS-SQL SERVER 대비 기능

Microsoft PowerPoint - ch07 - 포인터 pm0415

PHP & ASP

설계란 무엇인가?

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

Microsoft PowerPoint - [2009] 02.pptx

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

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

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

Transcription:

Ch. 4 SQL (Sturctured Query Language) 2015.06 충북대학교경영정보학과조완섭 (wscho@chungbuk.ac.kr)

목차 - SQL2에서데이터정의, 제약조건및스키마변경 - SQL에서의기본질의 - 더복잡한 SQL 질의들 - SQL에서삽입, 삭제, 갱신구문 - SQL 뷰 - 주장으로추가적인제약조건명시 - SQL의부가적인기능들 Ch4 2

SQL 개요 데이터베이스언어 SQL 데이터베이스정의와질의및갱신을위한명령문들로구성 또한, SQL 은뷰를정의하고, 보안과권한관리를명시하고, 무결성제약조건을정의하고, 트랜잭션제어를명시하는명령어들도제공함 그리고, Java, COBOL, 또는 C/C++ 와같은범용프로그래밍언어로작성된프로그램에 SQL 문들을삽입하기위한기능들도있음 표준 SQL (ISO) 여러국가및 DBMS 제조사가채택한표준데이터베이스언어임 표준 SQL 은 SQL-86, SQL-92, SQL-99, SQL-03, SQL-06 등으로발전 Ch4 3

예제데이타베이스스키마 4 Ch5

데이터정의, 제약조건및스키마변경 SQL2에서스키마와카탈로그개념 CREATE TABLE 명령과 SQL2의데이타타입및제약조건 DROP SCHEMA와 DROP TABLE명령 ALTER TABLE 명령 Ch4 6

SQL2 에서스키마와카탈로그개념 CREATE SCHEMA Database는생성하는명령어 하나의데이터베이스안에는여러테이블, 뷰, 인덱스등을생성할수있음 Create Schema 명령은데이터뿐아니라메타데이터를생성하기위한공간을마련함 예 : JSMITH라는사용자소유의스키마 COMPANY를생성하는명령예 ) CREATE SCHEMA COMPANY AUTHORIZATION JSMITH ; 7

CREATE TABLE 명령과 SQL2 의데이타타입및제약조건 CREATE TABLE 새로운릴레이션 (table) 을생성하는명령어 릴레이션의이름과함께각애트리뷰트와그의데이터유형을기술함 데이터유형 : INTEGER, FLOAT, DECIMAL( i, j ), CHAR(n), VARCHAR(n) 등 예 ) CREATE TABLE DEPARTMENT ( DNAME VARCHAR(10) NOT NULL, DNUMBER INTEGER NOT NULL, MGRSSN CHAR(9) MGRSTARTDATE CHAR(9) ) ; SQL 은애트리뷰트값으로 NULL 을허용하지만 NOT NULL 제약조건을 지정한애트리뷰트의값으로 NULL 값을허용하지않음 8

CREATE TABLE 명령과 SQL 의데이타타입및제약조건 (cont.) CREATE TABLE 명령에서 PRIMARY KEY 절은릴레이션의기본키를구성하는하나이상의애트리뷰트들을명시하고, UNIQUE 절은대체키 ( 또는보조키 ) 를명시하며 ( 예, DeptName), FOREIGN KEY 절에서는참조무결성을지정함 외래키 (foreign key) 를정의할때참조무결성을위반할때취할동작 ON DELETE나 ON UPDATE 명령시의미에따라 SET NULL, CASCADE, SET DEFAULT 를지정할수있음 9

(a) CREATE TABLE EMPLOYEE ( FNAME VARCHAR(15) NOT NULL, MINIT CHAR, LNAME VARCHAR(15) NOT NULL, SSN CHAR(9) NOT NULL, BDATE ADDRESS DATE, VARCHAR(30), SEX CHAR, SALARY DECIMAL(10, 2), SUPERSSN CHAR(9), DNO INT NOT NULL, PRIMARY KEY (SSN), FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE( SSN ), FOREIGN KEY (DNO) REFERENCES DEPARTMENT (DNUMBER)) ; CREATE TABLE DEPARTMENT ( DNAME VARCHAR(15) NOT NULL, DNUMBER INT NOT NULL Check (Dnumber > 0 and Dnumber < 21); MGRSSN CHAR(9) NOT NULL, MGRSTARTDATE [ 그림 ] SQL2 데이터정의 DATE, (a) COMPANY 스키마를정의하는 SQL2 문장들 Ch5 10

PRIMARY KEY (DNUMBER), UNIQUE (DNAME), FOREIGN KEY (MGRSSN) REFERENCE EMPLOYEE (SSN)) ; CREATE TABLE DEPT_LOCATONS ( DNUMBER INT NOT NULL, DLOCATION VARCHAR(15) NOT NULL, PRIMARY KEY (DNUMBER, DLOCATON), FOREIGN KEY (DNUMBER) REFERENCES DEPARTMENT (DNUMBER)) ; CREATE TABLE PROJECT ( PNAME VARCHAR(15) NOT NULL, PNUMBER INT NOT NULL, PLOCATION VARCHAR(15), DNUM INT NOT NULL, PRIMARY KEY (PNUMBER), UNIQUE (PNAME), CREATE TABLE WORKS_ON FOREIGN KEY (DNUM) REFERENCES DEPARTMENT (DNUMBER)) ; ( ESSN CHAR(9) NOT NULL, PNO INT NOT NULL, HOURS DECIMAL(3, 1) NOT NULL, [ 그림 ] SQL2 데이터정의 (a) COMPANY 스키마를정의하는 SQL2 문장들 (cont.) 11

PRIMARY KEY (ESSN, PNO), FOREIGN KEY (ESSN) REFERENCES EMPLOYEE (SSN), FOREIGN KEY (PNO) REFERENCES PROJECT (PNUMBER)) ; CREATE TABLE DEPENDENT ( ESSN CHAR(9) NOT NULL, DEPENDENT_NAME VARCHAR(15) NOT NULL, SEX CHAR, BDATE REATIONSHIP DATE, PRIMARY KEY (ESSN, DEPENDENT_NAME), VARCHAR(8), FOREIGN KEY (ESSN) REFERENCES EMPLOYEE (SSN)) ; (b) CREATE TABLE EMPLOYEE (.... ON UPDATE CASCADE, DNO INT NOT NULL DEFAULT 1, CONSTRAINT EMPPK PRIMARY KEY (SSN), CONSTRAINT EMPSUPERFK 홍길동 FOREIGN KEY (SUPERSSN) PEFERENCES EMPLOYEE (SSN) ON DELETE SET NULL [ 그림 ] SQL2 데이터정의 (a) COMPANY 스키마를정의하는 SQL2 문장들 (cont.) (b) 디폴트애트리뷰트값과참조트리거된동작 (referential triggered action) 명시 이순신 ssn superssn?? 삭제변경 12

UPDATE CASCADE ) ; CONSTRAINT EMPDEPTFK CREATE TABLE DEPARTMENT (........ CREATE TABLE DEPT_LOCATIONS (.... FOREIGN KEY (DNO) REFERENCES DEPARTMENT (DNUMBER) ON DELETE SET DEFAULT ON MGRSSN CHAR(9) NOT NULL DEFAULT 888665555 CONSTRAINT DEPTPK PRIMARY KEY (DNUMBER), CONSTRAINT DEPTSK UNIQUE (DNAME), CONSTRAINT DEPTMGRFK FOREIGN KEY (MGRSSN) REFERENCES EMPLOYEE(SSN) ON DELETE SET DEFAULT ON UPDATE CASCADE ) ; PRIMARY KEY (DNUMBER, DLOCATION ), FOREIGN KEY (DNUMBER) REFERENCES DEPARTMENT(DNUMBER) ON DELETE CASCADE ON UPDATE CASCADE ) ; [ 그림 ] SQL2 데이터정의 (b) 디폴트애트리뷰트의값과참조트리거된동작 (referential triggered action) 명시 (cont.) 13

DROP SCHEMA 와 DROP TABLE 명령 DROP SCHEMA 스키마 (database) 를제거하는명령 (catalog 까지삭제함 ) CASCADE 선택사항은제거되는스키마에포함된모든테이블들, 도메인들, 기타요소까지연쇄적으로제거하도록함 RESTRICT 선택사항은비어있는스키마를제거할때사용예 ) DROP SCHEMA COMPANY CASCADE ; DROP TABLE 기본릴레이션을제거하는명령어 ( 카탈로그에서도그정보를삭제함 ) RESTRICT 선택사항은임의의제약조건들 ( 예 : 다른릴레이션에있는외래키에서참조하는경우 ) 이나뷰들에서참조되지않는테이블만을제거하는데사용됨 CASCADE 선택사항은테이블뿐만아니라테이블을참조하는모든제약조건과뷰까지스키마에서자동적으로제거함예 ) DROP TABLE DEPENDENT CASCADE ; 14

ALTER TABLE 명령 ALTER TABLE 기본테이블의정의를변경하는명령어 ALTER TABLE에는열 ( 애트리뷰트 ) 의추가 / 제거, 열정의의변경, 테이블제약조건들의추가 / 제거등이있음예 ) ALTER TABLE COMPANY.EMPLOYEE ADD JOB VARCHAR(12) ; 각 EMPLOYEE 튜플에대해서새로운애트리뷰트 JOB의값을입력해야함 ; 이는디폴트절을지정하거나 UPDATE 명령을사용하여이루어짐 만약디폴트절을명시하지않는다면, 명령이실행된직후에릴레이션의모든튜플에서추가된애트리뷰트의값은 NULL로지정됨 ; 따라서이러한경우에는열에대하여 NOT NULL 제약조건을사용할수없음 기존열을삭제할경우 CASCADE 선택사항은열과함께열을참조하는모든제약조건들과뷰들을스키마로부터연쇄적으로제거함 만약 RESTRICT를선택한다면, 그열을참조하는뷰들과제약조건들이없는경우에만열을제거함 15

SQL 질의의 SELECT-FROM-WHERE 구조 SQL 문의구조 SELECT < 애트리뷰트목록 > FROM < 테이블목록 > WHERE < 조건 > < 애트리뷰트목록 > : 질의결과에나타나는애트리뷰트이름목록 < 테이블목록 > : 질의의대상이되는릴레이션목록 < 조건 > : 질의결과의투플들이만족해야하는조건 ( 부울 ) 식 Select Lname, Bdate From Employee Where Salary > 40000; 16

SQL 에서의기본질의 SELECT 문 DB에서정보를검색하는기본문장으로실행결과는또다른테이블 ( 릴레이션이됨 ); relation is a closed set under SQL SQL 이론적인관계모델 (set of tuples) 과는달리 SQL 은중복된튜플을생성할 수있음 (multiset or bag); DISTINCT 키워드로중복을제거할수있음 Select From Essn, Sex Table Select Distinct Essn, Sex From Table 17

SQL Selection 연산 SQL 예제 - Selection 연산 Q1: 이름이 'John B. Smith' 인종업원의생일과주소를검색하시오. SELECT FROM WHERE AND AND FNAME, LNAME, BDATE, ADDRESS EMPLOYEE FNAME="John" MINIT="B" LNAME="Smith"; 18

SQL Selection 연산 SQL 예제 - 모든속성 display Q1_1: John Smith 에관한모든정보를검색하시오. SELECT * FROM EMPLOYEE WHERE FNAME="John" AND MINIT="B" AND LNAME="Smith"; 19

SQL 예제 Selection 연산 SQL Selection 연산 Q2) 급여가 25000 이상인종업원은? SELECT FNAME, LNAME, SEX, ADDRESS, SALARY FROM EMPLOYEE WHERE SALARY > 25000; Q2_1) 급여가 25000 이상인남자종업원은? SELECT FROM WHERE FNAME, LNAME, SEX, ADDRESS, SALARY EMPLOYEE SALARY > 25000 AND SEX = M ; 20

SQL Join 연산 Q3: Join 연산 직원과그의주소및부서명은? SELECT FNAME, LNAME, ADDRESS, DNAME FROM EMPLOYEE, DEPARTMENT WHERE DNO = DNUMBER ; Employee Department 21

SQL 질의의 SELECT-FROM-WHERE 구조 Q3: Join 연산의다른표현 SELECT FNAME, LNAME, ADDRESS, DNAME FROM EMPLOYEE, DEPARTMENT WHERE DNO = DNUMBER ; SELECT e.fname, e.minit, e.lname, d.dname FROM (EMPLOYEE AS e INNER JOIN DEPARTMENT AS d ON e.dno = d.dnumber ); 22

SQL Join 연산 Selection 과 Join 연산의연결 Q3_1: 'Research' 부서에서일하는모든종업원들의이름과주소는? SELECT FROM WHERE FNAME, LNAME, ADDRESS, DNAME EMPLOYEE, DEPARTMENT DNUMBER=DNO AND DNAME= Research ; EMPLOYEE WHERE 절에서 DNAME='Research 는 DEPARTMENT에서연구부서선택 DNUMBER=DNO는 DEPARTMENT와 EMPLOYEE 테이블을결합하는조건 ( 조인조건 ) 임 DEPARTMENT 23

SQL Join 연산 Q3_2: Join 조건이없는경우 => 카티전프로덕트 SELECT SSN, FNAME, LNAME, ADDRESS,DNUMBER,DNAME FROM EMPLOYEE, DEPARTMENT; Employee Department 24

SQL Join 연산 3-Way Join : 상세설명은뒷장참고 Q4: 'Stafford' 에위치한모든프로젝트에대하여프로젝트번호 (PNUMBER), 담당부서번호 (DNUM), 부서관리자의성 (LNAME), 주소 (ADDRESS), 생일 (BDATE) 을검색하라. SELECT FROM WHERE AND AND PNUMBER, DNUM, LNAME, ADDRESS, BDATE PROJECT, DEPARTMENT, EMPLOYEE DNUM=DNUMBER MGRSSN=SSN PLOCATION="Stafford"; 두개의조인조건 : DNUM=DNUMBER 는프로젝트와담당부서를조인하고, MGRSSN=SSN 은부서와그관리자를조인함 25

SQL Join 연산 SELECT FROM WHERE AND AND PNUMBER, DNUM, LNAME, ADDRESS, BDATE PROJECT, DEPARTMENT, EMPLOYEE DNUM=DNUMBER MGRSSN=SSN PLOCATION="Stafford"; Project Department PNAME PNUMBER PLOCATION DNUM DNAME DNUMBER MGRSSN ProductX 1 Bellaire 5 Research 5 333445555 ProductY 2 Sugarland 5 Administration 4 987654321 ProductZ 3 Houston 5 Headquarters 1 888665555 Computerization 10 Stafford 4 Reorganization 20 Houston 1 Newbenefits 30 Stafford 4 PLOCATION="Stafford"; DNUM=DNUMBER Stafford에서수행되는 Project Employee FNAME LNAME SSN DNO John Smith 123456789 5 Franklin Wong 333445555 5 Alicia Zelaya 999887777 4 Jennifer Wallace 987654321 4 Ramesh Narayn 666884444 5 Joyce English 453453453 5 Ahmad Jabbar 987987987 4 James Borg 888665555 1 MGRSSN=SSN 그 Project 의관리부서 그관리부서의 Manager 26

SQL 모호한속성이름과별명 SQL 에서는서로다른릴레이션에서동일한이름을갖는애트리뷰트가사용될수있음 예 : Employee (, name,, number) Department (, name,, number) 이라고가정함 이경우 SQL 에서 릴레이션 _ 이름. 애트리뷰트 _ 이름 형태를사용함으로써모호함을방지함 예 ) SELECT FROM WHERE EMPLOYEE.NAME, ADDRESS EMPLOYEE, DEPARTMENT DEPARTMENT.NAME= Research AND DEPARTMENT.NUMBER=EMPLOYEE.NUMBER ; 축약형 SELECT FROM WHERE AND FNAME, E.NAME, ADDRESS EMPLOYEE E, DEPARTMENT D D.NAME = Research D.NUMBER = E.NUMBER 27

SQL 모호한속성이름과별명 Self-join Q5: 종업원에대해, 종업원의성과이름, 그리고직속감독자의성과이름은? E SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME FROM EMPLOYEE E, EMPLOYEE S WHERE E.SUPERSSN=S.SSN ; S 28

DISTINCT 키워드 질의결과에중복된튜플들이나타날수있으며, 중복된튜플을제거하려면키워드 DISTINCT 를사용함 예 ) SQL - 집합으로서의테이블 Q6_1) SELECT SALARY FROM EMPLOYEE ; Q6) SELECT DISTINCT SALARY FROM EMPLOYEE ; Set of tuples Bag of tuples 29

SQL - 집합으로서의테이블 SQL 에서집합연산 - 합집합, 차집합, 교집합 SQL 의결과 ( 집합 ) 에대하여합집합 (UNION) 연산, 차집합 (EXCEPT) 연산, 교집합 (INTERSECT) 연산을제공함 ; 연산의결과에서중복은제거됨 Q7: UNION 사용 'Smith 가일반직원혹은부서의관리자로참여하는프로젝트? (SELECT PNUMBER // Smith가관리자인 projects FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE UNION DNUM=DNUMBER AND MGRSSN=SSN AND LNAME='Smith ) (SELECT PNUMBER // Smith가참여하는 projects FROM PROJECT, WORKS_ON, EMPLOYEE WHERE PNUMBER=PNO AND ESSN=SSN AND LNAME='Smith') ; 30

SQL - 집합으로서의테이블 (cont.) 다중집합연산 연산결과에서중복을제거하지않음 Union All, Except All, Intersect All T = R EXCEPT ALL S T = R UNION ALL S T = R INTERSECT ALL S Ch4 31

부분문자열비교, 산술연산자, 정렬 SQL은 LIKE 비교연산자를사용하여문자열 ( 혹은부분문자열 ) 에대해비교조건을적용할수있음 부분문자열을표현할때 * 는임의의개수의문자를의미하고, _ 는임의의한문자를의미함 Q8: 주소가 Houston인모든종업원을검색하시오. SELECT FROM WHERE FNAME, LNAME EMPLOYEE ADDRESS LIKE Houston* ; Ch4 32

문자열처리 1950 년대태어난모든사원은? Select From Where 부분문자열비교, 산술연산자, 정렬 Fname, Lname Employee Bdate Like 5 _ ; - 참고 : Bdata 값은문자열로 2012-10-01 형태로저장되었다고가정함 Ch4 33

Date 함수를이용한질의 DatePart 함수 날짜시간타입의속성값으로부터년, 월, 일값을추출함 DatePart( yyyy, 2012-10-01 ) => 2012 DatePart( m, 2012-10-01 ) => 10 DatePart( d, 2012-02-01 ) => 01 예 : Employee 테이블의 Bdate 필드의타입을 Date 타입으로지정한경우 SELECT lname, datepart("yyyy", bdate) as 태어난해 FROM Employee; Lname 태어난해 Smith 1965 Wong 1955 Zelaya 1968 Wallace 1941 Narayan 1962 English 1972 Jabbar 1969 Borg 1937 5판Ch4 Fundamentals of 34

DateDiff() 함수 시작시간과종료시간의차이를계산하는함수 예 : DateDiff( d, 시작시간, 종료시간 ) : 시간차이를 day 단위로계산해줌 DateDiff( n, 시작시간, 종료시간 ) : 시간차이를 minute 단위로계산해줌 DateDiff( h, 시작시간, 종료시간 ) : 시간차이를 hour 단위로계산해줌 Year(bdate) => year Date 함수를이용한질의 Month(bdate) => month 를리턴함 Hour(bdate) => hour 를리턴함 Minute(bdate) => minute 를리턴함 5판Ch4 Fundamentals of 35

Date 함수를이용한질의 SELECT lname, datepart("yyyy", bdate) AS 태어난해, year(bdate) as year, month(bdate) as month, day(bdate) as day, hour(bdate) as hour, minute(bdate) as minute FROM Employee; 5판Ch4 Fundamentals of 36

질의결과의정렬 SQL Order By SQL은 ORDER BY 절을사용하여질의결과를정렬할수있음 디폴트정렬은오름차순임 ; 내림차순은 DESC로, ASC는오름차순을의미함예 ) ORDER BY DNAME DESC, LANME ASC, FNAME ASC Q9: 프로젝트에참여하는종업원을부서의알파벳순서대로, 각부서내에서는성과이름의알파벳순서대로출력하시오. SELECT DNAME, LNAME,FNAME, PNAME FROM DEPARTMENT, EMPLOYEE, WORKS_ON, PROJECT WHERE DNUMBER=DNO AND SSN=ESSN AND PNO=PNUMBER ORDER BY DNAME asc, LNAME, FNAME DESC ; Ch4 37

SQL 에서삽입, 삭제, 갱신구문 INSERT 명령 DELETE 명령 UPDATE 명령 Ch4 38

테이블에단일레코드삽입 INSERT 명령 INSERT 명령어 튜플값들은 CREATE TABLE 명령에서지정한애트리뷰트순서와동일하게지정해야함예 ) INSERT INTO EMPLOYEE VALUES ('Richard','K','Marini','653298653','30-DEC-52', '98 Oak Forest, Katy, TX','M',37000,'987654321',4); 애트리뷰트순서와다르게필드값을지정하려면애트리뷰트이름을함께명시해야함 ; 명시되지않은필드에는 NULL이나 DEFAULT 값이지정됨 예 ) INSERT INTO EMPLOYEE (FNAME, LNAME, SSN) VALUES ('Richard', 'Marini', '653298653') ; Richard NULL Marini 653298653 NULL NULL. Ch4 39

INSERT 명령 (cont.) SELECT 와결합된 INSERT 명령 질의의결과로생성된다중튜플을또다른릴레이션에삽입하는경우 SELECT 와 INSERT 가결합된문장을사용함 예 ) CREATE TABLE DEPTS_INFO(DEPT_NAME VARCHAR(15), NO_OF_EMPS INTEGER, TOTAL_SAL INTEGER) ; INSERT INTO DEPTS_INFO(DEPT_NAME, NO_OF_EMPS, TOTAL_SAL ) SELECT DNAME, COUNT (*), SUM (SALARY) FROM DEPARTMENT, EMPLOYEE WHERE DNUMBER=DNO GROUP BY DNAME ; Employee SQL DEPTS_INFO Ch4 40

INSERT 명령 (cont.) 뷰와 DEPTS_INFO 테이블의차이 DEPTS_INFO 테이블은최신정보를가지고있지않을수도있음 위의질의를수행한후에 EMPLOYEE 릴레이션을갱신한다면, DEPTS_INFO는이변경을반영하지못함 ( 과거상태 ) DEPTS_INFO 테이블을최신정보로유지하려면뷰 (view) 로정의해야함 Employee SQL Insert?? DEPTS_INFO Ch4 41

DELETE 명령 DELETE 명령은릴레이션에서튜플 ( 들 ) 을제거하는명령임 삭제할튜플에대한조건은 WHERE 절에서명시함 이경우한번의 DELETE 명령으로 WHERE 조건을만족하는모든튜플을삭제함 WHERE 절을생략한경우에는테이블내의모든튜플을삭제하며, 테이블은 데이타베이스내에서빈테이블로남게됨예 ) (1) DELETE FROM EMPLOYEE WHERE LNAME='Brown ; (2) DELETE FROM EMPLOYEE WHERE SSN='123456789 ; (3) DELETE FROM EMPLOYEE WHERE DNO IN ( SELECT DNUMBER FROM DEPARTMENT WHERE DNAME='Research ) ; (4) DELETE FROM EMPLOYEE ; Ch4 42

UPDATE 명령 UPDATE 명령은튜플들의애트리뷰트값을수정하기위해사용함 WHERE 절은한릴레이션에서수정할튜플들을선택하는데사용됨 SET 절은변경할애트리뷰트와그들의새로운값을명시함 Example (1) PROJECT 태이블에서 PNUMBER 가 10 인튜플에대하여 PLOCATION 을 'Bellaire' 로변경하고, 담당부서인 DNUM을 5로변경하라. UPDATE PROJECT SET PLOCATION='Bellaire', DNUM=5 WHERE PNUMBER=10 ; (2) 'Research' 부서에있는모든종업원들의봉급을 10% 인상하라. UPDATE EMPLOYEE SET SALARY=SALARY*1.1 WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME='Research') ; Ch4 43

SQL 질의에대한논의와요약 SQL 질의는 6 개의절로구성되지만, 필수사항은처음의두개뿐임 SELECT < 애트리뷰트목록 > FROM < 테이블목록 > [WHERE < 조건 >] [ORDER BY < 애트리뷰트목록 >] SELECT 절은질의결과에포함될애트리뷰트들이나함수를나열함 FROM 절은질의의대상을명시하는곳으로조인된릴레이션이나릴레이션 ( 들 ) 을지정함 WHERE 절은튜플들에대한조건을명시함 ORDER BY 절은정렬기준이되는애트리뷰트 ( 들 ) 을지정함 질의의평가순서는먼저 FROM, WHERE 절, GROUP BY 절, HAVING 절, SELECT 절, ORDER BY 절순서임 Insert, Delete, Update 명령어 Ch4 44