Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
1,9 MB
Nội dung
420 18.7 The Recycle Bin
can also add a comment to the end of a line of code by placing the
hyphens after all executable code.
Single-Line Comments. Precede a line with the REM or REMARK
keyword to mark that line as a comment.
The following query demonstrates all three types of comments. See the
result in Figure 18.28.
REM This query looks for Artists with
REM a letter "a" in their names.
SELECT
/* Ignore this line
and this line
and this line too
*/
NAME
this is the FROM clause
FROM ARTIST
WHERE NAME LIKE '%a%' and this is the WHERE clause
;
In a color graphic, the comments would be highlighted in red within
SQL*Plus Worksheet. This makes them much easier to see. I have high-
lighted commented sections by boxing them, as shown in Figure 18.28.
The penultimate section in this chapter on tables will examine the recy-
cle bin, which is newly introduced in Oracle Database 10g.
18.7 The Recycle Bin
Oracle Database 10g introduces a recycle bin. This feature is certainly use-
ful from the perspective of database administration, but it could cause
problems with space and perhaps performance if the recycle bin is not regu-
larly monitored and cleared. There are several changes to various DDL
commands associated with the recycle bin as listed below. The syntax dia-
gram in Figure 18.29 shows generally applicable recycle bin syntax.
The DROP TABLE command now requires a PURGE option if an
object is not to be retained in the recycle bin.
Chap18.fm Page 420 Thursday, July 29, 2004 10:13 PM
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
18.8 Metadata Views 421
Chapter 18
The new PURGE command is required to allow clearing the recycle
bin.
The Oracle Database 10g SQL Reference Manual states that the
FLASHBACK TABLE command is used to recover a table from the
recycle bin.
This chapter concludes with a short section on database metadata as
directly applicable to this chapter.
18.8 Metadata Views
This section lists metadata views allowing access into the structural details
of tables. Chapter 19 describes the basis and detail of Oracle Database
metadata views.
USER_TABLES. Table structural definitions.
USER_TAB_COLS and USER_TAB_COLUMNS. Table column
definitions where USER_TAB_COLS includes hidden columns.
Figure 18.28
Commenting SQL
Code.
Chap18.fm Page 421 Thursday, July 29, 2004 10:13 PM
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
422 18.8 Metadata Views
USER_TAB_COMMENTS and USER_COL_COMMENTS.
Comments on table columns.
USER_UNUSED_COL_TABS. This view shows columns in tables
marked as SET UNUSED and not physically dropped from tables.
DBA_RECYCLEBIN and USER_RECYCLEBIN. These two
metadata views represent all recycle bins for all users and the specific
connected user recycle bin. The RECYCLEBIN view is often referred
to and is simply a synonym for the USER_RECYCLEBIN view. See
Chapter 22 for details on synonyms.
USER_OBJECT_TABLES. Object type table structures.
USER_TAB_PARTITIONS and USER_TAB_SUBPARTITIONS.
Table partition and subpartition structures.
USER_PART_TABLES. Table partitioning details of tables at the
partition rather than the table level, as is the case for the
USER_TAB_PARTITIONS and USER_TAB_SUBPARTITIONS
views.
Figure 18.29
Syntax for the
Recycle Bin.
Chap18.fm Page 422 Thursday, July 29, 2004 10:13 PM
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
18.9 Endnotes 423
Chapter 18
The script executed in Figure 18.30 matches all tables and table col-
umns for the currently logged-in user. This gives an example of the power
of metadata views. The script is included in Appendix B.
That covers all we want to cover about tables at present. Chapter 20 cov-
ers constraints and partially returns to the subject of tables. The next chap-
ter looks at views.
18.9 Endnotes
1. Oracle Performance Tuning for 9i and 10g (ISBN: 1-55558-305-9)
Figure 18.30
Querying
USER_TABLES
and
USER_TAB_COL
UMNS.
Chap18.fm Page 423 Thursday, July 29, 2004 10:13 PM
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
This page intentionally left blank
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
425
19
Views
In this chapter:
What is a view?
What types of views are available?
How do we use views?
What are metadata views?
There are various examples of views in other chapters. This chapter
describes views in detail. A view is an overlay onto one or more other data
sources. A data source can be a table, view, or multiples thereof.
19.1 What Is a View?
Imagine that you are working in an insurance company, where part of your
job duties are to help users who have trouble writing queries for reports.
The users have had basic training in writing SQL queries, but they often get
stuck when they must join many tables or use subqueries. If you could set
up the join or subquery ahead of time, then the users would have no trou-
ble adding to it to refine their report requirements. This is one of the best
reasons to create a view.
Note:
This approach can, however, be bad for performance because the
entire query in the view will always be executed, whatever filtering is placed
on a query against a view.
1
A
view
is a query that is stored in the database and executed to create a
virtual table. A view is given a name, is owned by a schema, and is executed
Chap19.fm Page 425 Thursday, July 29, 2004 10:13 PM
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
426
19.2
Types and Uses of Views
whenever a query or other SQL command uses the view. The tables refer-
enced in the view’s query are called
base tables
.
Views do not contain any data of their own, and therefore do not
require storage. Views belong to a schema, and you can grant privileges
such as SELECT, INSERT, UPDATE, and DELETE on views, even if the
user does not have any privileges on the base table(s) used in the view.
Views are most often used for security purposes and as an aid to query-
ing the database; however, some views can be used to insert, update, and
delete data in the underlying table.
19.2 Types and Uses of Views
Here are some of the more common reasons for creating a view:
Security
. Create a view with a limited subset of the rows and/or col-
umns in a table or tables and give the user permission to use the view,
but not the base tables.
Simplicity
. Create a view that combines tables that have complex
relationships so users writing queries do not need to understand the
relationships.
Complex Joins
. Sometimes queries cannot be done without great
difficulty unless you create a view in something like a temporary table
first. For example, you can create a view with a GROUP BY clause
that summarizes data. You can join that summary data with other
tables only by using a view.
Materialized Views
. This is not a view as such because the data in the
view is physically stored in the materialized view, thus the term
materi-
alized
. Materialized views are a little too specialized for this book.
Regardless of why a view is created, it falls into one of three basic catego-
ries or types of views:
Simple View
. A simple view contains a query on a single table. For
example, a view that lists the names, addresses, and zip codes of all
artists in the USA is a simple view because only the ARTIST table is
queried in the view. Simple views can be used to narrow the focus or
visible data window of a specific user from the entire table to a subset
Chap19.fm Page 426 Thursday, July 29, 2004 10:13 PM
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
19.3
CREATE VIEW Syntax 427
Chapter 19
of the rows or a subset of the columns. The best explanation for this
type of view is security where, for instance, different customers shar-
ing the same database can only view their own data. With a few
restrictions (examined later in this chapter), you can update the table
on which the view is built by updating the view. You can also insert
and delete rows in the base table through the view.
Constraint View
. A constraint view can be used to insert a new row
into the underlying table as long as the row would be returned by the
query, or the row exists for the view. For example, if the view only
looks at ARTIST rows in the USA, you could not insert an ARTIST
row where the artist is in France. The same rule applies to rows that
are updated via the constraint view. Most constraint views are based
on simple views, although certain complex views can also be used as
constraint views. Constraint views are most often used as an easy way
to enforce business rules in applications without the application
developer doing any extra coding.
Note:
This approach applies views to ease of application coding rather than
security. Views are possibly more applicable in client-server environments.
Scalability issues may arise for large, very busy OLTP databases.
Complex View
. A complex view contains a query on more than one
table. This type of view allows you to wrap complexities inside the
view’s query so they are hidden from the user or application devel-
oper. Complex views are most often used for simplifying end-user
reporting by providing a table-like structure for users to query. For
example, you could create a view that displays the CD title, artist
name, and song title (which are found in three different tables).
Complex views usually cannot be used to insert, update, or delete
rows from the underlying tables.
19.3 CREATE VIEW Syntax
Figure 19.1 shows the syntax of the CREATE VIEW statement. The same
syntax applies to all types of views.
The next three sections look at how to create each of the three types of
views: simple, constraint, and complex.
Chap19.fm Page 427 Thursday, July 29, 2004 10:13 PM
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
428
19.3
CREATE VIEW Syntax
19.3.1 Creating Simple Views
A simple view is the easiest type of view to create.
CREATE VIEW USARTISTS AS
SELECT ARTIST_ID, NAME, CITY, STATE_PROVINCE, ZIP
FROM ARTIST WHERE COUNTRY = 'USA';
The view we have just created can be queried as if it were a table. When
you execute a query on a view, the entire query contained within the view
definition is executed to retrieve the columns and rows of the subquery,
Then your query is applied to the view and the final results are displayed.
Query the view by executing these format commands and query. Figure
19.2 shows the result.
COLUMN NAME FORMAT A20
COLUMN CITY FORMAT A15
COLUMN STATE_PROVINCE FORMAT A10
SELECT * FROM USARTISTS;
You can use a view in a join as if it were another table. For example, you
can list all U.S. artist names and their song titles with this query:
SELECT NAME, TITLE FROM USARTISTS NATURAL JOIN SONG
ORDER BY 1,2;
Figure 19.1
CREATE VIEW
Syntax Is Fairly
Simple.
Chap19.fm Page 428 Thursday, July 29, 2004 10:13 PM
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
19.3
CREATE VIEW Syntax 429
Chapter 19
Now let’s take the simple view and add a constraint clause. The result
will be a constraint view.
19.3.2 Creating Constraint Views
A simple view usually allows you to update data in the underlying table
through the view. You will examine this capability later in this chapter.
There is a problem that sometimes crops up when using views to insert or
update data: You can create a record that does not fit the view’s query and
therefore does not appear in the view. For example, imagine that you use
the USARTISTS view to update the country from USA to Canada for one
of the artists. You want to check the results, but querying the view no
longer displays the record. It is as if the record disappeared after you
updated it. Obviously, the record is in the table and simply is not displayed
in the view. However, this fact may not be obvious to other users who are
not familiar with the query that is used by the view.
To prevent users from updating or inserting records not fitting within
the view, you create a constraint view. Another good reason to use a con-
straint view is that it provides a form of security. Views are frequently used
to limit a user’s access to certain rows and columns within the base table.
The user should not be able to update rows not appearing in the view, but
Figure 19.2
Querying a View Is
Just Like Querying
a Table.
Chap19.fm Page 429 Thursday, July 29, 2004 10:13 PM
Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark.
[...]... Behind the scenes, however, the Oracle Database 10g Optimizer merges the query that defines Chapter 19 Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark 436 19.5 Working with Views Figure 19.7 A Query Combined with the View’s Query the view with the query that uses the view, into a single query This query is parsed and stored in the shared SQL memory Then the query is executed... tried to update one of the rows in the view with a country other than USA Now, let’s look at some more interesting things you can do using complex views 19.3.3 Creating Complex Views Complex views have more than one base table Complex views include a wide variety of queries Two common ones are views with joins and views with inline subqueries 19.3.3.1 Views with Joins Let’s dive right in by creating... it with the WITH READ ONLY clause as in the following example: CREATE OR REPLACE VIEW OLDMUSIC_VIEW AS SELECT MUSICCD_ID, TITLE CDNAME , PRESSED_DATE, PLAYING_TIME FROM MUSICCD WHERE PRESSED_DATE < '01-JUL-01' WITH READ ONLY; Simple views and simple constraint views are really not too much different from inserting into the base table itself, simply having more limitations 19.5.2.1 DML and Views with. .. CREATE VIEW Syntax without the constraint clause, this could happen and could be a violation of your business rules Create a constraint view that looks like the simple view, except it includes the WITH CHECK OPTION clause, by running the following command: CREATE VIEW CONSTRAINT_USARTISTS AS SELECT ARTIST_ID, NAME, CITY, STATE_PROVINCE, ZIP, COUNTRY FROM ARTIST WHERE COUNTRY = 'USA' WITH CHECK OPTION... GUESTAPPEARANCE GA ON (S.SONG_ID = GA.SONG_ID); We would like to see the name of the artist making a guest appearance The following query joins the view with the ARTIST table, which would become a very complex query without the view The complexity is simply passed on to Oracle Database, potentially hurting performance in larger, busier environments Figure 19.8 shows part of the result SELECT V.ARTIST, V.TITLE,... the base table or tables referenced by the view 19.5 Working with Views Most views are used to query the base tables on which they are built Some views are used to insert, update, and delete data in the base tables The next sections show you how to query views and how to make changes to data using views Following this section, we deal withOracle Database metadata data dictionary views 19.5.1 Querying... Performance views are generally named as V$name V$ views store and track all types of performance statistics and data in the database Performance views relate to tuning an Oracle Database2 and are largely out of the scope for this book on Oracle SQL All of the metadata views overlay and access the metadata from system tables stored either in the SYS, SYSTEM, or SYSAUX schemas The database system tables are... OBJECT_TYPE FORMAT A24 HEADING "Type" SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM USER_OBJECTS ORDER BY 1,2; In the current release of Oracle Database 10g, the query SELECT COUNT(*) FROM DICTIONARY yields a count of 600 data dictionary metadata and performance views As you work withOracle Database, you will learn more about at least some of these views This chapter has described views, changing views, and... remove this watermark 19.8 Endnotes 445 Figure 19.11 The USER_OBJECTS Metadata View Oracle Database metadata data dictionary views was also discussed The next chapter examines constraints, which can be placed on both tables and views 19.8 Endnotes 1 Oracle Performance Tuning for 9i and 10g (ISBN: 1-55558-305-9) 2 Oracle Performance Tuning for 9i and 10g (ISBN: 1-55558-305-9) Chapter 19 Please purchase... using the CREATE TABLE statement Let’s experiment with different types of constraints Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark 20.2 Managing Constraints 451 Figure 20.2 CREATE TABLE with Detailed Constraints Syntax 20.2.1.1 Primary Key and Unique Constraints A unique constraint forces a column value to be unique within all rows of a table A primary key is forced . variety of queries. Two common ones are views with joins and views
with inline subqueries.
19.3.3.1 Views with Joins
Let’s dive right in by creating.
19.5
Working with Views
the view with the query that uses the view, into a single query. This query is
parsed and stored in the shared SQL memory. Then