ประเภทของ object (ต่อ) chapter 7 · 2012-02-20 ·...

22
เอกสารประกอบวิชา ระบบการจัดการฐานข้อมูล 20/02/55 .สมคิด สุทธิธารธวัช 1 Chapter 7 DDL: Table, Index, Sequence Object Object เป็น Logical structure หนึÉงทีÉใช้อ้างอิงข้อมูลของ ฐานข้อมูล โดยแต่ละ object ในฐานข้อมูลจะอยู่ภายใต้ user ใด user หนึÉงเสมอ ประเภทของ Object Table ถูกสร้างและเก็บใน 1 Tablespace เท่านัÊน View คือ ตารางจําลองทีÉสร้างขึÊนมา โดยจะอ่านข้อมูลจากตารางใน ฐานข้อมูลตามคิวรีÉทีÉกําหนดไว้ SOMKID SOOTITANTAWAT: Database Management Systems 2 Object ประเภทของ Object (ต่อ) Index เป็น object ทีÉสร้างขึÊนเพืÉอช่วยให้เข้าถึงข้อมูลใน Table ได้เร็วมากกว่า การค้นหาข้อมูลจาก Table โดยตรง Index ถูกสร้างและเก็บใน 1 Tablespace เท่านัÊน Materialized View คือ ViewหนึÉง ทีÉอ่านข้อมูลจากตารางในฐานข้อมูลตาม คิวรีÉทีÉกําหนดไว้ และมีการจัดเก็บข้อมูลไว้ใน Tablespace เหมือนกับTable และ Index ทําให้การอ่านข้อมูลจากMaterialized view ในครัÊงต่อไปเรา สามารถอ่านข้อมูลทีÉเก็บไว้ได้เลย ไม่ต้องเสียเวลาไป Execute คิวรีÉนัÊนใหม่ SOMKID SOOTITANTAWAT: Database Management Systems 3 Object ประเภทของ Object (ต่อ) Sequence คือ object ทีÉไว้ใช้สําหรับสร้างหมายเลขทีÉเรียงลําดับขึÊนโดย อัตโนมัติในฐานข้อมูล Synonym คือ object หนึÉงทีÉมีไว้เพืÉอเรียกแทนชืÉอ object ต่างๆ ในฐานข้อมูล Program Unit เป็นโปรแกรมย่อยทีÉทํางานอย่างใดอย่างหนึÉงตามทีÉกําหนด ถูก สร้างโดยภาษา PL/SQL และเก็บโปรแกรมไว้ในฐานข้อมูลเพืÉอเรียกใช้ ภายหลัง Program Unit ประกอบด้วย Stored Procedure Function Package Trigger SOMKID SOOTITANTAWAT: Database Management Systems 4

Upload: others

Post on 04-Mar-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 1

Chapter 7

DDL: Table, Index, Sequence

Object

Object เปน Logical structure หนงทใชอางองขอมลของฐานขอมล โดยแตละ object ในฐานขอมลจะอยภายใต user ใด

user หนงเสมอ

ประเภทของ Object

Table ถกสรางและเกบใน 1 Tablespace เทาน น

View คอ ตารางจาลองทสรางข นมา โดยจะอานขอมลจากตารางในฐานขอมลตามควรทกาหนดไว

SOMKID SOOTITANTAWAT: Database Management Systems 2

Object ประเภทของ Object (ตอ)

Index เปน object ทสรางข นเพอชวยใหเขาถงขอมลใน Table ไดเรวมากกวาการคนหาขอมลจาก Table โดยตรง Index ถกสรางและเก บใน 1 Tablespace เทาน น

Materialized View คอ Viewหน ง ทอานขอมลจากตารางในฐานขอมลตามควรทก าหนดไว และมการจดเก บขอมลไวใน Tablespace เหมอนก บ Table และ Index ท าใหการอานขอมลจาก Materialized view ในคร งตอไปเราสามารถอานขอมลทเก บไวไดเลย ไมตองเสยเวลาไป Execute ควรน นใหม

SOMKID SOOTITANTAWAT: Database Management Systems 3

Object ประเภทของ Object (ตอ)

Sequence คอ object ทไว ใชสาหรบสรางหมายเลขทเรยงลาดบข นโดยอตโนมตในฐานขอมล

Synonym คอ object หน งทมไว เพอเรยกแทนชอ object ตางๆ ในฐานขอมล

Program Unit เปนโปรแกรมยอยทท างานอยางใดอยางหน งตามทก าหนด ถกสรางโดยภาษา PL/SQL และเก บโปรแกรมไวในฐานขอมลเพอเรยกใชภายหลง Program Unit ประกอบดวย Stored Procedure

Function

Package

Trigger

SOMKID SOOTITANTAWAT: Database Management Systems 4

Page 2: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 2

EmpID Ename Eage DepID

111 สมคด 25 11

112 วษกร 30

113 คงคม 28 12

EmpID Ename Dname

111 สมคด บญช

112 วษกร

DepID Dname Number

11 บญช 20

12 คอมพวเตอร 10

View

EmployeeDepartment

View A = Select EmpID, Ename, Dname from Employee, Department Where Employee.DepID = Department.DepID;

SOMKID SOOTITANTAWAT: Database Management Systems 5

คาสงสราง Tablespace รปแบบคาส ง

CREATE TABLESPACE tablespace_nameDATAFILE ‘file_name’ SIZE number [K|M][AUTOEXTEND OFF|ON [NEXT number [K|M][BLOCKSIZE number K][DEFAULT STORAGE

(INITIAL number [K|M]NEXT number [K|M]MINEXTENTS number MAXEXTENTS number /UNLIMITEDPCTINCREASE number ]

6

อ.สมคด สทธธารธวช

ตวอยางการสราง Tablespace

CREATE TABLESPACE ODSYSDATAFILE 'C:\OrderingSystem\DB_data.dbf'SIZE 50 MAUTOEXTEND ON NEXT 10 MBLOCKSIZE 8 KDEFAULT STORAGE(INITIAL 20 M NEXT 5 MMINEXTENTS 5 MAXEXTENTS UNLIMITEDPCTINCREASE 10)

SOMKID SOOTITANTAWAT: Database Management Systems 7

8

อ.สมคด สทธธารธวช

DBA ควรมหลกสาหรบใชพจารณาในการสรางตารางขอมลใน

ฐานขอมล หลกการจดการประกอบดวย

ออกแบบตารางขอมลใหถกตองกอนสรางในฐานขอมล

ก าหนด Tablespace ทใชในการจดเก บตารางทกคร งทสราง

ควรแยก Tablespace ทใชจดเก บ Table และ Index ไวคนละ

Tablespace ก น

ประเมนขนาดของตารางและแนวโนมการเปลยนแปลงขอมล

หลกการจดการ Tables

Page 3: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 3

Naming RulesTable names and column names: Must begin with a letter Must be 1–30 characters long Must contain only A–Z, a–z, 0–9, _, $, and # Must not duplicate the name of another object

owned by the same user Must not be an Oracle server reserved word

9

อ.สมคด สทธธารธวช

10

อ.สมคด สทธธารธวช

รปแบบคาส ง

CREATE TABLE table_name( column datatype [constraint] )[TABLESPACE tablespace_name][STORAGE (storage_clause)][LOGGING | NOLOGGING][AS subquery]

ดตารางท งหมดในฐานขอมล

SELECT * FROM TAB;

การสรางตาราง

กาหนดคาการจองพนทของตาราง

ถาไมกาหนด จะดฟอลตตาม tablespace

กาหนดวาการกระทาตางๆ กบตารางน

จะบนทกลง log file หรอไม

ถาสรางตารางแลวไมระบ tablespace ระบบจะสรางท User Tablespace

Data TypesData Type Description

VARCHAR2(size) Variable-length character data

CHAR(size) Fixed-length character data

NUMBER(p,s) Variable-length numeric data

DATE Date and time values

LONG Variable-length character data up to 2 gigabytes

CLOB Character data up to 4gigabytes

RAW and LONG RAW Raw binary data

BLOB Binary data up to 4 gigabytes

BFILE Binary data stored in an external file; up to 4 gigabytes

ROWID A 64 base number system representing the unique address of a row in its table. 11

อ.สมคด สทธธารธวชตองการศกษารายละเอยด คลก

http://ss64.com/ora/syntax-datatypes.html

12

อ.สมคด สทธธารธวช

ตวอยางการสรางตาราง

สรางตาราง invoice ไว ภายใต user ชอ student โดย

ก าหนดใหสรางตารางไวใน Tablespace DATA1_TS และ

ก าหนดใหตารางจองพนทเรมตนในการใชงานคอ 10 MB โครงสราง

ตารางเปนดงน

Column Datatype Descriptioninvoice_id Number(10) เลขทใบเสรจ

invoice_date Date วนทออกใบเสรจ

Orderid Number(10,0) เลขทใบส งซอ

empid Char(3) รหสพนกงาน

Page 4: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 4

13

อ.สมคด สทธธารธวช

สราง Tablespace

14

อ.สมคด สทธธารธวช

CREATE TABLE INVOICE( INVOICE_ID NUMBER(10) NOT NULL,INVOICE_DATE DATE,ORDERID NUMBER(10,0),EMPID CHAR(3),CONSTRAINT PK_INV PRIMARY KEY(INVOICE_ID),CONSTRAINT FK_INV1 FOREIGN KEY (ORDERID)

REFERENCES ORDERS(ORDERID),CONSTRAINT FK_INV2 FOREIGN KEY (EMPID)

REFERENCES EMPLOYEES(EMPID))TABLESPACE DATA1_TSSTORAGE(INITIAL 10 M);

ตวอยางคาสงสรางตาราง

15

อ.สมคด สทธธารธวช

รปแบบคาส ง

DROP TABLE table_name[CASCADE CONSTRAINTS];

ตวอยางเชน

DROP TABLE AGENTS CASCADE CONSTRAINTS;

DROP TABLE PRODUCTS CASCADE CONSTRAINT;

ลบตาราง

เปลยนชอตาราง

เปนคาส งเปลยนชอตาราง

รปแบบคาส ง

RENAME table_nameOld TO table_nameNew

Page 5: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 5

ตวอยางคาสงสรางตารางทไมม

Primary Key

CREATE TABLE PAYMENT( PAYID NUMBER(5),PAYDATE DATE,PAYTOTAL NUMBER(10,2) );

18

อ.สมคด สทธธารธวช

รปแบบคาส ง

ALTER TABLE TABLE_NAMEADD (COLUMN_NAME DATATYPE[CONSTRAINT]);

คอลมนทสรางใหมน จะวางไว ในตาแหนงสดทายเสมอ

ตวอยางเชน

ALTER TABLE sale_itemADD (saleid number(5));

เพมคอลมนในตาราง

19

อ.สมคด สทธธารธวช

รปแบบคาส ง

ALTER TABLE TABLE_NAMEDROP COLUMN_NAME;

ตวอยางเชน

ALTER TABLE sale_itemDROP saleid;

ลบคอลมนในตาราง

20

อ.สมคด สทธธารธวช

รปแบบคาส ง

ALTER TABLE TABLE_NAMERENAME COLUMN OLD_COLUMN_NAME TONEW_COLUMN_NAME;

เปลยนชอ columnในตาราง

Page 6: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 6

21

อ.สมคด สทธธารธวช

รปแบบคาส ง

ALTER TABLE TABLE_NAMEMODIFY (COLUMN_NAME NEW_DATATYPE [CONSTRAINT] );

เปลยนประเภทขอมลใน columnของตาราง

สรางตาราง โดยการสาเนาจากตารางอน

รปแบบคาส ง

CREATE TABLE table_name1 ASSELECT column1, column2..FROM table_name2 [WHERE condition] );

ตวอยางสรางตาราง โดยการสาเนาจากตารางอน

CREATE TABLE EMPSALARYTABLESPACE DATA1_TSAS

SELECT EMPID, EMP_FNAME, EMP_LNAME FROM EMPLOYEESWHERE EMP_SALARY <=15000;

24

อ.สมคด สทธธารธวช

รปแบบคาส ง

ALTER TABLE TABLE_NAMESET UNUSED (COLUMN_NAME);

กรณทขอมลในตารางมจานวนมาก การลบอาจใชเวลานาน ดงน นหาก

เราไมตองการลบ กใหกาหนดคอลมนทตองการลบน นเปนคอลมนท

ไมไดใชงาน

กาหนด unused columnในตาราง

Page 7: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 7

25

อ.สมคด สทธธารธวช

รปแบบคาส ง

ALTER TABLE TABLE_NAMEDROP UNUSED COLUMNS;

คาส งน จะลบทกคอลมนทเปน unused column ในตาราง

อตโนมต

ลบ unused columnในตาราง

26

อ.สมคด สทธธารธวช

รปแบบคาส ง สรางหลงจากสรางตารางเสรจแลว

ALTER TABLE TABLE_NAMEMODIFY (COLUMN_NAME DEFAULT(VALUE));

ตวอยาง

ALTER TABLE AGENTSMODIFY AGENT_BIRTH DEFAULT SYSDATE;

รปแบบคาส ง สรางพรอมตาราง

CREATE TABLE TABLE_NAME( COLUMN_NAME DATATYPE DEFAULT VALUE );

การกาหนด Default ใหกบคอลมน

เพม/ลบ constraint

ALTER TABLE table_name{ADD/DROP} CONTRAINT constraint_name;

2727

อ.สมคด สทธธารธวช

Constraint คอนสเตรนต เปนขอก าหนดเพอใชในการตรวจสอบความถกตองของขอมล

Column constraint สาหรบคาส ง create table

Column constraint ความหมาย

Not Null ก าหนดใหคอลมนตองมคาของขอมล

UNIQUE ก าหนดใหคอลมนตองไมมขอมลทซ าก นในตาราง

PRIMARY KEY ก าหนดใหคอลมนเปนคยหล ก

DEFAULT <value>

คาทก าหนดไวในสวนของ value ใหก บคอลมน เมอมการ

เพมแถวของขอมลโดยไมใสคาใดๆ

CHECK (condition)

เปนการก าหนดเงอนไขในการตรวจสอบขอมลเมอมการเพม

หรอแกไขขอมล

FOREIGN KEY เปนคอลมนทใชในการเชอมขอมลระหวางตาราง2828

อ.สมคด สทธธารธวช

Page 8: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 8

คาสงเพม Primary Key ใหกบตาราง

ALTER TABLE table_nameADD CONSTRAINT constraint_namePRIMARY KEY (column_name)

เชน แก ไขโครงสรางตารางพนกงาน ก าหนดให empId เปน

Primary Key ALTER TABLE employee

ADD CONSTRAINT PK_emp PRIMARY KEY (empId) 29

อ.สมคด สทธธารธวช

คาสงเพม Foreign Key ใหกบตาราง

ALTER TABLE table_name

ADD CONSTRAINT constraint_name

FOREIGN KEY (column_name)

REFERENCES reference_table_name (reference_column)

เชน แกไขโครงสรางตารางพนกงาน กาหนดให deptId เปน Foreign Key

ALTER TABLE employee

ADD CONSTRAINT FK_emp FOREIGN KEY (deptId) REFERENCES

department(deptId); 30

อ.สมคด สทธธารธวช

การกาหนด UNIQUE สาหรบรปแบบในการกาหนด UNIQUE สามารถกาหนดไดจากคาสง

create table และ alter table มรปแบบดงน

CONSTRAINT constraint_name

UNIQUE (column1,column2)

ตวอยางเชน

ALTER TABLE product

ADD CONSTRAINT unq_prod

UNIQUE (product_name)3131

อ.สมคด สทธธารธวช

การกาหนด CHECK

Check ใชกาหนดคาทอนญาตใหบนทกลงในคอลมน เมอ

คาทตรวจสอบแลวมคาเปนจรง กจะยอมใหบนทกขอมลน น

เขาสตาราง

รปแบบคาส งดงน

CONSTRAINT constraint_nameCHECK (logical expression)

3232

อ.สมคด สทธธารธวช

Page 9: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 9

ตวอยาง check constraint

CONSTRAINT Chk_id CHECK (cust_idBETWEEN 1 and 1000) มคารหสลกคาระหวาง 1 ถง 1000

CONSTRAINT CK_emp_id CHECK (emp_id LIKE '[A-Z][A-Z][A-Z][1-9][0-9][0-9][0-9][0-9][FM]' OR emp_id LIKE '[A-Z]-[A-Z][1-9][0-9][0-9][0-9][0-9][FM]')

33

อ.สมคด สทธธารธวช

CREATE TABLE publishers(pub_id char(4) NOT NULL CONSTRAINT UPKCL_pubind PRIMARY KEY CHECK (pub_id IN ('1389', '0736', '0877', '1622', '1756') OR pub_idLIKE '99[0-9][0-9]'), pub_name varchar2(40) NULL, city varchar2(20) NULL, state char(2) NULL, country varchar2(30) NULL DEFAULT('USA'))

ตวอยาง check constraint

34

อ.สมคด สทธธารธวช

การยาย Table ไปท Tablespace อน

ตาราง อยไดเพยง 1 tablespace เทาน น

การสรางตารางตองก าหนด Tablespace เสมอ

การยายตารางไปท Tablespace อน จะชวยใหโครงสรางการจดเก บของตารางดข น เนองจากลดการเกด Fragmentation ในระดบ Segment ทจดเก บตาราง

รปแบบคาส ง

ALTER TABLE TABLE_NAMEMOVE [TABLESPACE TABLESPACE_NAME]

[STORAGE (STORAGE_CLAUSE)] การยาย Table ทกคร ง ควรเปลยนแปลงคาของ Index ดวย โดยการลบ

หรอ rebuild index 35

อ.สมคด สทธธารธวช

มอนเตอรการใชงาน Table การมอนเตอรตารางขอมลภายในฐานขอมล จาเปนสาหรบ

DBA เนองจากตารางขอมลมการเตบโตข นตามจานวน

ขอมลทเพมข น สงทตองตรวจสอบ ไดแก

ตารางขอมลประกอบดวยคอลมนอะไรบาง มโครงสราง

อยางไร เกบไวใน Tablespace ไหน

พนทการใชงานของตารางขอมลมจานวนมากนอยแคไหน

เจาของตารางขอมลเปนใคร มการจองพนทเทาไร36

อ.สมคด สทธธารธวช

Page 10: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 10

มอนเตอรการใชงาน Table

Data Dictionary View ทใชสาหรบการมอนเตอร

ขอมลมดงน

DBA_TABLES รายละเอยดของตารางข อมลท งหมดในฐานขอมล

DBA_TAB_COLUMNS รายละเอยดของคอลมนในตาราง

DBA_OBJECTS รายละเอยดของออบเจคตางๆ ในฐานขอมล

DBA_SEGMENT รายละเอยดของแตละ Segment ในฐานขอมล

DBA_UNUSED_COL_TABS รายละเอยดของตารางทมการก าหนด

Unused column37

อ.สมคด สทธธารธวช

38

อ.สมคด สทธธารธวช

SELECT TABLE_NAME, TABLESPACE_NAME, LOGGING, PARTITIONED, TEMPORARY, INITIAL_EXTENT, NEXT_EXTENT, PCT_INCREASE, MAX_EXTENTS FROM DBA_TABLESWHERE OWNER = ‘A’

ตวอยาง การตรวจสอบวา user A มตารางขอมลอะไรบาง สรางไว

ท Tablespaces ใด และมคาการจองพนทเปนอยางไร

39

อ.สมคด สทธธารธวช

แตละคอลมนจาก DBA_TABLES ดงน

ชอคอลมน คาอธบาย

OWNER ยสเซอรทเปนเจาของตาราง

TABLE_NAME ชอตารางขอมล

TABLESPACE_NAME ชอ Tablespace ทเกบตาราง

LOGGING กาหนดวาการกระทากบตารางน จะบนทกลง Redo log หรอไม

PARTITIONED แสดงตารางน เปน Partition หรอไม

TEMPORARY แสดงวาตารางนเปน Temporary Table หรอไม

INITIAL_EXTENT คาเรมตนการจองพนท มหนวยเปนไบต

NEXT_EXTENT คาการจองพ นทเพมขนของ Extent ถดไป มหนวยเปนไบต

PCT_INCREASE เปอรเซนตการจองพ นทเพมขนของ Extent ถดไป

MAX_EXTENTS จานวน Extent สงสดของตารางทสามารถใชงานได

40

อ.สมคด สทธธารธวช

SELECT column_name, data_type, data_length, data_precision, data_scale, nullable, column_idFROM DBA_TAB_COLUMNSWHERE table_name = ‘EMPLYEES

AND owner = ‘HR’ORDER BY column_id;

ตวอยาง การตรวจสอบวา ตาราง employees ภายใต HR มโครงสรางตารางเปนอยางไร

Page 11: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 11

41

อ.สมคด สทธธารธวช

แตละคอลมนจาก DBA_TAB_COLUMNS ดงน

ชอคอลมน คาอธบาย

OWNER ยสเซอรทเปนเจาของตาราง

TABLE_NAME ชอตารางขอมล

COLUMN_NAME ชอคอลมน

DATA_TYPE ประเภทของขอมลทจดเกบ

DATA_LENGTH ความยาวของขอมล

DATA_PRECISION จานวนหลกท งหมดทใชในการเกบขอมลทเปนตวเลข

DATA_SCALE จานวนหลกทเปนจดทศนยม

NULLABLE กาหนดวาคาของขอมลในคอลมนเปน Null ไดหรอไม

COLUMN_ID ลาดบของคอลมนในตาราง

42

อ.สมคด สทธธารธวช

SELECT object_type, count(*) totalFROM DBA_OBJECTSWHERE owner = ‘HR’

GROUP BY object_typeORDER BY object_type;

ตวอยาง การตรวจสอบวา ภายใต HR มออบเจกตอะไรบาง และมจานวนเทาไร

43

อ.สมคด สทธธารธวช

แตละคอลมนจาก DBA_OBJECTS ดงน

ชอคอลมน คาอธบาย

OWNER ยสเซอรทเปนเจาของตาราง

OBJECT_TYPE ประเภทของออบเจกตในฐานขอมล

COUNT(*) จานวนทนบไดท งหมด

Index ในการออกแบบฐานขอมลระดบกายภาพ (Physical Database Design)

เปนการออกแบบเพอใหฐานขอมลถกจดเกบและเรยกใชไดอยางมประสทธภาพ

อนเดกซเปนวธการหน งทนามาประยกตใชเพอเพมประสทธภาพในการเขาถงขอมลซ งการอนเดกซสามารถจดการโดยระบบจดการฐานขอมลเพยงการใชค าส ง SQL ในการสรางอนเดกซวาจะอนเดกซในลกษณะใด

ดงน นในการออกแบบฐานขอมลระดบกายภาพของฐานขอมลเชงสมพนธจะไมยงยากเทากบโมเดลอน เนองจาก DBMS มความสามารถในการจดการออกแบบในระดบกายภาพไดมาก

SOMKID SOOTITANTAWAT: Database Management Systems 44

Page 12: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 12

Index ผ ออกแบบตองตดสนใจวาขอมลทถกออกแบบในระดบตรรกะ จะม

โครงสรางการจดเกบอยางไรในหนวยความจาสารอง เพอใหการทางานมประสทธภาพ

การออกแบบฐานขอมลในระดบกายภาพ เ ปนการพจารณาถงโครงสรางการจดเกบขอมล(Storage) และวธการเขาถงขอมล (Access Method)

SOMKID SOOTITANTAWAT: Database Management Systems 45

อนเดกซเปนวธการหนงทนามาประยกตใชเพอเพม

ประสทธภาพในการเขาถงขอมล

การอนเดกซสามารถจดการโดย DBMS เพยงการใช

ค าส ง SQL ในการสรางอนเดกซวาจะอนเดกซใน

ลกษณะใด

SOMKID SOOTITANTAWAT: Database Management Systems 46

ความหมายของอนเดกซ

วตถประสงคในการอนเดกซ

การทตารางถกจดเกบเปนแฟมขอมลในหนวยความจาสารอง จะตองมการเรยกใชขอมลจากแฟมขอมล

การสรางอนเดกซมว ตถประสงค เพอเพมความเรวในการเขาถงขอมล และเรยกใชขอมลไดรวดเรว

การสรางอนเดกซดวยวธการทเหมาะสมเปนสงสาคญของการออกแบบฐานขอมล

SOMKID SOOTITANTAWAT: Database Management Systems 47

ประเดนสาคญของการอนเดกซ

คอ จะอนเดกซฟลดอะไร และจะอนเดกซดวยวธการใด ซงในการออกแบบตองเลอกแนวทางทจะใชเพอใหการทางานของระบบมประสทธภาพ

เนองจากการอนเดกซ ตองคนหาฟลด ทใชในอนเดกซจากแฟมอนเดกซ แลวจงไปคนหาจากแฟมขอมล (Data file) จากหนวยความจาสารอง

ดงน นฟลดทถกเรยกใชบอย หรอใชเปนเงอนไขในการ join หรอ Group by หรอ Alternate key อาจจะตองทาอนเดกซ

SOMKID SOOTITANTAWAT: Database Management Systems 48

Page 13: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 13

สงทควรหลกเลยงในการทาอนเดกซ

แมการทาอนเดกซจะชวยเพมประสทธภาพของควร แต

การทาอนเดกซอยางไมเหมาะสมอาจใหผลลพธตรงกน

ขาม สงทควรหลกเลยงคอ

การทาอนเดกซมากเกนไป

อนเดกซมากคอลมนเกนไป

แนวทางในการอนเดกซ

ไมควรอนเดกซตารางทมขนาดเลก (จ านวนคอลมนนอยและจานวนแถวนอย)

กาหนดใหแอตทรบวตทเปน primary key เปนอนเดกซ

ในการเรยกใชขอมลจากหลายตาราง ใหสรางอนเดกซคอลมนทเปน Foreign Key

หลกเลยงการสรางอนเดกซโดยใชคอลมนทตองมการปรบปรงบอยๆ

แนวทางในการอนเดกซ

หากขอคาถามทใชเรยกขอมลในลกษณะทเปนเงอนไขหรอเรยกขอมลแบบชวง สามารถสรางอนเดกซแบบ BTree

ใหอนเดกซฟลทไมใช Key ทใชในการเรยกขอมล เชน เงอนไขหลง where, order by, group by เปนตน หากทาการอนเดกซจะทาใหเรยกขอมลไดเรวข น เชน การอนเดกซแบบ Cluster

หลกเลยงการใชคอลมนทเปนขอมลแบบตวอกษรทยาวมาก

การเพมขอมลจานวนมากจะกระทบโครงสรางของอนเดกซ อาจใชวธการยกเลกอนเดกซ แลวเพมขอมลจนครบ จงคอยสรางอนเดกซข นใหม

52

อ.สมคด สทธธารธวช

INDEX คออะไร

Index คอ สงทสรางข นบน Table เพอชวยใหการเขาถงขอมล

ใน Table เปนไปไดอยางรวดเรวมากย งข น สงทเกบใน index ประกอบดวย 2 สวน คอ

สวนแรก เกบคาของขอมลในคอลมนทกาหนดใหสรางเปน

Index สวนทสอง จดเกบทอยของคาขอมลน นในตารางขอมลจรง ซง

เรยกวา Rowid

Page 14: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 14

53

อ.สมคด สทธธารธวช

ตวอยางการใชงาน Index

CusName RowIDแกวกลา AB124ปต AA123มานะ AA001

Index Customer_name

Table Customer

RowID CusID CusName CusBirthAA001 111 มานะ 23/10/1976

AA123 112 ปต 12/12/1970

AB124 113 แกวกลา 1/1/1965

SELECT * FROM Customer WHERE CusName = ‘ปต’

54

อ.สมคด สทธธารธวช

ประเภทของ Index

แบงตามลกษณะขอมลทใชในการสราง

Unique Index เปนอนเดกซทมคาขอมลของคอลมนทนามาใชสราง

Index ไมซ าก นเลย

Non-Unique Index เปนอนเดกซทมคาขอมลของคอลมนทนามาใชสราง

Index ซ าก นได

Index & Partitioned Index

SOMKID SOOTITANTAWAT: Database Management Systems 55

Tablespace D

Index ATablespace E

Index B

[Partition1]

Tablespace F

Index B

[Partition2]

55

56

อ.สมคด สทธธารธวช

รปแบบ Index ของฐานขอมล Oracle การสราง Index ภายในฐานขอมล Oracle สามารถเลอกสรางได

หลายรปแบบ ไดแก

B-Tree Index, Bitmap Index, Reversed Key Index และ

Function-Based Index

Page 15: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 15

57

อ.สมคด สทธธารธวช

B-Tree Index B-Tree Index เปน Index ทมการจดเก บขอมลอยในโครงสราง

แบบตนไม (Tree Structure) โดยอยในรปแบบของ Balanced Tree ซ งประกอบดวย Root, Branch node, และ Leaf node โดยLeaf node จะเก บคา RowID ทใชแทนตาแหนงของ

ขอมลทเราตองการ การจดเก บ Index ในรปแบบน จะทาใหการคนหาขอมล

มความเรวมากข น

value rowid value rowid value rowid value rowid…

B-Tree index เปนรปแบบปกตของการ

ใชงาน index โดยทวไปในฐานขอมล

Oracle

58

อ.สมคด สทธธารธวช

Bitmap Index Bitmap Index เปน Index ทมการจดเก บขอมลอยในรปแบบ

Bitmap คอ เก บขอมลในรป 1 และ 0 เทาน น มความเรวในการท างานสง

เหมาะก บขอมลทมคาของขอมลซ าก นเปนชวงมากๆ และมการเปลยนแปลงนอย

CusID CusName Region111 มานะ N112 มาน S113 ชใจ E114 แกว W115 กลา N116 กานต N117 รกมาก E118 คะนงหา W119 ประสา S

Table Customer

Region StartRow

End Row

Bitmap

N 1 9 100011000E 1 9 001000100W 1 9 000100010S 1 9 010000001

Bitmap Index on Region

1st Row 9th Row

59

อ.สมคด สทธธารธวช

Reversed Key Index Reversed Key Index เปน Index ทมการจดเก บในโครงสราง

แบบ Balanced Tree เชนเดยวก บ B-Tree ซ งประกอบดวย

Root, Branch node, และ Leaf node แตสงทแตกตางคอ

Reversed Key Index จะนาคาขอมลมากลบคากอนทจะนามาสราง

Index เพอใหขอมลกระจายตวไดดมากข น

EmpID RowID1257225733584567

EmpID Name8533765475227521

Reversed Key Index Table Employees

60

อ.สมคด สทธธารธวช

Function-Based Index Function-Based Index เปน index ทมโครงสรางเปนแบบ Balanced

Tree เชนเดยวก บ B-Tree และ Reversed Key Index แต Function-Based Index สามารถเพมฟงก ช นเขาไปในคอลมนทตองการสราง Index ได เชน

UPPER(name) หรอ LOWER(name) ประโยชนของ Index น คอ ในกรณท where condition มการใชฟงก ช นในการคนหา

เชน SELECT * FROM EMPLOYEES WHERE UPPER(NAME) = ‘PETER’;

ใหสราง Function-Base Index ตาม UPPER(name)

Name RowIDJOEJOHNPETERSCOTT

EmpID Name8533 Scott7654 Joe7522 Peter7521 John

Function-Based Index Table Employees

Page 16: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 16

61

อ.สมคด สทธธารธวช

หลกการจดการ Index

ในการสราง Index ใหมประสทธภาพ DBA ควรจะมหลกการจดการทถกตอง เพอทจะสามารถใชงาน Index ไดมประสทธภาพดทสด หลกการจดการ ไดแก

เลอกคอลมนทใชในการสราง Index ใหถกตอง

สราง Index ใหอยคนละ Tablespace ก บ Table ก าหนดคาการจองพนทการใชงาน Index ทกคร ง

ก าหนดจานวน Index ในแตละตารางขอมลไมใหมากเก นไป

สราง Index หลงจากเพมขอมลลงไปในตารางแลว

ลบ Index ทไมไดใชงาน

หม น Rebuild Index อยเสมอ

62

อ.สมคด สทธธารธวช

การสราง Index แบบตางๆ

การสราง Index แบบตางๆ ไดแก B-Tree, Reversed Key, Bitmap และ Function-Base index จะใช

ค าส งเดยวกน ตางกนตรงออปชน

คาสงในการสราง IndexCREATE [NONUNIQUE|UNIQUE|BITMAP] INDEX owner.index_name ON schema.table_name([column_name|function(column_name))[REVERSE][TABLESPACE tablespace_name][STORAGE (storage clause)][VISIBLE|INVISIBLE]

63

อ.สมคด สทธธารธวช

[NONUNIQUE|UNIQUE|BITMAP] เปนออปช นก าหนดให index เปน

[NONUNIQUE|UNIQUE|BITMAP] โดยคา default คอ NON-UNIQUE

Owner.index_name ก าหนดเจาของและชอ index ทต องการสราง

ON schema.table_name ก าหนดเจาของและชอ table ทจะสราง index ถาเราไมก าหนด schema indexจะถกสรางบน Userทสงค าส งใหสราง index

[Reverse] ก าหนดใหสรางแบบ Reversed Key Index [Tablespace tablespace_name] ก าหนดชอ Tablespace ทใช

จ ดเก บ index [Storage (storage_clause)] ก าหนดคาการจองพนทของ index เชน

initial extent, next extent, max extent และ percent Increase เปนตน

[Visible|Invisible] ก าหนดใหสราง Index แบบ visible index หรอ

Invisible index

64

อ.สมคด สทธธารธวช

ตวอยางการสราง index

ตองการสราง index บนคอลมน EmpName ในตาราง Employees ภายใต user ชอ student ก าหนดใหชอของ index คอ Emp_inx และม

ล กษณะคอ ขอมลในคอลมนตองไมซ าก น สรางindex ไวท Tablespace ชอ

INDX_TS ใชการจองพนทตามคาทก าหนดไวใน Tablespace โครงสราง

ของ Table Employee เปนดงน

คอลมน ประเภทขอมล

EmpID Number(3)EmpName Varchar2(30)EmpAdd Varchar2(50)

Page 17: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 17

คาสง SQL แบบ B-Tree index

CREATE UNIQUE INDEXstudent.Emp_inxON student.EMPLOYEES (EmpName)TABLESPACE INDX_TS ;

65

อ.สมคด สทธธารธวช

คาสง SQL แบบ Reversed Key index

CREATE UNIQUE INDEXstudent.prod_inxON student.PRODUCTS(PROD_NAME)REVERSETABLESPACE INDX_TS ;

66

อ.สมคด สทธธารธวช

คาสง SQL แบบ Function-Based index

CREATE UNIQUE INDEXstudent.cus_inxON student.CUSTOMERS(UPPER(CUST_FNAME))TABLESPACE INDX_TS ;

67

อ.สมคด สทธธารธวช

68

อ.สมคด สทธธารธวช

เมอมการใชงาน index ในฐานขอมลไประยะหน งแลว ปรากฏวาพนทวางใน

Tablespace ทใชเก บ Index มพนทวางไมพอก บพนททตองการใช

งาน จะท าใหไมสามารถขยายพนทไดและท าให user ไมสามารถ insert หรอ update คาขอมลในตารางน นได

วธแก ไข คอ ใหขยายพนทการใชงาน Tablespace ทใชในการเก บ

index ใหเพยงพอก บคา Next extent ของ index

ALTER DATABASE DATAFILE ‘C:\ORACLEXE\...\NEWDATA.DAT’RESIZE 150 M;

Page 18: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 18

69

อ.สมคด สทธธารธวช

การลบ Index รปแบบคาส ง

DROP INDEX owner.index_name;

ตวอยางการลบ indexDROP INDEX student.cust_idx;

การใชคาสงในการเปลยนปลง Visible/Invisible Index

•ALTER INDEX owner.index_nameVISIBLE|INVISIBLE

70

อ.สมคด สทธธารธวช

ตรวจสอบการใชงาน Index

คาส ง

ALTER INDEX owner.index_nameMONITORING USAGE;

ควรเลอกมอนเตอรเฉพาะ index ทไมแนใจวายงมการใชงานอยหรอไม

ถาท ามอนเตอรใหก บ index ทกตว จะท าใหฐานขอมลท างานชาลงได

คาส งปดการตรวจสอบการใชงานของ indexALTER INDEX owner.index_nameNOMONITORING USAGE;

71

อ.สมคด สทธธารธวช

Rebuild Index เมอพบ index มปญหา ซ งอาจเกดขากมการเปลยนแปลงขอมลในคอลมนท

สรางเปน index มาก เชน update ขอมลในคอลมนเปนประจา

ดงน นวธการแก ไขปญหา ไดแก การลบ index แลวสรางใหม หรอ การ

rebuild index รปแบบคาส ง

ALTER INDEX owner.index_name REBUILD[TABLESPACE tablespace_name][STORAGE (storage_clause)];

ตวอยาง

ALTER INDEX student.cust_idx REBUILD TABLESPACE INDX_TS;

72

อ.สมคด สทธธารธวช

การมอนเตอร Index สงทตองมอนเตอร ไดแก indexทสรางข นเปนแบบไหน ประกอบดวยคอลมนอะไรบาง

สรางบนตารางอะไร เก บไวใน Tablespace ไหน และมพนทการใชงานเปนอยางไร

Data Dictionary View ทใชสาหรบการมอนเตอร index ดงน

ชอview ขอมลทแสดง

DBA_INDEXES รายละเอยดของ index ท งหมดในฐานขอมล

DBA_IND_COLUMN รายละเอยดของคอลมนทสรางเปน indexDBA_OBJECTS รายละเอยดของออบเจคตางๆ ในฐานขอมล

DBA_SEGMENTS รายละเอยดของแตละ segment ในฐานขอมล

DBA_IND_EXPRESSIONS รายละเอยดของ Function-Based Index ใน

ฐานขอมล

INDEX_STATS รายละเอยดโครงสรางของ index ทไดจากการสง

Validate structureV$OBJECT_USAGE รายละเอยดการใชงานของ index ในฐานขอมลทไดจาก

การมอนเตอรการใชงาน index

Page 19: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 19

73

อ.สมคด สทธธารธวช

ตวอยางการมอนเตอร index

ตองการตรวจสอบวาม index อะไรบางทสรางอยภายใต user student สรางอยบน Table อะไร ประเภทของ index ทสรางคอ

อะไร และสถานการณใชงานไดหรอไม โดยใชค าส งดงน

SELECT index_name, index_type, table_name, table_owner, uniqueness, status, funcidx_statusFROM dba_indexesWHERE owner = ‘student’ORDER BY index_name;

การสราง SEQUENCE การสรางตาราง ใน Microsoft Access จะสามารถสราง คอลมน ทม

datatype ชนดหนง คอ "auto number" data type ชนดน เมอมการใส

ขอมล แถวใหม ลงในตาราง จะใสหมายเลขลงในคอลมนน นๆ ใหโดย

อตโนมต เรยงลาดบ เชน 1,2 ,3, ... ไมซ ากน โดยทเราไมจาเปนตองสง

insert หมายเลขเอง มประโยชน คอ เรามกเอาไว เปน running number

อตโนมต หรอ เอาไว generate เปน Primary Key ... มนกสะดวกด

74

อ.สมคด สทธธารธวช

การสราง SEQUENCE สาหรบ ออราเคล แลว ไมม data type แบบน ให

แต ออราเคล จะมองเปน Database Object ชนดหน ง ชอวา "SEQUENCE" แลว

เอา sequence ตวน ไป INSERT เปนขอมล ในตารางอกท โดยจะ INSERT เปน

หมายเลข ล าดบทไมซ าก นให

เราจะสราง SEQUENCE และ นา SEQUENCE ไปใชเปน Auto Number แบบ

Microsoft Access ไดอยางไร

1. เรมแรก ใหสรางตาราง ข นมากอน โดยสมมตวา คอลมน order_no จะให

เปน Auto Number กลาวคอ ท าใหเกด running number เรยงก นไป แบบ

อตโนมต ดงน นdata type ของ order_no จงตองสรางเปน NUMBER

75

อ.สมคด สทธธารธวช

การสราง SEQUENCE 2. จากน น เราก สราง SEQUENCE ข นมา ดวยคาส งด งน

76

อ.สมคด สทธธารธวช

คาอธบาย

CREATE SEQUENCE order_no_seq : สราง

SEQUNECE ข นมา ต งชอในสตบตรวา

order_no_seq

START WITH 1 : เรมใสคาคร งแรก คอ เลข1

INCREMENT BY 1 : ใหเพมคาในการใสคร ง

ตอไป เพมข นทละ 1

MAXVALUE 99999 : ใหคาสงสด ทเกดข นได คอ

99999 (มากกวาน จะเกน NUMBER(5) )

NOCYCLE : เมอคาถงคาสสด (MAXVALUE

99999) แลว หามเวยนเทยน กลบไปเกดเลข 1 ใหม

NOCACHE : ไมตอง เอาหมายเลข (โดย default 20

หมายเลข) ไปเกบในหนวยความจา กอน การเกบ

ตวเลขไว ใน หนวยความจา จะทาใหการ insert เรว

ข น แตถ าเตะ ปล กหลด เครองดบ กจะทาให

หมายเลขทเกบไว หายไปเลย เพราะถอวา ถกใชไป

แลว เวลาเอา SEQUENCE ไปใชงาน เอาไปใชใน

การ INSERT ขอมล ทาไดดงรป order_no_seq.NEXTVAL คอ ใหนาคาต วเลขถดไป ( Next Value )

ของ sequence ชอ order_no_seq มาใส ใหก บคอลมน order_no

Page 20: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 20

การสราง SEQUENCE 3. เมอเราดขอมลในตาราง หลงจากใสขอมลแลว จะเหนวา

คอลมน order_no จะเกดหมายเลขอตโนมต เรยงกน

77

อ.สมคด สทธธารธวช

คาสงสราง SEQUENCE

78

อ.สมคด สทธธารธวช

CREATE SEQUENCE sequence[INCREMENT BY n][START WITH n][{MAXVALUE n | NOMAXVALUE}][{MINVALUE n | NOMINVALUE}][{CYCLE | NOCYCLE}][{CACHE n | NOCACHE}];

• Increment by n – กาหนดจานวนในการเพมคาของ sequence (default =1)• Start with n – กาหนดคาต งตนของ sequence (default = 1)• Maxvalue n – กาหนดคาสงสดของ sequence (default = Unlimited)• Minvalue n – กาหนดคาต าสดของ sequence (default = 1)• Cycle | Nocycle – กาหนดใหคาของ sequence สามารถนากลบมาใชไดอกหรอไม

• Cache n | Nocache –กาหนดใหมการโหลดคา sequence ไว ลวงหนาในหนวยความจาหรอไม

ถามจะโหลดไว เทาไร (default ถากาหนด cache = 20 ตว)

*** ขอควรระว งในการใช cache บางคร งคา sequence อาจไมเรยงลาดบกน หาก user มการเรยกใช

งาน seq แตเกดการ rollback เราไมสามารถนาคาของ seq ท user เรยกใชงานไปแลวกลบมาใชใหม

ได ทาใหคา seq บางคาหายไป

Creating a Sequence

Create a sequence named DEPT_DEPTID_SEQ to be used for the primary key of the DEPARTMENTS table.

Do not use the CYCLE option.CREATE SEQUENCE dept_deptid_seq

INCREMENT BY 10START WITH 120MAXVALUE 9999NOCACHENOCYCLE;

Sequence created.79

อ.สมคด สทธธารธวช

Confirming Sequences Verify your sequence values in the

USER_SEQUENCES data dictionary table.

The LAST_NUMBER column displays the next available sequence number if NOCACHE is specified.

SELECT sequence_name, min_value, max_value, increment_by, last_number

FROM user_sequences;

80

อ.สมคด สทธธารธวช

Page 21: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 21

NEXTVAL and CURRVALPseudocolumns

NEXTVAL returns the next available sequence value. It returns a unique value every time it is referenced, even for different users.

CURRVAL obtains the current sequence value.

NEXTVAL must be issued for that sequence before CURRVAL contains a value. 81

อ.สมคด สทธธารธวช

Rules for Using NEXTVAL and CURRVAL

You can use NEXTVAL and CURRVAL in the following contexts: The SELECT list of a SELECT statement that is not part of a

subquery The SELECT list of a subquery in an INSERT statement The VALUES clause of an INSERT statement The SET clause of an UPDATE statement

You cannot use NEXTVAL and CURRVAL in the following contexts: The SELECT list of a view A SELECT statement with the DISTINCT keyword A SELECT statement with GROUP BY, HAVING, or ORDER BY

clauses A subquery in a SELECT, DELETE, or UPDATE statement The DEFAULT expression in a CREATE TABLE or ALTER TABLE

statemen

82

อ.สมคด สทธธารธวช

Using a Sequence Insert a new department named “Support”

in location ID 2500.

View the current value for the DEPT_DEPTID_SEQ sequence.

INSERT INTO departments(department_id, department_name, location_id)

VALUES (dept_deptid_seq.NEXTVAL, 'Support', 2500);

1 row created.

SELECT dept_deptid_seq.CURRVALFROM dual;

83

อ.สมคด สทธธารธวช

Using a Sequence Caching sequence values in memory gives

faster access to those values. Gaps in sequence values can occur when: A rollback occurs The system crashes A sequence is used in another table

If the sequence was created with NOCACHE, view the next available value, by querying the USER_SEQUENCES table. 84

อ.สมคด สทธธารธวช

Page 22: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล

เอกสารประกอบวชา ระบบการจดการฐานขอมล 20/02/55

อ.สมคด สทธธารธวช 22

Modifying a Sequence

Change the increment value, maximum value, minimum value, cycle option, or cache option.ALTER SEQUENCE dept_deptid_seq

INCREMENT BY 20MAXVALUE 999999NOCACHENOCYCLE;

Sequence altered.

85

อ.สมคด สทธธารธวช

Guidelines for Modifying a Sequence

You must be the owner or have the ALTERprivilege for the sequence.

Only future sequence numbers are affected. The sequence must be dropped and

re-created to restart the sequence at a different number.

Some validation is performed.

86

อ.สมคด สทธธารธวช

Removing a Sequence Remove a sequence from the data

dictionary by using the DROP SEQUENCEstatement.

Once removed, the sequence can no longer be referenced.

DROP SEQUENCE dept_deptid_seq;Sequence dropped.

87

อ.สมคด สทธธารธวช

SOMKID SOOTITANTAWAT: Database Management Systems

References

รศ. ศรลกษณ โรจนกจอ านวย. การออกแบบและบรหารฐานขอมล, 2545.

ศภชย จวะรงสน และ ขจรศกด สงขเจรญ. ระบบฐานขอมล Oracle Database 10g Express Edition. กรงเทพฯ: TrainLyst, 2549.

C.J. Date. An Introduction to Database Systems. Addison Wesley: 8th

edition, 2004.

Jeffrey A. Hoffer, Mary B. Prescott and Heikki Topi. Modern Database Management. Pearson Prentice Hall: 9th Edition , 2009.

Peter Rob and Carlos Coronel. Database Systems: Design, Implementation and Management. Thomson: 7th Edition, 2007.

88