PowerPoint 프레젠테이션

Size: px
Start display at page:

Download "PowerPoint 프레젠테이션"

Transcription

1 008 데이터베이스오브젝트 U N I T 0 8 한데이터베이스에는테이블, 뷰, 인덱스, 트리거, 시퀀스등의다양한오브젝트들을생성할수있습니다. 버퍼풀과테이블스페이스를제외한여러가지데이터베이스오브젝트에대한소개와 CREATE 문, ALTER 문, DROP 문을이용한생성, 변경, 제거방법을합니다. UNIT 07 테이블스페이스 9

2 008 DB 9.7 운영자가이드 Administrator Edition 데이터베이스파티션그룹스키마스키마지정방법테이블 CREATE TABLE 문 ALTER TABLE 문데이터유형 NULL 값과 DEFAULT 값테이블스페이스지정고유키기본키외부키참조무결성점검제한조건 IDENTITY 컬럼 NOT LOGGED INITIALLY 옵션뷰 CREATE VIEW 문 MQT 인덱스 CREATE INDEX문 시퀀스트리거 CREATE TRIGGER AFTER 트리거 BEFORE 트리거 INSTEAD OF 트리거사용자정의유형사용자정의함수 CREATE FUNCTION 문 SQL 사용자정의함수저장프로시저 CREATE PROCEDURE 문 SQL/PL 저장프로시저 PL/SQL 저장프로시저 9 DB 9.7 운영자가이드

3 008 0 데이터베이스파티션그룹 DPF 를이용하여다중데이터베이스파티션을구성하면데이터베이스파티션의묶음인데이터베이스파티션그룹을정의할수있습니다. CREATE DATABASE PARTITION GROUP, DROP DATABASE PARTITION GROUP 문으로관리합니다. 데이터베이스를생성하면 개의데이터베이스파티션그룹이기본적으로생성됩니다. 파티션그룹 IBMCATGROUP 카탈로그테이블스페이스가생성되는파티션입니다. IBMDEFAULTTEMPGROUP 시스템임시테이블스페이스가생성되는파티션입니다. IBMDEFAULTGROUP 사용자테이블스페이스가생성되는기본파티션입니다. create database partition group 문의형식은다음과같습니다. Figure 080A CREATE DATABASE PARTITION GROUP 문 옵션 <DB 파티션그룹명 > 임의의고유한이름으로지정합니다. ON ALL DBPARTITIONNUMS 모든파티션에생성되도록합니다. ON DBPARTITIONNUMS 한개이상의지정한파티션에생성되도록합니다. < 파티션번호 > dbnodes.cfg 파일에정의된파티션번호입니다. SYSADM, SYSCTRL 권한이필요합니다. create database partition group 명령어에서한개이상의데이터베이스파티션번호를이용하여새로운데이터베이스파티션그룹을생성합니다. $ db "create database partition group <DB 파티션그룹명 > on dbpartitionnum (< 파티션번호 >, < 파티션번호 >)" IBMDEFAULTTEMPGROUP 은 list nodegroups 명령어로표시되지않습니다 drop database partition group 명령어로데이터베이스파티션을제거합니다. $ db "drop database partition group <DB 파티션그룹명 >" $ db "drop nodegroup <DB 파티션그룹명 >" list database partition groups 명령어를이용하여정의된데이터베이스파티션그룹의정보를확인합니다. list nodegroups 명령어를사용해도됩니다. $ db list database partition groups show detail SYSCAT.NODEGROUPS 뷰에서연관된정보를확인합니다. $ db list database partition groups show detail 9 DB 9.7 운영자가이드

4 08 0 S E C T 0 스키마 데이터베이스오브젝트의이름은 < 스키마명 >.< 오브젝트명 > 과같이 -part 형식으로구성됩니다. 스키마는오브젝트의이름을수식하는수식자역할을합니다. CREATE SCHEMA, DROP SCHEMA 문으로관리합니다. 데이터베이스를생성하면다음과같이 4가지의스키마가기본적으로생성됩니다. 스키마 SYSIBM 시스템카탈로그테이블의스키마입니다. SYSCAT 시스템카탈로그뷰의스키마입니다. SYSSTAT 통계자료와관련된시스템카탈로그뷰의스키마입니다. SYSFUN 기본적으로제공되는사용자정의함수의스키마입니다. create schema 문의형식은다음과같습니다. 옵션 < 스키마명 > 임의의고유한이름으로지정합니다. AUTHORIZATION 스키마의소유자를지정합니다. Figure 080A CREATE SCHEMA 문 SYSADM, DBADM 권한이필요합니다. SYS로시작되는스키마명은사용하지않도록합니다. 새로생성된스키마를이용하려는사용자는스키마의소유자로부터 CREATEIN, ALTERIN, DROPIN 등의특권을부여받아야합니다. 제거하려는스키마명을가진오브젝트가존재하면, SQL0478N 오류코드가반환되고, 스키마는제거되지않습니다 create schema 문을이용하여새로운스키마를생성합니다. $ db "create schema < 스키마명 >" create schema 문에서 AUTHORIZATION 옵션을이용하여스키마의소유자를지정할수있습니다. $ db "create schema < 스키마명 > AUTHORIZATION < 스키마의소유자명 >" drop schema 문을이용하여기존의스키마를제거합니다. 반드시 RESTICT 옵션을지정하도록합니다. $ db "drop schema < 스키마명 > restrict" list tables 명령어에서 FOR SCHEMA 옵션을이용하면동일한스키마를가지는테이블과뷰의목록을확인할수있습니다. $ db list tables for schema < 스키마명 > 7 생성된스키마에대한정보는 SYSCAT.SCHEMA 뷰를이용해서확인합니다. $ db "select * from syscat.schemata" UNIT 08 데이터베이스오브젝트 94

5 008 0 스키마지정방법 테이블등의데이터베이스오브젝트의이름을명시할때는 < 스키마명 >.< 오브젝트명 > 형식의 -part name 을사용하는것이원칙입니다. < 스키마명 > 을명시적으로지정하지않으면접속사용자명이스키마명입니다. SQL 문에서 < 스키마명 > 없이 < 테이블명 > 만지정하면, < 현재세션의로그온사용자명 > 이기 본 < 스키마명 > 으로인식됩니다. < 테이블명 > 은 < 사용자명 >.< 테이블명 > 으로인식됩니다. $ login < 사용자명 > $ db connect to < 데이터베이스명 > $ db "select * from < 테이블명 >" 데이터베이스에접속하는 connect 문에서 USER 와 USING 옵션을이용하면, < 현세션의 로그온사용자명 > 에관계없이 < 데이터베이스접속시에사용된사용자명 > 이기본 < 스키마명 > 으로인식됩니다. < 테이블명 > 은 < 사용자명 >.< 테이블명 > 으로인식됩니다. set current schema 문은데이터베이스에접속한상태에서실행할수있으며, 접속이해제되면 < 로그온사용자명 > 으로복원됩니다. $ login < 사용자명> $ db connect to < 데이터베이스명 > user < 사용자명> using < 암호명> $ db "select * from < 테이블명 >" CURRENT SCHEMA 특수레지스터리변수는스키마명을명시적으로지정하지않는경우에기본스키마로적용될값을저장하고있습니다. values 문으로현재값을확인할수있습니다. set current schema 문으로 CURRENT SCHEMA 특수레지스터리변수를변경하면, < 데이터베이스접속시사용된사용자명 > 보다우선적으로적용됩니다. < 테이블명 > 은 < 스키마명 >.< 테이블명 > 으로인식됩니다. $ login < 사용자명> $ db connect to < 데이터베이스명 > user < 사용자명> using < 암호명> $ db values(current schema) $ db set current schema < 스키마명> $ db values(current schema) $ db "select * from < 테이블명 >" 4 데이터베이스의오브젝트를지정할때는개별적인 SQL문에서 < 스키마명 > 을명시적으로지정하는것이권장됩니다. < 현재세션의로그온사용자명 >, < 데이터베이스접속시에사용된사용자명 >, <CURRENT SCHEMA 특수레지스터리변수의현재값 > 보다 SQL문에서명시적으로지정한 < 스키마명 > 이가장우선적으로적용됩니다. < 테이블명 > 은 < 스키마명>.< 테이블명 > 로인식됩니다. $ login < 사용자명> $ db connect to < 데이터베이스명 > user < 사용자명> using < 암호명> $ db set current schema < 스키마명> $ db "select * from < 스키마명>.< 테이블명 >" 95 DB 9.7 운영자가이드

6 08 0 S E C T 04 테이블 사용자의데이터는테이블에저장됩니다. 테이블의데이터는기본적으로한개의테이블스페이스에저장됩니다. CREATE TABLE, ALTER TABLE, DROP TABLE 문으로관리합니다. 테이블스페이스의페이지크기별제약사항은정보센터를참조합니다. 한테이블스페이스에는한개이상의테이블이저장됩니다. Database Manager Instance database Tablespace A Table Table Table Tablespace B Table 4 database Tablespace A Table Table Figure 0804A 테이블스페이스와테이블 테이블의한행의총길이는지정한테이블스페이스의페이지크기보다작아야합니다. create table 문을이용하여테이블을정의합니다. IMPLICIT_SCHEMA 특권이있으면, 존재하지않는 < 스키마명 > 을이용하여테이블을정의할수있습니다. $ db "create table < 스키마명 >.< 테이블명 > (< 컬럼정의 >)" alter table 문을이용하여컬럼추가, 고유키추가및제거, 기본키추가및제거, 외부키추 가및제거, 점검제한조건추가및제거등의변경작업이가능합니다. $ db "alter table < 스키마명 >.< 테이블명 > ADD < 제한조건 >" 4 drop table 문으로테이블을제거합니다. $ db "drop table < 스키마명 >.< 테이블명 >" 5 list tables 명령어에서테이블의목록을확인할수있습니다. $ db list tables $ db list tables for schema < 스키마명 > $ db list tables for system $ db list tables for all 6 테이블에대한정보는 SYSCAT.TABLES 뷰를이용해서확인합니다. $ db "select * from syscat.tables" 7 describe table 문으로테이블의컬럼에대한정보를확인합니다. $ db "describe table < 스키마명 >.< 테이블명 >" 8 dblook 명령어로테이블에대한 DDL 문을추출할수있습니다. $ dblook d <DB 명 > e z < 스키마명 > t < 테이블명 > -o < 출력파일명 > UNIT 08 데이터베이스오브젝트 96

7 CREATE TABLE 문 테이블을생성할때이용하는 SQL 문입니다. 컬럼, 고유키, 기본키, 외부키, 점검제한조건등을정의하고, 데이터와인덱스를저장할테이블스페이스를지정합니다. SYSADM, DBADM 권한또는데이터베이스에대한 CREATAB 특권이필요할수있습니다. create table 문의형식은다음과같습니다. 새로운스키마명을이용하여테이블명을지정하려면, 데이터베이스에대한 IMPLICIT_SCHEMA 특권이필요합니다. 기존의스키마명을이용하여테이블명을지정하려면, 스키마에대한 CREATIN 특권이필요합니다. IN, INDEX IN, LONG IN 옵션을사용하려면테이블스페이스에대한 USE 특권이필요합니다. 외부키를정의하려면, 부모테이블에대한 REFERENCES 특권이필요합니다. Figure 0804A CREATE TABLE 문 NOT LOGGED INITIALLY 특성은 ALTER TABLE 문으로활성화할때만적용됩니다. 옵션에대한은다음과같습니다. 옵션 < 테이블명 > 임의의고유한이름으로지정합니다. < 스키마명 > 을생략하면 CURRENT SCHEMA 특수레지스터리변수의값이기본스키마명으로사용됩니다. 기존의스키마명을사용하려면, < 컬럼명 > 테이블내에서고유한임의의이름으로지정합니다. < 데이터유형 > 컬럼의데이터유형을지정합니다. <NULL 허용여부 > NULL 값을허용하지않으려면 'NOT NULL' 로지정합니다. < 기본값 > WITH DEFAULT 옵션으로기본값을지정합니다. IN <TS 명 > 테이블의데이터가저장될테이블스페이스명을지정합니다. INDEX IN <TS 명 > 인덱스데이터가저장될테이블스페이스명을지정합니다. LONG IN <TS 명 > LONG 데이터가저장될테이블스페이스명을지정합니다. NOT LOGGED INITIALLY 트랜잭션에서해당테이블에대한변경사항을로그에기록하지않게합니다. 97 DB 9.7 운영자가이드

8 08 0 S E C T 06 ALTER TABLE 문 테이블의특성을변경할떄사용하는 SQL문입니다. 컬럼추가, 고유키추가및제거, 기본키추가및제거, 외부키추가및제거, 점검제한조건추가및제거등의변경작업이가능합니다. SYSADM, DBADM 권한또는테이블에대한 CONTROL, ALTER 특권이필요할수있습니다. alter table 문의형식은다음과같습니다. 기존의스키마명을이용하여테이블을변경하려면, 스키마에대한 ALTERIN 특권이필요합니다. 외부키를정의하려면, 부모테이블에대한 REFERENCES 특권이필요합니다. Figure 0805A ALTER TABLE 문 옵션에대한은다음과같습니다. 옵션 < 테이블명 > 변경할테이블명을지정합니다. ADD < 컬럼정의 > 컬럼을추가합니다. ADD < 고유키제한조건 > 고유키를추가합니다. ADD < 기본키제한조건 > 기본키를추가합니다. ADD < 외부키제한조건 > 외부키를추가합니다. ADD < 점검제한조건 > 점검제한조건을추가합니다. ALTER < 컬럼명 > VARCHAR 유형에서컬럼의길이를증가시킬수있습니다. DROP < 제한조건명 > 지정된 < 제한조건 > 을제거합니다. ACTIVATE NOT LOGGED INITIALLY NOT LOGGED 모드로전환합니다. 트랜잭션이종료될때까지는해당테이블에대한변경작업이로깅되지않습니다. UNIT 08 데이터베이스오브젝트 98

9 데이터유형 기본적으로지원되는컬럼의데이터유형은다음과같습니다. CREATE DISTINCT TYPE 문으로사용자가새로운데이터유형을추가로생성하여사용할수도있습니다. 기본적으로지원되는데이터의유형은다음과같습니다. Data Types Numeric Integer DECIMAL Floating SMALLINT INTEGER BIGINT DECIMAL REAL DOUBLE String Character String Single Byte Double Byte CHAR VARCHAR LONG VARCHAR CLOB GRAPHIC VARGRAPHIC LONG VARGRAPHIC DBCLOB Binary String BLOB VARCHAR FOR BIT DATA Datetime DATE TIME TIMESTAMP Datalink Figure 0807A 데이터유형 VARCHAR의최대길이는페이지크기에따라다릅니다. LOB 유형의최대길이는 G입니다. 대표적인데이터유형에대한은다음과같습니다. 구분유형저장 BYTE 수최대범위 숫자 SMALLINT -,768 ~ +-,767 INT 4 -,47,48,648 ~ +,47,48,647 BIGINT 8-9,,7,06,854,775,808 ~ +9,,7,06,854,775,807 DEC(p,s) (p+s)/+ 자리 DOUBLE E+08 ~ E+08 문자 CHAR(n) n 54 바이트 VARCHAR( n) n 바이트 (K 페이지인경우 ) 날짜 DATE ~ TIME 8 00:00:00 ~ 4:00:00 TIMESTAMP ~ DB 9.7 운영자가이드

10 08 0 S E C T 08 NULL 값과 DEFAULT 값 컬럼에 NULL 값과 DEFAULT 값을허용하게할수있습니다. DEFUALT 속성을가지지않는컬럼은반드시명시적으로값을지정해야합니다. CREATE TABLE 문에서 NOT NULL 옵션과 WITH DEFULAT 옵션을이용합니다. NULL 값은 0 또는공백 (blank) 또는 empty string 이아닙니다. empty string은길이가 0인값을의미하며, 공백문자와는다릅니다. NULL 값은알려지지않은값을의미합니다. 테이블을정의할때, 컬럼에 NULL 값을허용하지않으려면 CREATE TABLE 문에서 NOT NULL 옵션을이용합니다. $ db "create table < 테이블명 > ( < 컬럼명 > < 데이터유형명 > NOT NULL,.)" CREATE TABLE 문에서 WITH DEFAULT 옵션만지정하면시스템기본값이제공됩니다. $ db "create table < 테이블명 > ( < 컬럼명 > < 데이터유형명 > WITH DEFAULT)" 유형 기본값 숫자 0 0 문자 EMPTY STRING 길이가 0 인문자 DATE CURRENT DATE 현재시스템날짜 TIME CURRENT TIME 현재시스템시간 TIMESTAMP CURRENT TIMESTAMP 현재시스템시간소인 날짜유형의표현식은데이터베이스의코드페이지에따라달라집니다. 코드페이지가 970(ko_KR) 인경우에 DATE 유형은 'yyyy-mm-dd', TIME 유형은 'hh:mm:ss' 가되고, TIMESTAMP 유형은 'yyyy-mmdd-hh.mm.ss.uuuuuu' 으로표현됩니다. CREATE TABLE 문에서 WITH DEFAULT < 기본값 > 옵션을지정하면사용자가지정한값이 기본값으로사용됩니다. $ db "create table < 테이블명 > ( < 컬럼명 > < 데이터유형명 > WITH DEFAULT < 기본값 >)" 유형기본값예 숫자 WITH DEFAULT < 숫자 > WITH DEFAULT 0 문자 WITH DEFAULT '< 문자열 >' WITH DEFAULT 'xx' DATE WITH DEFAULT '< 날짜 >' WITH DEFAULT ' ' TIME WITH DEFAULT '< 시간 >' WITH DEFAULT '4::0' TIMESTAMP WITH DEFAULT '< 시간소인 >' WITH DEFAULT ' ' CREATE TABLE staff ( id SMALLINT NOT NULL WITH DEFAULT 0, name VARCHAR(9), dept SMALLINT NOT NULL, job CHAR(5), years SMALLINT, salary DECIMAL(7, ), comm DECIMAL(7, ) WITH DEFAULT ); 사용자가제공하는기본값인 0 이사용됩니다. 시스템이기본값인 0.00 이사용됩니다. Figure 0808A 기본값지정 UNIT 08 데이터베이스오브젝트 00

11 테이블스페이스지정 CREATE TABLE 문에서 IN 키워드를이용하여테이블스페이스를지정할수있습니다. INDEX IN, LONG IN 키워드로테이블, 인덱스, LONG 데이터를개별적인 DMS 테이블스페이스에저장할수있습니다. 지정한테이블스페이스는변경될수없습니다. 해당테이블의행의총길이를수용할수있는적합한기본테이블스페이스가없다면, SQL086N 오류가반환됩니다. 특정한테이블스페이스를지정하려면, 해당테이블스페이스에대한 USE 특권이있어야합니다. 사용자가정의한테이블스페이스중에서해당테이블의행의총길이를수용할수있는페이지크기를가진첫번째 REGULAR 유형의테이블스페이스가기본사용자테이블스페이스로사용됩니다. CREATE TABLE 문에서 IN 옵션을지정하지않으면, 테이블은기본사용자테이블스페이스에 저장됩니다. $ db "create table < 스키마명 >.< 테이블명 > (< 컬럼정의 >) " CREATE TABLE 문에서 IN 옵션으로테이블이저장될테이블스페이스를지정합니다. 테이블 의모든데이터와인덱스데이터는동일한테이블스페이스에저장됩니다. $ db "create table < 스키마명 >.< 테이블명 > (< 컬럼정의 >) IN < 테이블스페이스명 >" CREATE TABLE 문에서 INDEX IN 키워드를이용하여인덱스를위한데이터를별도의테이 블스페이스에저장할수있습니다. IN 옴션과 INDEX IN 옵션에서지정한테이블스페이스는 DMS 방식의 REGULAR 유형이어야합니다. INDEX IN 옵션만지정할수는없습니다. 사용자가정의한테이블스페이스가없다면, USERSPACE이기본사용자테이블스페이스입니다. 한테이블이여러테이블스페이스에저장되었다면, 테이블스페이스는함께 drop 되어야합니다. 4 5 $ db "create table < 스키마명 >.< 테이블명 > (< 컬럼정의 >) IN < 테이블스페이스명 > INDEX IN < 테이블스페이스명 > " CREATE TABLE 문에서 LONG IN 키워드를이용하여 LONG 데이터를별도의테이블스페 이스에저장할수있습니다. IN 옴션에서지정한테이블스페이스는 DMS 방식의 REGULAR 유형이고, LONG IN 옵션에서지정한테이블스페이스는 DMS 방식의 LARGE 유형이어야 합니다. LONG IN 옵션만지정할수는없습니다. $ db "create table < 스키마명 >.< 테이블명 > (< 컬럼정의 >) IN < 테이블스페이스명 > LONG IN < 테이블스페이스명 > " CREATE TABLE 문에서 IN, INDEX IN, LONG 옵션을모두사용하여테이블데이터, 인덱 스데이터, LONG 데이터를별도의 DMS 테이블스페이스를저장할수있습니다. $ db "create table < 스키마명 >.< 테이블명 > (< 컬럼정의 >) IN < 테이블스페이스명 > INDEX IN < 테이블스페이스명 > LONG IN < 테이블스페이스명 > " 테이블의데이터는 ts0, 인덱스의데이터는 ts0, LONG 데이터는 ts0 에분리하여자장합니다. CREATE TABLE kes.dept ( id smallint not null IN INDEX IN LONG IN, name varchar(0) not null, man smallint, budget int, CONSTRAINT dept_pk0 PRIMARY KEY (id)) ts0 ts0 ts0; ts0, ts0, ts0 는 DMS 유형의테이블스페이스입니다. Figure 0809A 테이블스페이스지정 0 DB 9.7 운영자가이드

12 08 0 S E C T 0 고유키 고유키는한개이상의컬럼들로구성되어테이블의각행을고유하게구별하는값입니다. 한테이블에한개이상의고유키를지정할수있습니다. 고유키를정의하면, 해당컬럼들로구성된고유인덱스가자동으로생성됩니다. 고유키제한조건을정의하는구문은다음과같습니다. 고유키를구성하는각컬럼은 NOT NULL 속성을지정해야합니다. Figure 080A 고유키제한조건절 고유키에대응하는인덱스가이미존재하면, SQL0000W 라는경고메시지가반환되지만, 무시해도됩니다. < 제한조건명 > 은데이터베이스내에서고유해야합니다. create table 문에서 CONSTRAINT ~ UNIQUE 라는옵션으로지정합니다. < 제한조건명 > 과동일한이름을가진고유인덱스가자동으로생성됩니다. 고유키는한테이블에여러개정의할수있습니다. CONSTRAINT 옵션을지정하지않으면, 제한조건명과인덱스의이름은 'SQLyymmddhhmmssxxx' 형식으로엔진이부여합니다. $ db "create table < 스키마명 >.< 테이블명 > (, < 고유키제한조건절 >, )" < 제한조건명 > 을명시하지않으면, 엔진이생성한이름으로관리하게됩니다. ALTER 또는 DROP문으로관리하려면, 사용자가제한조건명을명시하는것이편리합니다. 4 alter table 문을이용하여고유키를추가할수있습니다. $ db "alter table < 스키마명 >.< 테이블명 > ADD < 고유키제한조건절 >" alter table 문을이용하여고유키를제거할수있습니다. $ db "alter table < 스키마명 >.< 테이블명 > DROP CONSTRAINT < 제한조건명 >" CREATE TABLE kes.empl ( id smallint not null, name varchar(0) not null, sex char(), mydept smallint, salary smallint, varchar(0) not null, hiredate date, CONSTRAINT empl_uk0 UNIQUE( ) ); 컬럼은 NOT NULL 로지정합니다. 컬럼이고유키가됩니다. 제한조건명은 empl_uk0 입니다. 자동으로생성되는고유인덱스의이름도 empl_uk0 입니다. ALTER TABLE kes.empl DROP CONSTRAINT empl_uk0 ; ALTER TABLE kes.empl ADD CONSTRAINT empl_uk0 UNIQUE ( ) ; Figure 080B 고유키생성 UNIT 08 데이터베이스오브젝트 0

13 008 기본키 기본키는고유키와동일한특성을갖지만, 한테이블에한개만지정할수있습니다. 기본키는한개이상의컬럼들로구성될수있으며, 해당컬럼들로구성된고유인덱스가자동으로생성됩니다. 고유키와기본키는기능적으로동일합니다. 단, IMPORT 명령어의 INSERT_UPDATE 옵션을사용할때에는반드시기본키가필요합니다. 기본키제한조건을정의하는구문은다음과같습니다. 기본키를구성하는각컬럼은 NOT NULL 속성을지정해야합니다. Figure 08A 기본키제한조건절 고유키에대응하는인덱스가이미존재하면, SQL0000W 라는경고메시지가반환되지만, 무시해도됩니다. create table 문에서 CONSTRAINT ~ PRIMARY KEY 라는옵션으로지정합니다. < 제한조건명 > 과동일한이름을가진고유인덱스가자동으로생성됩니다. 기본키는한테이블에한개만정의할수있습니다. CONSTRAINT 옵션을지정하지않으면, 제한조건명과인덱스의이름은 'SQLyymmddhhmmssxxx' 형식으로엔진이부여합니다. < 제한조건명 > 은데이터베이스내에서고유해야합니다. < 제한조건명 > 을명시하지않으면, 엔진이생성한이름으로관리하게됩니다. ALTER 또는 DROP문으로관리하려면, 사용자가제한조건명을명시하는것이편리합니다. 4 $ db "create table < 스키마명 >.< 테이블명 > (, < 기본키제한조건절 >, )" alter table 문을이용하여기본키를추가할수있습니다. $ db "alter table < 스키마명 >.< 테이블명 > ADD < 기본키제한조건절 >" alter table 문을이용하여기본키를제거할수있습니다. $ db "alter table < 스키마명 >.< 테이블명 > DROP CONSTRAINT < 제한조건명 >" CREATE TABLE kes.empl ( id smallint not null, name varchar(0) not null, sex char(), mydept smallint, salary smallint, varchar(0) not null, hiredate date, CONSTRAINT empl_pk0 PRIMARY KEY (id) ); 제한조건명은 empl_pk0 입니다. 자동으로생성되는고유인덱스의이름도 empl_pk0 입니다. id 컬럼은 NOT NULL 로지정합니다. id 컬럼이기본키가됩니다. ALTER TABLE kes.empl DROP CONSTRAINT empl_pk0 ; ALTER TABLE kes.empl ADD CONSTRAINT empl_pk0 PRIMARY KEY(id) ; Figure 08B 기본키생성 0 DB 9.7 운영자가이드

14 08 0 S E C T 외부키 외부키는부모테이블의고유키또는기본키를참조하는키입니다. 참조하는고유키또는기본키와호환되는컬럼들로구성되어야하며, 각컬럼은 NULL 값을허용합니다. 외부키제한조건을정의하는구문은다음과같습니다. Figure 08A 외부키제한조건절 < 제한조건명 > 은데이터베이스내에서고유해야합니다. create table 문에서 CONSTRAINT ~ FOREIGN KEY 라는옵션으로지정합니다. 외부키는한테이블에여러개정의할수있습니다. CONSTRAINT 옵션을지정하지않으면, 제한조건명은 'SQLyymmddhhmmssxxx' 형식으로엔진이부여합니다. $ db "create table < 스키마명 >.< 테이블명 > (, < 외부키제한조건절 >, )" < 제한조건명 > 을명시하지않으면, 엔진이생성한이름으로관리하게됩니다. ALTER 또는 DROP문으로관리하려면, 사용자가제한조건명을명시하는것이편리합니다. 4 alter table 문을이용하여외부키를추가할수있습니다. $ db "alter table < 스키마명 >.< 테이블명 > ADD < 외부키제한조건절 >" alter table 문을이용하여외부키를제거할수있습니다. $ db "alter table < 스키마명 >.< 테이블명 > DROP CONSTRAINT < 제한조건명 >" 외부키는 SQL문에서부모테이블의기본키또는고유키와 JOIN 하게되므로, 외부키에대한인덱스를생성하는것이좋습니다. CREATE TABLE kes.empl ( id smallint not null, name varchar(0) not null ); mydept 컬럼은 NULL 값을허용할수있습니다., sex char(), mydept smallint, salary smallint, varchar(0) not null, hiredate date, CONSTRAINT empl_fk0 FOREIGN KEY(mydept) REFERENCES kes.dept 부모테이블의이름은 kes.dept 입니다. 제한조건명은 empl_fk0 입니다. ALTER TABLE kes.empl DROP CONSTRAINT empl_fk0 ; mydept 컬럼이외부키가됩니다. ALTER TABLE kes.empl ADD CONSTRAINT empl_fk0 FOREIGN KEY(mydept) REFERENCES kes.dept ; Figure 08B 외부키생성 UNIT 08 데이터베이스오브젝트 04

15 008 참조무결성 두테이블이고유키와외부키로연결되어외부키를가진테이블에데이터를추가, 변경하는경우에데이터의참조무결성이유지됩니다. 고유키를가진테이블에데이터를변경, 제거하는경우에는 UPDATE 규칙과 DELETE 규칙이적용됩니다. 외부키제한조건에서 UPDATE 규칙과 DELETE 규칙을정의하는옵션은다음과같습니다. Figure 08A UPDATE 규칙과 DELETE 규칙옵션 부모테이블에 INSERT문을실행할때, 점검규칙은필요하지않습니다. 외부키는자신의테이블에있는고유키를참조할수도있습니다. 동일한부모테이블의고유키를여러자손테이블의외부키가참조할수있습니다. 한개의 DELETE 문또는 UPDATE 문을실행할때, 두개이상의 RI가존재하는경우는흔하지않으므로, 보통은 NO ACTION과 RESTRICT 를동일하게생각하면됩니다. 외부키를가진자손테이블에 INSERT 문으로데이터를추가할때, 제공된외부키가부모테이 블의고유키에존재하는값인지점검합니다. 존재하지않는값인경우에는 SQL050N 오류코 드가반환되고, INSERT 문은실패합니다. 자손테이블에외부키에입력된데이터는부모테이 블의고유키에존재하는값이므로항상참조가가능합니다. 이러한기능을 ' 참조무결성 (RI, Refrential Integrity)' 라고합니다. 고유키를가진부모테이블에서 UPDATE 문을실행할때는다음과같이 가지의 UPDATE 규칙을적용받게할수있습니다. CREATE TABLE 문에서외부키를정의할때 ON UPDATE 옵션을이용하여지정합니다. UPDATE 규칙 NO ACTION RESTICT 다른 RI 관계의 UPDATE 규칙을먼저적용하고, 자신의 UPDATE 규칙을적용합니다. 변경되는행의고유키값을참조하고있는자손테이블의행이존재하면, SQL05N 오류코드가반환되고, UPDATE 문이실패합니다. 기본값으로사용됩니다. 다른 RI 관계의 UPDATE 규칙보다자신의 UPDATE 규칙을먼저적용하는점을제외하고, NO ACTION 과동일합니다. 4 고유키를가진부모테이블에서 DELETE 문을실행할때는다음과같이 4 가지의 DELETE 규 칙을적용받게할수있습니다. CREATE TABLE 문에서외부키를정의할때 ON DELETE 옵 션을이용하여지정합니다. DELETE 규칙 NO ACTION RESTICT CASCADE SET NULL 다른 RI 관계의 DELETE 규칙을먼저적용하고, 자신의 DELETE 규칙을적용합니다. 삭제되는행의고유키값을참조하고있는자손테이블의행이존재하면, SQL05N 오류코드가반환되고, DELETE 문이실패합니다. 기본값으로사용됩니다. 다른 RI 관계의 DELETE 규칙보다자신의 DELETE 규칙을먼저적용하는점을제외하고, NO ACTION 과동일합니다. 삭제되는행의고유키값을참조하고있는자손테이블의행을함께삭제합니다. 삭제되는행의고유키값을참조하고있는자손테이블의행의외부키의값을 NULL 값으로변경합니다. 자손테이블의외부키컬럼이 NULL 을허용하는컬럼일때지정할수있습니다. 05 DB 9.7 운영자가이드

16 08 0 S E C T 4 점검제한조건 테이블의컬럼에입력되는값을제한하는조건입니다. INSERT와 UPDATE 문을실행하면자동으로점검이실행되어조건에맞지않는값인경우에는오류를반환합니다. 점검제한조건을정의하는구문은다음과같습니다. Figure 084A 점검제한조건절 < 제한조건명 > 은데이터베이스내에서고유해야합니다. < 제한조건명 > 을명시하지않으면, 엔진이생성한이름으로관리하게됩니다. ALTER 또는 DROP문으로관리하려면, 사용자가제한조건명을명시하는것이편리합니다. 점검제한조건을표현하는방법은 SQL 문의 WHERE 조건절의표현식과동일합니다. 4 create table 문에서 CONSTRAINT ~ CHECK 라는옵션으로지정합니다. 점검제한조 건은한테이블에여러개정의할수있습니다. CONSTRAINT 옵션을지정하지않으면, 제한 조건명은 'SQLyymmddhhmmssxxx' 형식으로엔진이부여합니다. $ db "create table < 스키마명 >.< 테이블명 > (, < 점검제한조건절 >, )" alter table 문을이용하여점검제한조건을추가할수있습니다. $ db "alter table < 스키마명 >.< 테이블명 > ADD < 점검제한조건절 >" alter table 문을이용하여점검제한조건을제거할수있습니다. $ db "alter table < 스키마명 >.< 테이블명 > DROP CONSTRAINT < 제한조건명 >" CREATE TABLE kes.empl ( id smallint not null, name varchar(0) not null, sex char() sex 컬럼은 NULL값, mydept smallint 을허용할수있습니다., salary smallint, varchar(0) not null, hiredate date, CONSTRAINT empl_cc0 CHECK (sex in ('M','F')) ); 제한조건명은 empl_cc0 입니다. sex 컬럼에는 'M' 또는 'F' 만허용됩니다. ALTER TABLE kes.empl DROP CONSTRAINT empl_cc0 ; ALTER TABLE kes.empl ADD CONSTRAINT empl_cc0 CHECK (sex = 'M' or sex ='F') ; 표현식은 SQL 문의 WHERE 절과동일합니다. Figure 084B 외부키생성 UNIT 08 데이터베이스오브젝트 06

17 008 5 Identity 컬럼 INSERT 문이실행되면자동으로그값이증가되는컬럼입니다. 컬럼의데이터유형은숫자유형으로한테이블에한개만정의할수있습니다. CREATE TABLE 문에서 GENERATED 라는옵션으로지정할수있습니다. create table 문에서 GENERATED 라는옵션으로지정합니다. Figure 085A INDENTITY 컬럼정의 데이터베이스가비활성화되면, 사용되지않고캐쉬에남아있던자동생성값은유실됩니다. 주요한옵션은다음과같습니다. 옵션 GENERATED ALWAYS GENERATED BY DEFAULT 엔진에의해자동으로생성된값만허용됩니다. 사용자가명시적으로값을지정하여입력할수없습니다. 사용자가값을지정하지않는경우에만엔진이자동으로값을생성합니다. 값의고유성을보장할수없습니다. START WITH 양수또는음수의시작값을지정합니다. INCREMENT BY 양수또는음수의증가값을지정합니다. MAXVALUE 양수또는음수의최대값을지정합니다. CYCLE 최대값또는최소값에도달하면최소값또는최대값을생성합니다. CACHE 지정된개수의생성값을미리캐쉬에보관하여성능에유리합니다. CREATE TABLE inventory ( partno INT GENERATED BY DEFAULT AS IDENTITY (START WITH 00 INCREMENT BY ), description CHAR(0), PRIMARY KEY(partno) ); INSERT INTO inventory VALUES (DEFAULT,'A'); INSERT INTO inventory (description) VALUES ('B'); INSERT INTO inventory VALUES (0,'C'); INSERT INTO inventory VALUES (00,'D'); partno 컬럼을자동생성합니다. 성공 : (00,A) 성공 : (0,B) 실패 : 기본키중복성공 : (00,D) Figure 085B GENEARTED BY DEFAULT 로생성된 IDENTITY 컬럼 07 DB 9.7 운영자가이드

18 08 0 S E C T 6 NOT LOGGED INITIALLY 옵션 필요시에 ALTER TABLE 문을이용하여 NOT LOGGED 모드를활성화시키면, 데이터베이스로깅없이 SQL문을실행할수있으므로대량의데이터를입력하는경우에유리합니다. UOW가실패하면, 테이블은재생성되어야합니다. NOT LOGGED 모드로테이블에입력된데이터는롤포워드복구시에 rollforward db 명령어로복구될수없습니다. create table 문에서 NOT LOGGED INITIALLY 라는옵션으로지정해야합니다. $ db "create table < 테이블명 > (< 컬럼정의 >) NOT LOOGED INITIALLY" 'Not Logged Initially ' not enabled Log Buffer Bufferpool 'Not Logged Initially ' is enabled Bufferpool New Row Old Row log With Logging New Row table Flush to log when mincomit reached commit successful Insert Dirty pages written by cleaners to disk when softmax or chngpgs_thresh reached New Row table No Logging Flush to disk when commit successful Figure 086A NOT LOGGED 모드와 LOGGED 모드 create table 문을실행하고 commit 하면 'Not Logged Initially' 상태가해제됩니다. ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE 옵션을이용하면테이블의기존데이터를로깅하지않고삭제합니다. NOT LOGGED INITIALLY 옵션은기본적으로비활성화상태이므로테이블의변경내역은데이터베이스로그파일에기록됩니다. alter table 문으로 NOT LOGGED INITIALLY 옵션을활성화시키면, COMMIT 또는 ROLLBACK 문이실행될때까지해당테이블에대한데이터베이스로깅이중지됩니다. $ vi < 입력파일명 > ALTER TABLE < 테이블명 > ACTIVATE NOT LOGGED INITIALLY; INSERT INTO... SELECT FROM... ; COMMIT; $ db +c svtf < 입력파일명 > 4 NOT LOGGED 옵션은 UOW가성공적으로종료되면자동으로비활성화되고, 테이블에대한데이터베이스로깅은다시시작됩니다. UOW가실패하면해당테이블은재생성해야합니다. $ db drop table < 테이블명 > $ dblook d < 데이터베이스명 > -z < 스키마명 > -t < 테이블명 > -e o < 출력파일명 > db svtf < 출력파일명 > UNIT 08 데이터베이스오브젝트 08

19 008 7 뷰 사용자가원본테이블의특정행과특정컬럼들만액세스할수있도록하려면뷰를생성합니다. 한개이상의원본테이블의데이터를조인하여뷰를생성하는것도가능합니다. 기본테이블에대해최소한 SELECT 특권이있어야합니다.. 원본테이블이제거되면뷰는작동불능상태가되어서액세스를할수없습니다. 원본테이블이다시생성되어도작동불능상태의뷰는액세스할수없으므로, 재생성이필요합니다. create view 문으로생성하며, SELECT 문으로액세스가허용되는데이터를제한합니다. $ db "create view kes.t_v as select * from kes.t where c > 00 " WITH CHECK OPTION 을이용하면, 뷰의정의에맞지않는데이터를추가, 삭제, 변경할수 없습니다. INSERT 또는 UPDATE 를실행할때뷰의정의에맞는지를확인합니다. CREATE VIEW kes.empl_v AS SELECT * FROM kes.empl WHERE salary >= 00 WITH CHECK OPTION; salary 컬럼의값이 00 이상인데이터만액세스를허용합니다. INSERT INTO kes.empl_v VALUES (,'KES','F',,00,'kes@kr.ibm.com',' '); INSERT INTO kes.empl_v VALUES (,'XXX','F',,00,'xxx@kr.ibm.com',' '); salary 컬럼의값으로 00 을지정하였으므로 INSERT 문은실패합니다. Figure 087A WITH CHECK OPTION 옵션이있는뷰 VIEW 를통한액세스가가능합니다. $ db "insert into kes.t_v values (,00)" $ db "select * from kes.t_v" 4 drop view 문을이용하여제거합니다. $ db drop view kes.t_v 5 list tables 명령어에서뷰의목록을확인할수있습니다. $ db list tables $ db list tables for schema < 스키마명 > $ db list tables for system $ db list tables for all 6 뷰에대한정보는 SYSCAT.VIEWS, SYSCAT.VIEWDEP, SYSCAT.TABLES 뷰를이용해서확인합니다. SYSCAT.TABLES 뷰에서 TYPE 컬럼의값이 'V' 입니다. $ db "select * from syscat.tables" 7 dblook 명령어를이용하여뷰에대한 DDL 을추출합니다. $ dblook d <DB 명 > e z < 스키마명 > v < 뷰명 > -o < 출력파일명 > 09 DB 9.7 운영자가이드

20 08 0 S E C T 8 CREATE VIEW 문 뷰룰생성하는 SQL 문입니다. SELECT 문을이용하여뷰를통하여액세스할수있는데이터의범위를결정하며, WITH CHECK OPTION 옵션으로뷰의정의에맞지않는데이터에대한액세스를허용하지않게합니다. SYSADM, DBADM 권한또는테이블에대한 SEELCT 특권이필요할수있습니다. create view 문의형식은다음과같습니다. 새로운스키마명을이용하여테이블명을지정하려면, 데이터베이스에대한 IMPLICIT_SCHEMA 특권이필요합니다. 기존의스키마명을이용하여테이블명을지정하려면, 스키마에대한 CREATIN 특권이필요합니다. Figure 088A CREATE VIEW 문 옵션에대한은다음과같습니다. 모드 < 뷰명 > 임의의고유한이름으로지정합니다. < 컬럼명 > 지정하지않으면베이스테이블의컬럼명또는 SELECT 문의결과컬럼명이사용됩니다. WITH < 공통테이블표현식 > SELECT 문에서사용될공통테이블을정의합니다. AS <select 문 > 뷰의내용이되는 SELECT 문을지정합니다. WITH CASCADE CHECK OPTION WITH LOCAL CHECK OPTION 뷰의정의에맞지않는데이터를처리하지않습니다. 해당뷰를이용한다른뷰를생성했를때, 이특성을전달합니다. 뷰의정의에맞지않는데이터를처리하지않습니다. 해당뷰를이용한다른뷰를생성했를때, 이특성을전달하지않습니다. UNIT 08 데이터베이스오브젝트 0

21 008 9 MQT 집계함수를이용한 summary table 을미리정의해두면, 집계함수를이용한복잡한쿼리의실행시간을단축시킬수있습니다. CREATE TABLE 문으로생성하고, REFRESH TABLE 문으로관리합니다. SUMMARY 테이블이라고도합니다. immediate 옵션을사용해도최초에한번은 refresh table 명령어를실행해야합니다. Meterialized Query Table 의약자입니다. create table 문에서 REFRESH 옵션으로 생성합니다. < 컬럼정의 > refresh deferred 옵션을사용하면, refresh table 문을실행하기전까지는완벽한데이터일관성을보장하지않습니다. Figure 089A CREATE TABLE 문의 MQT 생성옵션 사용하기전에 REFRESH TABLE 문을이용하여최초의결과집합을생성해야합니다. Figure 089B REFRESH TABLE 문 4 SELECT문에서직접 MQT를이용할수있습니다. $ db "select * from <MQT명 >" 베이스테이블을대상으로하는 SELECT문에서명시한조건문이 MQT의정의부분과일치하면, MQT를이용한 SELECT문으로자동으로변환됩니다. REFRESH TABLE staff_summary; SELECT 문이자동으로 MQT 를사용할수있도록변환됩니다. AVG 는 SUM/COUNT 로변형이가능합니다. Figure 089C MQT 를이용하도록변환되는쿼리 5 drop table 문을이용하여제거합니다. $ db drop table <MQT 명 > DB 9.7 운영자가이드

22 08 0 S E C T 0 인덱스 효율적인데이터액세스를위해서한테이블에한개이상의인덱스를생성할수있습니다. CREATE INDEX 문과 DROP INDEX 문으로관리합니다. 고유인덱스는 NULL 값을허용하며, NULL 값을가진행은한개만허용됩니다. 테이블에기본키또는고유키를정의하면해당컬럼에대한자동으로 UNIQUE 인덱스가생성됩니다. CLUSTER 옵션을가진인덱스는한테이블에한개만가능하므로, 가장중요한인덱스를 CLUSTER 인덱스로정의합니다. INCLUDE 옵션은 UNIQUE 인덱스에서만사용가능합니다. create index 문으로컬럼명과컬럼별정렬순서를지정합니다. 기본적으로인덱스는중복된 값을허용하므로중복된행을허용하지않는인덱스를생성하려면 UNIQUE 옵션을이용합니다. $ db "create index < 스키마명 >.< 인덱스명 > on < 테이블명 > (< 컬럼명 >)" $ db "create UNIQUE index < 인덱스명 > on < 테이블명 > (< 컬럼명 >)" CLUSTER 옵션을이용하면, 해당인덱스의정렬순서를기준으로테이블의데이터가물리적으 로배치되므로효율적인액세스가가능합니다. $ db "create unique index < 인덱스명 > on < 테이블명 >(< 컬럼명 >) CLUSTER" Figure 080A High Cluster Ratio Index Table 인덱스의클러스터비율 Table Low Cluster Ratio Index INCLUDE 옵션으로추가된컬럼들은인덱스의데이터페이지에 RID 와함께저장되어, 인덱 스전용액세스를가능하게합니다. 반드시 UNIQUE 옵션을함께지정해야합니다. 4 $ db "create UNIQUE index < 인덱스명 > on < 테이블명 > (< 컬럼명 >) INCLUDE (< 컬럼명 >, < 컬럼명 >, )" ALLOW REVERSE SCANS 옵션으로생성된인덱스는양방향액세스를허용합니다. 5 $ db "create unique index < 인덱스명 > on < 테이블명 > (< 컬럼명 >) cluster ALLOW REVERS SCANS" drop index 문으로제거하며, 테이블이제거되면자동으로제거됩니다. $ db "drop index < 스키마명 >.< 인덱스명 >" 6 인덱스에대한정보는 SYSCAT.INDEXES 뷰또는 describe indexes 명령어를이용하여확인합니다. $ db "select * from syscat.indexes" $ db describe indexes for table < 스키마명 >.< 테이블명 > show detail 7 dblook 명령어를이용하여테이블과함께인덱스에대한 DDL 을추출합니다. $ dblook d <DB 명 > e z < 스키마명 > v < 테이블명 > -o < 출력파일명 > UNIT 08 데이터베이스오브젝트

23 008 CREATE INDEX 문 테이블에인덱스를생성하는 SQL문입니다. UNIQUE, CLUSTER, INCLUDE, ALLOW REVERSE SCANS 등의옵션을가진인덱스를생성할수있습니다. SYSADM, DBADM 권한또는테이블에대한 CONTROL, INDEX 특권이필요할수있습니다. create index 문의형식은다음과같습니다. 새로운스키마명을이용하여인덱스명을지정하려면, 데이터베이스에대한 IMPLICIT_SCHEMA 특권이필요합니다. 기존의스키마명을이용하여인덱스명을지정하려면, 스키마에대한 CREATIN 특권이필요합니다. Figure 08A CREATE INDEX 문 INCLUDE 옵션에서지정한컬럼은인덱스를구성하는컬럼이아니므로, 조건식에서이컬럼을이용하여검색을요청할때, index scan 이선택되지않습니다. 옵션에대한은다음과같습니다. 모드 UNIQUE 고유인덱스로생성합니다. < 인덱스명 > 임의의고유한이름으로지정합니다. ON < 테이블명 > 인덱스가생성될테이블명을지정합니다. < 컬럼명 > 인덱스를구성하는컬럼명을지정합니다. 한개이상인경우에는,( 컴마 ) 로구분합니다. ASC / DESC INCLUDE (< 컬럼명 >) 컬럼별정렬순서를오름차순 (ASC) 또는내림차순 (DESC) 로지정합니다. 기본값은 ASC 입니다. 인덱스의리프페이지에 RID 와함께저장되는컬럼을지정합니다. 한개이상인경우에는,( 컴마 ) 로구분합니다. CLUSTER 클러스터인덱스로지정합니다. PCTFREE MINPCTUSED 인덱스의각페이지의여유공간비율로백분율로지정합니다. 기본값은 0 입니다. 인덱스의리프페이지의최소사용공간비율로백분율로지정합니다. 50 이하로지정하는것이성능에유리합니다. ALLOW REVERSE SCANS 역방향액세스를허용합니다. DB 9.7 운영자가이드

24 08 0 S E C T 시퀀스 데이터베이스치원에서제공되는자동생성일련번호를시퀀스라고합니다. CREATE SEQUENCE 문, ALTER SEQUENCE 문, DROP SEQUENCE 문으로관리합니다. 테이블의 identity 컬럼과기능상동일합니다. identity 컬럼은해당테이블에서만유효하며, 시퀀스는데이터베이스수준에서운영됩니다. create sequence 문의형식은다음과같습니다. 데이터베이스가비활성화되면, 사용되지않고캐쉬에남아있던자동생성값은유실됩니다. Figure 08A 주요한옵션은다음과같습니다. 옵션 < 시퀀스명 > 임의의고유한이름으로지정합니다. AS < 데이터유형 > CREATE SEQUENCE 문 SAMLLINT, INT, BIGINT, DECIMAL 중에서원하는데이터유형을선택합니다. START WITH 양수또는음수의시작값을지정합니다. INCREMENT BY 양수또는음수의증가값을지정합니다. MINVALUE 양수또는음수의최소값을지정합니다. MAXVALUE 양수또는음수의최대값을지정합니다. CYCLE 최대값또는최소값에도달하면최소값또는최대값을생성합니다. CACHE 지정된개수의생성값을미리캐쉬에보관하여성능에유리합니다. drop sequence dept_seq restrict; create sequence dept_seq start with 500 increment by cache 0 no cycle no maxvalue; select prevval for dept_seq from sysibm.sysdummy; nextval 을호출할때마다증가합니다. 최근의 nextval 호출로반환된값이 prevval 입니다. insert into dept values (nextval for dept_seq, Sales ); insert into dept values (nextval for dept_seq, Marketting ); select * from dept; C C Sales 50 Marketting Figure 08B PREVVAL 과 NEXTVAL UNIT 08 데이터베이스오브젝트 4

25 008 트리거 특정테이블에 INSERT, UPDATE, DELETE 문이실행될때자동으로실행되는일련의작업들을정의합니다. 트리거의이벤트유형은 BEFORE, AFTER, INSTEAD OF가있으며, CREATE TRIGGER 문과 DROP TRIGGER 문으로관리합니다. 트리거가구현하는비즈니스규칙은데이터베이스오브젝트에대한일련의변경작업또는예외처리로직입니다. 트리거는특정조건을만족하는경우에만 SQL문의요청을허용하기위한용도로사용되기도합니다. 한데이터베이스의특정테이블에대한변경작업이다른테이블에영향을미칠수있습니다. 응용프로그램의로직에서이러한비즈니스규칙을구현하면, 비즈니스규칙이변경될때마다응용프로그램의로직을수정해야합니다. 트리거는특정테이블또는뷰에대한변경작업이요청될때마다자동으로실행되어야하는일련의작업들을데이터베이스수준에서정의합니다. 비즈니스규칙이변경되되어도데이터베이스에존재하는트리거의정의만변경하면되므로, 모든응용프로그램은추가적인로직의변경없이새로운비즈니스규칙을적용할수있습니다. Business Rules: INSERT, UPDATE, DELETE 데이터베이스 사용자프로그램 ENFORCEMENT APPLICATION DATABASE Figure 08A 비즈니스규칙 트리거에정의된비즈니스로직을실행하는시점에의해 가지유형으로분류됩니다. 유형 AFTER 트리거 BEFORE 트리거 특정테이블에대해요청된 INSERT, UPDATE, DELETE 문을먼저실행하고, 정의된일련의작업들을실행합니다. 정의된일련의작업들을먼저실행하고, 특정테이블에대해요청된 INSERT, UPDATE, DELETE 문을실행합니다. 트리거는발생시키는 SQL 문의유형에의해 가지유형으로분류됩니다. 유형 INSERT 트리거특정테이블에대해 INSERT 문이요청된경우에실행됩니다. UPDATE 트리거 특정테이블에대해 UPDATE 문이요청된경우에실행됩니다. 특정컬럼을지정할수도있습니다. DELETE 트리거특정테이블에대해 DELETE 문이요청된경우에실행됩니다. 4 트리거의기준이되는대상은 가지로분류됩니다. 유형 테이블트리거 뷰트리거 INSTEAD OF 트리거 특정테이블에 INSERT, UPDATE, DELETE 문이요청될때요청된 SQL 문과정의된일련의작업들을실행합니다. 특정뷰에 INSERT, UPDATE, DELETE 문을요청하면, 요청된 SQL 문대신에정의된일련의작업들을실행합니다. 5 DB 9.7 운영자가이드

26 08 0 S E C T 4 CREATE TRIGGER 문 트리거를생성하는 SQL문입니다. 단일 SQL문또는 SQL/PL을이용하여트리거가실행할로직을구현합니다. INSERT, UPDATE, DELETE 트리거는개별적으로생성하고, 트리거의정의에변경이있을때는재생성합니다. SYSADM, DBADM 권한또는테이블에대한 CONTROL 특권이필요할수있습니다 create trigger 문의형식은다음과같습니다. IMPLICIT_SCHEMA 데이터베이스특권, 스키마에대한 ALTERIN, CREATEIN 특권이필요합니다. BEFORE, AFTER 트리거를정의할때는테이블에대한 ALTER 특권이필요합니다. INSTEAD OF 트리거를정의할때는뷰에대한 CONTROL 특권이필요합니다. TRANSITION 변수또는테이블을사용할때는테이블에대한 SELECT 특권이필요합니다. Figure 084A CREATE TRIGGER 문 < 트리거본문 > transition 행또는테이블은트리거의비즈니스로직에서이용할수있습니다. DELETE, UPDATE 트리거에서사용됩니다. UPDATE 옵션은모든컬럼의변경에적용됩니다. OF 옵션은지정한컬럼의 UPDATE 시에만적용됩니다. 트리거본문에정의되는비즈니스로직은기본적으로단일 SQL문입니다. 여러개의 SQL문과논리적인로직을구현하려면 BEGIN~END 블록을이용하여SQL/PL을이용합니다. 옵션에대한은다음과같습니다. 모드 < 트리거명 > 임의의고유한이름으로지정합니다. NO CASCADE BEFORE BEFORE 트리거를생성합니다. AFTER AFTER 트리거를생성합니다. INSTEAD OF INSTEAD OF 트리거를생성합니다. INSERT INSERT 트리거를생성합니다. DELETE DELETE 트리거를생성합니다. UPDATE OF < 컬럼명 > UPDATE 트리거를생성합니다. REFERENCING transition 테이블또는행의이름을지정합니다. OLD AS <id> OLD_TABLE AS <id> NEW AS <id> NEW_TABLE AS <id> 요청된 SQL 문이실행되기전의행또는테이블의값을보관하고있는 transition 행또는테이블 id 입니다. 요청된 SQL 문이실행된후의행또는테이블의값을보관하고있는 transition 행또는테이블 id 입니다. FOR EACH ROW 조건에맞는모든행에개별적으로트리거가적용됩니다. FOR EACH STATEMENT 조건에맞는행의개수에상관없이한번만실행됩니다. WHEN < 조건식 > < 조건식 > 을만족하는경우에만본문의로직을실행합니다. < 트리거본문 > SQL/PL 을이용하여로직을작성합니다. UNIT 08 데이터베이스오브젝트 6

27 008 5 BEFORE 트리거 특정테이블에대한 INSERT, UPDATE, DELETE 문을실행하기전에먼저정의된일련의작업들을실행합니다. CREATE TRIGGER 문에서 NO CASCADE BEFORE 옵션을사용하여생성합니다. INSERT, UPDATE, DELETE 문에대한트리거를한개이상생성할수있습니다. create trigger 문에서 NO CASCADE BEFORE 옵션으로생성합니다. CREATE TABLE kes.class ( number smallint not null, name varchar(0), length smallint ); CREATE TABLE kes.test ( id int not null, number smallint, test_date date, start_time time, seat smallint, score smallint ); INSERT INTO kes.class VALUES (,'DB',60); CREATE TRIGGER pre9 NO CASCADE BEFORE INSERT ON kes.test REFERENCING NEW AS N FOR EACH ROW 실패 : MODE DBSQL SQL048N 응용프로그램이진단텍스트 "09:00 이전에는죄석을예 WHEN (N.START_TIME < '09:00:00') 약할수없습니다!" 과 ( 와 ) 함께오류를표시했습니다. SQLSTATE=7000 SIGNAL SQLSTATE '7000' ('09:00 이전에는죄석을예약할수없습니다!'); INSERT INTO kes.test VALUES (,,' ','08:0:00',,NULL); CREATE TRIGGER aft5 NO CASCADE BEFORE INSERT ON kes.test REFERENCING NEW AS N FOR EACH ROW MODE DBSQL WHEN (N.START_TIME + (SELECT SMALLINT(LENGTH) FROM test 실패 : SQL048N 응용프로그램이진단텍스트 "6:00 이후에는좌석을예약할수없습니다!" 과 ( 와 ) 함께오류를표시했습니다. SQLSTATE=70004 WHERE NUMBER = N.NUMBER) MINUTES > '7:00:00') SIGNAL SQLSTATE '70004' ('6:00 이후에는좌석을예약할수없습니다!'); INSERT INTO kes.test VALUES (,,' ','6:0:00',,NULL); INSERT INTO kes.test VALUES (,,' ','0:00:00',,NULL); SELECT FROM id, number, start_time kes.test; Figure 085A BEFORE 트리거 7 DB 9.7 운영자가이드

28 08 0 S E C T 6 AFTER 트리거 특정테이블에대해요청된 INSERT, UPDATE, DELETE 문을먼저실행하고, 정의된비즈니스로직을실행합니다. 최대 6 레벨까지다른트리거를연쇄적으로수행할수있습니다. CREATE TRIGGER 문에서 AFTER 옵션을사용하여생성합니다. INSERT, UPDATE, DELETE 문에대한트리거를한개이상생성할수있습니다. AFTER 트리거를생성하는예는다음과같습니다. CREATE TABLE kes.empl ( id smallint not null, name varchar(0) not null, sex char(), mydept smallint, salary smallint, varchar(0) not null, hiredate date ); INSERT INTO kes.empl VALUES (,'KES','F',,00,'kes@kr.ibm.com','99-0-0'), (,'KHY','F',,50,'khy@kr.ibm.com','99-0-7'), (,'JHS','F',,00,'jhs@kr.ibm.com',' '), (4,'JJY','M',,80,'jjy@kr.ibm.com',' '); CREATE TABLE kes.log ( id smallint, osalary smallint, nsalary smallint, ts timestamp); CREATE TRIGGER kes.empl_trig0 AFTER UPDATE OF salary ON kes.empl REFERENCING OLD AS o NEW AS n FOR EACH ROW MODE DBSQL WHEN ( n.salary > o.salary *. ) INSERT INTO kes.log VALUES(o.id,o.salary,n.salary,current timestamp ); UPDATE kes.empl SET salary = salary + 0 WHERE hiredate < ' ' ; SELECT id, salary, hiredate FROM kes.empl ORDER BY id ; SELECT id, osalary, nsalary FROM kes.log; 변경된 salary 값이 0% 이상인경우에만 kes.log 에추가합니다. Figure 086A AFTER 트리거 UNIT 08 데이터베이스오브젝트 8

29 008 7 INSTEAD OF 트리거 뷰를대상으로정의된트리거로테이블에대한변경 SQL문을뷰를통해서관리하거나, 뷰에직접허용되지않는변경 SQL문을트리거로직으로대신실행할때도사용됩니다. CREATE TRIGGER 문에서 INSTEAD OF 옵션을사용하여생성합니다. 특정뷰에대한 INSERT, UPDATE, DELETE 문을처리하는트리거는한개씩만생성할수있습니다. FOR EACH STATEMENT 옵션은사용할수없습니다. create trigger 문에서 INSTEAD OF 옵션으로생성합니다. CREATE TABLE kes.empl ( id smallint not null, name varchar(0) not null, sex char(), mydept smallint, salary smallint, varchar(0) not null, hiredate date ); CREATE VIEW kes.empl_v AS SELECT id, name, sex FROM kes.empl; CREATE TRIGGER kes.empl_v_insert INSTEAD OF INSERT ON kes.empl_v REFERENCING NEW AS N FOR EACH ROW MODE DBSQL INSERT INTO kes.empl VALUES ( n.id, n.name, CASE RTRIM(LTRIM(UPPER(n.sex))) WHEN 'M' THEN 'M' WHEN 'F' THEN 'F' ELSE NULL END, NULL, NULL, LOWER(n.name) '@kr.ibm.com', CURRENT DATE days); INSERT INTO kes.empl_v VALUES (,'KES',''); INSERT INTO kes.empl_v VALUES (,'KHY','f'); INSERT INTO kes.empl_v VALUES (,'JHS','F'); INSERT INTO kes.empl_v VALUES (4,'JJY','m'); INSERT INTO kes.empl_v VALUES (5,'XXX','X'); SELECT id, substr(name,,) name, sex. FROM kes.empl_v ORDER BY id; sex 컬럼의값이 'M', 'm', 'F', 'f' 인경우에대문자로변환하여입력합니다. '' 값인경우에는 NULL 값으로입력합니다. 컬럼과 hiredate 컬럼에는 name 컬럼의값과시스템날짜를이용한값이입력됩니다. Figure 087A INSTEAD OF 트리거 9 DB 9.7 운영자가이드

30 08 0 S E C T 8 사용자정의데이터유형 사용자가추가적으로정의할수있는데이터유형입니다. 일반적으로도량형과관련된데이터를저장할때이용합니다. CREATE DISTINCT TYPE 문과 DROP DISTINCT TYPE 문으로관리합니다. 단위가서로다른의미를가지는두개의값을단순히값으로만비교하는것은잘못된결과를만 들게됩니다. 어? 난지금 90 이라구요. 뭐가문제죠? 속도위반입니다. 60 을넘으셨군요. 이거받으세요.--;; SPEED 00 LIMIT SPEED 65 LIMIT CANADA USA Figure 088A UDT 의필요성 with comparisos 옵션은새로생성한 UDT 형으로형변환을할수있는형변환 (CAST) 함수를기본적으로제공합니다. 단위가다른두값을직접비교하는것을방지하기위해사용자가 create distinct type 문으로새로운데이터유형을생성할수있습니다. 유형이다른두데이터는서로직접비교될수없습니다. CREATE DISTINCT TYPE dollar AS INTEGER WITH COMPARISONS ; CREATE DISTINCT TYPE won AS INTEGER WITH COMPARISONS ; CREATE TABLE kes.person VALUES ( f_name VARCHAR (0), money_d dollar NOT NULL, money_w won NOT NULL ) ; INSERT INTO kes.person VALUES (KES', 80, 70),('JHS',80,00); SELECT f_name FROM kes.person WHERE money_d < money_w; money_d 와 money_w 컬럼을다른유형이므로직접비교가불가능합니다. money_w 컬럼을 dollar 유형으로형변환하였으므로비교가가능합니다. SELECT f_name FROM kes.person WHERE money_d < dollar(money_w) OR won(money_d) < money_w; money_d 컬럼을 won 유형으로형변환하였으므로비교가가능합니다. Figure 088B 다른데이터유형간의비교실패 UNIT 08 데이터베이스오브젝트 0

31 008 9 사용자정의함수 사용자가직접구현하여엔진에추가적으로정의한함수입니다. 사용자정의함수는기존의내장 SQL 함수와동일한방법으로 SQL문에서사용됩니다. CREATE FUNCTION문과 DROP FUNCTION 문으로관리합니다. DB 에서사용하는함수는생성주체에따라 가지유형으로구분됩니다. 유형 빌트인엔진에의해기본적으로제공되는함수입니다. 내장함수라고합니다. 사용자정의사용자가새롭게작성하여엔진에추가한함수입니다. 적용되는대상과반환하는값의유형에따라함수는 4 가지유형으로구분됩니다. 기존의함수에서 UDT 유형으로정의된컬럼을사용될수없습니다. 기존의함수를소스함수로하는새로운 UDF가필요합니다. Java 언어를이용하면, JAR 형태로 UDF를관리할수있습니다. 사용자정의함수를작성한언어에따라라이브러리를생성하는방법이다릅니다. SQL/PL로작성하는경우에는별도의생성과정없이 create function 문으로생성합니다. 4 5 유형 스칼라조건에맞는모든행에대해서각각함수를실행하여결과를반환합니다. 문자함수, 수학함수, 날짜함수등이있습니다. 컬럼 조건에맞는행들을지정된값에의해그룹으로분류하고, 각그룹별로함수를적용시킨결과값을반환합니다. 집계함수가해당됩니다. 행조건에맞는결과행을 Row 형태로반환하는함수입니다. 테이블 조건에맞는결과집합을 table 구조로반환합니다. SELECT 문의 FROM 절에서사용되며, 일반테이블과동일한방법으로액세스할수있습니다. 스냅샷함수가해당됩니다. 사용자정의함수의유형은작성하는언어와반환하는결과의유형에따라 7 가지로분류됩니다. 유형 외부스칼라 외부테이블 C, Java 등의프로그래밍언어로작성된라이브러리를이용하며, 스칼라값을반환합니다. C, Java 등의프로그래밍언어로작성된라이브러리를이용하며, 테이블을반환합니다. OLE DB 외부테이블 OLE DB 공급자로부터데이터를액세스하기위한함수입니다. 소스함수 기존의내장, 외부, SQL, 소스함수를이용하여작성된함수입니다. SQL 스칼라 SQL/PL 로작성되며, 스칼라값을반환합니다. SQL 행 SQL/PL 로작성되며, 행을반환합니다. SQL 테이블 SQL/PL 로작성되며, 테이블을반환합니다. 사용자정의함수는 SQL/PL, C, Java, OLE 등을이용하여생성합니다. 사용자정의함수에대한정보는 SYSCAT.ROUTINES 뷰를이용해서확인합니다. $ db "select * from syscat.routines" 6 dblook 명령어로 SQL 사용자정의함수에대한 DDL 문을추출할수있습니다. $ dblook d <DB 명 > e -o < 출력파일명 > DB 9.7 운영자가이드

32 08 0 S E C T 0 CREATE FUNCTION 문 SQL/PL을이용하여작성한사용자정의함수의라이브러리를생성하고시그너처를등록하는 SQL문입니다. C, Java, OLE 등으로적성된사용자정의함수는시그너처만등록되며, 개별적인방법으로함수의라이브러리를생성해야합니다. SYSADM, DBADM 권한또는테이블에대한 CONTROL, SELECT 특권이필요할수있습니다. create function 문의형식은다음과같습니다. 새로운스키마명을이용하여인덱스명을지정하려면, 데이터베이스에대한 IMPLICIT_SCHEMA 특권이필요합니다. 기존의스키마명을이용하여인덱스명을지정하려면, 스키마에대한 CREATIN 특권이필요합니다. 함수의시그너처가다르면동일한이름으로함수를생성할수있습니다. 동일한이름으로함수를오버로딩할때는 SPECIFIC 옵션으로고유한함수명을지정하는것이권장됩니다. 사용자정의함수의 <SPECIFIC명 > 은 < 함수명 > 과동일하게지정할수있습니다. 옵션을지정하지않으면, SQLyymmddhhmmssxxx 형식으로엔진이자동생성합니다. SPECIFIC 옵션은 drop 문또는다른함수에서참조되는이름으로만사용됩니다. SQL문에서실제로함수를사용할때는 < 스키마명 >.< 함수명 > 을사용해야합니다. Figure 080A SQL 사용자정의함수를위한 CREATE FUNCTION 문옵션에대한은다음과같습니다. 모드 < 함수명 > 함수의이름을지정합니다. < 인수이름 > < 데이터유형 > 입력인수의이름과데이터유형을지정합니다. RETURNS < 데이터유형 > 반환되는값의데이터유형입니다. SPECIFIC < 고유함수명 > 임의의고유한이름으로지정합니다. LANGUAGE SQL SQL/PL을이용하여로직을작성합니다. DETERMINISTIC 동일한입력인수에대해서항상동일한값을반환합니다. CONTAINS SQL 데이터의조회, 변경을위한 SQL문을포함하지않습니다. READS SQL DATA 데이터를변경하는 SQL문을포함할수없습니다. MODIFIES SQL DATA 지원되는모든 SQL문을사용합니다. CALLED ON NULL INPUT 입력인수의값이 NULL인경우에도호출됩니다. <SQL 함수본문 > 단일 SQL문또는 SQL/PL 블록을이용하여구현합니다. UNIT 08 데이터베이스오브젝트

33 008 SQL 사용자정의함수 단일 SQL문또는 SQL/PL을이용하여작성한사용자정의함수를 SQL 사용자정의함수라고합니다. CREATE FUNCTION 문으로함수의라이브러리가생성되고, 함수의시그너처도등록됩니다. 내장함수와동일한방법으로 SQL문에서사용합니다. 단일한 SQL문으로표현되지않는로직을구현하려면, SQL/PL 의 BEGIN ~ END 블록을이용합니다. SQL/PL에서 ; ( 세미콜론 ) 은문장의구분자로사용됩니다. create function 또는! 등의문자를사용합니다. SQL 사용자정의함수를위한로직을작성하여임의의 < 파일명 > 으로저장합니다. $ cat < 파일명 > CREATE FUNCTION todate (x varchar(8)) RETURNS date SPECIFIC TODATE0 LANGUAGE SQL CONTAINS SQL NO EXTERNAL ACTION DETERMINISTIC RETURN date(substr(x,,4) '-' SUBSTR(X,5,) '-' CREATE FUNCTION tan (X DOUBLE) RETURNS DOUBLE LANGUAGE SQL CONTAINS SQL NO EXTERNAL ACTION DETERMINISTIC RETURN CREATE FUNCTION kes.percent(number int, rate int) RETURNS decimal(6,) F: BEGIN ATOMIC RETURN (number * rate) / 00; END@ SQL 사용자정의함수는엔진에내장된특별한컴파일러를이용하여라이브러리를작성합니다. 별도의 C 컴파일러는필요하지않습니다. UDF를참조하려면 EXECUTE 권한이필요합니다. UDF명은대소문자를구분하지않습니다. create function 문을이용하여 SQL 사용자정의함수를생성하고, 등록합니다. $ db connect to < 데이터베이스명 > $ db -td@ -svf < 파일명 > SQL 문에서기존의내장함수와동일한방법으로사용자정의함수를참조합니다. $ db x " values(todate('00400'))" $ db -x "SELECT id, salary, kes.percent(salary,5) FROM kes.empl" DB 9.7 운영자가이드

34 08 0 S E C T 저장프로시저 서버에저장된프로그램로직입니다. 클라이언트에서 CALL 문으로서버의저장프로시저를호출하면, 서버에서로직이실행되어결과만클라이언트로반환됩니다. CREATE PROCEDURE 문과 DROP PROCEDURE 문으로관리합니다. 저장프로시저는클라이언트머신의응용프로그램에서실행해야하는로직을서버의데이터베이 스에저장하여서버머신에서직접실행함으로써클라언트와서버간의데이터전송량을줄이고, 성능을향상시킵니다. Figure 08A 저장프로시저의장점공용로직을저장프로시저로만들어서사용하면관리가용이합니다. 클라이언트응용프로그램의개별적인코딩으로인한오류와소스를반복적으로작성해야하는부담을줄일수있습니다. 프로시저의로직이변경되면, 서버의저장프로시저만재생성하면됩니다. 저장프로시저는실행시에서버의자원을사용하여실행됩니다. 일반적으로클라이언트머신보 다서버머신의사양이좋으므로, 동일한로직을실행할때실행시간이단축될수있습니다. 4 서버머신의 OS 에의존적인로직의구현이가능합니다. 클라이언트가 Windows 이고, 서버 가 UNIX 인경우에 UNIX 에서만지원되는기능을프로시저의로직에포함시킬수있습니다. PL/SQL은 DB 9.7이후지원되는프로시저언어입니다. 저장프로시저를작성한언어에따라라이브러리를생성하는방법이다릅니다. SQL/PL 또는 PL/SQL로작성하는경우에는별도의생성과정없이 create proceudre 문으로생성합니다 저장프로시저의유형은작성하는언어에의해 가지로분류됩니다. 유형 외부소스 저장프로시저는 SQL/PL, PL/SQL, ESQL, C, Java 등의언어를이용하여생성합니다. 저장프로시저에대한정보는 SYSCAT.ROUTINES 뷰를이용해서확인합니다. $ db "select * from syscat.routines" dblook 명령어로 SQL 저장프로시저에대한 DDL 문을추출할수있습니다. $ dblook d <DB 명 > e -o < 출력파일명 > ESQL, C, Java 등의프로그래밍언어로작성된라이브러리를이용하며, 스칼라값또는결과집합을반환합니다. SQL SQL/PL 또는 PL/SQL 로작성되며, 스칼라값또는결과집합을반환합니다. UNIT 08 데이터베이스오브젝트 4

35 008 CREATE PROCEDURE 문 SQL/PL 저장프로시저의라이브러리를생성하고시그너처를등록하는 SQL문입니다. ESQL, C, Java 등으로적성된저장프로시저는시그너처만등록되며, 개별적인방법으로저장프로시저의라이브러리를생성해야합니다. SYSADM, DBADM 권한또는데이터베이스에대한 BINDADD 특권이필요할수있습니다. create procedure 문의형식은다음과같습니다. Figure 08A SQL/PL 저장프로시저를위한 CREATE PROCEDURE 문 사용자정의함수의 <SPECIFIC명 > 은 < 함수명 > 과동일하게지정할수있습니다. 옵션을지정하지않으면, SQLyymmddhhmmssxxx 형식으로엔진이자동생성합니다. 옵션에대한은다음과같습니다. 모드 < 프로시저명 > 프로시저의이름을지정합니다. < 인수입출력유형 > 인수의유형은 IN, OUT, INOUT 으로지정합니다. < 인수이름 > 인수의이름을지정합니다. < 데이터유형 > 인수의데이터유형을지정합니다. SPECIFIC 임의의고유한이름으로지정합니다. DYNAMIC RESULT SETS 반환할결과집합의개수를지정합니다. CONTAINS SQL 데이터의조회, 변경을위한 SQL 문을포함하지않습니다. READS SQL DATA 데이터를변경하는 SQL 문을포함할수없습니다. MODIFIES SQL DATA 지원되는모든 SQL 문을사용합니다. DETERMINISTIC 동일한입력인수에대해서항상동일한값을반환합니다. CALLED ON NULL INPUT 입력인수의값이 NULL 인경우에도호출됩니다. LANGUAGE SQL SQL/PL 로작성한 SP 입니다. NO EXTERNAL ACTION 데이터베이스시스템이관리하지않는외부오브젝트에대한상태를변경시키는로직의포함여부를지정합니다. <SQL 함수본문 > SQL/PL 블록을이용하여구현합니다. 5 DB 9.7 운영자가이드

36 08 0 S E C T 4 SQL/PL 프로시저 SQL/PL 언어를이용하여저장프로시저를생성합니다. CALL 문을이용하여호출합니다. SQL/PL에서 ; ( 세미콜론 ) 은문장의구분자로사용됩니다. create function 또는! 등의문자를사용합니다. SQL 저장프로시저를위한로직을작성하여임의의 < 파일명 > 으로저장합니다. $ cat < 파일명 > CREATE PROCEDURE myproc (IN deptnumber CHAR(), OUT mediansalary DOUBLE) LANGUAGE SQL BEGIN DECLARE SQLCODE INTEGER; DECLARE SQLSTATE CHAR(5); DECLARE v_numrecords INT DEFAULT ; DECLARE v_counter INT DEFAULT 0; DECLARE c CURSOR FOR SELECT CAST(salary AS DOUBLE) FROM employee WHERE workdept = deptnumber ORDER BY salary; DECLARE EXIT HANDLER FOR NOT FOUND SET mediansalary = 6666; SET mediansalary = 0; SELECT COUNT(*) INTO v_numrecords FROM employee WHERE workdept = deptnumber; OPEN c; WHILE v_counter < (v_numrecords / + ) DO FETCH c INTO mediansalary; SET v_counter = v_counter + ; END WHILE; CLOSE c; create procedure 문을이용하여 SQL 저장프로시저를생성하고, 등록합니다. $ db connect to < 데이터베이스명 > $ db -td@ -svf < 파일명 > SP를호출하려면 EXECUTE 권한이필요합니다. SP명은대소문자를구분하지않습니다. CLP에서 SP를호출하려면, OUT 유형의인수값에는출력용변수명대신에?( 물음표 ) 를이용합니다. CALL 문을이용하여저장프로시저를호출합니다. $ db "call myproc('a00',?)" Value of output parameters Parameter Name : MEDIANSALARY Parameter Value : E+004 Return Status = 0 UNIT 08 데이터베이스오브젝트 6

37 008 5 PL/SQL 프로시저 PL/SQL 언어를이용하여저장프로시저를생성합니다. CALL 문을이용하여호출합니다. 9.7 이후로는 PL/SQL을이용하여저장프로시저를생성할수있습니다. PL/SQL 을이용하여저장프로시저를생성하고자하는경우에는 Registry 변수에 compatibility vector 를 800 로설정한후, 데이터베이스를생성합니다. $ dbset compatibility Vector = 800 create procedure 문을이용하여 SQL 저장프로시저를개발합니다. $ cat script.db set sqlcompat plsql/ 작성된구문이 PL/SQL 구문임을알려주는기능 CREATE OR REPLACE FUNCTION emp_comp ( p_sal NUMBER, p_comm NUMBER ) RETURN NUMBER IS BEGIN RETURN (p_sal + NVL(p_comm, 0)) * 4; END emp_comp / CREATE OR REPLACE PROCEDURE update_comp(p_name IN VARCHAR) AS BEGIN UPDATE emp SET tot_comp = emp_comp(salary, comm) WHERE name = p_name; END update_comp / 작성된스크립트에서구분자가 / 또는 ; 인경우에는 - td/-vf로생성합니다. DBCLP 창에서컴파일및생성합니다. $ db td/ -vf script.db 4 CLP 창에서프로시저를호출할때에는 CALL 을사용합니다. $ db call update_comp( Curly ) 7 DB 9.7 운영자가이드

38 06 0 S E C T Memo UNIT 08 데이터베이스오브젝트 8

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

More information

DBMS & SQL Server Installation Database Laboratory

DBMS & SQL Server Installation Database Laboratory DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.

More information

13주-14주proc.PDF

13주-14주proc.PDF 12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float

More information

슬라이드 1

슬라이드 1 UDB Administrator for LINUX, UNIX and Windows ( 주 ) 다우기술인프라사업본부파트너사업부 IM 기술지원팀 VIII. 테이블스페이스 1. 테이블스페이스관리 2. DMS vs SMS 비교 1) DMS vs SMS 비교 3. Tablespace 옵션 1) PAGE 정의 2) 테이블제한사항 3) EXTENT 정의 4) PREFETCH

More information

Microsoft PowerPoint - QVIZMVUMWURI.pptx

Microsoft PowerPoint - QVIZMVUMWURI.pptx 데이타베이스시스템 2011.03 충북대학교경영정보학과조완섭 (wscho@chungbuk.ac.kr) Chap. 4 SQL 질의어 C4 2 목차 - SQL2에서데이터정의, 제약조건및스키마변경 - SQL에서의기본질의 - 더복잡한 SQL 질의들 - SQL에서삽입, 삭제, 갱신구문 - SQL 뷰 - 주장으로추가적인제약조건명시 - SQL의부가적인기능들 Ch4 3 SQL

More information

6장. SQL

6장. SQL 학습목표 SQL이 무엇인지 개념을 설명 테이블을 생성, 변경, 제거할 할 수 있다. 수 있다. 데이터를 검색, 갱신, 삽입, 삭 제할 수 있다. 뷰, 시스템 카탈로그, 저장 프 로시저, 트리거에 대한 개념 을 설명할 수 있다. 2 목차 SECTION 01 SQL의 개요 11 SQL의 역사 12 SQL의 유형별 종류 SECTION 0 21 스키마 22 테이블

More information

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

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE ALTIBASE HDB 6.3.1.10.1 Patch Notes 목차 BUG-45710 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG-45730 ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG-45760 ROLLUP/CUBE 절을포함하는질의는 SUBQUERY REMOVAL 변환을수행하지않도록수정합니다....

More information

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770> 제 8강 SQL: 관계데이터베이스언어 강의목표 관계데이타베이스언어로서상용 DBMS에서가장널리사용되는 SQL의동작원리에관하여학습하고, 이를이용하여다양한질의문을작성하는방법을습득한다 기대효과 SQL의데이터정의기능을이해한다 SQL의데이터조작기능중질의기능을이해한다 SQL의데이터조작기능중데이터갱신기능을이해한다 SQL의데이터조작기능중뷰및인덱스관련기능을이해한다 SQL 의개요

More information

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]

More information

MySQL-.. 1

MySQL-.. 1 MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition

More information

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

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins Project 1-3: Implementing DML Due: 2015/11/11 (Wed), 11:59 PM 이번프로젝트의목표는프로젝트 1-1 및프로젝트 1-2에서구현한프로그램에기능을추가하여간단한 DML을처리할수있도록하는것이다. 구현한프로그램은 3개의 DML 구문 (insert, delete, select) 을처리할수있어야한다. 테이블데이터는파일에저장되어프로그램이종료되어도사라지지않아야한다.

More information

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

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

Microsoft PowerPoint - 10Àå.ppt

Microsoft PowerPoint - 10Àå.ppt 10 장. DB 서버구축및운영 DBMS 의개념과용어를익힌다. 간단한 SQL 문법을학습한다. MySQL 서버를설치 / 운영한다. 관련용어 데이터 : 자료 테이블 : 데이터를표형식으로표현 레코드 : 테이블의행 필드또는컬럼 : 테이블의열 필드명 : 각필드의이름 데이터타입 : 각필드에입력할값의형식 학번이름주소연락처 관련용어 DB : 테이블의집합 DBMS : DB 들을관리하는소프트웨어

More information

ALTIBASE HDB Patch Notes

ALTIBASE HDB Patch Notes ALTIBASE HDB 6.5.1.5.6 Patch Notes 목차 BUG-45643 암호화컬럼의경우, 이중화환경에서 DDL 수행시 Replication HandShake 가실패하는문제가있어수정하였습니다... 4 BUG-45652 이중화에서 Active Server 와 Standby Server 의 List Partition 테이블의범위조건이다른경우에 Handshake

More information

PowerPoint Presentation

PowerPoint Presentation 6 장 SQL (section 4-6) 목차 SECTION 01 SQL 의개요 1-1 SQL의역사 1-2 SQL의유형별종류 SECTION 02 데이터정의어 (DDL) 2-1 스키마 2-2 테이블생성 (CREATE TABLE) 2-3 테이블변경 (ALTER TABLE) 2-4 테이블제거 (DROP TABLE) 2-5 제약조건 SECTION 03 데이터조작어 (DML)

More information

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

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 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 -------------------------------------------------------------------- -- 1. : ts_cre_bonsa.sql -- 2. :

More information

슬라이드 제목 없음

슬라이드 제목 없음 4.2 SQL 개요 SQL 개요 SQL은현재 DBMS 시장에서관계 DBMS가압도적인우위를차지하는데중요한요인의하나 SQL은 IBM 연구소에서 1974년에 System R이라는관계 DBMS 시제품을연구할때관계대수와관계해석을기반으로, 집단함수, 그룹화, 갱신연산등을추가하여개발된언어 1986년에 ANSI( 미국표준기구 ) 에서 SQL 표준을채택함으로써 SQL이널리사용되는데기여

More information

10.ppt

10.ppt : SQL. SQL Plus. JDBC. SQL >> SQL create table : CREATE TABLE ( ( ), ( ),.. ) SQL >> SQL create table : id username dept birth email id username dept birth email CREATE TABLE member ( id NUMBER NOT NULL

More information

목 차

목      차 Oracle 9i Admim 1. Oracle RDBMS 1.1 (System Global Area:SGA) 1.1.1 (Shared Pool) 1.1.2 (Database Buffer Cache) 1.1.3 (Redo Log Buffer) 1.1.4 Java Pool Large Pool 1.2 Program Global Area (PGA) 1.3 Oracle

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 MySQL - 명령어 1. 데이터베이스관련명령 2. 데이터베이스테이블관련명령 3. SQL 명령의일괄실행 4. 레코드관련명령 5. 데이터베이스백업및복원명령 1. 데이터베이스관련명령 데이터베이스접속명령 데이터베이스접속명령 mysql -u계정 -p비밀번호데이터베이스명 C: > mysql -ukdhong p1234 kdhong_db 데이터베이스생성명령 데이터베이스생성명령

More information

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

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양핚예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 10 장 view 를배웁니다 1 - View 란가상의테이블이다! 2 1. 단순 View (Simple View) SCOTT>CONN / AS SYSDBA; SYS>GRANT CREATE VIEW TO scott ; CREATE [OR REPLACE] [ FORCE NOFORCE] VIEW view

More information

Tablespace On-Offline 테이블스페이스 온라인/오프라인

Tablespace On-Offline 테이블스페이스 온라인/오프라인 2018/11/10 12:06 1/2 Tablespace On-Offline 테이블스페이스온라인 / 오프라인 목차 Tablespace On-Offline 테이블스페이스온라인 / 오프라인... 1 일반테이블스페이스 (TABLESPACE)... 1 일반테이블스페이스생성하기... 1 테이블스페이스조회하기... 1 테이블스페이스에데이터파일 (DATA FILE) 추가

More information

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

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

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 U N I T 0 7 테이블스페이스 테이블스페이스는한개이상의컨테이너로이루어진논리적인오브젝트입니다. 데이터를테이블에저장하는 SQL문을실행하면, 실제적인데이터는연관된테이블스페이스의물리적인저장공간인컨테이너에라운드로빈방식으로균등하게저장됩니다. UNIT 06 버퍼풀 69 DB 9.7 운영자가이드 Administrator Edition 테이블스페이스기본테이블스페이스 SMS

More information

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

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O Orange for ORACLE V4.0 Installation Guide ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE...1 1....2 1.1...2 1.2...2 1.2.1...2 1.2.2 (Online Upgrade)...11 1.3 ORANGE CONFIGURATION ADMIN...12 1.3.1 Orange Configuration

More information

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

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 9 장인덱스를배웁니다 1 1. 인덱스란무엇인가? 2 - ROWID ( 주소 ) 조회하기 SCOTT>SELECT ROWID, empno, ename 2 FROM emp 3 WHERE empno=7902 ; ROWID EMPNO ENAME --------------------------------- ----------

More information

歯sql_tuning2

歯sql_tuning2 SQL Tuning (2) SQL SQL SQL Tuning ROW(1) ROW(2) ROW(n) update ROW(2) at time 1 & Uncommitted update ROW(2) at time 2 SQLDBA> @ UTLLOCKT WAITING_SESSION TYPE MODE_REQUESTED MODE_HELD LOCK_ID1

More information

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

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

More information

TITLE

TITLE CSED421 Database Systems Lab MySQL Basic Syntax SQL DML & DDL Data Manipulation Language SELECT UPDATE DELETE INSERT INTO Data Definition Language CREATE DATABASE ALTER DATABASE CREATE TABLE ALTER TABLE

More information

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

Microsoft PowerPoint - ch07_데이터베이스 언어 SQL.pptx 05-01 SQL의소개 SQL을이용한데이터정의 SQL을이용한데이터조작 뷰 삽입 SQL 학습목표 SQL의역할을이해하고, 이를기능별로분류해본다. SQL의데이터정의기능을예제를통해익힌다. SQL의데이터조작기능을예제를통해익힌다. 뷰의개념과장점을이해한다. 삽입 SQL의역할을이해한다. 2 01 SQL 의소개 SQL (Structured Query Language) 의미

More information

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

untitled

untitled (shared) (integrated) (stored) (operational) (data) : (DBMS) :, (database) :DBMS File & Database - : - : ( : ) - : - : - :, - DB - - -DBMScatalog meta-data -DBMS -DBMS - -DBMS concurrency control E-R,

More information

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터 Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터를사용자에게전송하게되며 Parsing 단계에서실행계획이생성된다. Bind 변수를사용하는 SQL

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUERY 을실행하게된다면 BLOCK I/O 가많이발생하게된다. 이런이유로 QUERY 의성능은좋지못할것이다.

More information

PowerPoint Presentation

PowerPoint Presentation 6 장 SQL 목차 SECTION 01 SQL 의개요 1-1 SQL의역사 1-2 SQL의유형별종류 SECTION 02 데이터정의어 (DDL) 2-1 스키마 2-2 테이블생성 (CREATE TABLE) 2-3 테이블변경 (ALTER TABLE) 2-4 테이블제거 (DROP TABLE) SECTION 03 데이터조작어 (DML) 3-1 데이터검색 (SELECT)

More information

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

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 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 NOT NULL, FOREIGN KEY (parent_id) REFERENCES Comments(comment_id)

More information

90

90 89 3 차원공간질의를위한효율적인위상학적데이터모델의검증 Validation of Efficient Topological Data Model for 3D Spatial Queries Seokho Lee Jiyeong Lee 요약 키워드 Abstract Keywords 90 91 92 93 94 95 96 -- 3D Brep adjacency_ordering DECLARE

More information

슬라이드 제목 없음

슬라이드 제목 없음 뷰와시스템카탈로그 관계데이터베이스시스템의뷰 (view) 는다른릴레이션으로부터유도된릴레이션 (derived relation) 으로서 ANSI/SPARC 3단계아키텍처의외부뷰와다름 뷰는관계데이터베이스시스템에서데이터베이스의보안메카니즘으로서, 복잡한질의를간단하게표현하는수단으로서, 데이터독립성을높이기위해서사용됨 시스템카탈로그는시스템내의객체 ( 기본릴레이션, 뷰, 인덱스,

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

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

빅데이터분산컴퓨팅-5-수정 Apache Hive 빅데이터분산컴퓨팅 박영택 Apache Hive 개요 Apache Hive 는 MapReduce 기반의 High-level abstraction HiveQL은 SQL-like 언어를사용 Hadoop 클러스터에서 MapReduce 잡을생성함 Facebook 에서데이터웨어하우스를위해개발되었음 현재는오픈소스인 Apache 프로젝트 Hive 유저를위한

More information

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc 특정 Column 통계정보갱신가이드 유니원아이앤씨 DB 사업부이대혁 2015 년 03 월 02 일 문서정보프로젝트명서브시스템명 버전 1.0 문서명 특정 Column 통계정보갱신가이드 작성일 2015-03-02 작성자 DB사업부이대혁사원 최종수정일 2015-03-02 문서번호 UNIONE-201503021500-LDH 재개정이력 일자내용수정인버전 문서배포이력

More information

문서 템플릿

문서 템플릿 HDSI 툴분석 [sql injection 기술명세서 ] Sql injection 기술명세서 Ver. 0.01 이문서는 sql injection 기술명세가범위입니다. Copyrights Copyright 2009 by CanvasTeam@SpeeDroot( 장경칩 ) All Rights Reserved. 장경칩의사전승인없이본내용의전부또는일부에대한복사, 전재,

More information

5장 SQL 언어 Part II

5장 SQL 언어 Part II 5 장 SQL 언어 Part II 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 5 장 SQL 언어 Part II 1 / 26 데이터조작문 데이터검색 : SELECT 문데이터추가 : INSERT 문데이터수정 : UPDATE 문데이터삭제 : DELETE 문 박창이 ( 서울시립대학교통계학과 ) 5 장 SQL 언어 Part II 2 / 26 SELECT

More information

MS-SQL SERVER 대비 기능

MS-SQL SERVER 대비 기능 Business! ORACLE MS - SQL ORACLE MS - SQL Clustering A-Z A-F G-L M-R S-Z T-Z Microsoft EE : Works for benchmarks only CREATE VIEW Customers AS SELECT * FROM Server1.TableOwner.Customers_33 UNION ALL SELECT

More information

Microsoft Word - 05_SUBPROGRAM.doc

Microsoft Word - 05_SUBPROGRAM.doc ORACLE SUBPROGRAM INTRODUCTION PLSQL 은오라클에서제공하는프로그래밍언어이다. 이는데이터베이스언어인 SQL 과함께효과적으로데이터베이스에접근할수있는방법을제공하고있다. Procedural LanguageSQL 의약자에서볼수있듯이절차적인기능을기본적으로가지는프로그래밍언어이다. PLSQL 은기본적으로블록 (BLOCK) 구조를가지고있다. 블록의기본적인구성은선언부

More information

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

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 6 장. DML 을배웁니다 1 - SQL 명령어들 DML (Data Manipulation Language) : INSERT( 입력 ), UPDATE( 변경 ), DELETE( 삭제 ), MERGE( 병합 ) DDL (Data Definition Language) : CREATE ( 생성 ), ALTER

More information

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

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자 SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전

More information

Microsoft PowerPoint SQL 추가 기능

Microsoft PowerPoint SQL 추가 기능 데이터베이스 (Database) : 주장, 뷰, 프로그래밍기법 문양세강원대학교 IT특성화대학컴퓨터과학전공 강의내용 주장 (Assertions) 으로일반적인제약조건명시 SQL 에서뷰 ( 가상테이블 ) 데이터베이스프로그래밍 내포된 SQL (Embedded SQL) 함수호출, SQL/CLI [ 생략 ] 저장프로시저와 SQL/PSM [ 생략 ] 요약 Page 2 주장

More information

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

Microsoft PowerPoint - 사본 - DB06-SQL,시스템카탈로그,뷰.ppt . SQL(Structured Query Language) 특징 [ 출제빈도 상 ] 사용자 SQL ) 관계대수와관계해석을기초로한고급데이터언어 ) 이해하기쉬운형태 3) 대화식질의어로사용가능 4) 데이터정의, 조작, 제어기능제공 5) COBOL, C, PASCAL 등의언어에삽입 -> 내장 SQL 6) 레코드집합단위로처리 7) DBMS 에서사용되는비절차적대화형 Language

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070> 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include "QuickSort.h" 7 using namespace std; 8 9 10 Node* Queue[100]; // 추가입력된데이터를저장하기위한 Queue

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

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

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT Study Room Doc.03 : SQLD 예상문제 ( 단답형 ) 네이버 Cafe : 데이터베이스전문가포럼 Study Room http://cafe.naver.com/sqlpd SQLD 26,25,24,21 회기출문제를바탕으로작성 작성자 : 월야루 도움 : 빙수민외카페댓글 2017-11-30 단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

Microsoft Word - PLSQL.doc

Microsoft Word - PLSQL.doc PL/SQL 2008 DB system and programming 보충자료 PL/SQL의실행절 BEGIN 절에서의몇가지규칙 - 실행문은여러라인에걸쳐사용할수있다. - 변수명의명명규칙은오라클의일반적인명명규칙과동일하다. PL/SQL 블록내에서 SQL 문을사용할때에는컬럼명과같은변수명은피해야한다. - SQL에서와마찬가지로날짜와문자는홑따옴표 ( ) 를사용하여인용하여야한다.

More information

RDB개요.ppt

RDB개요.ppt 1 2 3 < > 1 SQL SQL 2 SQL 3 column DEPT DEPT# DNAME BUDGET D1 D2 D3 Marketing Development Research 10M 12M 5M tuple EMP EMP# ENAME DEPT# SALARY D1 40 D1 45 E1 E2 E3 Lopez Cheng Finzi D2 30 E4 Satio D2

More information

배치프로그램에서튜닝대상 SQL 추출하기 엑셈컨설팅본부 /DB 컨설팅팀박성호 배치프로그램의성능문제를진단하기위해트레이스를사용할수없고, 개별 SQL 에대한성 능점검은비효율적인경우에어떻게배치프로그램의성능문제를제대로파악하고개선안을도 출할것인가? 복잡한로직을가지고있는프로그램 (

배치프로그램에서튜닝대상 SQL 추출하기 엑셈컨설팅본부 /DB 컨설팅팀박성호 배치프로그램의성능문제를진단하기위해트레이스를사용할수없고, 개별 SQL 에대한성 능점검은비효율적인경우에어떻게배치프로그램의성능문제를제대로파악하고개선안을도 출할것인가? 복잡한로직을가지고있는프로그램 ( 배치프로그램에서튜닝대상 SQL 추출하기 엑셈컨설팅본부 /DB 컨설팅팀박성호 배치프로그램의성능문제를진단하기위해트레이스를사용할수없고, 개별 SQL 에대한성 능점검은비효율적인경우에어떻게배치프로그램의성능문제를제대로파악하고개선안을도 출할것인가? 복잡한로직을가지고있는프로그램 ( 이후배치프로그램 ) 에대한성능문제를파악하기위해수행되는모든 SQL 에대한개별수행내역을정확히판단할수있어야한다.

More information

<4D F736F F F696E74202D E DB0FCB0E820BBE7BBF3BFA120C0C7C7D120B0FCB0E820B5A5C0CCC5CDBAA3C0CCBDBA20BCB3B0E8>

<4D F736F F F696E74202D E DB0FCB0E820BBE7BBF3BFA120C0C7C7D120B0FCB0E820B5A5C0CCC5CDBAA3C0CCBDBA20BCB3B0E8> 데이터베이스 (Database) ER- 관계사상에의한관계데이터베이스설계 문양세강원대학교 IT특성화대학컴퓨터과학전공 설계과정 [ 그림 3.1] 작은세계 요구사항들의수정과분석 Functional Requirements 데이타베이스요구사항들 FUNCTIONAL ANALYSIS 개념적설계 ERD 사용 High level ltransaction Specification

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Spider For MySQL 실전사용기 피망플러스유닛최윤묵 Spider For MySQL Data Sharding By Spider Storage Engine http://spiderformysql.com/ 성능 8 만 / 분 X 4 대 32 만 / 분 많은 DB 중에왜 spider 를? Source: 클라우드컴퓨팅구 선택의기로 Consistency RDBMS

More information

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 2012.11.23 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Document Distribution Copy Number Name(Role, Title) Date

More information

PowerPoint Presentation

PowerPoint Presentation FORENSICINSIGHT SEMINAR SQLite Recovery zurum herosdfrc@google.co.kr Contents 1. SQLite! 2. SQLite 구조 3. 레코드의삭제 4. 삭제된영역추적 5. 레코드복원기법 forensicinsight.org Page 2 / 22 SQLite! - What is.. - and why? forensicinsight.org

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이타베이스 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2013.05.15. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

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

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2 5 장 SQL 응용 데이터베이스실험실 1 [ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL 5.2.1 T-SQL 문법 5.3 JAVA 프로그래밍 2 5.1 데이터베이스프로그래밍개념 프로그래밍 이라고하면프로그램소스를설계하고, 작성하고, 디버깅하는과정을말한다. 프로그램 혹은소프트웨어는컴퓨터에서주어진작업을하는명령어나열을말한다. 데이터베이스프로그래밍은명확한정의는없지만데이터베이스에데이터를정의하고,

More information

슬라이드 1

슬라이드 1 Tadpole for DB 1. 도구개요 2. 설치및실행 4. 활용예제 1. 도구개요 도구명 소개 Tadpole for DB Tools (sites.google.com/site/tadpolefordb/) 웹기반의데이터베이스를관리하는도구 Database 스키마및데이터관리 라이선스 LGPL (Lesser General Public License) 특징 주요기능

More information

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

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드] MS SQL Server 마이크로소프트사가윈도우운영체제를기반으로개발한관계 DBMS 모바일장치에서엔터프라이즈데이터시스템에이르는다양한플랫폼에서운영되는통합데이터관리및분석솔루션 2 MS SQL Server 개요 3.1 MS SQL Server 개요 클라이언트-서버모델을기반으로하는관계 DBMS로서윈도우계열의운영체제에서만동작함 오라클관계 DBMS보다가격이매우저렴한편이고,

More information

슬라이드 제목 없음

슬라이드 제목 없음 MS SQL Server 마이크로소프트사가윈도우운영체제를기반으로개발한관계 DBMS 모바일장치에서엔터프라이즈데이터시스템에이르는다양한플랫폼에서운영되는통합데이터관리및분석솔루션 2 MS SQL Server 개요 3.1 MS SQL Server 개요 클라이언트-서버모델을기반으로하는관계 DBMS 로서윈도우계열의운영체제에서만동작함 오라클관계 DBMS 보다가격이매우저렴한편이고,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 U N I T 백업과복구 백업방법으로데이터베이스백업과온라인, 테이블스페이스, 인크리멘탈, 델타백업등을소개합니다. 복구방법으로크래쉬, 버전, 롤포워드복구방법이소개되며, 백업이미지파일과아카이브로그파일을보관한다면, 손상직전시점까지데이터베이스를복구할수있습니다. UNIT 권한과특권 99 Administrator Edition 데이터베이스로깅데이터베이스로그를위한구성변수순환로깅아카이브로깅

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

FileMaker 15 ODBC 및 JDBC 설명서

FileMaker 15 ODBC 및 JDBC 설명서 FileMaker 15 ODBC JDBC 2004-2016 FileMaker, Inc.. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc.. FileMaker WebDirect FileMaker, Inc... FileMaker.

More information

DocsPin_Korean.pages

DocsPin_Korean.pages Unity Localize Script Service, Page 1 Unity Localize Script Service Introduction Application Game. Unity. Google Drive Unity.. Application Game. -? ( ) -? -?.. 준비사항 Google Drive. Google Drive.,.. - Google

More information

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을 IDIS Mobile ios 사용설명서 Powered by 사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다.

More information

<C1A4BAB8C3B3B8AE5FBBEABEF7B1E2BBE75FC7CAB1E25F E687770>

<C1A4BAB8C3B3B8AE5FBBEABEF7B1E2BBE75FC7CAB1E25F E687770> 3.2 관계데이터언어 0709 (1) 관계대수 0703 0705 0703 1) 관계대수정의 1 원하는정보와그정보를어떻게유도하는가를기술하는절차적인방법 0503 2 주어진관계로부터원하는관계를얻기위해연산자와연산규칙을제공하는언어 0503 3 릴레이션조작을위한연산의집합으로피연산자와결과가모두릴레이션이라는특성을가짐 2) 순수관계연산자 0305 관계데이터베이스에적용할수있도록특별히개발된관계연산자

More information

슬라이드 1

슬라이드 1 17.1 데이터베이스트리거 17.2 DML 트리거 17.3 DML 트리거작성 17.4 DML 트리거관리 17.5 INSTEAD OF 트리거 17.6 NON-DML 트리거 17.1 데이터베이스트리거 데이터베이스트리거 (database trigger) 테이블에어떤조작이가해졌을때에미리지정해놓은처리를자동으로실행시키는블록 PL/SQL 블록으로작성, 오라클데이터베이스에저장

More information

컴파일러

컴파일러 YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",

More information

SQL

SQL 데이터베이스및 SQL 언어의기초 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 데이터베이스및 SQL 언어의기초 1 / 36 Part I 데이터베이스 박창이 ( 서울시립대학교통계학과 ) 데이터베이스및 SQL 언어의기초 2 / 36 데이터의구성및표현 개체 (entity): DB가표현하려는유형 / 무형적정보의대상속성 (attribute): 개체가갖는특성도메인

More information

Microsoft Word - SQL튜닝_실습교재_.doc

Microsoft Word - SQL튜닝_실습교재_.doc * 실습환경 * 1. 오라클데이터베이스의튜닝실습을하기위해서는기본적인테이블과데이터가필요합니다. 다음과같은절차에의해환경설정을하십시오. 1) 강사가제공하는 Export 된파일 (scott.dmp) 을자신의 ORACLE 경로에저장하십시오. [C: ] cd C: ORACLE ORA92 BIN [C: ] dir scott.dmp scott.dmp 2) SYSTEM 사용자로접속하여

More information

untitled

untitled PowerBuilder 連 Microsoft SQL Server database PB10.0 PB9.0 若 Microsoft SQL Server 料 database Profile MSS 料 (Microsoft SQL Server database interface) 行了 PB10.0 了 Sybase 不 Microsoft 料 了 SQL Server 料 PB10.0

More information

Simplify your Job Automatic Storage Management DB TSC

Simplify your Job Automatic Storage Management DB TSC Simplify your Job Automatic Storage Management DB TSC 1. DBA Challenges 2. ASM Disk group 3. Mirroring/Striping/Rebalancing 4. Traditional vs. ASM 5. ASM administration 6. ASM Summary Capacity in Terabytes

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

MySQL-Ch10

MySQL-Ch10 10 Chapter.,,.,, MySQL. MySQL mysqld MySQL.,. MySQL. MySQL....,.,..,,.,. UNIX, MySQL. mysqladm mysqlgrp. MySQL 608 MySQL(2/e) Chapter 10 MySQL. 10.1 (,, ). UNIX MySQL, /usr/local/mysql/var, /usr/local/mysql/data,

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

More information

PHP & ASP

PHP & ASP 단어장프로젝트 프로젝트2 단어장 select * from address where address like '% 경기도 %' td,li,input{font-size:9pt}

More information

BY-FDP-4-70.hwp

BY-FDP-4-70.hwp RS-232, RS485 FND Display Module BY-FDP-4-70-XX (Rev 1.0) - 1 - 1. 개요. 본 Display Module은 RS-232, RS-485 겸용입니다. Power : DC24V, DC12V( 주문사양). Max Current : 0.6A 숫자크기 : 58mm(FND Size : 70x47mm 4 개) RS-232,

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

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

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 4 장 JOIN 을배웁니다 1 2 1. Cartesian Product ( 카티션곱, CROSS Join) - Oracle Join 문법 SQL> SELECT e.ename, d.dname 2 FROM emp e, dept d ; - ANSI Join 문법 SQL> SELECT e.ename, d.dname

More information

Microsoft PowerPoint - UNIT00[1].표지.ppt

Microsoft PowerPoint - UNIT00[1].표지.ppt DB2 사용자가이드 for Unix, Linux and Windows 2009 IBM Corporation IBM Software Group Information Management DB2 FTSS DB2 사용자가이드 for Unix, Linux and Windows Document History Version 1.0 2006-04 04-28 Version

More information

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

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager are trademarks or registered trademarks of Ari System, Inc. 1 Table of Contents Chapter1

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

PRO1_09E [읽기 전용]

PRO1_09E [읽기 전용] Siemens AG 1999 All rights reserved File: PRO1_09E1 Information and - ( ) 2 3 4 5 Monitor/Modify Variables" 6 7 8 9 10 11 CPU 12 Stop 13 (Forcing) 14 (1) 15 (2) 16 : 17 : Stop 18 : 19 : (Forcing) 20 :

More information

RHEV 2.2 인증서 만료 확인 및 갱신

RHEV 2.2 인증서 만료 확인 및 갱신 2018/09/28 03:56 1/2 목차... 1 인증서 확인... 1 인증서 종류와 확인... 4 RHEVM CA... 5 FQDN 개인 인증서... 5 레드햇 인증서 - 코드 서명 인증서... 6 호스트 인증... 7 참고사항... 8 관련링크... 8 AllThatLinux! - http://allthatlinux.com/dokuwiki/ rhev_2.2_

More information

thesis

thesis ( Design and Implementation of a Generalized Management Information Repository Service for Network and System Management ) ssp@nile nile.postech.ac..ac.kr DPE Lab. 1997 12 16 GMIRS GMIRS GMIRS prototype

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 U N I T 24 스토어드프로그램 이장에서는 DB2가제공하는 Stored Function 및 Stored Procedure, Trigger 을통한 Application Logic 작성에대한내용을소개합니다. 441 DB2 9.7 개발자가이드 Developer Edition Stored Program IBM Data Studio Developer를통해 Stored

More information

Commit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따

Commit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따 Commit Wait Class 대기시간감소방안 엑셈컨설팅본부 /DB 컨설팅팀박준연 개요 Wait Class 중 Commit 카테고리에해당하는 Wait Event 에의한대기현상으로 DB 시스템의성능저하현상이발생하는것은종종경험할수있다. 그중대표적인 Wait Event 는 Log File Sync 이다. 실제로대부분의 DB 시스템의 Top 5 Wait Event

More information