Presentation is loading. Please wait.

Presentation is loading. Please wait.

SQL-99: 스키마 정의, 기본제약조건, 질의어 충북대학교 구조시스템공학과 시스템공학연구실

Similar presentations


Presentation on theme: "SQL-99: 스키마 정의, 기본제약조건, 질의어 충북대학교 구조시스템공학과 시스템공학연구실"— Presentation transcript:

1 SQL-99: 스키마 정의, 기본제약조건, 질의어 충북대학교 구조시스템공학과 시스템공학연구실
공학 데이터베이스 SQL-99: 스키마 정의, 기본제약조건, 질의어 충북대학교 구조시스템공학과 시스템공학연구실 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

2 내용 7.1 SQL의 데이터 정의와 데이터 타입 7.2 SQL에서 기본 제약조건의 명시 7.3 SQL에서 스키마 변경문
충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

3 7. SQL-99: 스키마 정의, 기본제약조건, 질의어 SQL의 유래 Structured Query Language
IBM 연구소에서 설계 및 구현 데이터 정의어와 조작어를 모두 포함 SQL의 진화 1986: SQL1(SQL-86) 1992: SQL2(SQL-92) 현재의 표준: SQL3라고 불렸던 SQL-99 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

4 7.1 SQL의 데이터 정의와 데이터 타입 SQL 사용 용어 릴레이션 = 테이블 투플 = 행 애트리뷰트 = 열
충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

5 7.1.1 SQL에서 스키마와 카탈로그 개념 SQL 스키마 스키마 이름으로 식별
스키마 각 원소에 대한 기술문 뿐만 아니라 스키마를 소유하는 사용자나 계정과 관련된 권한부여 식별자도 포함함 스키마 원소: 테이블, 제약조건, 뷰(가상테이블), 도메인, 권한부여 등 CREATE SCHEMA 문을 이용하여 생성함 예: JSMITH라는 권한부여 식별자를 갖는 사용자 소유의 스키마 COMPANY를 생성 CREATE SCHEMA COMPANY AUTHORIZATION JSMITH ; 카탈로그 INFORMATION_SCHEMA를 이용하여 권한이 부여된 사용자에게 스키마에 대한 정보를 제공 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

6 7.1.2 SQL의 CREATE TABLE 명령 CREATE TABLE 새로운 릴레이션을 생성하는 데 사용
릴레이션의 이름 명시 애트리뷰트의 이름, 값집합, NOT NULL 제약조건 명시 키, 엔티티무결성, 참조무결성 제약조건 명시 예: CREATE TABLE EMPLOYEE… CREATE TABLE COMPANY.EMPLOYEE… SCHEMA 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

7 7.1.2 SQL의 CREATE TABLE 명령 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), [SINGLE,] SUPERSSN CHAR(9), DNO INT NOT NULL, PRIMARY KEY (SSN), FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE(SSN), FOREIGN KEY (DNO) REFERENCES DEPARTMENT (DNUMBER)) ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

8 7.1.2 SQL의 CREATE TABLE 명령 CREATE TABLE DEPARTMENT
( DNAME VARCHAR(15) NOT NULL, DNUMBER INT NOT NULL, MGRSSN CHAR(9) NOT NULL, MGRSTARTDATE DATE, PRIMARY KEY (DNUMBER), UNIQUE (DNAME), FOREIGN KEY (MGRSSN) REFERENCE EMPLOYEE (SSN)) ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

9 7.1.2 SQL의 CREATE TABLE 명령 CREATE TABLE DEPT_LOCATONS
( DNUMBER INT NOT NULL, DLOCATION VARCHAR(15) NOT NULL, PRIMARY KEY (DNUMBER, DLOCATON), FOREIGN KEY (DNUMBER) REFERENCES DEPARTMENT (DNUMBER)) ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

10 7.1.2 SQL의 CREATE TABLE 명령 CREATE TABLE PROJECT
( PNAME VARCHAR(15) NOT NULL, PNUMBER INT NOT NULL, PLOCATION VARCHAR(15), DNUM INT NOT NULL, PRIMARY KEY (PNUMBER), UNIQUE (PNAME), FOREIGN KEY (DNUM) REFERENCES DEPARTMENT (DNUMBER)) ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

11 7.1.2 SQL의 CREATE TABLE 명령 CREATE TABLE WORKS_ON
( ESSN CHAR(9) NOT NULL, PNO INT NOT NULL, HOURS DECIMAL(3, 1) [SINGLE,] NOT NULL, PRIMARY KEY (ESSN, PNO), FOREIGN KEY (ESSN) REFERENCES EMPLOYEE (SSN), FOREIGN KEY (PNO) REFERENCES PROJECT (PNUMBER)) ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

12 7.1.2 SQL의 CREATE TABLE 명령 CREATE TABLE DEPENDENT
( ESSN CHAR(9) NOT NULL, DEPENDENT_NAME VARCHAR(15) NOT NULL, SEX CHAR, BDATE DATE, REATIONSHIP VARCHAR(8), PRIMARY KEY (ESSN, DEPENDENT_NAME), FOREIGN KEY (ESSN) REFERENCES EMPLOYEE (SSN)) ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

13 7.1.3 SQL에서 애트리뷰트 데이터 타입과 도메인 애트리뷰트의 데이터 타입
숫자: INTEGER, INT, SMALLINT, FLOAT, REAl, DOUBLE PRECISION 문자열: CHAR(n), CHARACTER(n), VARCHAR(n), CHAR VARYING(n), CHARACTER VARYING(n), ||: 문자열 연결연산 비트열: BIT(n), BOT VARYING(n) 불리언 날짜와 시간: DATE(YYYY-MM-DD), TIME(HH:MM:SS) 타임스탬프: DATE+TIME+초의 소수점 이하 자리 (예: :12: ) CREATE DOMAIN 새로운 릴레이션을 생성하는 데 사용 도메인의 이름과 데이터 타입 명시 예: CRAETE DOMAIN SSN_TYPE AS CHAR(9) 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

14 7.2.1 애트리뷰트 제약조건과 디폴트 값 명시 SQL은 애트리뷰트 값으로 NULL을 허용함
NOT NULL 제약조건을 지정하여 애트리뷰트에 NULL값을 허용하지 않을 수도 있음 예: CREATE TABLE DEPARTMENT ( DNUMBER INT NOT NULL, …) ; 디폴트 값 명시 DEFAULT문을 이용하여 애트리뷰트의 디폴트 값을 명시 예: CREATE TABLE EMPLOYEE ( DNO INT DEFAULT 1, …) ; 도메인 값 제약 CHECK문을 이용하여 애트리뷰트의 값집합을 제약 ( DNUMBER INT CHECK(DNUMBER > 0 AND DNUMBER < 21), …) ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

15 7.2.1 애트리뷰트 제약조건과 디폴트 값 명시 CREATE TABLE EMPLOYEE
( FNAME VARCHAR(15) NOT NULL, DNO INT NOT NULL DEFAULT 1, CONSTRAINT EMPPK PRIMARY KEY (SSN), CONSTRAINT EMPSUPERFK FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE(SSN), ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT EMPDEPTFK FOREIGN KEY (DNO) REFERENCES DEPARTMENT (DNUMBER) ON DELETE SET DEFAULT ON UPDATE CASCADE) ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

16 해당 투플이 삭제되면 그 투플을 참조하고 있는 모든 투플을 기본값으로 변경하라
7.2.1 애트리뷰트 제약조건과 디폴트 값 명시 CREATE TABLE DEPARTMENT ( DNAME VARCHAR(15) NOT NULL, DNUMBER INT NOT NULL, MGRSSN CHAR(9) NOT NULL DEFAULT “ ” MGRSTARTDATE DATE, CONSTRAINT DEPTPK PRIMARY KEY (DNUMBER), CONSTRAINT DEPTSK UNIQUE (DNAME), CONSTRAINT DEPTMGRFK FOREIGN KEY (MGRSSN) REFERENCE EMPLOYEE (SSN) ON DELETE SET DEFAULT ON UPDATE CASCADE) ; 해당 투플이 삭제되면 그 투플을 참조하고 있는 모든 투플을 기본값으로 변경하라 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

17 7.2.1 애트리뷰트 제약조건과 디폴트 값 명시 CREATE TABLE DEPT_LOCATONS
( DNUMBER INT NOT NULL, DLOCATION VARCHAR(15) NOT NULL, PRIMARY KEY (DNUMBER, DLOCATON), FOREIGN KEY (DNUMBER) REFERENCES DEPARTMENT (DNUMBER) ON DELETE CASCADE ON UPDATE CASCADE) ; 해당 투플이 삭제되면 그 투플을 참조하고 있는 모든 투플을 삭제하라 해당 투플이 변경되면 그 투플을 참조하고 있는 모든 투플을 변경하라 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

18 7.2.2 키와 참조 무결성 제약조건의 명시 PRIMARY KEY 절
릴레이션의 기본 키를 구성하는 하나 이상의 애트리뷰트들을 명시 예: CREATE TABLE DEPARTMENT ( DNUMBER INTEGER PRIMARY KEY, …) ; UNIQUE 절 대체키(또는 보조키)를 명시 FOREIGN KEY 절 참조 무결성 지정 외래 키를 정의할 때 참조 무결성의 위반 시 취할 동작을 명시할 수 있음 위반의 종류: ON DELETE, ON UPDATE 동작의 종류: SET NULL, SET DEFAULT, CASCADE 예: ON DELETE CASCADE: 삭제되는 투플을 참조하고 있는 모든 투플을 삭제 ON UPDATE CASCADE: 수정되는 투플을 참조하는 모든 투플의 외래키 값을 수정된 투플의 새롭게 갱신된 기본키 값으로 수정 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

19 7.2.3 제약조건에 이름 부여 CONSTRAINT 절에 이름 부여 예: CONSTRAINT EMPSUPERFK
FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE(SSN), ON DELETE SET NULL ON UPDATE CASCADE; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

20 7.2.4 CHECK를 이용하여 투플에 제약조건 명시하기
테이블(투플 기반) 제약조건 명시 C|REATE TABLE 문 끝 부분에 명시 예: 매니저의 시작날짜가 부서의 창설일보다 늦은 값을 가져야 한다. CHECK(DEPT_CREATE_DATE < MGRSTARTDATE); 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

21 7.3.1 DROP 명령 DROP SCHEMA 스키마를 제거하는 명령어
예: DROP SCHEMA COMPANY CASCADE; CASCADE 선택사항 제거되는 스키마에 포함된 모든 테이블, 도메인, 기타 요소를 모두 제거함 RESTRICT 선택사항 비어있는 스키마를 제거할 때 사용 (비어있지 않으면 제거가 되지 않음) DROP TABLE 릴레이션을 제거하는 명령어 예: DROP TABLE DEPENDENT CASCADE; 임의의 제약조건(예: 다른 릴레이션에 있는 외래키에서 참조하는 경우)이나 뷰에서 참조되지 않는 테이블만을 제거함 테이블과 테이블을 참조하는 모든 제약조건 및 뷰를 자동적으로 제거함 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

22 7.3.2 ALTER TABLE 명령 ALTER TABLE 기본 테이블의 정의를 변경하는 명령어 열(애트리뷰트)의 추가/제거
열 정의의 변경 테이블 제약 조건들의 추가/제거 CASCADE 선택사항 기존 열을 삭제할 경우 열을 참조하는 모든 제약 조건들과 뷰를 제거함 RESTRICT 선택사항 제거되는 열을 참조하는 뷰와 제약조건이 없는 경우에만 열을 제거함 예: EMPLOYEE 테이블에 JOB 애트리뷰트 추가 ALTER TABLE COMPANY.EMPLOYEE ADD JOB VARCHAR(12); 예: EMPLOYEE 테이블에 ADDRESS 애트리뷰트 제거 ALTER TABLE COMPANY.EMPLOYEE DROP ADDRESS CASCADE; 예: EMPLOYEE 테이블의 MGRSSN 애트리뷰트 DEFAULT 절 변경 ALTER TABLE COMPANY.EMPLOYEE ALTER MGRSSN DROP DEFAULT; ALTER TABLE COMPANY.EMPLOYEE ALTER MGRSSN SET DEFAULT “2”; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

23 7.4 SQL에서의 기본질의 SELECT 문 데이타베이스에서 정보를 검색하는 기본 문장
따라서 SQL 테이블은 투플들의 집합이 아니라 투플들의 다중집합 (multi-set or bag)임 사용자는 키 제약조건이나 DISTINCT 선택사항을 사용하여 SQL 릴레이션들을 집합으로 제한할 수도 있음 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

24 7.4.1 SQL 질의의 SELECT-FROM-WHERE 구조
<애트리뷰트 목록>: 질의 결과에 나타나는 애트리뷰트 이름 목록 <테이블 목록>: 질의의 대상이 되는 릴레이션 목록 <조건>: 질의 결과의 투플들이 만족해야 하는 조건(부울)식 SQL 질의와 관계 대수 SQL은 관계 대수의 SELECT, PROJECT, JOIN 명령으로 표현 가능함 SELECT 절: 프로젝션 애트리뷰트에 해당 WHERE 절: 선택조건, 조인조건에 해당 SQL 질의의 결과 동일한 속성값을 가지는 투플들이 중복될 수 있음 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

25 7.4.1 SQL 질의의 SELECT-FROM-WHERE 구조
질의 0 이름이 ‘John B. Smith’인 사원의 생일(BDATE)과 주소(ADDRESS)를 검색하시오. SELECT BDATE, ADDRESS FROM EMPLOYEE WHERE FNAME=‘John’ AND MINIT=‘B’ AND LNAME=‘Smith’ ; 관계대수 표현 ΠBDATE, ADDRESS(σNAME=‘John’ AND MINIT=‘B’ AND LNAME=‘Smith’(EMPLOYEE)) 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

26 7.4.1 SQL 질의의 SELECT-FROM-WHERE 구조
질의 1 ‘Research’ 부서에서 일하는 모든 사원의 이름(FNAME, LNAME)과 주소를 검색하시오. SELECT FNAME, LNAME, ADDRESS FROM EMPLOYEE, DEPARTMENT WHERE DNAME=‘Research’ AND DNUMBER=DNO ; 관계대수 연산 SELECT-PROJECT-JOIN과 유사 SELECT 절은 관계 대수의 PROJECT 연산에 해당 WHERE 절에서 DNAME=‘Research’은 선택조건, 관계대수에서 SELECT 연산에 해당 WHERE 절에서 DNUMBER=DNO는 조인조건, 관계대수의 JOIN 연산에 해당 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

27 7.4.1 SQL 질의의 SELECT-FROM-WHERE 구조
질의 2 ‘Stafford’에 위치한 모든 프로젝트에 대하여 프로젝트 번호, 담당부서 번호, 부서 관리자의 성, 주소, 생일을 검색하라. SELECT PNUMBER, DNUM, LNAME, ADDRESS, BDATE FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE DNUM=DNUMBER AND MGRSSN=SSN AND PLOCATION=‘Stafford’ ; 두 개의 조인조건이 존재 조인조건 DNUM=DNUMBER는 프로젝트와 담당 부서를 조인 조인조건 MGRSSN=SSN은 부서와 담당 관리자를 조인 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

28 7.4.2 모호한 애트리뷰트 이름과 별명의 사용 동일한 이름을 갖는 애트리뷰트의 사용
서로 다른 릴레이션에서 동일한 이름을 갖는 애트리뷰트가 사용될 수 있음 릴레이션 이름과 함께 애트리뷰트 이름을 사용함으로써 모호함을 방지해야 함 질의 작성시 릴레이션 이름 다음에 점(.)을 두고 애트리뷰트 이름을 명시함 질의 1A ‘Research’ 부서에서 일하는 모든 종업원들의 이름과 주소를 검색하시오. SELECT FNAME, EMPLOYEE.NAME, ADDRESS FROM EMPLOYEE, DEPARTMENT WHERE DEPARTMENT.NAME=‘Research’ AND DEPARTMENT.DNUMBER=EMPLOYEE.DNUMBER ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

29 7.4.2 모호한 애트리뷰트 이름과 별명의 사용 동일한 릴레이션을 두 번 참조하는 경우
질의 작성에서 모호성은 동일한 릴레이션을 두 번 참조하는 경우에도 발생함 이 경우에도 모호함을 방지하기 위하여 릴레이션 이름의 별명을 애트리뷰트 이름 앞에 붙여서 사용함 질의 8 종업원에 대해, 종업원의 성과 이름, 직속 감독자의 성과 이름을 검색하시오. SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME FROM EMPLOYEE E, EMPLOYEE S // EMPLOYEE에 대한 별명 WHERE E.SUPERSSN=S.SSN ; 위의 예는 EMPLOYEE 릴레이션에 대해서 두 개의 별명(alias) E와 S를 선언하여 사용함 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

30 7.4.2 모호한 애트리뷰트 이름과 별명의 사용 릴레이션에 대한 별명 키워드 AS의 이용
From 절의 릴레이션 이름 바로 다음에 오거나, EMPLOYEE AS E 처럼 키워드 AS를 이용해서 릴레이션과 연관시킴 애트리뷰트 이름 재명명 질의 내에서 별명을 주어 릴레이션의 애트리뷰트를 재명명할 수도 있음 EMPLOYEE AS E(FN, MI, LN, SSN, BD, ADDR, SEX, SAL, SSSN, DNO) ; 별명 FN은 FNAME, MI은 MINIT, LN은 LNAME 대신 이용 질의 1B – 별명을 이용하여 질의 1A를 간단하게 나타낼 수 있음 SELECT E.FNAME, E.NAME, E.ADDRESS FROM EMPLOYEE E, DEPARTMENT D WHERE D.NAME=‘Research’ AND D.DNUMBER=E.DNUMBER ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

31 7.4.3 WHERE 절의 생략과 ‘*’의 사용 WHERE 절의 생략
SQL에서 WHERE 절을 생략하면 투플 선택에 대한 조건이 없다는 것을 의미함 FROM 절에 있는 테이블의 모든 투플이 조건을 만족하게 됨 질의 9 데이터베이스에서 EMPLOYEE의 모든 SSN을 선택하시오. SELECT SSN FROM EMPLOYEE ; 질의 10 EMPLOYEE의 SSN과 DEPARTMENT의 DNAME의 모든 조합을 선택하시오. SELECT SSN, DNAME FROM EMPLOYEE, DEPARTMENT ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

32 7.4.3 WHERE 절의 생략과 ‘*’의 사용 선택된 투플들의 모든 애트리뷰트 값들을 검색하는 경우
모든 애트리뷰트 이름을 명시적으로 열거하지 않고 단지 ‘*’를 사용함 질의 1C 5번 DEPARTMENT에서 일하는 EMPLOYEE 투플들의 모든 애트리뷰트 값들을 검색하라. SELECT * FROM EMPLOYEE WHERE DNO=5 ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

33 7.4.3 WHERE 절의 생략과 ‘*’의 사용 질의 1D ‘Research’ 부서에서 일하는 모든 종업원들에 대하여 EMPLOYEE의 모든 애트리뷰트들과 DEPARTMENT의 모든 애트리뷰트들을 검색하라. SELECT * FROM EMPLOYEE, DEPARTMENT WHERE DNAME=‘Research’ AND DNO=DNUMBER ; 질의 10A 릴레이션 EMPLOYEE와 DEPARTMENT의 카티션 프로덕트 결과를 모두 검색하라. FROM EMPLOYEE, DEPARTMENT ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

34 7.4.4 SQL에서 집합으로서의 테이블 투플의 중복허용
중복된 투플의 삭제 SELECT 항목에서 키워드 DISTINCT를 사용 DISTINCT는 질의 결과에서 유일한 투플들만 남기라는 의미의 키워드임 질의 11 모든 사원의 급여를 검색하라. SELECT SALARY FROM EMPLOYEE ; 질의 11A 모든 사원의 구별되는 급여를 검색하라. SELECT DISTINCT SALARY 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

35 7.4.4 SQL에서 집합으로서의 테이블 SQL에서의 집합 연산
합집합(UNION)연산, 차집합(EXCEPT)연산, 교집합(INTERSECT) 릴레이션에 대한 집합 연산의 결과는 투플들의 집합임 → 중복된 투플을 결과에서 제거함 질의 4 성이 'Smith'인 종업원(일반 직원 혹은 프로젝트를 담당하는 부서의 관리자)이 참여하는 프로젝트의 프로젝트 번호 목록을 작성하시오. ( SELECT PNUMBER // Smith가 관리자인 projects FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE DNUM=DNUMBER AND MGRSSN=SSN AND LNAME='Smith') UNION ( SELECT PNUMBER // Smith가 참여하는 projects FROM PROJECT, WORKS_ON, EMPLOYEE WHERE PNUMBER=PNO AND ESSN=SSN AND LNAME='Smith') ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

36 7.4.5 부분 문자열 패턴 비교와 산술 연산자 문자열에 대한 비교
SQL은 LIKE 비교 연산자를 사용하여 문자열(혹은 부분 문자열)에 대해 비교조건을 적용할 수 있음 부분 문자열을 표현할 때 ‘%’는 임의의 개수의 문자를 의미하고, ‘_’는 임의의 한 문자를 의미함 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

37 7.4.5 부분 문자열 패턴 비교와 산술 연산자 질의 12 주소가 Houston, Texas인 모든 종업원을 검색하시오.
SELECT FNAME, LNAME FROM EMPLOYEE WHERE ADDRESS LIKE '%Houston, TX%’ ; [WHERE ADDRESS LIKE ‘*Houston, TX*’ ;] 질의 12 A 1950년대에 태어난 모든 사원을 검색하라. WHERE BDATE LIKE ‘__5________’ ; [WHERE BDATE LIKE ‘??5????????’ ;] 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

38 7.4.5 부분 문자열 패턴 비교와 산술 연산자 질의내 산술식 허용 질의 13
‘ProductX’ 프로젝트에 참여하는 모든 사원의 급여를 10% 올린 경우의 급여를 검색하라. SELECT FNAME, LNAME, 1.1*SALARY [SELECT FNAME, LNAME, 1.1*SALARY AS NEWSALARY] FROM EMPLOYEE, WORKS_ON, PROJECT WHERE SSN=ESSN AND PNO=PNUMBER AND PNAME=‘ProductX’ ; 질의 14 급여가 30,000$에서 40,000$ 사이에 있는 5번 부서의 모든 사원을 검색하라. SELECT * FROM EMPLOYEE WHERE (SALARY BETWEEN AND 40000) AND DNO=5 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

39 7.4.6 질의 결과의 정렬 질의 결과의 정렬 ORDER BY 절 하나 이상의 애트리뷰트 값 순서로 질의 결과 투플을 정렬
Default 정렬은 오름차순임 키워드 DESC: 내림차순으로 정렬 - Ascending 키워드 ASC: 오름차순 정렬 - Descending 예: ORDER BY DNAME DESC, LANME ASC, FNAME ASC 질의 15 프로젝트에 참여하는 종업원을 부서의 알파벳 순서대로, 각 부서 내에서는 성과 이름의 알파벳 순서대로 출력하시오. SELECT DNAME, LNAME, FNAME, PNAME FROM DEPARTMENT, EMPLOYEE, WORKS_ON, PROJECT WHERE DNUMBER=DNO AND SSN=ESSN AND PNO=PNUMBER ORDER BY DNAME, LNAME, FNAME ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

40 7.5 더 복잡한 SQL 질의 널값을 포함한 비교와 세 값을 갖는 논리 중첩질의(nested query)와 집합비교
상관 중첩 질의 SQL의 EXISTS함수와 UNIQUE함수 SQL에서 명시적 집합과 애트리뷰트의 재명명 SQL에서 조인된 테이블 SQL에서 집단함수 그룹핑: Group by와 Having 절 SQL에 대한 논의와 요약 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

41 7.5.1 널값을 포함한 비교와 세 값을 갖는 논리 널 값의 의미 알려지지 않은 값 (존재하지만 알지 못하는)
이용할 수 없거나 보류해둔 값 (존재하지만 의도적으로 보류한) 적용할 수 없는 애트리뷰트 (이 투플에는 정의되지 않는) 애트리뷰트의 값이 NULL인지 검사 IS NULL IS NOT NULL 질의 18 상사가 없는 모든 종업원들의 이름을 검색하시오. SELECT FNAME, LNAME FROM EMPLOYEE WHERE SUPERSSN IS NULL ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

42 7.5.2 중첩질의(nested query)와 집합비교
중첩 질의 다른 질의의 WHERE 절 내에 완전한 SELECT 질의가 나타나는 형태 외부 질의와 내부 질의로 구분됨 비교 연산자 IN 외부 질의의 한 투플에 대하여, 이 투플이 임의의 투플 집합의 원소가 되는지 비교하는 연산임 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

43 7.5.2 중첩질의(nested query)와 집합비교
질의 4A 성이 ‘Smith’인 종업원(일반 직원 혹은 프로젝트를 담당하는 부서의 관리자)이 참여하는 프로젝트의 프로젝트 번호 목록을 작성하시오. SELECT DISTINCT PNUMBER FROM PROJECT WHERE PNUMBER IN ( SELECT PNUMBER FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE DNUM=DNUMBER AND MGRSSN=SSN AND LNAME=‘Smith’) OR PNUMBER IN ( SELECT PNO FROM WORKS_ON, EMPLOYEE WHERE ESSN=SSN AND LNAME=‘Smith’) ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

44 7.5.2 중첩질의(nested query)와 집합비교
질의 192 Page SSN이 인 사원이 일하는 프로젝트와 일한 시간의 조합이 동일한 사원의 SSN을 검색하라. SELECT DISTINCT ESSN FROM WORKS_ON WHERE (PNO, HOURS) IN ( SELECT PNO, HOURS WHERE SSN=‘ ’); 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

45 7.5.2 중첩질의(nested query)와 집합비교
= ALL 연산자 하나의 값 v가 집합 V내의 모든 값들과 같으면 참이 됨 ALL 앞에 >, >=, <, <=, <를 사용할 수도 있음 = ANY(= SOME) 연산자 하나의 값 v가 집합 V내의 어떤 하나의 값과 같으면 참이 됨 ANY(SOME) 앞에 >, >=, <, <=, <를 사용할 수도 있음 질의 193 Page 5번 부서에 근무하는 모든 사원보다 급여가 많은 사원을 검색하라. SELECT LNAME, FNAME FROM EMPLOYEE WHERE SALARY > ALL ( SELECT SALARY WHERE DNO=5) ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

46 7.5.2 중첩질의(nested query)와 집합비교
중첩 질의에서 애트리뷰트 이름의 모호성 만약 외부 질의문의 FROM 절에 있는 릴레이션과 내부 질의문의 FROM 절에 있는 다른 릴레이션에 동일한 애트리뷰트 이름이 있다면 애트리뷰트 이름의 모호성이 발생할 수 있음 애매한 애트리뷰트에 대한 참조규칙은 항상 가장 안쪽 가까운 질의문에 선언된 릴레이션을 먼저 참조하는 것임 내부 질의에서 외부 질의에 명시된 릴레이션의 애트리뷰트를 참조하려면 별명을 사용해야 함 질의 16 자신의 부양가족과 이름, 성별이 같은 종업원들의 이름을 검색하시오. SELECT E.FNAME, E.LNAME FROM EMPLOYEE AS E WHERE E.SSN IN ( SELECT ESSN FROM DEPENDENT WHERE E.FNAME=DEPENDENT_NAME AND E.SEX=SEX) ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

47 7.5.3 상관 중첩 질의 상관된 질의 (Correlated Query)
내부 질의의 WHERE 절에 있는 조건에서 외부질의에 선언된 릴레이션의 일부 애트리뷰트를 참조하는 경우에 두 질의를 상관된 질의라고 함 비중첩 질의로의 변환 중첩된 SELECT … FROM … WHERE… 블록과 =과 IN 비교 연산자를 이용해서 작성한 질의는 항상 단일 블록 질의로 변환할 수 있음 질의 16A 자신의 부양가족과 이름, 성별이 같은 종업원들의 이름을 검색하시오. SELECT E.FNAME, E.LNAME FROM EMPLOYEE AS E, DEPENDENT AS D WHERE E.SSN=D.ESSN AND E.FNAME=DEPENDENT_NAME AND E.SEX=D.SEX ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

48 7.5.4 SQL의 EXISTS함수와 UNIQUE함수
상관된 중첩질의에서 내부 질의의 결과가 공집합인가를 검사함 EXISTS(Q) 질의 Q의 결과에 최소한 한 개의 투플이 있다면 참을 반환 질의 16B 자신의 부양가족과 이름, 성별이 같은 종업원들의 이름을 검색하시오. SELECT E.FNAME, E.LNAME FROM EMPLOYEE E WHERE EXISTS ( SELECT * FROM DEPENDENT WHERE E.SSN=ESSN AND SEX=E.SEX AND E.FNAME=DEPENDENT_NAME) ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

49 7.5.4 SQL의 EXISTS함수와 UNIQUE함수
NOT EXIST 함수 상관된 중첩질의에서 내부 질의의 결과가 공집합인가를 검사함 NOT EXISTS(Q) 질의 Q의 결과에 투플이 없다면 참을 반환 질의 6 부양가족이 없는 종업원들의 이름을 검색하시오. SELECT FNAME, LNAME FROM EMPLOYEE WHERE NOT EXISTS ( SELECT * FROM DEPENDENT WHERE SSN=ESSN) ; UNIQUE 함수 질의 Q의 결과에 중복된 투플이 없다면 TRUE를 반환 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

50 7.5.4 SQL의 EXISTS함수와 UNIQUE함수
질의 7 부양가족이 적어도 한명 이상 있는 관리자의 이름을 검색하라. SELECT FNAME, LNAME FROM EMPLOYEE WHERE EXISTS ( SELECT * FROM DEPENDENT WHERE SSN=ESSN) AND EXISTS ( SELECT * FROM DEPARTMENT WHERE SSN=MGRSSN) ; 부양가족 존재? 관리부서 존재? 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

51 7.5.4 SQL의 EXISTS함수와 UNIQUE함수
질의 3B 5번 부서가 담당하는 모든 프로젝트에 근무하는 사원들의 이름을 검색하라. (각 사원에 대하여 그 사원이 근무하지 않는 5번 부서가 관리하는 프로젝트가 존재하지 않는 경우에 그 사원을 검색하라) SELECT FNAME, LNAME FROM EMPLOYEE WHERE NOT EXISTS ( SELECT * FROM WORKS_ON AS B WHERE (B.PNO IN ( SELECT PNUMBER FROM PROJECT WHERE DNUM=5)) AND NOT EXISTS ( SELECT * FROM WORKS_ON AS C WHERE C.PNO=B.PNO)) ; B.PNO가 5번 부서에서 관리하는 프로젝트다 B.PNO 프로젝트에서 근무하는 사원이 존재하지 않는다 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

52 7.5.5 SQL에서 명시적 집합과 애트리뷰트의 재명명
WHERE 절에 값들의 명시적 집합 사용 가능 질의 17 프로젝트 번호 1, 2, 3에서 일하는 모든 종업원들의 SSN을 검색하시오. SELECT DISTINCT ESSN FROM WORKS_ON WHERE PNO IN (1, 2, 3) ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

53 7.5.5 SQL에서 명시적 집합과 애트리뷰트의 재명명
질의 결과 애트리뷰트의 재명명 결과에 나타나는 애트리뷰트의 이름은 키워드 AS를 사용하여 원하는 새 이름으로 재명명할 수 있음 AS를 사용하여 애트리뷰트와 릴레이션에 별명을 붙일 수 있음 질의 8A 종업원에 대해, 종업원의 성과 이름, 직속 감독자의 성과 이름을 검색하시오. SELECT E.LNAME AS EMPLOYEE_NAME, S.LNAME AS SUPERVISOR_NAME FROM EMPLOYEE AS E, EMPLOYEE AS S WHERE E.SUPERSSN=S.SSN ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

54 7.5.6 SQL에서 조인된 테이블 FROM 절에 조인 연산의 결과를 지정
질의 1A ‘Research’ 부서에서 일하는 모든 종업원들의 이름과 주소를 검색하시오. SELECT FNAME, LNAME, ADDRESS FROM (EMPLOYEE JOIN DEPARTMENT ON DNO=DNUMBER) WHERE DNAME=‘Research’ ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

55 7.5.7 SQL에서 집단함수 집단함수 SQL에서는 COUNT, SUM, MAX, MIN, AVG 등의 집단 (or 내장) 함수를 제공함 COUNT 함수는 질의에서 투플이나 값의 개수를 반환함 SUM, MAX, MIN, AVG 함수는 수치 값들의 다중집합에 적용되며, 각각 합, 최대값, 최소값, 평균값을 반환함 질의 19 종업원의 급여의 합, 최고 급여, 최저 급여, 평균 급여를 구하시오. SELECT SUM (SALARY), MAX (SALARY), MIN (SALARY), AVG (SALARY) FROM EMPLOYEE ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

56 7.5.7 SQL에서 집단함수 집단함수 조건을 만족하는 투플들을 대상으로 집단 함수 값들을 얻으려면, WHERE절에서 투플의 조건을 제시할 수 있음 질의 20 ‘Research’ 부서에 있는 모든 종업원들의 급여의 합과 최고 급여, 최소 급여, 평균 급여를 구하시오. SELECT SUM (SALARY), MAX (SALARY), MIN (SALARY), AVG (SALARY) FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER AND DNAME=‘Research’ ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

57 7.5.7 SQL에서 집단함수 COUNT(*) 투플의 수를 반환 질의 21 회사내의 총 종업원의 수를 검색하시오.
SELECT COUNT (*) FROM EMPLOYEE ; 질의 22 ‘Research’ 부서에 속해 있는 종업원의 수를 검색하시오. FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER AND DNAME=‘Research’ ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

58 7.5.7 SQL에서 집단함수 특정 투플을 선택하기 위해 집단함수 이용 중첩질의 이용 질의 5
둘 이상의 부양가족이 있는 모든 사원의 이름을 검색하시오. SELECT LNAME, FNAME FROM EMPLOYEE WHERE ( SELECT COUNT (*) FROM DEPENDENT WHERE SSN=ESSN ) >= 2 ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

59 7.5.8 그룹핑: Group by와 Having 절 그룹화 (grouping)
특정 애트리뷰트(들)의 값이 같은 투플들을 모아서 그룹을 생성하고, 이들 그룹에 대하여 집단함수를 적용함 이 때, 특정 애트리뷰트들을 그룹화 애트리뷰트 라고 하며, SQL의 GROUP BY절에 지정함 대부분의 경우, SELECT절에 그룹화 애트리뷰트(들)를 지정하여 그 값과 그 값에 해당하는 투플 그룹에 집단함수를 적용한 결과를 동시에 반환함 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

60 7.5.8 그룹핑: Group by와 Having 절 질의 24
각 부서에 대해서 부서 번호, 부서 내에 있는 종업원의 수, 평균 봉급은? SELECT DNO, COUNT (*), AVG (SALARY) FROM EMPLOYEE GROUP BY DNO ; EMPLOYEE 투플들을 DNO 값을 기준으로 분할하여 그룹들을 생성함 그 다음에, 각 그룹의 투플들에 대하여 COUNT와 AVG함수를 적용함 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

61 7.5.8 그룹핑: Group by와 Having 절 질의 25
각 프로젝트에 대해서 프로젝트 번호, 프로젝트 이름, 그 프로젝트에서 근무하는 사원들의 수를 검색하라. SELECT PNUMBER, PNAME, COUNT (*) FROM PROJECT, WORKS_ON WHERE PNUMBER=PNO GROUP BY PNUMBER ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

62 7.5.8 그룹핑: Group by와 Having 절 질의 26
두 명 이상의 사원이 근무하는 각 프로젝트에 대해서 프로젝트 번호, 프로젝트 이름, 프로젝트에서 근무하는 사원의 수를 검색하라. SELECT PNUMBER, PNAME, COUNT (*) FROM PROJECT, WORKS_ON WHERE PNUMBER=PNO GROUP BY PNUMBER ; HAVING COUNT (*) >= 2 각 그룹에 대해 조건 체크 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

63 7.5.8 그룹핑: Group by와 Having 절 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

64 7.5.8 그룹핑: Group by와 Having 절 질의 27
각 프로젝트에 대해서 프로젝트 번호, 프로젝트 이름, 5번 부서에 속하면서 프로젝트에서 근무하는 사원의 수를 검색하라. SELECT PNUMBER, PNAME, COUNT (*) FROM PROJECT, WORKS_ON, EMPLOYEE WHERE PNUMBER=PNO AND SSN=ESSN AND DNO=5 GROUP BY PNUMBER ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

65 7.5.8 그룹핑: Group by와 Having 절 질의 28
6명 이상의 사원이 근무하는 각 부서에 대해서 부서번호와 40,000 달러가 넘는 급여를 받는 사원의 수를 검색하라. SELECT DNUMBER, COUNT (*) FROM DEPARTMENT, EMPLOYEE WHERE DNUMBER=DNO AND SALARY > AND DNO IN ( SELECT DNO FROM EMPLOYEE GROUP BY DNO HAVING COUNT (*) >= 6) GROUP BY DNUMBER ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

66 7.5.9 SQL에 대한 논의와 요약 SQL 질의는 6개의 절로 구성되지만, 필수사항은 처음의 두 개 뿐임 질의의 평가 순서
FROM → WHERE절 → GROUP BY → HAVING → SELECT → ORDER BY SELECT <애트리뷰트 목록> SELECT 절은 질의 결과에 포함될 애트리뷰트들이나 함수를 나열함 FROM <테이블 목록> FROM 절은 질의의 대상을 명시하는 곳으로 조인된 릴레이션이나 릴레이션(들)을 지정함 [WHERE <조건>] WHERE 절은 투플들에 대한 조건을 명시함 [GROUP BY <집단화 애트리뷰트>] GROUP BY절은 그룹화 애트리뷰트들을 지정함 [HAVING <집단 조건>] HAVING 절은 그룹들에 대한 조건을 지정함 [ORDER BY <애트리뷰트 목록>] ORDER BY 절은 정렬 기준이 되는 애트리뷰트(들)을 지정함 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

67 7.6 SQL에서 삽입, 삭제, 갱신 구문 INSERT 명령 DELETE 명령 UPDATE 명령
충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

68 7.6.1 INSERT 명령 INSERT의 간단한 형식은 릴레이션에 투플 하나를 추가하는 것임
삽입하는 투플 값은 CREATE TABLE 명령에서 지정한 애트리뷰트 순서와 동일하게 지정해야 함 U1: INSERT INTO EMPLOYEE VALUES (‘Richard’,‘K’,‘Marini’,‘ ’,‘30-DEC-52’, ‘98 Oak Forest, Katy, TX’,‘M’,37000,‘ ’,4) ; 값들의 순서를 애트리뷰트 순서와 다르게 지정하려면 INSERT 문장에서 애트리뷰트 이름을 명시해야 함 U1A: INSERT INTO EMPLOYEE (FNAME, LNAME, DNO, SSN) VALUES (‘Richard’, ‘Marini’, 4, ‘ ’) ; 이름을 명시하지 않은 애트리뷰트들은 NULL이나 DEFAULT 값을 가짐 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

69 7.6.1 INSERT 명령 무결성 조건 SQL2에서는 DDL에서 무결성 제약조건을 지정할 수 있음
그러나 DBMS에 따라서 효율성 때문에 일부 제약조건들을 지원하지 않을 수 있음 2번 부서가 존재하지 않으므로 삽입이 될 수 없음 U2: INSERT INTO EMPLOYEE (FNAME, LNAME, SSN, DNO) VALUES (‘Robert’, ‘Hatcher’, ‘ ’, 2) ; 기본키인 SSN이 Null값이므로 삽입이 될 수 없음 U2A: INSERT INTO EMPLOYEE (FNAME, LNAME, DNO) VALUES (‘Robert’, ‘Hatcher’, 5) ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

70 7.6.1 INSERT 명령 SELECT와 결합된 INSERT 명령
U3A: CREATE TABLE DEPTS_INFO ( DEPT_NAME VARCHAR(15), NO_OF_EMPS INTEGER, TOTAL_SAL INTEGER) ; U3B: 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 ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

71 7.6.2 DELETE 명령 DELETE 명령은 릴레이션에서 투플(들)을 제거하는 명령임
삭제할 투플에 대한 조건은 WHERE 절에서 명시함 한번의 DELETE 명령으로 WHERE 절의 조건을 만족하는 투플을 모두 삭제함 U4A: DELETE FROM EMPLOYEE WHERE LNAME=‘Brown’ ; U4B: DELETE FROM EMPLOYEE WHERE SSN=‘ ’ ; U4C: DELETE FROM EMPLOYEE WHERE DNO IN ( SELECT DNUMBER FROM DEPARTMENT WHERE DNAME=‘Research’ ) ; WHERE 절을 생략한 경우에는 테이블내의 모든 투플을 삭제하며, 테이블은 데이터베이스 내에서 빈 테이블로 남게 됨 U4D: DELETE FROM EMPLOYEE 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

72 7.6.3 UPDATE 명령 UPDATE 명령은 투플의 애트리뷰트 값을 수정하기 위해 사용함
WHERE 절은 한 릴레이션에서 수정할 투플을 선택하는데 사용됨 SET절은 변경할 애트리뷰트와 그들의 새로운 값을 명시함 PROJECT 테이블에서 PNUMBER가 10인 투플에 대하여 PLOCATION을 ‘Bellaire’로 변경하고, 담당 부서인 DNUM을 5로 변경하라. U5: UPDATE PROJECT SET PLOCATION=‘Bellaire’, DNUM=5 WHERE PNUMBER=10 ; ‘Research’ 부서에 있는 모든 종업원들의 봉급을 10% 인상하라. U6: UPDATE EMPLOYEE SET SALARY=SALARY*1.1 WHERE DNO IN ( SELECT DNUMBER FROM DEPARTMENT WHERE DNAME=‘Research’) ; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

73 7.7 SQL의 기타 기능 권한 기능 SQL은 데이터베이스 사용자에게 권한을 부여하고 취소하는 기능을 제공함
호스트 언어와 결합되어 사용 SQL은 C, C++, COBOL, JAVA, PASCAL 등과 같은 범용 프로그래밍 언어 내에서 사용될 수 있음 Embedded SQL/C, C++, COBOL, JAVA, PASCAL 트랜잭션 기능 SQL은 트랜잭션 제어 명령문을 가짐 – 동시성 제어와 회복 기타 유용한 명령어 상용 DBMS는 SQL 명령 이외에도 물리적 데이터베이스 설계 매개변수와 릴레이션들을 위한 파일 구조, 그리고 인덱스와 같은 접근경로를 명시하기 위한 명령어의 집합을 가지고 있음 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

74 SQL View View의 특성 SQL에서 뷰는 다른 테이블들에서 유도된 “가상” 테이블 - 실제로 저장되지는 않음
기본 테이블들의 열로 구성 뷰에 대한 질의는 아무런 제한을 받지 않음 몇 개 연산들을 뷰로 표현하여 사용하는데 편리함 데이터 접근제어로 보안성 제공 뷰에 적용할 수 있는 갱신(삽입, 삭제) 연산들은 제한됨 - 물리적인 형태로 저장되지는 않기 때문에, 뷰는 일반적인 Alter 문으로 변경할 수 없음 명령어 뷰를 정의하는 SQL 명령: CREATE VIEW WORKS_ON_NEW; 뷰를 삭제하는 SQL 명령: DROP VIEW WORKS_ON_NEW; 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스

75 Embedded SQL 대부분 SQL 문장들은 COBOL, C, Java와 같은 범용 호스트 프로그래밍 언어에 내포될 수 있음
내포된 SQL 문장은 EXEC SQL 와 END-EXEC (또는 세미콜론(;))에 의해 호스트 프로그래밍 언어 문장으로 구분함 공유 변수들은 SQL 문장 내에서 사용될 때는 콜론(:)을 그 앞에 붙임 충북대학교 구조시스템공학과 시스템공학연구실 - 공학데이터베이스


Download ppt "SQL-99: 스키마 정의, 기본제약조건, 질의어 충북대학교 구조시스템공학과 시스템공학연구실"

Similar presentations


Ads by Google