제7장 SQL-99: 스키마 정의, 제약조건, 질의어, 뷰

Slides:



Advertisements
Similar presentations
제 4 장 관계 데이타 모델과 관계 데이타베이스 제약조건
Advertisements

질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
관계 대수와 SQL.
관계 대수와 SQL SQL.
Chapter 5 SQL: 확장된 질의, 주장, 트리거, 뷰.
SELECT 문 사원 테이블의 모든 정보를 출력하는 예제 1. 비교 연산자 SELECT 문의 형태
4.2 SQL 개요 SQL 개요 SQL은 현재 DBMS 시장에서 관계 DBMS가 압도적인 우위를 차지하는데 중요한 요인의 하나
4장. 관계 대수와 SQL SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어
SQL: 데이터 정의, 제약사항, 기본 질의와 갱신
SQL-99: 스키마 정의, 기본제약조건, 질의어 충북대학교 구조시스템공학과 시스템공학연구실
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
관계 대수와 SQL SQL.
SQL 개요 SQL 개요 - SQL은 현재 DBMS 시장에서 관계 DBMS가 압도적인 우위를 차지하는 데 중요한 요인의 하나
8장. 뷰와 시스템 카탈로그 뷰와 시스템 카탈로그 관계 데이터베이스 시스템의 뷰(view)는 다른 릴레이션으로부터 유도된 릴레이션(derived relation)으로서 ANSI/SPARC 3단계 아키텍처의 외부 뷰와 다름 뷰는 관계 데이터베이스 시스템에서 데이터베이스의.
데이터베이스 담당교수 신정식 Chapter 4 SQL(1).
8장 서브 쿼리.
질의처리 최적화 충북대학교 정보통신공학부 복경수
6장 Mysql 명령어 한빛미디어(주).
MySQL 및 Workbench 설치 데이터 베이스.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
6 장. ER-관계 사상에 의한 관계 데이터베이스 설계
11장. 데이터베이스 서버 구축과 운영.
기본적인 SELECT문 작성.
11 테이블 관리와 데이터 딕셔너리 데이터베이스 응용 프로젝트 개발 테이블 구조 변경 데이터 딕셔너리.
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
4.2 SQL 개요 SQL 개요 SQL은 IBM 연구소에서 1974년에 System R이라는 관계 DBMS 시제품을 연구할 때 관계 대수와 관계 해석을 기반으로, 집단 함수, 그룹화, 갱신 연산 등을 추가하여 개발된 언어 1986년에 ANSI(미국 표준 기구)에서 SQL.
6장 그룹 함수.
ALLPPT.com _ Free PowerPoint Templates, Diagrams and Charts
2장. 관계 데이터 모델과 제약조건 관계 데이터 모델은 지금까지 제안된 데이터 모델들 중에서 가장 개념이 단순한 데이터 모델의 하나 IBM 연구소에 근무하던 E.F. Codd가 1970년에 관계 데이터 모델을 제안함 관계 데이터 모델을 최초로 구현한 가장 중요한 관계 DBMS.
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
2장. 관계 데이터 모델과 제약조건 관계 데이터 모델은 지금까지 제안된 데이터 모델들 중에서 가장 개념이 단순한 데이터 모델의 하나 IBM 연구소의 E.F. Codd가 1970년에 관계 데이터 모델을 제안함 관계 데이터 모델을 최초로 구현한 가장 중요한 관계 DBMS 시제품은.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
Heesang kim PL/SQL 3 Heesang kim.
4장. 관계 대수와 SQL SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어 어느것을 기본으로 만들것인가
관계 대수.
학습목표 학습목표 본 장은 데이터베이스를 조작하기 위한 SQL 문중에서 특별히 데이터베이스의 정의와 관련된 명령어인 DDL을 쿼리분석기를 사용하여 하나씩 실습을 통해서 학습한다. DDL 명령어로 데이터베이스 생성과 삭제, 테이블 생성, 수정, 삭제 등을 할 수 있다. 또한.
5장. 관계대수와 관계 해석 관계 대수 릴레이션들을 다루는 연산들의 집합 검색 요구(질의)를 기술하는 데에 사용
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
MYSQL 설치 SQL언어 SQL언어의 활용 웹과 SQL언어와의 연동

SQL.
데이터베이스 (Databases) 관계 데이터베이스의 함수적 종속성과 정규화 문양세 강원대학교 IT대학 컴퓨터과학전공.
01 데이타베이스 개론 데이타베이스의 등장 배경 데이타베이스의 발전 과정 데이타베이스의 정의 데이타베이스의 특징
3.2.2 GROUP BY_어느 고객이 얼마나 주문했는지 알고 싶다
제 3 장 관계 데이타 모델과 관계 데이타베이스 제약조건
문양세 (1st version: 문성우) (revised by 손시운)
환경 설정 예제 데이터베이스 생성 - 그림 3.34의 SQL Server 관리 스튜디오 창의 왼쪽 영역의 데이터베
데이터베이스 (Database) SQL 추가 기능: 주장, 뷰, 프로그래밍 기법 문양세 강원대학교 IT대학 컴퓨터과학전공.
관계 데이터 모델과 관계 데이터베이스 제약 조건
ER-관계 사상에 의한 관계 데이터베이스 설계
데이터베이스 (Database) SQL-99: 스키마 정의, 기본 제약조건, 질의어 문양세 강원대학교 IT대학 컴퓨터과학전공.
테이블 만들기 실습 목표 입력할 tableDB <실습1> SSMS에서 테이블 생성
                              데이터베이스 설계 및 실습 #4 - loadcompany 만들기 한국외국어대학교 DaPS 연구실                              
05. Relational DBMS 명지대학교 ICT 융합대학 김정호.
06. SQL 명지대학교 ICT 융합대학 김정호.
DB 개요 1. 데이터베이스 정의 데이터의 중복성을 최소화하면서 조직 또는 기업에서 필요로 하는 상호 연관 있는 데이터들의 체계적인 집합 통합된 데이터(Integrated Data) : 자료 중복 최소화 저장된 데이터(Stored Data) : 저장 매체에 저장 운영 데이터(Operational.
문성우 SQL 실습 Part Ⅰ 문성우.
제 8 장 ER-관계 사상에 의한 관계 데이타베이스 설계
14 뷰(View) 뷰의 개념 뷰 관리.
제 23 장 오라클에서 보안 기능.
Chapter 10 데이터 검색1.
ER-관계 사상에 의한 관계데이터베이스 설계 충북대학교 구조시스템공학과 시스템공학연구실
07. DB 설계 명지대학교 ICT 융합대학 김정호.
Chapter 2: Intro to Relational Model
ER-관계 사상에 의한 관계 데이터베이스 설계
14 뷰(View) 뷰의 개념 뷰 관리.
 6장. SQL 쿼리.
                              데이터베이스 설계 및 실습 #6 - SQL 실습 한국외국어대학교 DaPS 연구실                              
11장. 보안과 권한 관리 보안 권한 관리. 11장. 보안과 권한 관리 보안 권한 관리.
Presentation transcript:

제7장 SQL-99: 스키마 정의, 제약조건, 질의어, 뷰 7.7 주장으로 일반적인 제약조건 명시 7.8 SQL에서 뷰

[그림 4.5] COMPANY 관계 데이터베이스 스키마

[그림 4.6] COMPANY 스키마의 관계 데이터베이스 인스턴스

7.1 SQL 데이터 정의와 데이터 타입 7.1.1 SQL에서 스키마와 카탈로그 개념 7.1.2 SQL의 CREATE TABLE 명령

7.1.1 SQL에서 스키마와 카탈로그 개념 스키마 동일한 데이터베이스 응용에 속하는 테이블, 제약조건, 뷰, 도메인, 기타 구성 요소들을 그룹화 하기 위해 SQL2에 포함된 개념 스키마는 CREATE SCHEMA 문을 이용하여 생성. 다음 문장은 Jsmith라는 권한부여 식별자를 갖는 사용자가 소유하고 있는 COMPANY라는 스키마를 생성한다. CREATE SCHEMA COMPANY AUTHORIZATION Jsmith ; 카달로그와 INFORMATION_SCHEMA

7.1.2 SQL의 CREATE TABLE 명령 CREATE TABLE 릴레이션 이름, 애트리뷰트 이름, 데이터 타입 및 제약 조건들을 명세하여 새로운 릴레이션을 생성하는데 사용. 데이타 타입 : INTEGER, FLOAT, REAL, DECIMAL( i, j ), CHAR(n), VARCHAR(n), DATE, TIME, … 애트리뷰트에 NULL값이 허락되지 않는다면 제약조건 NOT NULL 명시. 애트리뷰트 정의에 ‘DEFAULT <값>’절을 추가하여 애트리뷰트의 디폴트 값을 명시 할 수 있다.

PRIMARY KEY절은 릴레이션의 기본 키를 구성하는 하나 이상의 애트리뷰트들을 지정. FOREIGN KEY절에서는 참조 무결성을 지정. UNIQUE절은 대체키를 명시 함. CREATE DOMAIN 도메인 생성 예) CREATE DOMAIN SSN_TYPE AS CHAR(9) ;

(a) CREATE TABLE EMPLOYEE ( Fname VARCHAR(15) NOT NULL, Minit CHAR, Lname VARCHAR(15) NOT NULL, Ssn CHAR(9) NOT NULL, Bdate DATE, Address VARCHAR(30), Sex CHAR, Salary DECIMAL(10, 2), Super_ssn CHAR(9), Dno INT NOT NULL, PRIMARY KEY (Ssn), FOREIGN KEY (Super_ssn) REFERENCES EMPLOYEE(Ssn), FOREIGN KEY (Dno) REFERENCES DEPARTMENT(Dnumber)) ; [그림 7.1] SQL 데이터 정의 (a) 그림 4.5의 COMPANY 스키마를 정의하는 SQL 문장들

CREATE TABLE DEPARTMENT ( Dname VARCHAR(15) NOT NULL, Dnumber INT NOT NULL, Mgr_ssn CHAR(9) NOT NULL, Mgr_start_date DATE, PRIMARY KEY (Dnumber), UNIQUE (Dname), FOREIGN KEY (Mgr_ssn) REFERENCE EMPLOYEE(Ssn) ) ; CREATE TABLE DEPT_LOCATONS ( ……….) ………... [그림 7.1] SQL 데이터 정의 (a) 그림 4.5의 COMPANY 스키마를 정의하는 SQL 문장들 (cont.)

7.2 SQL에서 기본 제약조건의 명시 애트리뷰트 제약조건과 디폴트 값 명시 애트리뷰트에 제약조건 NOT NULL 명시. ‘DEFAULT <값>’절로 애트리뷰트의 디폴트 값을 명시. 키와 참조 무결성 제약조건의 명시 기본키가 하나의 속성으로 구성된 경우 해당 열에서 기본키 명시 가능. 예) Dnumber INT PRIMARY KEY; 외래키 정의 시 참조 무결성을 위배했을 때 취할 동작을 명시할 수 있다. 그 동작의 종류에는 SET NULL, CASCADE, SET DEFAULT가 있으며, 위반된 경우를 가리키는 ON DELETE나 ON UPDATE와 함께 사용

제약 조건에 이름 부여 CONSTRAINT 제약조건이름: CHECK를 사용하여 투플에 제약 조건을 명시하기 CHECK(Dept_create_date <= Mgr_Start_date) ;

(b) CREATE TABLE EMPLOYEE ( . . . . Dno INT NOT NULL DEFAULT 1, CONSTRAINT EMPPK PRIMARY KEY (Ssn), CONSTRAINT EMPSUPERFK FOREIGN KEY (Super_ssn) PEFERENCES EMPLOYEE(Ssn) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT EMPDEPTFK FOREIGN KEY (Dno) REFERENCES DEPARTMENT(Dnumber) ON DELETE SET DEFAULT ON UPDATE CASCADE ) ; [그림 7.1] SQL 데이터 정의 (b) 참조 트리거된 동작 (referential triggered action) 명시

CREATE TABLE DEPARTMENT ( . . . . Mgr_ssn CHAR(9) NOT NULL DEFAULT ‘888665555’ . . . . CONSTRAINT DEPTPK PRIMARY KEY (Dnumber), CONSTRAINT DEPTSK UNIQUE (Dname), CONSTRAINT DEPTMGRFK FOREIGN KEY (Mgr_ssn) REFERENCES EMPLOYEE(Ssn) ON DELETE SET DEFAULT ON UPDATE CASCADE ) ; [그림 7.1] SQL 데이터 정의 (b) 참조 트리거된 동작 (referential triggered action) 명시 (cont.)

CREATE TABLE DEPT_LOCATIONS ( . . . . PRIMARY KEY (Dnumber, Dlocation ), FOREIGN KEY (Dnumber) REFERENCES DEPARTMENT(Dnumber) ON DELETE CASCADE ON UPDATE CASCADE ) ; [그림 7.1] SQL 데이터 정의 (b) 참조 트리거된 동작 (referential triggered action) 명시 (cont.)

7.3 SQL에서 스키마 변경문 7.3.1 DROP 명령 7.3.2 ALTER TABLE 명령

7.3.1 DROP 명령 DROP SCHEMA DROP SCHEMA COMPANY CASCADE; DROP SCHEMA COMPANY RESTRICT;

DROP TABLE DROP TABLE 명령으로 릴레이션과 그 정의를 삭제할 수 있다. RESTRICT 선택사항은 임의의 제약조건들(다른 릴레이션에 있는 외래키 정의처럼)이나 뷰들에서 참조되지 않는 테이블만을 제거한다. CASCADE 선택사항은 테이블 뿐만 아니라 테이블을 참조하는 모든 제약조건과 뷰들을 스키마에서 자동적으로 제거 예) DROP TABLE DEPENDENT CASCADE ;

7.3.2 ALTER TABLE 명령 ALTER TABLE 열(애트리뷰트)의 추가/제거, 열 정의의 변경, 테이블 제약 조건들의 추가/제거 등에 사용 예) ALTER TABLE COMPANY.EMPLOYEE ADD COLUMN Job VARCHAR(12) ; 디폴트 절의 지정, 또는 UPDATE 명령을 사용하여 각 튜플에 대해서 새 애트리뷰트 JOB의 값을 입력해야 함 디폴트 절을 지정하지 않으면, 릴레이션의 모든 튜플내 JOB의 값은 NULL로 지정된다 => NOT NULL 사용 불가

기존 열을 삭제할 경우 CASCADE 선택사항은 열과 함께 열을 참조하는 모든 제약 조건들과 뷰들을 스키마로부터 자동 제거한다. 예) ALTER TABLE COMPANY.EMPLOYEE DROP COLUMN Address CASCADE; 만약 RESTRICT를 선택한다면, 그 열을 참조하는 뷰들과 제약 조건들이 없어야만 열을 제거할 수 있다.

디폴트 절의 제거/정의를 통한 애트리뷰트 정의의 변경 ALTER TABLE COMPANY.DEPARTMENT ALTER Mgr_ssn DROP DEFAULT ; ALTER TABLE COMPANY.DEPARTMENT ALTER COLUMN Mgr_ssn SET DEFAULT “333445555” ; 제약 조건의 추가/제거 ALTER TABLE COMPANY.EMPLOYEE DROP CONSTRAINT EMPSUPERFK CASCADE ; 제약 조건의 추가는 새로운 제약조건 앞에 키워드 ADD를 사용하여 명시

7.4 SQL에서의 기본 질의 7.4.1 기본 SQL 질의의 SELECT-FROM-WHERE 구조 7.4.2 모호한 애트리뷰트 이름, 재명명 및 투플 변수 7.4.3 WHERE 절의 생략과 ‘*’의 사용 7.4.4 SQL 에서 집합으로서의 테이블 7.4.5 부분 문자열 패턴 비교와 산술 연산자

7.4.1 기본 SQL 질의의 SELECT-FROM-WHERE 구조 <애트리뷰트 리스트> : 질의를 통해 값이 검색되는 애트리뷰트 이름들의 리스트 <테이블 리스트> : 질의 처리를 위해 필요한 릴레이션들의 리스트 <조건> : 질의를 통해 검색되는 튜플을 식별하기 위한 조건(부울) 탐색식

예) 이름이 'John B. Smith'인 종업원의 생일과 주소를 검색하시오. SELECT Bdate, Address FROM EMPLOYEE WHERE Fname='John' AND Minit='B' AND Lname='Smith’ ;

예) 'Research' 부서에서 일하는 모든 종업원들의 이름과 주소를 검색하시오. SELECT Fname, Lname, Address FROM EMPLOYEE, DEPARTMENT WHERE Dname='Research' AND Dnumber=Dno ;

예 ) 'Stafford'에 위치한 모든 프로젝트에 대한 프로젝트 번호(Pnumber), 담당부서 번호(Dnum), 부서 관리자의 성(Lname), 주소(Address), 생일(Bdate)을 열거하시오. SELECT Pnumber, Dnum, Lname, Address, Bdate FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE Dnum=Dnumber AND Mgr_ssn=Ssn AND Plocation='Stafford’ ;

7.4.2 모호한 애트리뷰트 이름, 재명명 및 투플 변수 동일한 이름을 갖는 두개 이상의 애트리뷰트에 대한 질의 시 “릴레이션 이름.애트리뷰트 이름”을 사용하여 모호성 제거 SELECT Fname, EMPLOYEE.Name, Address FROM EMPLOYEE, DEPARTMENT WHERE DEPARTMENT.Name='Research' AND DEPARTMENT.Dnumber=EMPLOYEE.Dnumber ;

모호성은 같은 릴레이션을 두 번 참조하는 질의에서도 나타난다 => 별명(alias) 이용 예) 각 종업원에 대해, 종업원의 성과 이름, 그리고 직속 감독자의 성과 이름을 검색하시오. SELECT E.Fname, E.Lname, S.Fname, S.Lname FROM EMPLOYEE AS E, EMPLOYEE AS S WHERE E.Super_ssn=S.Ssn ;

별명은 EMPLOYEE AS E처럼 키워드 AS를 이용하여 선언 가능 질의 내에서 별명을 주어 릴레이션의 애트리뷰트를 재명명할 수도 있다. 예) EMPLOYEE AS E( Fn, Mi, Ln, Ssn, Bd, Addr, Sex, Sal, Sssn, Dno) ; Fn은 Fname, Mi는 Minit, Ln은 Lname 등의 별명 관계가 이루어진다.

7.4.3 WHERE 절의 생략과 ‘*’의 사용 WHERE절을 생략하면 투플 선택에 대한 조건이 없다는 것을 의미. FROM절에서 지정한 릴레이션의 모든 투플들이 질의 결과로 선택된다 예) (1)데이타베이스에서 EMPLOYEE의 모든 Ssn을 선택하고, (2) EMPLOYEE의 Ssn과 DEPARTMENT의 Dname의 모든 조합을 선택하시오 (1) SELECT Ssn FROM EMPLOYEE ; (2) SELECT Ssn, Dname FROM EMPLOYEE, DEPARTMENT ;

선택된 튜플들의 모든 애트리뷰트 값들을 검색할 경우 애트리뷰트 이름을 명시적으로 열거하는 대신 '*'를 사용할 수 있다. 질의 (1): 5번 DEPARTMENT에서 일하는 EMPLOYEE 튜플들의 모든 애트리뷰트 값들을 검색한다. SELECT * FROM EMPLOYEE WHERE Dno=5 ;

질의 (2): 'Research' 부서에서 일하는 모든 종업원들에 대하여 EMPLOYEE와 DEPARTMENT의 모든 애트리뷰트들을 검색한다. SELECT * FROM EMPLOYEE, DEPARTMENT WHERE Dname='Research' AND Dno=Dnumber ;

7.4.4 SQL에서 집합으로서의 테이블 SQL에서는 질의의 결과로 중복된 튜플들이 나타날 수 있다. SQL 질의 결과에서 중복된 튜플들을 삭제하려면 SELECT 항목에서 키워드 DISTINCT를 사용해야 한다. 예) SELECT DISTINCT Salary FROM EMPLOYEE ;

집합 연산 : 합집합, 차집합, 교집합 SQL에서는 합집합(UNION)연산, 차집합(EXCEPT)연산, 교집합(INTERSECT)연산을 직접 구현하였다. 릴레이션에 대한 이들 관계연산의 결과는 투플들의 집합이다. 즉 중복된 투플을 결과에서 제거한다. UNION의 사용 예 : 일반 직원이든 프로젝트를 담당하는 부서의 관리자이든 간에 성이 'Smith'인 종업원을 포함하는 프로젝트에 대한 모든 프로젝트 번호의 목록을 작성하시오.

(SELECT DISTINCT Pnumber FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE Dnum=Dnumber AND Mgr_ssn=Ssn AND Lname='Smith') UNION FROM PROJECT, WORKS_ON, EMPLOYEE WHERE Pnumber=Pno AND Essn=Ssn AND Lname='Smith') ;

7.4.5 부분 문자열 패턴 비교와 산술 연산자 SQL은 LIKE 비교 연산자를 사용하여 일부분의 문자열에 대해 비교조건을 적용할 수 있다. 부분 문자열을 표현할 때 사용하는 문자 중에서 ‘%'는 임의의 개수의 문자로 대체되고, '_'는 임의의 한 문자로 대체된다. 예) 주소가 Houston, Texas인 모든 사원의 이름과 성을 검색하시오. SELECT Fname, Lname FROM EMPLOYEE WHERE Address LIKE '%Houston,TX%’ ;

예) 1950년대에 테어난 모든 사원의 이름과 성을 검색하시오. SELECT Fname, Lname FROM EMPLOYEE WHERE Bdate LIKE ‘__5_______’ ;

SQL은 질의 내에서 산술식을 허용한다. 질의 내에서 표준 산술 연산자 '+', '-', '*', '/'를 산술 값들에 적용할 수 있다 예) 'ProductX' 프로젝트에 참여하는 모든 종업원들의 봉급을 10% 올린 경우의 봉급액수를 구하시오. SELECT Fname, Lname, 1.1*Salary AS Inc_sal FROM EMPLOYEE, WORKS_ON, PROJECT WHERE Ssn=Essn AND Pno=Pnumber AND Pname='ProductX’ ;

BETWEEN 연산자 예) 급여가 30,000달러에서 40,000달러 사이에 있는 5번 부서의 모든 사원을 검색하라 SELECT * FROM EMPLOYEE WHERE (Salary BETWEEN 30000 AND 40000) AND Dno=5 ;

7.4.6 질의 결과의 정렬 ORDER BY: 질의의 결과 튜플들을 정렬 예) 프로젝트에 참여하는 종업원을 부서의 알파벳 순서대로, 그리고 각 부서 내에서는 성과 이름의 알파벳 순서대로 검색 SELECT Dname, Lname, Fname, Pname FROM DEPARTMENT, EMPLOYEE, WORKS_ON, PROJECT WHERE Dnumber=Dno AND Ssn=Essn AND Pno=Pnumber ORDER BY Dname, Lname ASC, Fname DESC ;