DDL : Tables

advertisement
SQL’s Data Definition Language
(DDL)



DDL statements define, modify and
remove objects from data dictionary
tables maintained by the DBMS
Whenever you use a DDL statement, the
DBMS changes metadata (“data about
data”) maintained in the data dictionary
Objects that can be defined include:
table, view, sequence, index
Oracle’s Data Dictionary




Data dictionary tables maintain data about the
structure of databases
Users cannot directly insert, update or delete
information in the data dictionary
DDL statements cause the DBMS to add/update
or delete information in the data dictionary tables
Oracle’s data dictionary views such as
ALL_OBJECTS, ALL_TABLES,
ALL_CONSTRAINTS, ALL_COLUMNS can be
queried using SELECT statements and contain
information about objects you have access to
SQL’s DDL Statements




Objects are defined using the CREATE
statement
Some objects can be modified using the
ALTER statement
Objects are removed using the DROP
statement
Oracle’s data dictionary views such as
USER_OBJECTS, USER_TABLES,
USER_CONSTRAINTS, USER_COLUMNS,
USER_SEQUENCES, USER_INDEXES can
be queried using SELECT statements and
contain information about objects you have
created
Schema


The DataBase Administrator (DBA) has
set up your Oracle account with
permission for you to create objects in a
schema (schema has same name as
your account)
A schema (same as DB2’s collection) is
a collection of related tables, views,
sequences and indexes, i.e. a database
System Datatypes

System-defined datatypes include:
– CHAR(n): Fixed length character string often used
for Primary and Foreign Key numeric fields and also
for codes such as ProgramCode(CPA/CPD/CNS/…);
eg. program_code CHAR(3)
– VARCHAR2(n): Variable length character string often
used for names;
eg. last_name VARCHAR2(30)
– NUMBER(n,r): Real numbers with n digits in total
and with r digits to the right of the decimal point; eg
hrly_pay_rate NUMBER(5,2) can store hourly pay
rates from 0.00 to 999.99
– INTEGER: Integer values up to 2*(10**9)
– DATE: dates in the format DD-MON-YYYY or
MM/DD/YYYY
Create a Table

You define a table and its columns using the
CREATE TABLE statement using the basic
format:
CREATE TABLE tablename (
column1name datatype(length),
column2name datatype(length),…
column255name datatype(length))
eg. CREATE TABLE student
(id CHAR(9),
fname VARCHAR2(30),
lname VARCHAR2(30),
gpa decimal(2,1) )
Create a Table (ctd)

You can also create a table based on an
existing table:
CREATE TABLE table1name
AS
SELECT col1name, …, colnname
FROM table2name
WHERE …
eg. CREATE TABLE honourstudent
AS
SELECT id, lname
FROM student
WHERE gpa = 4.0
Change Table Structure

Change structure of a table (i.e. add
columns or constraints, remove columns
or constraints, change properties of a
column) using the ALTER TABLE
statement:
ALTER TABLE tablename (
ADD col1name datatype(length),
DROP col2name,
MODIFY col3name datatype(length),
MODIFY col4name NOT NULL, … )
ALTER TABLE Examples



ALTER TABLE student
ADD (address VARCHAR(40))
ALTER TABLE student
MODIFY (lname VARCHAR2(35) )
ALTER TABLE student
DROP COLUMN gpa
Remove Table from Data
Dictionary


Remove table from data dictionary
(and also deletes all data in table)
DROP TABLE tablename
Deletes all data in table and frees
storage but leaves table in data
dictionary
TRUNCATE TABLE tablename
Constraints




Constraints protect the integrity of data
in a database
Constraints are defined on tables and
columns in tables
Constraint types: PRIMARY KEY,
FOREIGN KEY, NOT NULL, CHECK,
UNIQUE
All constraints should be given a name,
except for NOT NULLs, so error
messages produced will include the
name of the constraint violated
Constraints (ctd)



Information about constraints is
maintained in the data dictionary and
can be queried using the view
USER_CONSTRAINTS
Constraints may be defined as part of a
CREATE TABLE statement
Constraints may be added, dropped or
disabled (but not modified) by using an
ALTER TABLE statement
Constraint Example

CREATE TABLE student
( id CHAR(9) PRIMARY KEY,
fname VARCHAR(30) NOT NULL,
lname VARCHAR2(30) NOT NULL,
sem_num SMALLINT,
soc_ins CHAR(9) CONSTRAINT
soc_ins_uq UNIQUE(soc_ins),
prog_code CHAR(3) NOT NULL,
CONSTRAINT student_prog_code_fk
FOREIGN KEY (prog_code)
REFERENCES program(progcode) )
Constraint Examples
ALTER TABLE student
ADD CONSTRAINT student_sem_num
CHECK (sem_num BETWEEN 1 AND 6)
 ALTER TABLE student
DROP UNIQUE (soc_ins_uq)
 ALTER TABLE student
DROP PRIMARY KEY
 ALTER TABLE student
DROP CONSTRAINT student_sem_num
 ALTER TABLE student
DISABLE CONSTRAINT
student_prog_code_fk

Download