Download presentation
Presentation is loading. Please wait.
Published byGregory Manning Modified over 9 years ago
1
Dr. Chen, Oracle Database System (Oracle) 1 Chapter 4 Constraints Jason C. H. Chen, Ph.D. Professor of MIS School of Business Gonzaga University Spokane, WA 99258 USA chen@jepson.gonzaga.edu
2
Dr. Chen, Oracle Database System (Oracle) 2 What will we study today? IntegrityData … … Referential Integrity How to achieve it?
3
Dr. Chen, Oracle Database System (Oracle) 3 Objectives Explain the purpose of constraints in a table Distinguish among PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, and NOT NULL constraints and the appropriate use for each constraint Understand how constraints can be created when creating a table or modifying an existing table Distinguish between creating constraints at the column level and table level
4
Dr. Chen, Oracle Database System (Oracle) 4 Objectives (continued) Create PRIMARY KEY constraints for a single column and a composite primary key (cpk) Create a FOREIGN KEY constraint Create a UNIQUE constraint Create a CHECK constraint Create a NOT NULL constraint using the ALTER TABLE…MODIFY command Include constraints during table creation Use DISABLE and ENABLE commands Use the DROP command
5
Dr. Chen, Oracle Database System (Oracle) 5 customers orders pk fk pk customer#LastName…ReferredRegion 1001MORALESNULLSE …… 1005GIRARDNULLNW 1020FALAHNULLNE Order#customer#… ShipZip ShipCost 10001005981142.00 ……… 10031001323284.00 10121007490026.00 Can we “create” orders#1 if customers#5 is not created? Why? Can we “delete” customers#5 if orders#1 is still in the database? Why? Customers#5 orders#1 Referential Integrity
6
Dr. Chen, Oracle Database System (Oracle) 6 Refresh the Database 1. Create a new folder on c:\ as follows: c:\oradata\chapter4 2. Go to Blackboard and download data files from Oracle chapter4 and save under c:\oradata\chapter4\ 3. Run the following script file –Start c:\oradata\chapter4\JLDB_Build_4.sql
7
Dr. Chen, Oracle Database System (Oracle) 7 Type the following SQL commands -- chapter 4, Figure 4-5; p. 104 INSERT INTO customers (customer#, lastname, firstname, region) VALUES (1020, 'PADDY', 'JACK', 'NE'); --extra INSERT command INSERT INTO orders (order#, customer#, orderdate) VALUES (1021, 1021, '06-APR-09'); -- DELETE command DELETE FROM customers WHERE customer# = 1005;
8
Dr. Chen, Oracle Database System (Oracle) 8 pk fk Customers#5 orders#1 Can we “create” orders#1 if customers#5 is not created? Why? Can we “delete” customers#5 if orders#1 is still in the database? Why? Can we insert a different customer with “Duplicate” pk?
9
Dr. Chen, Oracle Database System (Oracle) 9 customers orders pk fk pk customer#LastName…ReferredRegion 1001MORALESNULLSE …… 1005GIRARDNULLNW 1020FALAHNULLNE Order#customer#… ShipZip ShipCost 10001005981142.00 ……… 10031001323284.00 10121007490026.00
10
Dr. Chen, Oracle Database System (Oracle) 10 Review from Last Class What are the three rules of naming table and field? What are the three (total of four) required information that should be described for each field? 1.Name 2.Type 3.Size 4.Constraint L
11
Dr. Chen, Oracle Database System (Oracle) 11 What is a Constraint? A rule used to enforce business rules, practices, and policies A rule used to ensure accuracy and integrity of data A mechanism used to protect –the relationship between data within an Oracle table, or –the correspondence between data in two different tables. –For example, the state entered must be one of the 50 states in the U.S.
12
Dr. Chen, Oracle Database System (Oracle) 12 Types of Constraints Integrity constraints: define primary and foreign keys Value constraints: define specific data values or data ranges that must be inserted into columns and whether values must be unique or not NULL Table constraint: restricts the data value with respect to all other values in the table Field (column) constraint: limits the value that can be placed in a specific field, irrespective of values that exist in other table records
13
Dr. Chen, Oracle Database System (Oracle) 13 I. Naming conventions for constraints _ _ Where is: pk PRIMARY KEY fk REFERENCES (pk) ck CHECK (note that cc stands for CHECK CONDITION) nn NOT NULL uk UNIQUE Integraity constraint Value constraint e.g., s_id NUMBER (6) CONSTRAINT student_s_id_pk PRIMARY KEY;
14
Dr. Chen, Oracle Database System (Oracle) 14 Integrity Constraints Define primary key fields Specify foreign keys and their corresponding table and column references Specify composite keys
15
Dr. Chen, Oracle Database System (Oracle) 15 Creating a Table CREATE TABLE tablename (fieldname1 data_type (size) [CONSTRAINT constraint_name constraint_type], fieldname2 data_type (size), … [CONSTRAINT constraint_name constraint_type,] …);
16
Dr. Chen, Oracle Database System (Oracle) 16 Creating Constraints When –During table creation –After table creation, by modifying the existing table How –Column level approach –Table level approach
17
Dr. Chen, Oracle Database System (Oracle) 17 Creating Constraints at the Column Level If a constraint is being created at the column level, the constraint applies to the column specified Creating Constraints at the Table Level Approach can be used to create any constraint type after all table field definitions are completed except NOT NULL Required if constraint is based on multiple columns Figure 4-1 Syntax for creating a column-level constraint Figure 4-2 Syntax for creating a table-level constraint
18
Dr. Chen, Oracle Database System (Oracle) 18 Customer# LastNameFirstNameAddressCityStateZipReferredRegionEmail NUMBER(4)VARCHAR2(10) VARCHAR2 (20) VARCHAR2(12)VARCHAR 2(2) VARCHAR2 (5) NUMBER( 4) CHAR(2)VARCHAR2( 30) Order# Customer#OrderDateShipDateShipStreetShipCityShipStateShipZipShipCost NUMBER(4) DATE VARCHAR2(18)VARCHAR2(15)VARCHAR2(2)NUMBER(4)NUMBER(4,2) CREATE TABLE Customers (Customer# NUMBER(4), LastName VARCHAR2(10) NOT NULL, FirstName VARCHAR2(10) NOT NULL, Address VARCHAR2(20), City VARCHAR2(12), State VARCHAR2(2), Zip VARCHAR2(5), Referred NUMBER(4), Region CHAR(2), Email VARCHAR2(30), CONSTRAINT customers_customer#_pk PRIMARY KEY(customer#), CONSTRAINT customers_region_ck CHECK (region IN ('N', 'NW', 'NE', 'S', 'SE', 'SW', 'W', 'E')) ); CUSTOMERS pk ORDERS fkpk Optional (variable name)
19
Dr. Chen, Oracle Database System (Oracle) 19 Qs Q: How to display (describe) the table structure you just created of “customers” table? A: _______________________ Q: Any constraint(s) displayed? A: ____ Q: How to display them? A:_ DESCRIBE customers; SELECT constraint_name FROM user_constraints WHERE table_name=‘CUSTOMERS’; NO! case is sensitive
20
Dr. Chen, Oracle Database System (Oracle) 20 Customer# LastNameFirstNameAddressCityStateZipReferredRegionEmail NUMBER(4)VARCHAR2(10) VARCHAR2 (20) VARCHAR2(12)VARCHAR 2(2) VARCHAR2 (5) NUMBER( 4) CHAR(2)VARCHAR2( 30) Order# Customer#OrderDateShipDateShipStreetShipCityShipStateShipZipShipCost NUMBER(4) DATE VARCHAR2(18)VARCHAR2(15)VARCHAR2(2)NUMBER(4)NUMBER(4,2) CREATE TABLE Orders (Order# NUMBER(4), Customer# NUMBER(4), OrderDate DATE NOT NULL, ShipDate DATE, ShipStreet VARCHAR2(18), ShipCity VARCHAR2(15), ShipState VARCHAR2(2), ShipZip VARCHAR2(5), ShipCost NUMBER(4,2), CONSTRAINT orders_order#_pk PRIMARY KEY(order#), CONSTRAINT orders_customer#_fk FOREIGN KEY (customer#) REFERENCES customers(customer#)); CUSTOMERS pk ORDERS fk pk Optional (variable name)
21
Dr. Chen, Oracle Database System (Oracle) 21 Order# Customer#OrderDateShipDateShipStreetShipCityShipStateShipZipShipCost NUMBER(4) DATE VARCHAR2(18)VARCHAR2(15)VARCHAR2(2)NUMBER(4)NUMBER(4,2) ORDERS Order# Item#ISBNQuantityPaidEach NUMBER(4)NUMBER(2)VARCHAR2(10)NUMBER(3)NUMBER(5,2) ORDERITEMS CREATE TABLE ORDERITEMS ( Order# NUMBER(4), Item# NUMBER(2), ISBN VARCHAR2(10), Quantity NUMBER(3) NOT NULL, PaidEach NUMBER(5,2) NOT NULL, CONSTRAINT orderitems_order#item#_pk PRIMARY KEY (order#, item#), CONSTRAINT orderitems_order#_fk FOREIGN KEY (order#) REFERENCES orders (order#), CONSTRAINT orderitems_isbn_fk FOREIGN KEY (isbn) REFERENCES books (isbn), CONSTRAINT oderitems_quantity_ck CHECK (quantity > 0) ); ISBN TitlePubDatePubIDCostRetailDiscountCategory VARCHAR2(10)VARCHAR2(30)DATENUMBER(2)NUMBER(5,2) NUMBER(4,2)VARCHAR2(12) BOOKS pk fk pk Optional (variable name) cpk How to define ‘composite” key?
22
Dr. Chen, Oracle Database System (Oracle) 22 Your Job You need to study and understand all CREATE TABLE SQL commands in JLDB_Build_4.sql
23
Dr. Chen, Oracle Database System (Oracle) 23 Enforcement of Constraints All constraints are enforced at the table level If a data value violates a constraint, the entire row is rejected
24
Dr. Chen, Oracle Database System (Oracle) 24 Constraint Types Table 4-1 Constraint types
25
Dr. Chen, Oracle Database System (Oracle) 25 Your Turn …
26
Dr. Chen, Oracle Database System (Oracle) 26 Syntax: CONSTRAINT constraint_name PRIMARY KEY Primary Key Constraints SQL> CREATE TABLE students 2 (s_id NUMBER(6) CONSTRAINT students_s_id_pk PRIMARY KEY, 3 s_name VARCHAR2(30), 4 s_class CHAR(2), 5 s_dob DATE); Create a table with the following information: 1.Name of the table: students 2.Fields: s_id number with 6 digits and is a primary key, s_name character with 30 chars, s_class with 2 chars, s_dob with DATE
27
Dr. Chen, Oracle Database System (Oracle) 27 at the Column-Level Primary Key Constraints (cont.) SQL> CREATE TABLE students 2 (s_id NUMBER(6), 3 s_name VARCHAR2(30), 4 s_class CHAR(2), 5 s_dob DATE, 6 CONSTRAINT students_s_id_pk PRIMARY KEY (s_id)); SQL> CREATE TABLE students 2 (s_id NUMBER(6) CONSTRAINT students_s_id_pk PRIMARY KEY, 3 s_name VARCHAR2(30), 4 s_class CHAR(2), 5 s_dob DATE); Practice: Type in one of the command. at the Table-Level
28
Dr. Chen, Oracle Database System (Oracle) 28 Adding Constraints to Existing Tables Constraints are added to an existing table with the ALTER TABLE command Add a NOT NULL constraint using MODIFY clause All other constraints are added using ADD clause
29
Dr. Chen, Oracle Database System (Oracle) 29 Using the PRIMARY KEY Constraint Ensures that columns do not contain duplicate or NULL values Only one per table is allowed Figure 4-3 Syntax of the ALTER TABLE command to add a PRIMARY KEY constraint
30
Dr. Chen, Oracle Database System (Oracle) 30 Constraint Checked with Data Input Figure 4-5 Insert a row to test the constraint
31
Dr. Chen, Oracle Database System (Oracle) 31 PRIMARY KEY Constraint for Composite Key List column names within parentheses separated by commas Figure 4-7 Adding a composite PRIMARY KEY constraint
32
Dr. Chen, Oracle Database System (Oracle) 32 Drop Contraint ALTER TABLE orderitems DROP CONSTRAINT orderitems_order#item#_pk PRIMARY KEY (order#, item#);
33
Dr. Chen, Oracle Database System (Oracle) 33 Multiple Constraints on a Single Column A column may be included in multiple constraints The order# column is included in a primary key and a foreign key constraint Figure 4-32 Assigning multiple constraints to a column Optional (variable name)
34
Dr. Chen, Oracle Database System (Oracle) 34 Using the FOREIGN KEY Constraint Requires a value to exist in the referenced column of another table NULL values are allowed Enforces referential integrity Maps to the PRIMARY KEY in parent table Customer# LastNameFirstNameAddress…Region Order# Customer#OrderDate…ShipZipShipCost customers orders pk fk
35
Dr. Chen, Oracle Database System (Oracle) 35 Using the FOREIGN KEY Constraint You cannot delete a value in a parent table (pk) referenced by a row in a child table (fk) Customer# LastNameFirstNameAddress…Region Order# Customer#OrderDate…ShipZipShipCost customers orders pk fk
36
Dr. Chen, Oracle Database System (Oracle) 36 Customer# LastNameFirstNameAddress…Region Order# Customer#OrderDate…ShipZipShipCost customers orders pk fk
37
Dr. Chen, Oracle Database System (Oracle) 37 FOREIGN KEY Constraint Example Figure 4-9 Adding a FOREIGN KEY constraint
38
Dr. Chen, Oracle Database System (Oracle) 38 Deletion of Foreign Key Values You cannot delete a value in a parent table referenced by a row in a child table Use ON DELETE CASCADE keywords when creating FOREIGN KEY constraint – it automatically deletes a parent row when the row in a child table is deleted
39
Dr. Chen, Oracle Database System (Oracle) 39 Using the UNIQUE Constraint No duplicates are allowed in the referenced column NULL values are permitted Figure 4-16 Adding a UNIQUE constraint
40
Dr. Chen, Oracle Database System (Oracle) 40 Using the CHECK Constraint Updates and additions must meet specified condition Figure 4-19 Adding a CHECK constraint to the ORDERS table
41
Dr. Chen, Oracle Database System (Oracle) 41 Using the NOT NULL Constraint The NOT NULL constraint is a special CHECK constraint with IS NOT NULL condition Can only be created at column level Included in output of DESCRIBE command Can only be added to an existing table using ALTER TABLE…MODIFY command
42
Dr. Chen, Oracle Database System (Oracle) 42 NOT NULL Constraint Example Figure 4-23 Adding a NOT NULL constraint
43
Dr. Chen, Oracle Database System (Oracle) 43 Practice … Let’s try to create additional tables –JustLee Books would like to create some new tables to store office equipment inventory data. DeptID Dname Fax DEPT EquipID Edesc Purchdate Rating DeptID EtypeID EQUIP EtypeID Etypename ETYPES Figure 4-26 E-R model for equipment tables
44
Dr. Chen, Oracle Database System (Oracle) 44 Including Constraints during Table DeptID Dname Fax DEPT EquipID Edesc Purchdate Rating DeptID EtypeID EQUIP EtypeID Etypename ETYPES Each department name must be unique. Each department must be assigned a name. Each equipment type name must be unique Each equipment type must be assigned a name. Each equipment item must be assigned a valid department. If an equipment item is assigned a type, it must be a valid type. Valid rating values for equipment are A, B, and C. unique NOT NULL unique NOT NULL ck fk pk
45
Dr. Chen, Oracle Database System (Oracle) 45 -- chapter 4, Figure 4-27; p. 117 CREATE TABLE dept (deptid NUMBER(2), dname VARCHAR2(20) NOT NULL, fax VARCHAR2(12), CONSTRAINT dept_deptid_pk PRIMARY KEY (deptid), CONSTRAINT dept_dname_uk UNIQUE (dname) ); DEPT table creation Each department name must be unique. Each department must be assigned a name. unique NOT NULL
46
Dr. Chen, Oracle Database System (Oracle) 46 -- chapter 4, Figure 4-27; p. 117 CREATE TABLE dept (deptid NUMBER(2), dname VARCHAR2(20) NOT NULL, fax VARCHAR2(12), CONSTRAINT dept_deptid_pk PRIMARY KEY (deptid), CONSTRAINT dept_dname_uk UNIQUE (dname) ); -- chapter 4, Figure 4-30; p. 119 CREATE TABLE dept (deptid NUMBER(2) CONSTRAINT dept_deptid_pk PRIMARY KEY, dname VARCHAR2(20) NOT NULL CONSTRAINT dept_dname_uk UNIQUE, fax VARCHAR2(12)); Constraints are defined at the column-level What is the main difference on the following “CREATE TABLE” statements? Constraints are defined at the table-level
47
Dr. Chen, Oracle Database System (Oracle) 47 -- chapter 4, Figure 4-28; p. 118 CREATE TABLE etypes (etypeid NUMBER(2), etypename VARCHAR2(20) NOT NULL, CONSTRAINT etypes_etypeid_pk PRIMARY KEY (etypeid), CONSTRAINT etypes_etypename_uk UNIQUE (etypename) ); -- chapter 4, Figure 4-29; p. 119 CREATE TABLE equip (equipid NUMBER(3), edesc VARCHAR2(30), purchdate DATE, rating CHAR(1), deptid NUMBER(2) NOT NULL, etypeid NUMBER(2), CONSTRAINT equip_equipid_pk PRIMARY KEY (equipid), CONSTRAINT equip_deptid_fk FOREIGN KEY (deptid) REFERENCES dept (dept_id), CONSTRAINT equip_etypeid_fk FOREIGN KEY (etypeid) REFERENCES etypes (etypeid), CONSTRAINT equip_rating_ck CHECK (rating IN ('A', 'B', 'C', 'D')) ); Each equipment item must be assigned a valid department. If an equipment item is assigned a type, it must be a valid type. Valid rating values for equipment are A, B, and C. Each equipment type name must be unique Each equipment type must be assigned a name.
48
Dr. Chen, Oracle Database System (Oracle) 48 Including Constraints during Table Creation – Table Level Include at end of column list Figure 4-29 EQUIP table creation
49
Dr. Chen, Oracle Database System (Oracle) 49 Viewing Constraints – USER_CONSTRAINTS Display constraint listing for a specific table Figure 4-33 SELECT statement to view data about existing constraints
50
Dr. Chen, Oracle Database System (Oracle) 50 Disabling Constraints -- chapter 4, Figure 4-36; p. 123 ALTER TABLE equip DISABLE CONSTRAINT equip_rating_ck; ALTER TABLE equip ENABLE CONSTRAINT equip_rating_ck;
51
Dr. Chen, Oracle Database System (Oracle) 51 Dropping Constraints -- chapter 4, Figure 4-38; p. 124 ALTER TABLE equip DROP CONSTRAINT equip_rating_ck; -- chapter 4, Figure 4-39; p. 125 ALTER TABLE customers DROP PRIMARY KEY; -- chapter 4, Figure 4-40; p. 125 ALTER TABLE customers DROP PRIMARY KEY CASCADE;
52
Dr. Chen, Oracle Database System (Oracle) 52 HW!! Practice all the examples in the text. A Script file is available on the Bb (file name: Ch4Queries.sql) After completing all examples, do the HW (hint: see the tables below for the final schema and the sample output on the Bb under “Assignments” rep_idlastfirstcommbase_salary NUMBER(5)VARCHAR2(15)VARCHAR2(10)CHAR(1)NUMBER(7,2) store_idnamecontactrep_id NUMBER(8)VARCHAR2(30) NUMBER(5) store_idnamequarterrep_id NUMBER(8)VARCHAR2(5)CHAR(3)NUMBER(5) pk store_reps pkfk book_stores cpk, fk cpk cpk, fk rep_contracts
53
Dr. Chen, Oracle Database System (Oracle) 53 Homework - Hands-On Assignments Read and Practice all examples on Chapters 4 1. Run the script files (in the folder \oradata\chapter4\): JLDB_Build_4.sql 2. Read Oracle assignment and create a script file Oracle_ch4_Lname_Fname.sql for questions (#1 to #8; p.133) on “Hands-on Assignments”.. 3. Execute and test one problem at a time and make sure they are all running successfully. 4. When you done, spool the script files (see next slide for spooling instructions) and email the file (Oracle_ch4_Spool_Lname_Fname.txt) to me by the midnight before the next class. Email me with one attachment (Oracle_ch4_Spool_Lname_Fname.) to: chen@jepson.gonzaga.edu with subject title of Bmis441-01_Oracle_ch4 (or Bmis441-02_Oracle_ch4)
54
Dr. Chen, Oracle Database System (Oracle) 54 How to Spool your Script and Output Files After you tested the script file of Oracle_ch4_Lname_Fname.sql successfully, follow the instructions below to spool both script and output files: Step 0. Run the following script file from SQL*Plus (since you have created JLDB tables) –Start c:\oradata\chapter4\JLDB_Build_4.sql 1. type the following on SQL> –Spool c:\oradata\Oracle_ch4_Spool_Lname_Fname.txt (make sure your name is entered) 2. open Oracle_ch4_Lname_Fname.sql that you already tested 3. copy and paste all the SQL commands (including all comments) to the SQL*PLUS 4. type Spool Off on the SQL> The output should contain your personal information, all SQL commands and their solution on the.txt file and saved in C: drive (oradata\ folder) Email me with the spooled file (.txt) with attachment to: chen@jepson.gonzaga.edu with subject title of Bmis441-01_Oracle_ch4 (or Bmis441-02_Oracle_ch4)
55
Dr. Chen, Oracle Database System (Oracle) 55 End of chapter 4
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.