0% found this document useful (0 votes)
4 views

Lab-lecture-week-05(2)

The document outlines the objectives and methods for creating tables and using constraints in a database. It covers topics such as defining data types, creating and altering tables, and implementing various constraints like NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, and CHECK. Additionally, it provides SQL syntax examples for each operation and explains the importance of constraints in maintaining data integrity.

Uploaded by

jessie.tang1022
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

Lab-lecture-week-05(2)

The document outlines the objectives and methods for creating tables and using constraints in a database. It covers topics such as defining data types, creating and altering tables, and implementing various constraints like NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, and CHECK. Additionally, it provides SQL syntax examples for each operation and explains the importance of constraints in maintaining data integrity.

Uploaded by

jessie.tang1022
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 44

Lab Week – 5

Creating Tables and Using


Constraints
Objectives
• Creating tables:
– Describe the main database objects
– Create tables
– Describe the data types that can be used when
specifying column definition
– Alter table definitions
– Drop, rename, and truncate tables
• Using Constraints
– Describe constraints
– Create and maintain constraints
Database Objects
Object Description
Table Basic unit of storage; composed of rows
and columns
View Logically represents subsets of data from
one or more tables
Sequence Generates primary key values
Index Improves the performance of some queries
Synonym Gives alternative names to objects
Naming Conventions
• Must begin with a letter
• Can be 1–30 characters long
• Must contain only A–Z, a–z, 0–9, _, $, and #
• Must not duplicate the name of another object owned by
the same user
• Must not be an Oracle Server reserved word
The CREATE TABLE Statement

• You must have :


– CREATE TABLE privilege
– A storage area

CREATE TABLE [schema.]table


(column datatype [DEFAULT expr][, ...]);

• You specify:
– Table name
– Column name, column data type, and column size
Creating Tables
– Create the table.
CREATE TABLE dept
(deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13),
create_date DATE DEFAULT SYSDATE);
Table created.

– Confirm table creation.

DESCRIBE dept
Data Types
Data Type Description
CHAR(size) Fixed-length character data
VARCHAR2 Variable-length character data
CLOB Character data up to 8 Terabytes
NUMBER(p,s) Variable-length numeric data
DATE Date and Time values
BLOB Binary data up to 8 Terabytes
RAW & Raw binary data
LONG RAW
BFILE Binary data stored in operating-system files
outside the database; up to 8 Terabytes
The DEFAULT Option
• Specify a default value for a column, to be used
during an insert.
• Legal values are literal value, expression, or
SQL function.
• The default datatype must match the column
datatype.

… hiredate DATE DEFAULT SYSDATE, …


Creating a table by using a sub-query

• Create a table and insert rows by combining the


CREATE TABLE statement and AS subquery option.

CREATE TABLE table


[(column, column...)]
AS subquery;

• Match the number of specified columns to the number of


subquery columns.
• Define columns with column names and default values.
Creating a table by using a sub-query

SQL> CREATE TABLE dept30


2 AS
3 SELECT empno, ename, sal*12 ANNSAL, hiredate
4 FROM emp
5 WHERE deptno = 30;

Table created.

SQL> DESCRIBE dept30

Name Null? Type


---------------------- -------- -----
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
ANNSAL NUMBER
HIREDATE DATE
Tables in the Oracle Database
• User Tables
– Collection of tables created and maintained by the user
– Contain user information
• Data Dictionary
– Collection of tables created and maintained by the
Oracle server
– Contain database information
Querying the Data Dictionary
• List tables owned by the user.

SQL> SELECT table_name


2 FROM user_tables;

• View distinct object types owned by the user.

SQL> SELECT DISTINCT object_type


2 FROM user_objects;

• View tables, views, synonyms, and sequences


owned by the user.
SQL> SELECT *
2 FROM user_catalog;
Referencing Another User’s Tables
• Tables belonging to other users are not in the user’s
schema.
• You should use the owner’s name as a prefix to the table.

SELECT *
FROM tsg0781.Customer;
The ALTER TABLE Statement
• Use the ALTER TABLE statement to:
– Add a new column
– Modify an existing column
– Define a default value for the new column

ALTER TABLE table


ADD (column datatype [DEFAULT expr]
[, column datatype]...);

ALTER TABLE table


MODIFY (column datatype [DEFAULT expr]
[, column datatype]...);
Adding a Column
DEPT30 New column “…add a
EMPNO ENAME ANNSAL HIREDATE JOB new
------ ---------- -------- column
7698 BLAKE 34200 01-MAY-81
7654 MARTIN 15000 28-SEP-81 into
7499 ALLEN 19200 20-FEB-81 DEPT30
7844 TURNER 18000 08-SEP-81 table…”
...

DEPT30
EMPNO ENAME ANNSAL HIREDATE JOB
------ ---------- --------
7698 BLAKE 34200 01-MAY-81
7654 MARTIN 15000 28-SEP-81
7499 ALLEN 19200 20-FEB-81
7844 TURNER 18000 08-SEP-81
... 15
Adding a Column
• You use the ADD clause to add columns.

SQL> ALTER TABLE dept30


2 ADD (job VARCHAR2(9));
Table altered.

• The new column becomes the last column.


EMPNO ENAME ANNSAL HIREDATE JOB
--------- ---------- --------- --------- ----
7698 BLAKE 34200 01-MAY-81
7654 MARTIN 15000 28-SEP-81
7499 ALLEN 19200 20-FEB-81
7844 TURNER 18000 08-SEP-81
...
6 rows selected. 16
Modifying a Column
• You can change a column’s data type, size, and default
value.

ALTER TABLE dept30


MODIFY (ename VARCHAR2(15));
Table altered.

• A change to the default value affects only subsequent


insertions to the table.
Dropping a Table
• All data and structure in the table is deleted.
• Any pending transactions are committed.
• All indexes are dropped.
• You can not roll back this statement.

SQL> DROP TABLE dept30;

Table dropped.
Changing the Name of an Object
• To change the name of a table, view, sequence, or
synonym, you execute the RENAME statement.

SQL> RENAME dept TO my_department;

Table renamed.

• You must be the owner of the object.


Truncating a Table
• The TRUNCATE TABLE statement:
• Removes all rows from a table
• Releases the storage space used by that table

SQL> TRUNCATE TABLE dept;

Table truncated.

• You can not roll back row removal when using


TRUNCATE.
• Alternatively, you can remove rows by using the
DELETE statement – this will be covered next week.
Adding Comments to a Table
• You can add comments to a table or column by using
the COMMENT statement.

SQL> COMMENT ON TABLE emp


2 IS 'Employee Information';
Comment created.

• Comments can be viewed through the data


dictionary views.
– ALL_COL_COMMENTS
– USER_COL_COMMENTS
– ALL_TAB_COMMENTS
– USER_TAB_COMMENTS
What Are Constraints?
• Constraints enforce rules at the table level.
• Constraints prevent the deletion of a table if there are
dependencies.
• The following constraint types are valid in Oracle:
– NOT NULL
– UNIQUE
– PRIMARY KEY
– FOREIGN KEY
– CHECK
Constraint Guidelines

• Name a constraint or the Oracle Server will generate a


name by using the SYS_Cn format.
• Create a constraint:
– At the same time as the table is created
– After the table has been created
• Define a constraint at the column or table level.
• View a constraint in the data dictionary.
Defining Constraints

CREATE TABLE [schema.]table


(column datatype [DEFAULT expr]
[column_constraint],
...
[table_constraint][,...]);

CREATE TABLE emp(


empno NUMBER(4),
ename VARCHAR2(10),
...
deptno NUMBER(7,2) NOT NULL,
CONSTRAINT emp_empno_pk
PRIMARY KEY (EMPNO));
Defining Constraints

• Column constraint level

• column [CONSTRAINT constraint_name] constraint_type,

• Table constraint level

column,...
[CONSTRAINT constraint_name] constraint_type
(column, ...),
The NOT NULL Constraint
• Ensures that null values are not permitted for the column

EMP
EMPNO ENAME JOB ... COMM DEPTNO

7839 KING PRESIDENT 10


7698 BLAKE MANAGER 30
7782 CLARK MANAGER 10
7566 JONES MANAGER 20
...

NOT NULL constraint Absence of NOT NULL NOT NULL constraint


(no row can contain constraint
a null value for (any row can contain
this column) null for this column)
The NOT NULL Constraint
• Defined at the column level

SQL> CREATE TABLE emp(


2 empno NUMBER(4),
3 ename VARCHAR2(10) NOT NULL,
4 job VARCHAR2(9),
5 mgr NUMBER(4),
6 hiredate DATE,
7 sal NUMBER(7,2),
8 comm NUMBER(7,2),
9 deptno NUMBER(7,2) NOT NULL);
The UNIQUE Key Constraint
UNIQUE key constraint
DEPT
DEPTNO DNAME LOC
------ ---------- --------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

Insert into Not allowed


50 SALES DETROIT (DNAME-SALES
already exists)
60 BOSTON Allowed
The UNIQUE Key Constraint
• May be defined at either the table level or the column level
• Defined at table level:

SQL> CREATE TABLE dept(


2 deptno NUMBER(2),
3 dname VARCHAR2(14),
4 loc VARCHAR2(13),
5 CONSTRAINT dept_dname_uk UNIQUE(dname));
The PRIMARY KEY Constraint
PRIMARY KEY
DEPT
DEPTNO DNAME LOC
------ ---------- --------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

Insert into Not allowed


20 MARKETING DALLAS (DEPTNO-20 already
exists)
FINANCE NEW YORK Not allowed
(DEPTNO is null)
The PRIMARY KEY Constraint
• Defined at either the table level or the column level

SQL> CREATE TABLE dept(


2 deptno NUMBER(2),
3 dname VARCHAR2(14),
4 loc VARCHAR2(13),
5 CONSTRAINT dept_dname_uk UNIQUE (dname),
6 CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno));
The FOREIGN KEY Constraint
DEPT
PRIMARY DEPTNO DNAME LOC
KEY ------ ---------- --------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
...
EMP
EMPNO ENAME JOB ... COMM DEPTNO FOREIGN
KEY
7839 KING PRESIDENT 10
7698 BLAKE MANAGER 30
...
Not allowed
Insert into (DEPTNO 9
does not exist in
7571 FORD MANAGER ... 200 9 the DEPT table)
7571 FORD MANAGER ... 200 20
Allowed
The FOREIGN KEY Constraint
• Defined at either the table level or the column level

SQL> CREATE TABLE emp(


2 empno NUMBER(4),
3 ename VARCHAR2(10) NOT NULL,
4 job VARCHAR2(9),
5 mgr NUMBER(4),
6 hiredate DATE,
7 sal NUMBER(7,2),
8 comm NUMBER(7,2),
9 deptno NUMBER(7,2) NOT NULL,
10 CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno)
11 REFERENCES dept (deptno));
FOREIGN KEY Constraint Keywords
• FOREIGN KEY
Defines the column in the child table at
the table constraint level
• REFERENCES
Identifies the table and column in the parent table
• ON DELETE CASCADE
Allows deletion in the parent table and deletion of the
dependent rows in the child table
• Other ON DELETE Options
– ON DELETE {CASCADE | NO ACTION | SET DEFAULT}
The CHECK Constraint
• Defines a condition that each row must satisfy
• Expressions that are not allowed:
– References to CURRVAL, NEXTVAL, LEVEL, and
ROWNUM pseudocolumns
– Calls to SYSDATE, UID, USER, and USERENV
functions
– Queries that refer to other values in other rows
..., deptno NUMBER(2),
CONSTRAINT emp_deptno_ck
CHECK (DEPTNO BETWEEN 10 AND 99),...
Adding a Constraint
• Add or drop, but not modify, a constraint
• Enable or disable constraints
• Add a NOT NULL constraint by using the MODIFY clause

ALTER TABLE table


ADD [CONSTRAINT constraint] type (column);
Adding a Constraint

• Add a FOREIGN KEY constraint to the EMP table


indicating that a manager must already exist as a valid
employee in the EMP table.

SQL> ALTER TABLE emp


2 ADD CONSTRAINT emp_mgr_fk
3 FOREIGN KEY(mgr) REFERENCES emp(empno);
Table altered.
Dropping a Constraint
• Remove a foreign key constraint from the EMP table.

SQL> ALTER TABLE emp


2 DROP CONSTRAINT emp_mgr_fk;
Table altered.

• Remove the PRIMARY KEY constraint on the DEPT


table and drop the associated FOREIGN KEY
constraint on the EMP.DEPTNO column.

SQL> ALTER TABLE dept


2 DROP PRIMARY KEY CASCADE;
Table altered.
Disabling Constraints
• Execute the DISABLE clause of the ALTER TABLE
statement to deactivate an integrity constraint.
• Apply the CASCADE option to disable dependent
integrity constraints.

SQL> ALTER TABLE emp


2 DISABLE CONSTRAINT emp_empno_pk CASCADE;
Table altered.
Enabling Constraints
• Activate an integrity constraint currently disabled in
the table definition by using the ENABLE clause.

SQL> ALTER TABLE emp


2 ENABLE CONSTRAINT emp_empno_pk;
Table altered.

• A UNIQUE or PRIMARY KEY index is automatically


created if you enable a UNIQUE key or PRIMARY
KEY constraint.
Viewing Constraints
• Query the USER_CONSTRAINTS table to view all
constraint definitions and names.

SQL> SELECT constraint_name, constraint_type,


2 search_condition
3 FROM user_constraints
4 WHERE table_name = 'EMP';

CONSTRAINT_NAME C SEARCH_CONDITION
------------------------ - -------------------------
SYS_C00674 C EMPNO IS NOT NULL
SYS_C00675 C DEPTNO IS NOT NULL
EMP_EMPNO_PK P
...
Viewing the Columns Associated
with Constraints
• View the columns associated with the constraint
names in the USER_CONS_COLUMNS view.

SQL> SELECT constraint_name, column_name


2 FROM user_cons_columns
3 WHERE table_name = 'EMP';

CONSTRAINT_NAME COLUMN_NAME
------------------------- ----------------------
EMP_DEPTNO_FK DEPTNO
EMP_EMPNO_PK EMPNO
EMP_MGR_FK MGR
SYS_C00674 EMPNO
SYS_C00675 DEPTNO
Summary
• Create table, Alter table, Drop table
• Create the following types of constraints:
– NOT NULL
– UNIQUE
– PRIMARY KEY
– FOREIGN KEY
– CHECK
• Query the USER_CONSTRAINTS table to view all
constraint definitions and names.
Lab Activities
• Complete exercise handed out in lab

You might also like