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

SQL-8 Table Creation

This document provides an overview of creating and managing tables in SQL, detailing objectives, database objects, and naming conventions. It explains the CREATE TABLE statement, data types, and various constraints such as NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, and CHECK. Additionally, it covers altering tables and creating tables using subqueries, along with practical examples and exercises for better understanding.

Uploaded by

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

SQL-8 Table Creation

This document provides an overview of creating and managing tables in SQL, detailing objectives, database objects, and naming conventions. It explains the CREATE TABLE statement, data types, and various constraints such as NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, and CHECK. Additionally, it covers altering tables and creating tables using subqueries, along with practical examples and exercises for better understanding.

Uploaded by

leetcodeprog
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 41

(SQL)

Creating and Managing Tables

Asif Sohail
University of the Punjab
Punjab University College of Information Technology (PUCIT)

Note:
The slides are adapted from Oracle corporation’s slides.
Database Systems Slide 1
Objectives

• After completing this lesson, you should be


able to do the following:
– 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

Database Systems Slide 2


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

Database Systems Slide 3


Naming Conventions

• Must begin with a letter


• Can be 1–30 characters long
• Can contain only A–Z, a–z, 0–9, _, $, and #
• Names are not case sensitive (enclose names in
double quotes to make them case sensitive)
• Must not duplicate the name of another object
owned by the same user
• Must not be an Oracle Server reserved word

Database Systems Slide 4


The CREATE TABLE Statement
– You must have :
• CREATE TABLE privilege
• A storage area

CREATE TABLE table_name


(col_name1 datatype(size) [Default expr][Col Constraints],
col_name2 datatype(size) [Default expr][Col Constraints],
…………
[Table Constraints]);

You specify:
• Table name
• Column name, column data type, and column size
• Size specifies the max. length of a column.
• An oracle table can have up to 256 columns.

Database Systems Slide 5


Data Types

Datatype Description
VARCHAR2(size) Variable-length character data
CHAR(size) Fixed-length character data
NUMBER(p,s) Variable-length numeric data
DATE Date and time values

Database Systems Slide 6


Creating Tables

SQL> CREATE TABLE dept


2 (deptno NUMBER(2),
3 dname VARCHAR2(14),
4 loc VARCHAR2(13));
Table created.

• Confirm table creation.


SQL> DESCRIBE dept

Name Null? Type


--------------------------- -------- ---------
DEPTNO NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)

Database Systems Slide 7


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

Database Systems Slide 8


Querying the Data Dictionary
– Describe tables owned by the user.
SQL> SELECT *
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;

Database Systems Slide 9


Including Constraints
– Constraints enforce data integrity rules.
– Constraint can be either at table level or column level.
– A constraint should be given a meaningful name (its
optional though), otherwise oracle server give every
constraint a unique name in sys-cn format.
– A constraint can be defined either at the time of table
creation or after it.
– The constraints are stored in a data dictionary view
called USER_CONSTRAINTS.

Database Systems Slide 10


Including Constraints
– The following constraint types are valid in Oracle:
• NOT NULL [Column Level]
• UNIQUE [Column or Table Level]
• PRIMARY KEY [Column or Table Level]
• FOREIGN KEY [Column or Table Level]
• CHECK [Column or Table Level]
• DEFAULT [Column Level]

Database Systems Slide 11


Defining Constraints

CREATE TABLE tablename


(col_name1 datatype(size)[Default expr][Col Constraints],
........
[table_constraint][,...]);

CREATE TABLE emp(


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

Database Systems Slide 12


Defining Constraints

– Column constraint level

column [CONSTRAINT constraint_name] constraint_type,

– Table constraint level

column,...
[CONSTRAINT constraint_name] constraint_type
(column, ...),

Database Systems Slide 13


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)

Database Systems Slide 14


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);

Database Systems Slide 15


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

Database Systems Slide 16


The UNIQUE 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));

Database Systems Slide 17


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)

Database Systems Slide 18


The PRIMARY KEY Constraint

• Defined at either the table level or the column


level, however if the PK is composite, then it
should be 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),
6 CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno));

Database Systems Slide 19


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
(DEPTNO 9
Insert into does not exist
in the DEPT
7571 FORD MANAGER ... 200 9 table)
7571 FORD MANAGER ... 200 20 Allowed

Database Systems Slide 20


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));

Database Systems Slide 21


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
it is optional clause and it Allows deletion in the parent
table and deletion of the dependent rows in the child table
– ON DELETE SET NULL:
Converts dependent foreign key values to null

Database Systems Slide 22


The CHECK Constraint

– Defines a condition that each row must satisfy

..., deptno NUMBER(2),


CONSTRAINT emp_deptno_ck
CHECK (DEPTNO BETWEEN 10 AND 99),...

..., program CHAR(5),


CONSTRAINT student_program_ck
CHECK (program IN (‘BS’, MIT’, ‘MS’)),...

Database Systems Slide 23


The DEFAULT Option

• To specify a default value for a column.


• The default data type must match the column data type.

... hire_date DATE DEFAULT SYSDATE, ...


... Status CHAR(1) DEFAULT ‘P’, ...

SQL> CREATE TABLE test


2 (id NUMBER(2),
3 value NUMBER(2) DEFAULT 50,
4 name VARCHAR2(13));
Table created.

Database Systems Slide 24


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
...

Database Systems Slide 25


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

Database Systems Slide 26


Creating a Table
by Using a Subquery
– 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.
– To create new table without populating it with the data
in the existing table, use the following:
CREATE TABLE table
[(column, column...)]
AS subquery WHERE 1=2;

Database Systems Slide 27


Creating a Table
by Using a Subquery

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

Database Systems Slide 28


Creating a Small Database (Exercise)
Table Name: Student
Col Name Constraints
RegNo Primary Key
SName Not Null
Program Can be ‘BS’, ‘BBA’, or ‘BA’
NIC Unique

Table Name: Course


Col Name Constraints
CourseCode Primary Key
CourseTitle Not Null
CreditHours Can be either 3 or 4

Table Name: Result


Col Name Constraints
RegNo Primary Key, Foreign Key
CourseCode Primary Key, Foreign Key
CourseMarks Between 0 and 100

Database Systems Slide 29


The ALTER TABLE Statement
• Use the ALTER TABLE statement to:
– Add a new column
– Modify an existing column
– Drop a column
– Add or Drop a Constraint.
– Disable or Enable a Constraint
ALTER TABLE table
ADD (column datatype [DEFAULT expr]
[, column datatype]...);

ALTER TABLE table


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

Database Systems Slide 30


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

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
...

Database Systems Slide 31


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.

Database Systems Slide 32


Modifying a Column

– You can change a column’s datatype, 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.

****************************************************
– ALTER TABLE tablename READ ONLY

Database Systems Slide 33


Dropping and Renaming a Column

• Use the DROP COLUMN clause to drop columns


you no longer need from the table.
ALTER TABLE dept30
DROP COLUMN Job;
Table altered.

• Use the RENAME COLUMN clause to rename a


col.
ALTER TABLE dept30
RENAME COLUMN Job TO Designation;
Table altered.

Database Systems Slide 34


Adding a Constraint

ALTER TABLE table


ADD [CONSTRAINT constraint] type (column);

• 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.

Database Systems Slide 35


Dropping a Constraint
• Remove 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.

• To drop a DEFAULT constraint


SQL> ALTER TABLE student
2 ALTER COLUMN program DROP DEFAULT;
Table altered.

Database Systems Slide 36


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.

Database Systems Slide 37


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.

Database Systems Slide 38


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 department;


Table renamed.

– CREATE GLOBAL TMPORARY TABLE

Database Systems Slide 39


Dropping a Table
– All data and structure in the table is deleted.
– Any pending transactions are committed.
– All indexes are dropped.
– You cannot roll back this statement.

SQL> DROP TABLE dept30;


Table dropped.

– NOTE: if the table has a reference in another table,


the above command may not work. To drop all the
references as well, use the following:
SQL> DROP TABLE dept30 CASCADE CONSTRAINTS;
Table dropped.

Database Systems Slide 40


Thank you for your attention.

Asif Sohail

Assistant Professor
University of the Punjab
Punjab University College of Information Technology (PUCIT)
Allama Iqbal (Old) Campus, Anarkali
Lahore, Pakistan
Tel: +92-(0)42-111-923-923 Ext. 154
E-mail: [email protected]

Database Systems Slide 41

You might also like