• No results found

Creating Other Schema Objects. Objectives

N/A
N/A
Protected

Academic year: 2021

Share "Creating Other Schema Objects. Objectives"

Copied!
21
0
0

Loading.... (view fulltext now)

Full text

(1)

10

Copyright © 2009, Oracle. All rights reserved.

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

(2)

Copyright © 2009, Oracle. All rights reserved. 10 - 3

Database Objects

Object Description

Table Basic unit of storage; composed of rows View Logically represents subsets of data from one or

more tables

Sequence Generates numeric values

Index Improves the performance of some queries Synonym Gives alternative names to objects

What Is a View?

(3)

Copyright © 2009, Oracle. All rights reserved. 10 - 5

Advantages of Views

To restrict data access To make complex queries easy To provide data independence To present different views of

the same data

Simple Views and Complex Views

Feature Simple Views Complex Views

Number of tables One One or more

Contain functions No Yes

Contain groups of data No Yes

DML operations through a view

(4)

Copyright © 2009, Oracle. All rights reserved. 10 - 7

Creating a View

• You embed a subquery in the CREATE VIEW statement:

• The subquery can contain complex SELECT syntax.

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view [(alias[, alias]...)]

AS subquery

[WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY [CONSTRAINT constraint]];

Creating a View

• Create the EMPVU80 view, which contains details of employees in department 80:

• Describe the structure of the view by using the DESCRIBE command:

DESCRIBE empvu80 CREATE VIEW empvu80

AS SELECT employee_id, last_name, salary FROM employees

WHERE department_id = 80; CREATE VIEW succeeded.

(5)

Copyright © 2009, Oracle. All rights reserved. 10 - 9

Creating a View

• Create a view by using column aliases in the subquery:

• Select the columns from this view by the given alias names:

CREATE VIEW salvu50

AS SELECT employee_id ID_NUMBER, last_name NAME, salary*12 ANN_SALARY

FROM employees

WHERE department_id = 50; CREATE VIEW succeeded.

SELECT *

FROM salvu50;

(6)

Copyright © 2009, Oracle. All rights reserved. 10 - 11

Modifying a View

• Modify the EMPVU80 view by using a CREATE OR REPLACE VIEW clause. Add an alias for each column name:

• Column aliases in the CREATE OR REPLACE VIEW clause are listed in the same order as the columns in the subquery.

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;

CREATE VIEW succeeded.

Creating a Complex View

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;

(7)

Copyright © 2009, Oracle. All rights reserved. 10 - 13

Rules for Performing

DML Operations on a View

• You can usually perform DML operations

on simple views.

• You cannot remove a row if the view contains the following:

– Group functions

– A GROUP BY clause

– The DISTINCT keyword

– The pseudocolumn ROWNUM keyword

Rules for Performing

DML Operations on a View

You cannot modify data in a view if it contains:

• Group functions

• A GROUP BY clause

• The DISTINCT keyword

• The pseudocolumn ROWNUM keyword

(8)

Copyright © 2009, Oracle. All rights reserved. 10 - 15

Rules for Performing

DML Operations on a View

You cannot add data through a view if the view includes:

• Group functions

• A GROUP BY clause

• The DISTINCT keyword

• The pseudocolumn ROWNUM keyword

• Columns defined by expressions

• NOT NULL columns in the base tables that are not selected by the view

Using the WITH CHECK OPTION Clause

• You can ensure that DML operations performed on the

view stay in the domain of the view by using the WITH CHECK OPTION clause:

• Any attempt to change the department number for any row in the view fails because it violates the WITH CHECK OPTION constraint.

CREATE OR REPLACE VIEW empvu20 AS SELECT *

FROM employees

WHERE department_id = 20

WITH CHECK OPTION CONSTRAINT empvu20_ck ; CREATE VIEW succeeded.

(9)

Copyright © 2009, Oracle. All rights reserved. 10 - 17

Denying DML Operations

• 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)

Copyright © 2009, Oracle. All rights reserved. 10 - 19

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 ;

CREATE VIEW succeeded.

Denying DML Operations

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;

(11)

Copyright © 2009, Oracle. All rights reserved. 10 - 21

Practice 10: Overview of Part 1

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

Sequences

Object Description

Table Basic unit of storage; composed of rows View Logically represents subsets of data from one or

more tables

Sequence Generates numeric values

(12)

Copyright © 2009, Oracle. All rights reserved. 10 - 23

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

1 2 4 3 5 6 8 7 10 9

CREATE SEQUENCE Statement:

Syntax

Define a sequence to generate sequential numbers automatically:

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

(13)

Copyright © 2009, Oracle. All rights reserved. 10 - 25

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; CREATE SEQUENCE succeeded.

NEXTVAL and CURRVAL Pseudocolumns

• 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.

(14)

Copyright © 2009, Oracle. All rights reserved. 10 - 27

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.CURRVAL FROM dual;

(15)

Copyright © 2009, Oracle. All rights reserved. 10 - 29

Caching Sequence Values

• 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

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

(16)

Copyright © 2009, Oracle. All rights reserved. 10 - 31

Guidelines for Modifying

a Sequence

• You must be the owner or have the ALTER privilege 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.

• To remove a sequence, use the DROP statement:

DROP SEQUENCE dept_deptid_seq;

(17)

Copyright © 2009, Oracle. All rights reserved. 10 - 33

Indexes

Object Description

Table Basic unit of storage; composed of rows View Logically represents subsets of data from one or

more tables

Sequence Generates numeric values

Index Improves the performance of some queries Synonym Gives alternative names to objects

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

(18)

Copyright © 2009, Oracle. All rights reserved. 10 - 35

How Are Indexes Created?

• 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.

Creating an Index

• Create an index on one or more columns:

• 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);

CREATE INDEX succeeded.

CREATE INDEX index

(19)

Copyright © 2009, Oracle. All rights reserved. 10 - 37

Index Creation Guidelines

Create an index when:

A column contains a wide range of values A column contains a large number of null values

One or more columns are frequently used together in a WHERE clause or a join condition

The table is large and most queries are expected to retrieve less than 2% to 4% of the rows in the table

Do not create an index when:

The columns are not often used as a condition in the query

The table is small or most queries are expected to retrieve more than 2% to 4% of the rows in the table

The table is updated frequently

The indexed columns are referenced as part of an expression

Removing an Index

• Remove an index from the data dictionary by using the DROP INDEX command:

• Remove the UPPER_LAST_NAME_IDX index from the data dictionary:

DROP INDEX emp_last_name_idx; DROP INDEX index;

(20)

Copyright © 2009, Oracle. All rights reserved. 10 - 39

Synonyms

Object Description

Table Basic unit of storage; composed of rows View Logically represents subsets of data from one or

more tables

Sequence Generates numeric values

Index Improves the performance of some queries Synonym Gives alternative names to objects

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;

(21)

Copyright © 2009, Oracle. All rights reserved. 10 - 41

Creating and Removing Synonyms

• Create a shortened name for the DEPT_SUM_VU view:

• Drop a synonym:

CREATE SYNONYM d_sum FOR dept_sum_vu;

CREATE SYNONYM succeeded.

DROP SYNONYM d_sum; DROP SYNONYM succeeded.

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

References

Related documents

Schema let userSchema new Schema id new Schema Types Mongoose Validation Examples Vegibit unique data or an array JSON Schema validation. When nesting schemas children in most

Alter column type of audit parameters with other dbs a retailer of first parameter, schemas without them from existing apps on code snippets of schema table postgres queries, and

Table basics SQL Server tables are contained within this object containers that are called Schemas The schema also works as a security boundary where to can explore database

Active Model allows Rails to utilize other ORM frameworks in place of Active Record?. Model-View-Controller (MVC)

Based on semi- structured, face-to-face interviews with journalists from the Turkish Cypriot media and Greek Cypriot media, it explores journalists’ self-reflection of their roles

It to both group elements in microstrategy intelligence development of schema objects microstrategy object is used database in?. Twig code to pat the Twig sandbox and neither

You update our database tables sql query lists all the schema view the data rows in operator, software tools for objects that you are database.. Ms sql script you have rectangular

PostgreSQL DELETE statement allows you to delete one task more rows from the table then following shows basic.. DELETE records from search table in Teradata DELETE FROM tablename