Creating Other Schema Objects
Creating Other Schema Objects
Objectives
After completing this lesson, you should be able to do the following: Create simple and complex views Retrieve data from views Create, maintain, and use sequences Create and maintain indexes Create private and public synonyms
10 - 2
Database Objects
Object Table
View
Sequence Index Synonym
10 - 3
What Is a View?
EMPLOYEES table
10 - 4
Advantages of Views
10 - 5
Feature Number of tables Contain functions Contain groups of data DML operations through a view
10 - 6
Creating a View
10 - 7
Creating a View
Create the EMPVU80 view, which contains details of employees in department 80:
CREATE VIEW empvu80 AS SELECT employee_id, last_name, salary FROM employees WHERE department_id = 80; View created.
Describe the structure of the view by using the iSQL*Plus DESCRIBE command:
DESCRIBE empvu80
10 - 8
Creating a View
Select the columns from this view by the given alias names:
10 - 9
10 - 10
Modifying a View
Modify the EMPVU80 view by using a CREATE OR REPLACE VIEW clause. Add an alias for each column name:
CREATE OR REPLACE VIEW empvu80 (id_number, name, sal, department_id) AS SELECT employee_id, first_name || ' ' || last_name, salary, department_id FROM employees WHERE department_id = 80; View created.
Column aliases in the CREATE OR REPLACE VIEW clause are listed in the same order as the columns in the subquery.
10 - 11
Create a complex view that contains group functions to display values from two tables:
CREATE OR REPLACE VIEW dept_sum_vu (name, minsal, maxsal, avgsal) AS SELECT d.department_name, MIN(e.salary), MAX(e.salary),AVG(e.salary) FROM employees e JOIN departments d ON (e.department_id = d.department_id) GROUP BY d.department_name; View created.
10 - 12
10 - 13
10 - 14
10 - 15
You can ensure that DML operations performed on the view stay in the domain of the view by using the WITH CHECK OPTION clause:
CREATE OR REPLACE VIEW empvu20 AS SELECT * FROM employees WHERE department_id = 20 WITH CHECK OPTION CONSTRAINT empvu20_ck ; View created.
Any attempt to change the department number for any row in the view fails because it violates the WITH CHECK OPTION constraint.
10 - 16
You can ensure that no DML operations occur by adding the WITH READ ONLY option to your view definition. Any attempt to perform a DML operation on any row in the view results in an Oracle server error.
10 - 17
CREATE OR REPLACE VIEW empvu10 (employee_number, employee_name, job_title) AS SELECT employee_id, last_name, job_id FROM employees WHERE department_id = 10 WITH READ ONLY ; View created.
10 - 18
Removing a View
You can remove a view without losing data because a view is based on underlying tables in the database.
DROP VIEW view; DROP VIEW empvu80; View dropped.
10 - 19
This practice covers the following topics: Creating a simple view Creating a complex view Creating a view with a check constraint Attempting to modify data in the view Removing views
10 - 20
Sequences
Description Basic unit of storage; composed of rows Logically represents subsets of data from one or more tables Generates numeric values Improves the performance of some queries Gives alternative names to objects
10 - 21
Sequences
A sequence: Can automatically generate unique numbers Is a sharable object Can be used to create a primary key value Replaces application code Speeds up the efficiency of accessing sequence values when cached in memory
2 1 3
4 5
6 7
8 9
10
10 - 22
10 - 23
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 10 START WITH 120 MAXVALUE 9999 NOCACHE NOCYCLE; Sequence created.
10 - 24
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.
10 - 25
Using a Sequence
10 - 27
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
10 - 28
Modifying a Sequence
Change the increment value, maximum value, minimum value, cycle option, or cache option:
ALTER SEQUENCE dept_deptid_seq INCREMENT BY 20 MAXVALUE 999999 NOCACHE NOCYCLE; Sequence altered.
10 - 29
10 - 30
Indexes
Description Basic unit of storage; composed of rows Logically represents subsets of data from one or more tables Generates numeric values Improves the performance of some queries Gives alternative names to objects
10 - 31
Indexes
An index: Is a schema object Can be used by the Oracle server to speed up the retrieval of rows by using a pointer Can reduce disk I/O by using a rapid path access method to locate data quickly Is independent of the table that it indexes Is used and maintained automatically by the Oracle server
10 - 32
Automatically: A unique index is created automatically when you define a PRIMARY KEY or UNIQUE constraint in a table definition.
Manually: Users can create nonunique indexes on columns to speed up access to the rows.
10 - 33
Creating an Index
Improve the speed of query access to the LAST_NAME column in the EMPLOYEES table:
CREATE INDEX emp_last_name_idx ON employees(last_name); Index created.
10 - 34
10 - 35
Removing an Index
Remove an index from the data dictionary by using the DROP INDEX command:
DROP INDEX index;
To drop an index, you must be the owner of the index or have the DROP ANY INDEX privilege.
10 - 36
Synonyms
Description Basic unit of storage; composed of rows Logically represents subsets of data from one or more tables Generates numeric values Improves the performance of some queries Gives alternative names to objects
10 - 37
Synonyms
Simplify access to objects by creating a synonym (another name for an object). With synonyms, you can: Create an easier reference to a table that is owned by another user Shorten lengthy object names
CREATE [PUBLIC] SYNONYM synonym FOR object;
10 - 38
Drop a synonym:
DROP SYNONYM d_sum; Synonym dropped.
10 - 39
Summary
In this lesson, you should have learned how to: Create, use, and remove views Automatically generate sequence numbers by using a sequence generator Create indexes to improve query retrieval speed Use synonyms to provide alternative names for objects
10 - 40
This practice covers the following topics: Creating sequences Using sequences Creating nonunique indexes Creating synonyms
10 - 41