การสร้างวัตถุสคีมาอื่น ๆ
นอกเหนือจากตารางแล้ววัตถุสคีมาที่จำเป็นอื่น ๆ ได้แก่ มุมมองลำดับดัชนีและคำพ้องความหมายมุมมองเป็นตารางตรรกะหรือเสมือน คำพ้องความหมายเป็นเพียงชื่อนามแฝงสำหรับอ็อบเจ็กต์ฐานข้อมูลคำพ้องความหมายยังช่วยลดความซับซ้อนในการเขียนแบบสอบถามและจัดเตรียมองค์ประกอบของความปลอดภัยของระบบโดยการปลอมชื่อจริงของอ็อบเจ็กต์ฐานข้อมูลลำดับคืออ็อบเจ็กต์ฐานข้อมูลพิเศษที่สนับสนุนการสร้างค่าจำนวนเต็มโดยอัตโนมัติและมักใช้เพื่อ สร้างค่าคีย์หลักสำหรับตารางดัชนีถูกสร้างขึ้นบนคอลัมน์ของตารางเพื่ออำนวยความสะดวกในการดึงข้อมูลจากตารางอย่างรวดเร็ว
มุมมอง
มุมมองฐานข้อมูลเป็นตารางเชิงตรรกะหรือเสมือนตามแบบสอบถามมุมมองจะถูกสอบถามเช่นเดียวกับตารางซึ่งหมายความว่าจากมุมมองของคุณในฐานะนักพัฒนาหรือจากมุมมองของผู้ใช้ระบบฐานข้อมูลมุมมองจะดูเหมือนตาราง เนื่องจากวัตถุถูกเก็บไว้ในพจนานุกรมข้อมูลของฐานข้อมูล อย่างไรก็ตามมุมมองไม่จัดเก็บข้อมูลเองฐานข้อมูลยังเก็บแผนการดำเนินการสำหรับการสร้างมุมมองซึ่งหมายความว่าข้อมูลสามารถเรียกดูได้อย่างรวดเร็วผ่านการใช้มุมมองแม้ว่าข้อมูลจริงที่นำเสนอโดยแบบสอบถาม SELECT ของมุมมองจะไม่ถูกจัดเก็บ เป็นส่วนหนึ่งของมุมมอง แต่ข้อมูลจะถูก "รวบรวมเข้าด้วยกัน" ทุกครั้งที่มีการสอบถามมุมมองจากตารางฐานข้อมูลที่มีการกำหนดมุมมองซึ่งเรียกว่าตารางฐาน
ไวยากรณ์ทั่วไปได้รับด้านล่าง
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW [ViewName]
[(Column Alias Name...)]
AS [Query]
[WITH [CHECK OPTION] [READ ONLY] [CONSTRAINT]];
จากไวยากรณ์
อ็อพชัน FORCE ช่วยให้สามารถสร้างมุมมองได้แม้ว่าจะไม่มีตารางพื้นฐานที่มุมมองอ้างอิงอยู่ตัวเลือกนี้ใช้เพื่อสร้างมุมมองก่อนการสร้างตารางพื้นฐานและข้อมูลประกอบจริง
อ็อพชัน NOFORCE ตรงข้ามกับ FORCE และอนุญาตให้ผู้ใช้ระบบสร้างมุมมองหากพวกเขามีสิทธิ์ที่จำเป็นในการสร้างมุมมองและถ้าตารางที่สร้างมุมมองนั้นมีอยู่แล้ว นี่คือตัวเลือกเริ่มต้น
ตัวเลือกพร้อมอ่านเท่านั้นช่วยให้สามารถสร้างมุมมองที่อ่านอย่างเดียวคุณไม่สามารถใช้คำสั่ง DELETE, INSERT หรือ UPDATE เพื่อแก้ไขข้อมูลสำหรับมุมมองแบบอ่านอย่างเดียว
ส่วนคำสั่ง WITH CHECK ช่วยให้สามารถอัปเดตแถวที่สามารถเลือกผ่านมุมมองได้นอกจากนี้ยังช่วยให้คุณสามารถระบุข้อ จำกัด เกี่ยวกับค่าได้อีกด้วยส่วนคำสั่ง CONSTRAINT ทำงานร่วมกับส่วนคำสั่ง WITH CHECK OPTION เพื่อให้ผู้ดูแลระบบฐานข้อมูลสามารถกำหนดชื่อเฉพาะได้ ไปยัง CHECK OPTION หากผู้ดูแลระบบฐานข้อมูลละเว้นประโยค CONSTRAINT Oracle จะกำหนดข้อ จำกัด โดยอัตโนมัติเป็นชื่อที่ระบบสร้างขึ้นซึ่งจะไม่มีความหมายมากนัก
ประเภทของมุมมอง
มุมมองที่เรียบง่ายถูกสร้างขึ้นที่ด้านบนของตารางเดียวเท่านั้นมันเป็นคิวรี SELECT แบบง่ายที่ไม่มีฟังก์ชันหรือประโยคกลุ่ม แต่เพียงแค่เลือกคอลัมน์จากตารางโดยไม่มีการแปลงใด ๆ หากดำเนินการ DML บนมุมมองจะมีผลทันที ในตารางฐาน
มุมมองที่ซับซ้อนถูกสร้างขึ้นบนหลายตารางโดยใช้การรวมสามารถมีฟังก์ชัน SQL, จัดกลุ่มตามฟังก์ชัน แต่เนื่องจากมุมมองอยู่ในข้อมูลหลายรายการและการเลือกคอลัมน์ก็ไม่ง่ายเช่นกันจึงไม่อนุญาตให้ดำเนินการ DML
ภาพประกอบ
Simple View: มุมมองง่ายๆด้านล่างเลือกชื่อพนักงานรหัสแผนกและเงินเดือนสำหรับพนักงานที่มี JOB ID เป็น DEV
CREATE OR REPLACE VIEW v_emp_dev
AS
SELECT first_name, department_id, salary
FROM employees
WHERE job_id = 'DEV';
Complex view: ตัวอย่างด้านล่างแสดงชื่อแผนกเงินเดือนเฉลี่ยที่ดึงมาในแผนกและจำนวนพนักงานที่ทำงานในแผนกนั้น
CREATE OR REPLACE VIEW EMP_VU
AS
SELECT department_name, AVG (salary) avg_sal, COUNT (first_name) count
FROM employees E, departments D
WHERE E.department_id = D.department_id
GROUP BY department_name;
DESCRIBE [view name]อธิบายโครงสร้างมุมมอง คอลัมน์จะแสดงตามลำดับเดียวกันกับในนิยามมุมมอง
การดำเนินการ DML ในมุมมอง
สามารถใช้การดำเนินการ DML ได้อย่างง่ายดายในมุมมองที่เรียบง่ายดังที่ระบุไว้ก่อนหน้าการดำเนินการแทรกอัปเดตและลบเกิดขึ้นจริงบนตารางฐาน
เมื่อคุณรันคำสั่ง UPDATE, DELETE หรือ INSERT DML บนมุมมองคุณกำลังจัดการแถวข้อมูลสำหรับตารางพื้นฐานหรือตารางที่มุมมองถูกกำหนดไว้มีข้อ จำกัด ในการใช้คำสั่ง UPDATE, DELETE และ INSERT ด้วยมุมมองขั้นแรกในการใช้คำสั่ง UPDATE, DELETE หรือ INSERT กับมุมมองมุมมองนั้นจะต้องสามารถอัพเดตได้มุมมองสามารถอัปเดตได้หากส่วนคำสั่ง SELECT ไม่ได้ระบุฟังก์ชันการรวมใด ๆ ในรายการ SELECT นอกจากนี้มุมมองไม่สามารถ ถูกสร้างขึ้นโดยใช้ GROUP BY, DISTINCT หรือ UNION clause หรือ clauses อนุญาตให้ใช้ฟังก์ชันรวมในการสืบค้นย่อย SELECT ใน FROM clause นอกจากนี้มุมมองไม่สามารถมีคอลัมน์ที่ได้รับใด ๆ ในรายการ SELECT ถัดไปถ้ามุมมองถูกสร้างขึ้นอันเป็นผลมาจากการดำเนินการ JOIN (มุมมองรวม) คำสั่ง UPDATE และ INSERT จะสามารถแก้ไขหรือแทรกแถวลงในตารางฐานทีละรายการเท่านั้น คุณไม่สามารถแก้ไขแถวจากสองตารางขึ้นไปด้วยคำสั่งภาษาจัดการข้อมูล (DML) เดียวในที่สุดคำสั่ง DELETE สามารถดำเนินการกับมุมมองได้ก็ต่อเมื่อตารางถูกอ้างอิงในส่วนคำสั่ง FROM นั่นหมายความว่าคุณไม่สามารถลบแถวจากตารางที่ไม่ได้ระบุไว้
ด้วยคำสั่ง CHECK OPTION
WITH CHECK OPTION เป็นประโยคทางเลือกที่ระบุระดับการตรวจสอบที่ต้องทำเมื่อแทรกหรืออัปเดตข้อมูลผ่านมุมมองหากมุมมองถูกสร้างขึ้นโดยใช้ประโยคตัวเลือกการตรวจสอบทุกแถวที่แทรกหรืออัพเดตในตารางฐานผ่านมุมมอง ต้องเป็นไปตามนิยามมุมมอง โปรดทราบว่าไม่สามารถระบุอ็อพชันได้หากสร้างมุมมองเป็นแบบอ่านอย่างเดียว
ตัวอย่างเช่นมุมมอง V_EMP_DEV ถูกสร้างขึ้นสำหรับพนักงานที่เป็นนักพัฒนา (JOB_ID = DEV)
CREATE OR REPLACE VIEW v_emp_dev
AS
SELECT first_name, department_id, salary,
FROM employees
WHERE job_id = 'DEV'
WITH CHECK OPTION empvu_dev;
ผู้ใช้พยายามอัปเดตเงินเดือนของพนักงาน HR ผ่านมุมมอง แต่พบข้อยกเว้น เนื่องจากมุมมองถูกสร้างขึ้นด้วยตัวเลือกการตรวจสอบ
UPDATE v_emp_dev
SET salary = salary+500
WHERE JOB_ID = 'HR';
ORA-01402: view WITH CHECK OPTION where-clause violation
หากเป็นมุมมองธรรมดาคำสั่ง UPDATE จะไม่มีข้อยกเว้นใด ๆ
การลดมุมมอง
ผู้ดูแลระบบฐานข้อมูล (DBA) หรือเจ้าของข้อมูลพร็อพเพอร์ตี้สามารถดร็อปมุมมองด้วยคำสั่ง DROP VIEW หากข้อมูลพร็อพเพอร์ตี้กำหนดข้อ จำกัด คุณจะต้องระบุประโยค CASCADE CONSTRAINTS เมื่อวางมุมมอง มิฉะนั้นคำสั่ง DROP VIEW จะไม่สามารถประมวลผลได้หากมุมมองอื่นหรืออ็อบเจ็กต์ฐานข้อมูลอื่นเช่นมุมมองที่เหมือนกันหรือมุมมองที่เป็นรูปธรรม (ทั้งสองอ็อบเจ็กต์เหล่านี้จะกล่าวถึงในบทนี้) อ้างถึงมุมมองที่ลดลง Oracle จะไม่ทิ้งอ็อบเจ็กต์ฐานข้อมูลเหล่านี้ แต่ Oracle จะทำเครื่องหมายว่าไม่ถูกต้องคุณสามารถวางออบเจ็กต์ที่ไม่ถูกต้องเหล่านี้หรือกำหนดค่าใหม่เพื่อให้ใช้งานได้อีกครั้ง
คำสั่ง DROP VIEW ด้านล่างจะลบมุมมอง EMP_VU จากฐานข้อมูล
DROP VIEW EMP_VU;
ลำดับ
Oracle มีความสามารถในการสร้างลำดับของตัวเลขที่ไม่ซ้ำกันสำหรับการใช้งานประเภทนี้และเรียกว่าลำดับโดยทั่วไปลำดับจะใช้เพื่อสร้างค่าจำนวนเต็มตามลำดับที่ไม่ซ้ำกันซึ่งใช้เป็นค่าคีย์หลักในตารางฐานข้อมูลลำดับของตัวเลขสามารถ สร้างขึ้นตามลำดับจากน้อยไปหามากหรือจากมากไปหาน้อยโปรดทราบว่าตัวเลขที่สร้างขึ้นตามลำดับจะไม่สามารถย้อนกลับได้
ไวยากรณ์
CREATE SEQUENCE <sequence name>
[INCREMENT BY < number >]
[START WITH < start value number>]
[MAXVALUE < MAXIMUM VLAUE NUMBER>]
[NOMAXVALUE]
[MINVALUE < minimum value number>]
[CYCLE | NOCYCLE]
[CACHE < number of sequence value to cache> | NOCACHE]
[ORDER | NOORDER];
จากไวยากรณ์
คำสั่ง CREATE SEQUENCE ต้องระบุชื่อลำดับเฉพาะ นี่เป็นประโยคเดียวที่จำเป็นในคำสั่ง หากคุณไม่ได้ระบุส่วนคำสั่งอื่น ๆ หมายเลขลำดับทั้งหมดที่สร้างขึ้นจะเป็นไปตามการตั้งค่าเริ่มต้นของ Oracle
คำสั่ง INCREMENT BY กำหนดว่าลำดับจะเพิ่มขึ้นอย่างไรเมื่อแต่ละหมายเลขถูกสร้างขึ้น ค่าเริ่มต้นที่เพิ่มขึ้นคือหนึ่ง อย่างไรก็ตามหากคุณมีเหตุผลที่ดีสำหรับลำดับในการข้ามตัวเลขคุณสามารถระบุการเพิ่มที่แตกต่างกันได้การเพิ่มตัวเลขที่เป็นบวกจะสร้างหมายเลขลำดับจากน้อยไปหามากโดยมีช่วงเวลาเท่ากับช่วงเวลาที่คุณเลือกการเพิ่มตัวเลขเชิงลบจะสร้างหมายเลขลำดับจากมากไปหาน้อย
คำสั่งเริ่มต้นด้วยระบุค่าตัวเลขเริ่มต้นสำหรับลำดับ - หมายเลขเริ่มต้นเริ่มต้นคือหนึ่งนอกจากนี้คุณต้องระบุค่าเริ่มต้นหากคุณมีแถวที่มีข้อมูลอยู่แล้วในคอลัมน์ซึ่งจะจัดเก็บค่าลำดับ
ประโยคคำสั่ง MAXVALUE ระบุค่าสูงสุดที่สามารถเพิ่มลำดับได้ ในกรณีที่ไม่มี MAXVALUE ค่าที่อนุญาตสูงสุดที่สามารถสร้างได้สำหรับลำดับจะค่อนข้างมาก 10 ถึงกำลัง 27 - 1 ค่าดีฟอลต์คือ NOMAXVALUE
อนุประโยค MINVALUE ระบุค่าต่ำสุดของลำดับสำหรับลำดับที่ลดลง (อันที่สร้างตัวเลขจากมากไปหาน้อย) ค่าเริ่มต้นคือ NOMINVALUE
CYCLE clause ระบุว่าค่าลำดับสามารถใช้ซ้ำได้หากลำดับถึง MAXVALUE ที่ระบุ หากลำดับรอบตัวเลขจะถูกสร้างขึ้นโดยเริ่มต้นอีกครั้งที่ค่าเริ่มต้นด้วย
ส่วนคำสั่ง CACHE สามารถปรับปรุงประสิทธิภาพของระบบได้โดยการเปิดใช้งาน Oracle เพื่อสร้างชุดของหมายเลขลำดับที่ระบุเพื่อเก็บไว้ในหน่วยความจำแคช
หากคุณระบุ CACHE โดยไม่ระบุตัวเลขขนาดแคชดีฟอลต์คือ 20 หมายเลขลำดับหรือคุณสามารถระบุ NOCACHE เพื่อป้องกันแคชของหมายเลขลำดับ
คำสั่ง ORDER ระบุว่าหมายเลขลำดับได้รับการจัดสรรตามลำดับเวลาที่แน่นอนตามที่ร้องขอ
NEXTVAL และ CURRVAL
ค่าลำดับถูกสร้างขึ้นโดยใช้คอลัมน์หลอกสองคอลัมน์ชื่อ currval และ nextval คอลัมน์หลอกจะทำงานเหมือนคอลัมน์ตาราง แต่คอลัมน์หลอกจะไม่ถูกเก็บไว้ในตารางจริงๆครั้งแรกที่คุณเลือกคอลัมน์หลอกในค่าถัดไปซึ่งเป็นค่าเริ่มต้นใน ลำดับจะถูกส่งกลับการเลือกตามมาของคอลัมน์หลอกในค่าถัดไปทำให้ลำดับเพิ่มขึ้นตามที่ระบุในส่วนคำสั่ง INCREMENT BY และส่งคืนค่าลำดับที่สร้างขึ้นใหม่คอลัมน์ currval pseudo จะส่งคืนค่าปัจจุบันของลำดับซึ่งเป็นค่าที่ส่งคืนโดย การอ้างอิงสุดท้ายของ nextval
ในเซสชัน NEXTVAL และไม่ใช่ CURRVAL จะต้องเป็นการดำเนินการครั้งแรกในลำดับ เนื่องจากในเซสชันเมื่อ NEXTVAL สร้างหมายเลขแรกของเซสชันจากลำดับ Oracle จะเก็บค่าปัจจุบันไว้ใน CURRVAL
ไวยากรณ์:
Sequence.NEXTVAL
Sequence.CURRVAL
ประเด็นที่ควรสังเกต -
CURRVAL และ NEXTVAL สามารถใช้ได้เฉพาะใน Outer SQL ของคำสั่ง select
CURRVAL และ NEXTVAL สามารถใช้ในคำสั่ง INSERT เพื่อแทนคีย์หลักของคอลัมน์สามารถใช้ได้ทั้งเป็นอนุประโยคย่อยและในส่วนคำสั่ง VALUES
สามารถใช้ CURRVAL และ NEXTVAL เพื่ออัปเดตค่าในตาราง
CURRVAL และ NEXTVAL ไม่สามารถอยู่ในรายการเลือก VIEW โดยมีคีย์เวิร์ด DISTINCT กับ GROUP BY, HAVING หรือ ORDER BY clauses และนิพจน์เริ่มต้นในคำสั่ง CREATE TABLE หรือ ALTER TABLE
การปรับเปลี่ยนลำดับ
เจ้าของลำดับสามารถแก้ไขลำดับเพื่อเปลี่ยนแอตทริบิวต์เช่น INCREMENT BY value, MINVALUE, MAXVALUE, CYCLE หรือ CACHE เท่านั้น โปรดทราบว่าการเปลี่ยนแปลงที่ทำจะแสดงในตัวเลขที่จะเกิดขึ้น
ไวยากรณ์:
ALTER SEQUENCE [sequence name]
INCREMENT BY n
MAXVALUE n
NOCACHE
NOCYCLE
วางลำดับ
คำสั่ง DROP SEQUENCE จะลดลำดับที่ต้องสร้างใหม่หรือไม่จำเป็นอีกต่อไป
DROP SEQUENCE [sequence name]
ดัชนี
ดัชนีคืออ็อบเจ็กต์ฐานข้อมูลที่ใช้เพื่อปรับแต่งประสิทธิภาพของคิวรี SELECT มีดัชนีประเภทต่างๆรวมถึงดัชนีที่ใช้บังคับข้อ จำกัด ของคีย์หลักดัชนีที่ไม่ซ้ำกันดัชนีที่ไม่ซ้ำกันและดัชนีที่เรียงต่อกันเป็นต้นหากไม่มีดัชนี แบบสอบถามต้องการให้ Oracle สแกนแถวทั้งหมดในตารางเพื่อส่งคืนแถวที่ต้องการสำหรับตารางผลลัพธ์ดัชนีจะถูกสร้างขึ้นบนคอลัมน์ของตารางซึ่งจะเก็บค่าทั้งหมดของคอลัมน์ภายใต้เซ็กเมนต์ดัชนีซึ่งแตกต่างจากลำดับดัชนีคือตาราง โดยเฉพาะพวกมันจะถูกทิ้งโดยอัตโนมัติเมื่อโต๊ะถูกทิ้ง
ดัชนีสามารถสร้างขึ้นโดยอัตโนมัติหรือด้วยตนเองเมื่อคุณระบุข้อ จำกัด ของคีย์หลักหรือข้อ จำกัด UNIQUE Oracle จะสร้างดัชนีเฉพาะโดยอัตโนมัติเพื่อรองรับการดึงข้อมูลอย่างรวดเร็วสำหรับตารางที่ระบุ
อีกวิธีหนึ่งคือผู้ใช้สามารถสร้างดัชนีด้วยตนเองเพื่อเพิ่มประสิทธิภาพการสืบค้นดัชนีที่สร้างขึ้นด้วยตนเองอาจไม่ซ้ำกันหรือไม่ซ้ำกันดัชนีที่ไม่ซ้ำกันสามารถเป็น B-Tree, Bitmap หรือดัชนีตามฟังก์ชันได้โดยค่าเริ่มต้น Oracle จะสร้างดัชนี B-Tree บนคอลัมน์ นี่คือไวยากรณ์
ไวยากรณ์
CREATE [UNIQUE][BITMAP]INDEX index
ON table (column [, column]...);
โปรดทราบว่าต้องระบุ UNIQUE และ BITMAP สำหรับดัชนีเฉพาะและบิตแมปเท่านั้นโดยค่าเริ่มต้น Oracle จะสร้างดัชนี B-Tree สำหรับดัชนีปกติ
ดัชนีคอมโพสิต (เรียกอีกอย่างว่าดัชนีเรียงต่อกัน) คือดัชนีที่สร้างขึ้นในหลายคอลัมน์ของตาราง คอลัมน์ในดัชนีผสมสามารถปรากฏในลำดับใดก็ได้และไม่จำเป็นต้องเป็นคอลัมน์ที่อยู่ติดกันในตาราง ดัชนีคอมโพสิตช่วยเพิ่มความเร็วในการดึงข้อมูลแถวสำหรับการสืบค้นที่ WHERE อนุประโยคอ้างอิงทั้งหมดหรือส่วนนำหน้าของคอลัมน์ในดัชนีคอมโพสิต ดัชนีสามารถมีได้สูงสุด 32 คอลัมน์
ตัวอย่างเช่นผู้ใช้สร้างดัชนี IDX_EMP ในคอลัมน์ HIRE_DATE ของตาราง EMPLOYEES การใช้ดัชนีจะลด I / O ของดิสก์โดยการข้ามผ่านการสแกนพา ธ ที่จัดทำดัชนีและค้นหาข้อมูลที่กรองในคอลัมน์ HIRE_DATE
CREATE INDEX IDX_EMP ON employees(hire_date);
การทิ้งดัชนี
ดัชนีไม่สามารถแก้ไขได้ แต่สามารถเปลี่ยนแปลงได้เพื่อการวิเคราะห์สร้างใหม่หรือคำนวณสถิติหากต้องแก้ไขนิยามดัชนีจะต้องทิ้งและสร้างใหม่ไวยากรณ์ของคำสั่ง DROP INDEX นั้นเรียบง่าย
DROP INDEX index_name;
คำพ้องความหมาย
คำพ้องความหมายเป็นนามแฝงนั่นคือรูปแบบของชวเลขที่ใช้เพื่อลดความซับซ้อนของงานในการอ้างอิงวัตถุฐานข้อมูลแนวคิดนี้คล้ายคลึงกับการใช้ชื่อเล่นสำหรับเพื่อนและคนรู้จักการอ้างอิงวัตถุที่เป็นของผู้ใช้รายอื่นต้องใช้ชื่อสคีมา นำหน้าด้วย ด้วยความช่วยเหลือของคำพ้องความหมายคุณจะลดความพยายามในการอ้างอิงวัตถุพร้อมกับชื่อสคีมาด้วยวิธีนี้คำพ้องความหมายให้ความโปร่งใสของตำแหน่งเนื่องจากชื่อพ้องซ่อนชื่อวัตถุจริงและเจ้าของ
คำพ้องความหมายมีสองประเภทคือสาธารณะและส่วนตัวสามารถใช้คำพ้องความหมายสาธารณะเพื่อให้ผู้ใช้ระบบทุกคนสามารถเข้าถึงอ็อบเจ็กต์ได้อย่างง่ายดาย ในความเป็นจริงบุคคลที่สร้างคำพ้องความหมายสาธารณะไม่ได้เป็นเจ้าของคำพ้องความหมาย แต่จะอยู่ในกลุ่มผู้ใช้ PUBLIC ที่มีอยู่ใน Oracle ในทางกลับกันคำพ้องความหมายส่วนตัวเป็นของผู้ใช้ระบบที่สร้างขึ้นและอยู่ในนั้น สคีมาของผู้ใช้
ไวยากรณ์
CREATE [PUBLIC] SYNONYM [synonym name]
FOR OBJECT;
ผู้ใช้ระบบสามารถให้สิทธิ์ในการใช้คำพ้องความหมายส่วนตัวที่พวกเขาเป็นเจ้าของกับผู้ใช้ระบบอื่น ๆ ในการสร้างคำพ้องความหมายคุณต้องมีสิทธิ์ CREATE SYNONYM นอกจากนี้คุณต้องมีสิทธิ์ CREATE PUBLIC SYNONYM เพื่อสร้างคำพ้องสาธารณะ หากคำพ้องถูกประกาศเป็นสาธารณะชื่อพ้องไม่สามารถใช้เป็นคำพ้องสาธารณะได้แล้วการพยายามสร้างคำพ้องสาธารณะที่มีอยู่แล้วจะทำให้คำสั่ง CREATE PUBLIC SYNONYM ล้มเหลวและ Oracle จะส่งคืน ORA-00955: ชื่อถูกใช้โดยข้อความแสดงข้อผิดพลาดของวัตถุที่มีอยู่แล้ว
ภาพประกอบ
พิจารณาผู้ใช้สองคน U1 และ U2 U1 มีสิทธิ์เข้าถึงตาราง EMPLOYEES ดังนั้นเพื่อเปิดใช้งานการเข้าถึงบนตาราง EMPLOYEES ไปยัง U2 ด้วยเช่นกันสามารถสร้างคำพ้องความหมายใน U2 schema ต้องให้สิทธิ์การเข้าถึงจาก U1 ถึง U2
CONN U2/U2
SQL> CREATE SYNONYM EMP_SYN FOR U1.employees;
CONN U1/U1
SQL> GRANT ALL ON EMP_SYN TO U2;
CONN U2/U2
SQL> SELECT * FROM EMP_SYN;
ลดคำพ้องความหมาย
คุณสามารถวางคำพ้องความหมายที่เป็นเจ้าของได้ ในการวางคำพ้องความหมายสาธารณะคุณต้องมีสิทธิ์ DROP PUBLIC SYNONYM
DROP SYNONYM EMP_SYN;