Você está na página 1de 34

Esquemas

Managing Schema Objects

Objectives
After completing this lesson, you should be able to:
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 schema
HR user

> 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]): Variablelength character string having a maximum length
of size bytes or characters
DATE: Valid date ranging from January 1, 4712
(B.C.), through December 31, 9999 (A.D.)
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.

Creating and Modifying Tables


CREATE TABLE shopowner.jobs
( Job_id NUMBER(5),
Job_title VARCHAR2(30),
min_salary NUMBER(6),
max_salary NUMBER(6)
)
TABLESPACE users;
ALTER TABLE shopowner.jobs ADD bonus NUMBER(6);

Understanding Data Integrity

Schema
>Constraints

Indexes
Views
Sequences
Temp Tables
Data Dict
DEPARTMENTS

JOB_HISTORY
EMPLOYEE_ID
(PK,FK)
START_DATE
(PK) END_DATE
JOB_ID (FK)
DEPARTMENT_ID (FK)

EMPLOYEES

DEPARTMENT_ID (PK)
DEPARTMENT_NAME

EMPLOYEE_ID
(PK) FIRST_NAME
LAST_NAME
EMAIL
PHONE_NUMBER
HIRE_DATE
JOB_ID (FK)
SALARY
COMMISION_PCT
MANAGER_ID (FK)
DEPARTMENT_ID (FK)

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:
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
101

102

101
103

ID

AGE

22

49

16

30

Constraint States
DISABLE

DISABLE

ENABLE

ENABLE

NOVALIDATE

VALIDATE

NOVALIDATE

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
ALTER TABLE countries

ADD (UNIQUE(country_name) ENABLE NOVALIDATE);

ALTER TABLE shopowner.jobs ADD CONSTRAINT job_pk PRIMARY

KEY (job_id);

CREATE TABLE emp (emp_no NUMBER PRIMARY KEY,Last_name


VARCHAR2(30), first_name VARCHAR2(30), dept_no NUMBER,

Mgr_no NUMBER, hire_date date,salary NUMBER,


CONSTRAINT Mgr_FK FOREIGN KEY (mgr_no) REFERENCES
emp(emp_no),CONSTRAINT ck1 CHECK (salary > 0));

Viewing the Columns in a Table

Viewing the Contents of a Table

Actions with Tables

Dropping a Table
Dropping a table removes:
Data
Table structure DROP TABLE hr.employees PURGE;
Database triggers
Corresponding indexes
Associated object privileges

Optional clauses for the DROP TABLE statement:

CASCADE
CONSTRAINTS:
referential integrity constraints
PURGE: No flashback possible

Dependent

Truncating a Table
Truncating a table removes the data and releases
used space.
Corresponding indexes are truncated.
TRUNCATE TABLE hr.employees;

Schema
Constraints
> Indexes
Views
Sequences
Temp Tables
Data Dict

Indexes
WHERE key = 22

Row
Key pointer

22
22
Index

Table

Types of Indexes
These are several types of index structures
that are available depending on your needs.
Two of the most common are:
B-tree index
Default index type; in the form of a balanced tree

Bitmap index:
Has a bitmap for each distinct value indexed
Each bit position represents a row that may or may
not contain the indexed value.
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
Table

File 3
Block 10
Block 11

Index
Block 12

Start

End

Key ROWID 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
Unique index: Ensures that every indexed value
is unique
Reverse key index: Has its key value bytes stored
in reverse order
Composite index: Is based on more than one column
Function-based index: Is based on a functions
return value
Compressed index: Has repeated key values removed
Order: An index can have its key values stored
in ascending or descending order.

Creating Indexes

CREATE INDEX my_index ON


employees(last_name DESC, first_name);

Views

Schema
Constraints
Indexes
> Views

LOCATION table

join

AU_BR_VIEW view

COUNTRY table

CREATE VIEW au_br_view 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
A sequence is a mechanism for automatically
generating integers that follow a pattern.

Schema
Constraints
Indexes
Views
> Sequences
Temp Tables
Data Dict

A sequence has a name, which is


12
how it is referenced when the next
value is requested.
34
5
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
SQL> CREATE TABLE
orders (id NUMBER,
ord_date DATE,
prod_id NUMBER,
prod_desc
VARCHAR2(30) );
Table created.
SQL> INSERT INTO orders VALUES (
abc_seq. sysdate, 1245009, 'Gizmo X');
1 row created.

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 for use to all sessions without affecting
the private data of each session

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

Summary
In this lesson, you should have learned
how to:
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

Você também pode gostar