Managing Schema Objects
Objectives
After completing this lesson, you should be able to
do the following:
Define schema objects and data types
Create and modify tables
Define constraints
View the columns and contents of a table
Create indexes
Create views
Create sequences
Explain the use of temporary tables
What Is a Schema?
owns
HR user
HR schema
>
Schema
Constraints
Indexes
Views
Sequences
Temp Tables
Data Dict
Accessing Schema Objects
Naming Database Objects
The length of names must be from 1 to 30 bytes,
with these exceptions:
Names of databases are limited to 8 bytes.
Names of database links can be as long as 128 bytes.
Nonquoted names cannot be Oracle-reserved words.
Nonquoted names must begin with an alphabetic
character from your database character set.
Quoted names are not recommended.
Specifying Data Types in Tables
Common data types:
CHAR(size [BYTE|CHAR]): Fixed-length character data of
size bytes or characters
VARCHAR2(size [BYTE|CHAR]): Variable-length character
string having a maximum length of size bytes or characters
DATE: Valid date ranging from January 1, 4712 B.C. through
A.D. December 31, 9999
NUMBER(p,s): Number with precision p and
scale s
Creating and Modifying Tables
Specify the table name and
schema.
Specify the column names, data types,
and lengths.
Schema
Constraints
Indexes
Views
Sequences
Temp Tables
Data Dict
Understanding Data Integrity
>
DEPARTMENTS
JOB_HISTORY
EMPLOYEE_ID (PK,FK)
START_DATE (PK)
END_DATE
JOB_ID (FK)
DEPARTMENT_ID (FK)
EMPLOYEES
EMPLOYEE_ID (PK)
FIRST_NAME
LAST_NAME
EMAIL
PHONE_NUMBER
HIRE_DATE
JOB_ID (FK)
SALARY
COMMISION_PCT
MANAGER_ID (FK)
DEPARTMENT_ID (FK)
DEPARTMENT_ID (PK)
DEPARTMENT_NAME
MANAGER_ID
LOCATION_ID (FK)
LOCATIONS
LOCATION_ID (PK)
STREET_ADDRESS
POSTAL_CODE
CITY
STATE_PROVINCE
COUNTRY_ID (FK)
COUNTRIES
JOBS
JOB_ID (PK)
JOB_TITLE
MIN_SALARY
MAX_SALARY
COUNTRY_ID (PK)
COUNTRY_NAME
REGION_ID (FK)
REGIONS
REGION_ID (PK)
REGION_NAME
Defining Constraints
Constraint Violations
Examples of how a constraint can be violated are:
Inserting a duplicate primary key value
Deleting the parent of a child row in a referential integrity
constraint
Updating a column to a value that is out of the bounds of a check
constraint
ID
101
101
102
103
AGE
22
49
16
30
Constraint States
DISABLE
NOVALIDATE
DISABLE
VALIDATE
ENABLE
NOVALIDATE
ENABLE
VALIDATE
No DML
New data
Existing data
Constraint Checking
Constraints are checked at the time of:
Statement execution, for nondeferred constraints
COMMIT, for deferred constraints
Case: DML statement, followed by COMMIT
1
Nondeferred constraints
checked
COMMIT issued
Deferred constraints checked
COMMIT complete
Creating Constraints with SQL:
Examples
a
ALTER TABLE countries
ADD (UNIQUE(country_name) ENABLE NOVALIDATE);
ALTER TABLE employees ADD CONSTRAINT pk PRIMARY KEY (employee_id)
CREATE TABLE t1 (pk NUMBER PRIMARY KEY, fk NUMBER, c1 NUMBER, c2 NUMBER,
CONSTRAINT ri FOREIGN KEY (fk) REFERENCES t1(pk), CONSTRAINT ck1 CHECK (pk > 0
and c1 > 0));
Viewing the Columns in a Table
Viewing the Contents of a Table
Actions with Tables
Dropping a Table
Dropping a table removes:
Data
DROP TABLE hr.employees PURGE;
Table structure
Database triggers
Corresponding indexes
Associated object privileges
Optional clauses for the DROP TABLE statement:
CASCADE CONSTRAINTS: Dependent referential integrity constraints
PURGE: No flashback possible
Truncating a Table
TRUNCATE TABLE hr.employees;
Truncating a table makes its row data unavailable, and optionally
releases used space.
Corresponding indexes are truncated.
Schema
Constraints
>
Indexes
Views
Sequences
Temp Tables
Data Dict
Indexes
WHERE key = 22
Key
Row
pointer
22
22
Index
Table
Types of Indexes
These are several types of index structures available to
you, depending on the need:
A B-tree index is in the form of a binary tree and is the default
index type.
A bitmap index has a bitmap for each distinct value indexed, and
each bit position represents a row that may or may not contain
the indexed value. This is best for low-cardinality columns.
B-Tree Index
Index entry
Root
Branch
Index entry header
Leaf
Key column length
Key column value
ROWID
Bitmap Indexes
File 3
Block 10
Table
Block 11
Block 12
Index
Key
Start
ROWID
End
ROWID
Bitmap
<Blue, 10.0.3, 12.8.3, 1000100100010010100>
<Green, 10.0.3, 12.8.3, 0001010000100100000>
<Red, 10.0.3, 12.8.3, 0100000011000001001>
<Yellow, 10.0.3, 12.8.3, 0010001000001000010>
Index Options
A unique index ensures that every indexed value is unique.
An index can have its key values stored in ascending or
descending order.
A reverse key index has its key value bytes stored in
reverse order.
A composite index is one that is based on more than one
column.
A function-based index is an index based on a functions
return value.
A compressed index has repeated key values removed.
Creating Indexes
CREATE INDEX my_index ON
employees(last_name, first_name);
What Is a View?
LOCATION table
COUNTRY table
Schema
Constraints
Indexes
>
Views
View
CREATE VIEW v AS SELECT location_id, country_name FROM locations l,
countries c
WHERE l.country_id = c.country_id AND c.country_id in ('AU','BR');
Creating Views
Sequences
Schema
Constraints
Indexes
Views
>
Sequences
Temp Tables
Data Dict
A sequence is a mechanism for automatically generating
integers that follow a pattern.
A sequence has a name, which is
how it is referenced when the next
value is requested.
A sequence is not associated with
any particular table or column.
The progression can be ascending or
descending.
The interval between numbers can be of any size.
A sequence can cycle when a limit is reached.
Creating a Sequence
Using a Sequence
Temporary Tables
A temporary table:
Schema
Constraints
Indexes
Views
Sequences
>
Temp Tables
Data Dict
Provides storage of data that is automatically cleaned up when the
session or transaction ends
Provides private storage of data for each session
Is available to all sessions for use without affecting each others
private data
Temporary Tables: Considerations
Use the GLOBAL TEMPORARY clause to create temporary tables:
CREATE GLOBAL TEMPORARY TABLE employees_temp
ON COMMIT PRESERVE ROWS
AS SELECT * FROM employees;
Use the TRUNCATE TABLE command to delete the contents of the
table.
You can create the following on temporary tables:
Indexes
Views
Triggers
Practice Overview:
Administering Schema Objects
This practice covers the following topics:
Creating tables with columns
Creating constraints:
Primary Key
Foreign Key
Check constraint
Creating indexes