ประเภทของ object (ต่อ) chapter 7 · 2012-02-20 ·...
TRANSCRIPT
![Page 1: ประเภทของ Object (ต่อ) Chapter 7 · 2012-02-20 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/1.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/2.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/3.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/4.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/5.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/6.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/7.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/8.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/9.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/10.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/11.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/12.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/13.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/14.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/15.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/16.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/17.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/18.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/19.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/20.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/21.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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 · เอกสารประกอบวิชาระบบการจัดการฐานข้อมูล](https://reader033.vdocument.in/reader033/viewer/2022041903/5e61e03cb12f9a3fbd1c9bf7/html5/thumbnails/22.jpg)
เอกสารประกอบวชา ระบบการจดการฐานขอมล 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