Database Programming with SQL

Similar documents
Database Programming - Section 10. Instructor Guide

Working with Columns, Characters and Rows. Copyright 2008, Oracle. All rights reserved.

Using DDL Statements to Create and Manage Tables. Copyright 2004, Oracle. All rights reserved.

Using DDL Statements to Create and Manage Tables. Copyright 2004, Oracle. All rights reserved.

Database Foundations. 6-3 Data Definition Language (DDL) Copyright 2015, Oracle and/or its affiliates. All rights reserved.

Using DDL Statements to Create and Manage Tables. Copyright 2006, Oracle. All rights reserved.

CHAPTER4 CONSTRAINTS

Database Programming with SQL

Database Programming with PL/SQL

Database Programming with SQL

Downloaded from

Enhanced Data Models for Advanced Applications. Active Database Concepts

Relational Model. IT 5101 Introduction to Database Systems. J.G. Zheng Fall 2011

Database Foundations. 6-4 Data Manipulation Language (DML) Copyright 2015, Oracle and/or its affiliates. All rights reserved.

EGCI 321: Database Systems. Dr. Tanasanee Phienthrakul

DATA CONSTRAINT. Prepared By: Dr. Vipul Vekariya

CIS 207 Oracle - Database Programming and SQL HOMEWORK: # 13

3.1. Keys: Super Key, Candidate Key, Primary Key, Alternate Key, Foreign Key

Database Programming with SQL

Private Institute of Aga NETWORK DATABASE LECTURER NIYAZ M. SALIH

Consistency The DBMS must ensure the database will always be in a consistent state. Whenever data is modified, the database will change from one

Limit Rows Selected. Copyright 2008, Oracle. All rights reserved.

Database Foundations. 5-1 Mapping Entities and Attributes. Copyright 2015, Oracle and/or its affiliates. All rights reserved.

Retrieving Data Using the SQL SELECT Statement. Copyright 2009, Oracle. All rights reserved.

COMP 430 Intro. to Database Systems. Encapsulating SQL code

Simple SQL. Peter Y. Wu. Dept of Computer and Information Systems Robert Morris University

Oracle Database 10g Express

Database Management Systems,

Database Design. 9-2 Basic Mapping: The Transformation Process. Copyright 2015, Oracle and/or its affiliates. All rights reserved.

Basic Mapping: The Transformation Process. Copyright 2011, Oracle. All rights reserved.

Retrieving Data Using the SQL SELECT Statement. Copyright 2004, Oracle. All rights reserved.

Introduction to Relational Database Concepts. Copyright 2011, Oracle. All rights reserved.

Database Programming - Section 18. Instructor Guide

SQL Server 2008 Tutorial 3: Database Creation

ACCESS isn t only a great development tool it s

Chapter 2. DB2 concepts

Structure Query Language (SQL)

The Relational Model

Course Outline and Objectives: Database Programming with SQL

EE221 Databases Practicals Manual

MySQL. A practical introduction to database design

Database Programming with PL/SQL

Oracle Database 10g: SQL Fundamentals I. Oracle Internal & Oracle Academy Use Only. Student Guide Volume 2. D17108GC30 Edition 3.0 January 2009 D57871

Item: 1 (Ref:Cert-1Z )

A <column constraint> is a constraint that applies to a single column.

October 29, Copyright 2012 by World Class CAD, LLC. All Rights Reserved.

Being day six of the DBCC Command month at SteveStedman.com, today's featured DBCC Command is DBCC CHECKIDENT.

The DBMS accepts requests for data from the application program and instructs the operating system to transfer the appropriate data.

CS2300: File Structures and Introduction to Database Systems

Oracle 1z z0-146 Oracle Database 11g: Advanced PL/SQL. Practice Test. Version QQ:

File Processing Approaches

MySQL Introduction. By Prof. B.A.Khivsara

Tables From Existing Tables

Indexes (continued) Customer table with record numbers. Source: Concepts of Database Management

Lab 6 SQL-DDL Advanced in SQL Server 2008

Updating Column Values and Deleting Rows. Copyright 2008, Oracle. All rights reserved.

Handout 6 CS-605 Spring 18 Page 1 of 7. Handout 6. Physical Database Modeling

Database Programming with PL/SQL

Creating Other Schema Objects

Managing Your Database Using Oracle SQL Developer

Data Modelling and Databases. Exercise Session 7: Integrity Constraints

1Z0-007 ineroduction to oracle9l:sql

Microsoft MOS- Using Microsoft Office Access Download Full Version :

IT Certification Exams Provider! Weofferfreeupdateserviceforoneyear! h ps://

Basic SQL. Basic SQL. Basic SQL

Assignment Grading Rubric

INDEX. 1 Basic SQL Statements. 2 Restricting and Sorting Data. 3 Single Row Functions. 4 Displaying data from multiple tables

ER Model. Objectives (2/2) Electricite Du Laos (EDL) Dr. Kanda Runapongsa Saikaew, Computer Engineering, KKU 1

Introduction to Computer Science and Business

Review. Objec,ves. Example Students Table. Database Overview 3/8/17. PostgreSQL DB Elas,csearch. Databases

Managing Data. Copyright 2004, Oracle. All rights reserved.

QUETZALANDIA.COM. 5. Data Manipulation Language

SQL: A COMMERCIAL DATABASE LANGUAGE. Complex Constraints

Full file at

Database Design. 6-2 Normalization and First Normal Form. Copyright 2015, Oracle and/or its affiliates. All rights reserved.

Keys are fields in a table which participate in below activities in RDBMS systems:

Database Management Systems,

MIT Database Management Systems Lesson 03: Entity Relationship Diagrams

CIS Reading Packet: "Views, and Simple Reports - Part 1"

Database Management System Dr. S. Srinath Department of Computer Science & Engineering Indian Institute of Technology, Madras Lecture No.

DUE: CD_NUMBER TITLE PRODUCER YEAR 97 Celebrate the Day R & B Inc Holiday Tunes for All Tunes are US 2004

Relational Data Model

MySQL. Rheinisch-Westfälische Technische Hochschule Aachen Data Management and Data Exploration Group Univ.-Prof. Dr. rer. nat.

Objectives. After completing this lesson, you should be able to do the following:

Lecture 07. Spring 2018 Borough of Manhattan Community College

2004 John Mylopoulos. The Entity-Relationship Model John Mylopoulos. The Entity-Relationship Model John Mylopoulos

Babu Madhav Institute of Information Technology 2015

Building a Test Suite

ER Modeling ER Diagram ID-Dependent and Weak Entities Pg 1

SQL Structured Query Language Introduction

A practical introduction to database design

Transaction Management Chapter 11. Class 9: Transaction Management 1

Data about data is database Select correct option: True False Partially True None of the Above

Part 9: More Design Techniques

Assertions, Views, and Programming. CS157A Chris Pollett Oct. 31, 2005.

Unit 27 Web Server Scripting Extended Diploma in ICT

PASS4TEST. IT Certification Guaranteed, The Easy Way! We offer free update service for one year

CSE 530A. Synthetic Keys. Washington University Fall 2013

CMPT 354: Database System I. Lecture 2. Relational Model

Creating SQL Tables and using Data Types

Transcription:

Database Programming with SQL 14-1

Objectives This lesson covers the following objectives: Define the term "constraint" as it relates to data integrity State when it is possible to define a constraint at the column level, and when it is possible at the table level State why it is important to give meaningful names to constraints State which data integrity rules are enforced by NOT NULL and UNIQUE constraints 3

Objectives This lesson covers the following objectives: Write a CREATE TABLE statement which includes NOT NULL and UNIQUE constraints at the table and column levels Explain how constraints are created at the time of table creation 4

Purpose If you think about it, how would society function without rules? It is a rule to stop at a red traffic light? Would it be safe to drive without this rule? For databases, it is a rule that a foreign-key value cannot be entered without first entering a primary-key value. What do you think would happen to a database if this rule wasn't enforced? A database is only as reliable as the data that is in it. Constraints are used to prevent invalid data entry into tables. 5

Purpose Would it make sense to have negative salary values or six students with the same student ID or two tables that no longer reference each other? Without rules, how could you trust the integrity of the database? In the next three lessons, you will study how to create the constraints that enforce the "rules." You will also learn how to manage them and view constraint definitions in the data dictionary. 6

Constraints in General So, what exactly is a constraint? Think of constraints as database rules. All constraint definitions are stored in the data dictionary. Constraints prevent the deletion of a table if there are dependencies from other tables. Constraints enforce rules on the data whenever a row is inserted, updated, or deleted from a table. 7

Constraints in General Constraints are important and naming them is also important. Although you could name a constraint "constraint_1" or "constraint_2," you'd soon find it difficult to distinguish one constraint from another and would end up redoing a lot of work. 8

Creating Constraints Recall the SQL syntax for creating a table. In the CREATE TABLE statement shown on the next slide, each column and its data type is defined. You use the CREATE TABLE statement to establish constraints for each column in the table. There are two different places in the CREATE TABLE statement that you can specify the constraint details: At the column level next to the name and data type At the table level after all the column names are listed 9

Creating Constraints CREATE TABLE clients (client_number NUMBER(4), first_name VARCHAR2(14), last_name VARCHAR2(13)); Note that the column-level simply refers to the area in the CREATE TABLE statement where the columns are defined. The table level refers to the last line in the statement below the list of individual column names. 10

Constraints at the Column Level A column-level constraint references a single column. To establish a column-level constraint, the constraint must be defined in the CREATE TABLE statement as part of the column definition. Examine the following SQL statement that establishes a column-level constraint. CREATE TABLE clients (client_number NUMBER(4) CONSTRAINT clients_client_num_pk PRIMARY KEY, first_name VARCHAR2(14), last_name VARCHAR2(13)); 11

Constraints at the Column Level CREATE TABLE clients CREATE TABLE clients (client_number NUMBER(4) CONSTRAINT clients_client_num_pk PRIMARY KEY, first_name VARCHAR2(14), last_name VARCHAR2(13)); The name of the constraint is clients_client_num_pk. It enforces the business rule that the client_number is the primary key of the clients table. 12

Naming Constraints Every constraint in the database has a name. When a constraint is created, it can be given a name, such as clients_client_num_pk, or given no name, in which case the system gives the constraint a name, such as SYS_C00585417. A naming convention can be the combination of the tablename abbreviated and a column name abbreviated followed by the constraint abbreviation: table-name_column-name_constraint-type If the reserved word CONSTRAINT is used in the CREATE TABLE definition, you must give the constraint a name. Constraint names are limited to 30 characters. 13

Naming Constraints at the Column Level It is best to name constraints yourself because systemgenerated names are not easy to recognize. Look at this table definition: CREATE TABLE clients (client_number NUMBER(4), last_name VARCHAR2(13), email VARCHAR2(80)); 14

Naming Constraints at the Column Level According to our naming convention: A primary key constraint on client_number would be named clients_client_number_pk A not null constraint on last_name would be named clients_last_name_nn A unique constraint on email address would be named clients_email_uk CREATE TABLE clients (client_number NUMBER(4) CONSTRAINT clients_cient_num_pk PRIMARY KEY, last_name VARCHAR2(13) CONSTRAINT clients_last_name_nn NOT NULL, email VARCHAR2(80) CONSTRAINT clients_emil_uk UNIQUE); 15

Constraint Naming Example This example shows both a user-named constraint and a system-named constraint: CREATE TABLE clients (client_number NUMBER(4) CONSTRAINT clients_client_num_pk PRIMARY KEY, last_name VARCHAR2(13) NOT NULL, email VARCHAR2(80)); 16

Constraint Naming Example System-named constraint: CREATE TABLE clients (client_number NUMBER(4) CONSTRAINT clients_client_num_pk PRIMARY KEY, last_name VARCHAR2(13) NOT NULL, email VARCHAR2(80)); Two constraints have been created: A user-named constraint named clients_client_num_pk, to enforce the rule that client_number is the primary key A system-named constraint named SYS_Cn (where n is a unique integer) to enforce the rule that last_names cannot be null. 17

Constraints at the Table Level Table-level constraints are listed separately from the column definitions in the CREATE TABLE statement. Table-level constraint definitions are listed after all the table columns have been defined. In the example shown, the unique constraint is listed last in the CREATE TABLE statement. CREATE TABLE clients ( client_number NUMBER(6) NOT NULL, first_name VARCHAR2(20), last_name VARCHAR2(20), phone VARCHAR2(20), email VARCHAR2(10) NOT NULL, CONSTRAINT clients_phone_email_uk UNIQUE (email,phone)); 18

Basic Rules for Constraints Constraints that refer to more than one column (a composite key) must be defined at the table level The NOT NULL constraint can be specified only at the column level, not the table level UNIQUE, PRIMARY KEY, FOREIGN KEY, and CHECK constraints can be defined at either the column or table level If the word CONSTRAINT is used in a CREATE TABLE statement, you must give the constraint a name 19

Examine the Violations CREATE TABLE clients( client_number NUMBER(6), first_name VARCHAR2(20), last_name VARCHAR2(20), phone VARCHAR2(20) CONSTRAINT phone_email_uk UNIQUE(email,phone), email VARCHAR2(10) CONSTRAINT NOT NULL, CONSTRAINT emailclients_email NOT NULL, CONSTRAINT clients_client_num_pk PRIMARY KEY (client_number)); 20

Examine the Violations COMPOSITE UNIQUE KEY VIOLATION Composite keys must be defined at the table level. CREATE TABLE clients( client_number NUMBER(6), first_name VARCHAR2(20), last_name VARCHAR2(20), phone VARCHAR2(20) CONSTRAINT phone_email_uk UNIQUE(email,phone), email VARCHAR2(10) CONSTRAINT NOT NULL, CONSTRAINT emailclients_email NOT NULL, CONSTRAINT clients_client_num_pk PRIMARY KEY (client_number)); NOT NULL VIOLATION NOT NULL constraints can only be defined at the column level. NAME VIOLATION When using the term CONSTRAINT, it must be followed by a constraint name. 21

Five Types of Constraints Five types of constraints exist within an Oracle database. Each type enforces a different rule. The types are: NOT NULL constraints UNIQUE constraints PRIMARY KEY constraints FOREIGN KEY constraints CHECK constraints 22

Five Types of Constraints In the remainder of this lesson, you will learn about NOT NULL and UNIQUE constraints. The next lesson will teach you about the other three types of constraints. 23

NOT NULL Constraint A column defined with a NOT NULL constraint requires that for every row entered into the table, a value must exist for that column. For example, if the email column in an employees table was defined as NOT NULL, every employee entered into the table MUST have a value in the email column. When defining NOT NULL columns, it is customary to use the suffix _nn in the constraint name. For example, the constraint name for the NOT NULL email column in the employees table could be emp_email_nn. 24

UNIQUE Constraint A UNIQUE constraint requires that every value in a column or set of columns (a composite key) be unique; that is, no two rows of a table can have duplicate values. For example, it may be important for a business to ensure that no two people have the same email address. The email column could be defined using a UNIQUE constraint. The column or set of columns that is defined as UNIQUE is called a unique key. 25

UNIQUE Constraint If the combination of two or more columns must be unique for every entry, the constraint is said to be a composite unique key. Stating that all combinations of email and last name must be UNIQUE is an example of a composite unique key. The word "key" refers to the columns, not the constraint names. 26

Unique Constraint Example If the email column in the table is defined with a UNIQUE constraint, no other client entry can have an identical email. What if two clients live in the same household and share an email address? CLIENT_NUMBER FIRST_NAME LAST_NAME PHONE EMAIL 5922 Hiram Peters 3715832249 hpeters@yahoo.com 5857 Serena Jones 7035335900 serena.jones@jones.com 6133 Lauren Vigil 4072220090 lbv@lbv.net INSERT INTO clients (client_number, first_name, Last_name, phone, email) VALUES (7234, 'Lonny', 'Vigil', 4072220091, 'lbv@lbv.net'); ORA-00001: unique constraint (USWA_SKHS_SQL01_T01.CLIENT_EMAIL_UK) violated 27

Defining When defining UNIQUE constraints, it is customary to use the suffix _uk in the constraint name. For example, the constraint name for the UNIQUE email column in the employees table could be emp_email_uk. To define a composite unique key, you must define the constraint at the table level rather than the column level. An example of a composite unique-key constraint name is: CONSTRAINT clients_phone_email_uk UNIQUE(email,phone) 28

Composite Unique Key UNIQUE constraints allow the input of nulls unless the column also has a NOT NULL constraint defined. A null in a column (or in all columns of a composite unique key) always satisfies a UNIQUE constraint because nulls are not considered equal to anything. CLIENT_NUMBER FIRST_NAME LAST_NAME PHONE EMAIL 5922 Hiram Peters 3715832249 hpeters@yahoo.com 5857 Serena Jones 7035335900 serena.jones@jones.com 6133 Lauren Vigil 4072220090 lbv@lbv.net 7234 Lonny Vigil 4072220091 lbv@lbv.net This combination of columns must be UNIQUE 29

Composite Unique Key To satisfy a constraint that designates a composite unique key, no two rows in the table can have the same combination of values in the key columns. Also, any row that contains nulls in all key columns automatically satisfies the constraint. CLIENT_NUMBER FIRST_NAME LAST_NAME PHONE EMAIL 5922 Hiram Peters 3715832249 hpeters@yahoo.com 5857 Serena Jones 7035335900 serena.jones@jones.com 6133 Lauren Vigil 4072220090 lbv@lbv.net 7234 Lonny Vigil 4072220091 lbv@lbv.net This combination of columns must be UNIQUE 30

Constraints Created at Table Creation When you add a NOT NULL constraint as part of a table creation statement, the Oracle database will create a Check Constraint in the database to enforce a value in the NOT NULL column. This constraint creation can be almost invisible to you when you create your table Oracle just does it. At the end of your table creation statement, the message "Table created" displays, but no details are provided about the number or types of constraints that were also created. 31

Terminology Key terms used in this lesson included: CHECK constraint Constraint Column level constraint FOREIGN KEY NOT NULL constraints PRIMARY KEY 32

Terminology Key terms used in this lesson included: Table level constraint UNIQUE constraints UNIQUE KEY 33

Summary In this lesson, you should have learned how to: Define the term "constraint" as it relates to data integrity State when it is possible to define a constraint at the column level, and when it is possible at the table level State why it is important to give meaningful names to constraints State which data integrity rules are enforced by NOT NULL and UNIQUE constraints 34

Summary In this lesson, you should have learned how to: Write a CREATE TABLE statement which includes NOT NULL and UNIQUE constraints at the table and column levels Explain how constraints are created at the time of table creation 35