7
Chapter 7
Introduction to Structured Query Language (SQL)
Database Systems: Design, Implementation, and Management, Sixth Edition, Rob and Coronel
1
In this chapter, you will learn:
The basic commands and functions of SQL
How to use SQL for data administration (to create tables, indexes, and views) How to use SQL for data manipulation (to add, modify, delete, and retrieve data)
How to use SQL to query a database to extract useful information
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
Introduction to SQL
SQL functions fit into two broad categories: Data definition language
SQL includes commands to create
Database objects such as tables, indexes, and views Commands to define access rights to those database objects
Data manipulation language
Includes commands to insert, update, delete, and retrieve data within the database tables
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
Introduction to SQL (continued)
SQL is relatively easy to learn
Basic command set has a vocabulary of less than 100 words
Nonprocedural language
American National Standards Institute (ANSI) prescribes a standard SQL Several SQL dialects exist
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
SQL Data Definition Commands
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
Data Manipulation Commands
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
Data Definition Commands
Examine the simple database model and the database tables that will form the basis for the many SQL examples
Understand the data environment
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
The Database Model
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
Creating the Database
Two tasks must be completed
create the database structure create the tables that will hold the end-user data
First task
RDBMS creates the physical files that will hold the database Tends to differ substantially from one RDBMS to another
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
The Database Schema
Authentication
Process through which the DBMS verifies that only registered users are able to access the database Log on to the RDBMS using a user ID and a password created by the database administrator
Schema
Group of database objectssuch as tables and indexesthat are related to each other
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
10
Data Types
Data type selection is usually dictated by the nature of the data and by the intended use
Pay close attention to the expected use of attributes for sorting and data retrieval purposes
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
11
Some Common SQL Data Types
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
12
Creating Table Structures
Use one line per column (attribute) definition Use spaces to line up the attribute characteristics and constraints Table and attribute names are capitalized NOT NULL specification UNIQUE specification Primary key attributes contain both a NOT NULL and a UNIQUE specification RDBMS will automatically enforce referential integrity for foreign keys Command sequence ends with a semicolon
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
13
Other SQL Constraints
NOT NULL constraint
Ensures that a column does not accept nulls
UNIQUE constraint
Ensures that all values in a column are unique
DEFAULT constraint
Assigns a value to an attribute when a new row is added to a table
CHECK constraint
Validates data when an attribute value is entered
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
14
SQL Indexes
When a primary key is declared, DBMS automatically creates a unique index Often need additional indexes Using the CREATE INDEX command, SQL indexes can be created on the basis of any selected attribute Composite index
Index based on two or more attributes Often used to prevent data duplication
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
15
A Duplicated TEST Record
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
16
Creating Table Structures - Example
Attribute (Field) Name EMP_NUM EMP_LNAME EMP_FNAME EMP_INITIAL Data Declaration INTEGER VARCHAR(15) VARCHAR(15) CHAR(1)
EMP_HIREDATE
JOB_CODE
DATE
CHAR(3)
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
17
Creating Table Structures - Example
CREATE TABLE EMP( EMP_NUM INTEGER PRIMARY KEY, EMP_LNAME VARCHAR(15) NOT NULL, EMP_FNAME VARCHAR(15) NOT NULL, EMP_INITIAL CHAR(1), EMP_HIREDATE DATE, JOB_CODE CHAR(3) DEFAULT 000, FOREIGN KEY (JOB_CODE) REFERENCES JOB);
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
18
Creating Table Structures - Example
CREATE TABLE EMP( EMP_NUM INTEGER NOT NULL, EMP_LNAME VARCHAR(15) NOT NULL, EMP_FNAME VARCHAR(15) NOT NULL, EMP_INITIAL CHAR(1), EMP_HIREDATE DATE, JOB_CODE CHAR(3) DEFAULT 000, PRIMARY KEY (EMP_NUM), FOREIGN KEY (JOB_CODE) REFERENCES JOB), CONSTRAINT JAYZSA UNIQUE (EMP_NUM);
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
19
Data Manipulation Commands
Adding table rows Saving table changes Listing table rows
Updating table rows
Restoring table contents
Deleting table rows
Inserting table rows with a select subquery
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
20
Common SQL Data Manipulation Commands
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
21
A Data View and Entry Form
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
22
Saving Table Changes
Changes made to table contents are not physically saved on disk until
Database is closed Program is closed COMMIT command is used
Syntax
COMMIT [WORK]
Will permanently save any changes made to any table in the database
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
23
Listing Table Rows
SELECT
Used to list contents of table
Syntax
SELECT columnlist FROM tablename
Columnlist represents one or more attributes, separated by commas Asterisk can be used as wildcard character to list all attributes
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
24
Updating Table Rows
UPDATE
Modify data in a table
Syntax
UPDATE tablename SET columnname = expression [, columname = expression] [WHERE conditionlist];
If more than one attribute is to be updated in the row, separate corrections with commas
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
25
Updating Table Rows - Example
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
26
Updating Table Rows - Example
UPDATE SET WHERE
UPDATE SET WHERE UPDATE SET WHERE
EMP EMP_PCT = 3.85 EMP_NUM = '103';
EMP EMP_PCT = 5.00 EMP_NUM = 101; EMP EMP_PCT = 8.00 EMP_NUM = 102;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
27
Restoring Table Contents
ROLLBACK
Used restore the database to its previous condition Only applicable if COMMIT command has not been used to permanently store the changes in the database
Syntax
ROLLBACK;
COMMIT and ROLLBACK only work with data manipulation commands that are used to add, modify, or delete table rows
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
28
Deleting Table Rows
DELETE
Deletes a table row
Syntax
DELETE FROM tablename [WHERE conditionlist ];
WHERE condition is optional If WHERE condition is not specified, all rows from the specified table will be deleted
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
29
Deleting Table Rows Example
DELETE WHERE AND AND AND FROM EMP EMP_LNAME = 'Smithfield' EMP_FNAME = 'William' EMP_HIREDATE = '22-June-02' JOB_CODE = '500';
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
30
Inserting Table Rows - Example
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
31
Inserting Table Rows - Example
INSERT INTO EMP_1 VALUES (101, News, John, G, 08-Nov98, 502);
INSERT INTO EMP_1 VALUES (102, Senior, David, H, 12-Jul87, 501);
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
32
Inserting Table Rows with a Select Subquery
INSERT
Inserts multiple rows from another table (source) Uses SELECT subquery
Query that is embedded (or nested) inside another query Executed first
Syntax
INSERT INTO tablename SELECT columnlist FROM tablename
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
33
Inserting Table Rows with a Select Subquery - Example
INSERT INTO PART (PART_CODE, PART_DESCRIPT, PART_PRICE)
SELECT P_CODE, P_DESCRIPT, P_PRICE FROM PRODUCT;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
34
Selecting Rows with Conditional Restrictions
Select partial table contents by placing restrictions on rows to be included in output
Add conditional restrictions to the SELECT statement, using WHERE clause
Syntax
SELECT columnlist FROM tablelist [ WHERE conditionlist ] ;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
35
Selected PRODUCT Table Attributes for VENDOR Code 21344
SELECT P_DESCRIPT, P_INDATE, P_PRICE, V_CODE FROM PRODUCT WHERE V_CODE = 21344;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
36
The Microsoft Access QBE and its SQL
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
37
Comparison Operators
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
38
Selected PRODUCT Table Attributes for VENDOR Codes Other than 21344
SELECT P_DESCRIPT, P_INDATE, P_PRICE, V_CODE FROM PRODUCT WHERE V_CODE <> 21344;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
39
Selected PRODUCT Table Attributes with a P_PRICE Restriction
SELECT P_DESCRIPT, P_ONHAND, P_MIN, P_PRICE FROM PRODUCT WHERE P_PRICE <= 10;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
40
Selected PRODUCT Table Attributes: The ASCII Code Effect
SELECT P_CODE, P_DESCRIPT, P_ONHAND, P_MIN, P_PRICE FROM PRODUCT WHERE P_CODE < 1558QW1;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
41
Selected PRODUCT Table Attributes: Date Restriction
SELECT P_DESCRIPT, P_ONHAND, P_MIN, P_PRICE, P_INDATE FROM PRODUCT WHERE P_INDATE >= 20 Jan 2004;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
42
SELECT Statement with a Computed Column
SELECT P_DESCRIPT, P_ONHAND, P_PRICE, P_ONHAND * P_PRICE FROM PRODUCT;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
43
SELECT Statement with a Computed Column and an Alias
SELECT P_DESCRIPT, P_ONHAND, P_PRICE, P_ONHAND * P_PRICE AS TOTVALUE FROM PRODUCT;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
44
Arithmetic Operators: The Rule of Precedence
Perform operations within parentheses
Perform power operations Perform multiplications and divisions Perform additions and subtractions
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
45
Selected PRODUCT Table Attributes: The Logical OR
SELECT P_DESCRIPT, P_INDATE, P_PRICE, V_CODE FROM PRODUCT WHERE V_CODE = 21344 OR V_CODE = 24288;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
46
Selected PRODUCT Table Attributes: The Logical AND
SELECT P_DESCRIPT, P_INDATE, P_PRICE, V_CODE FROM PRODUCT WHERE PRICE < 50 AND P_INDATE > 15 Jan 2004;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
47
Selected PRODUCT Table Attributes: The Logical AND and OR
SELECT P_DESCRIPT, P_INDATE, P_PRICE, V_CODE FROM PRODUCT WHERE (P_PRICE < 50 AND P_INDATE > 15 Jan 2004) OR V_CODE = 24288;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
48
Special Operators
BETWEEN
Used to check whether attribute value is within a range
IS NULL
Used to check whether attribute value is null
LIKE
Used to check whether attribute value matches a given string pattern
IN
Used to check whether attribute value matches any value within a value list
EXISTS
Used to check if a subquery returns any rows
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
49
Advanced Data Definition Commands
All changes in the table structure are made by using the ALTER command
Followed by a keyword that produces specific change Three options are available
ADD
MODIFY
DROP
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
50
Changing a Columns Data Type
ALTER can be used to change data type
Some RDBMSs (such as Oracle) do not permit changes to data types unless the column to be changed is empty
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
51
Changing a Columns Data Characteristics
Use ALTER to change data characteristics
If the column to be changed already contains data, changes in the columns characteristics are permitted if those changes do not alter the data type
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
52
Adding or Dropping a Column
Use ALTER to add a column
Do not include the NOT NULL clause for new column
Use ALTER to drop a column
Some RDBMSs impose restrictions on the deletion of an attribute
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
53
The Effect of Data Entry into the New P_SALECODE Column
UPDATE PRODUCT SET P_SALECODE = 1 WHERE P_CODE = 1546-QQ2;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
54
Update of the P_SALECODE Column in Multiple Data Rows
UPDATE PRODUCT SET P_SALECODE = 1 WHERE P_CODE = 2232/QWE OR P_CODE = 2232/QTY;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
55
The Effect of Multiple Data Updates in the PRODUCT Table (MS Access)
UPDATE PRODUCT SET P_SALECODE = 2 WHERE P_INDATE < 25-Dec-2003; UPDATE PRODUCT SET P_SALECODE = 1 WHERE P_INDATE >= 16-Jan-2004; AND P_INDATE <= 10-Feb-2004;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
56
Copying Parts of Tables
SQL permits copying contents of selected table columns so that the data need not be reentered manually into newly created table(s)
First create the PART table structure Next add rows to new PART table using PRODUCT table rows
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
57
PART Attributes Copied from the PRODUCT Table
INSERT INTO PART (PART_CODE, PART_DESCRIPT, PART_PRICE) SELECT P_CODE, P_DESCRIPT, P_PRICE FROM PRODUCT;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
58
Advanced Select Queries
SQL provides useful functions
Count Find minimum and maximum values Calculate averages
SQL allows the user to limit queries to only those entries having no duplicates or entries whose duplicates may be grouped
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
59
Selected PRODUCT Table Attributes: Ordered by (Ascending) P_PRICE
SELECT P_CODE, P_DESRIPT, P_INDATE, P_PRICE FROM PRODUCT ORDER BY P_PRICE;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
60
Partial Listing of EMPLOYEE Table Contents
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
61
Telephone List Query Results
SELECT EMP_LNAME, EMP_LNAME, EMP_FNAME, EMP_INITIAL, EMP_AREACODE, EMP_PHONE FROM EMPLOYEE ORDER BY EMP_LNAME, EMP_FNAME, EMP_INITIAL;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
62
A Query Based on Multiple Restrictions
SELECT P_DESCRIPT, V_CODE, P_INDATE, P_PROCE FROM PRODUCT WHERE P_INDATE < 21Jan-2004 AND P_PRICE <= 50.00 ORDER BY V_CODE, P_PROCE DESC;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
63
A Listing of Distinct (Different) V_CODE Values in the PRODUCT Table
SELECT DISTINCT V_CODE FROM PRODUCT;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
64
Some Basic SQL Aggregate Functions
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
65
COUNT Function Output Examples
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
66
MAX and MIN Function Output Examples
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
67
The Total Value of All Items in the PRODUCT Table
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
68
AVG Function Output Examples
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
69
GROUP BY Clause Output Examples
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
70
Incorrect and Correct Use of the GROUP BY Clause
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
71
An Application of the HAVING Clause
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
72
Joining Database Tables
Ability to combine (join) tables on common attributes is most important distinction between a relational database and other databases
Join is performed when data are retrieved from more than one table at a time
Join is generally composed of an equality comparison between the foreign key and the primary key of related tables
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
73
Creating Links Through Foreign Keys
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
74
The Results of a Join
SELECT PRODUCT.P_DESCRIPT, PRODUCT.P_PRICE, VENDOR.V_NAME, VENDOR.V_CONTACT, VENDOR.V_AREACODE, VENDOR.V_PHONE FROM PRODUCT, VENDOR WHERE PRODUCT.V_CODE = VENDOR.V_CODE;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
75
An Ordered and Limited Listing After a JOIN
SELECT P_DESCRIPT, P_PRICE, V_NAME, V_CONTACT, V_AREACODE, V_PHONE FROM PRODUCT, VENDOR WHERE PRODUCT.V_CODE = VENDOR.V_CODE AND P_INDATE > 15-Jan2004;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
76
The Contents of the EMP Table
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
77
Using an Alias to Join a Table to Itself
SELECT E.EMP_NUM, E.EMP_LNAME, E.EMP_MGR, M.EMP_LNAME, FROM EMP E, EMP M WHERE E.EMP_MGR = M.EMP_NUM ORDER BY E.EMP_MGR;
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
78
Converting an ER Model into a Database Structure
Requires following specific rules that govern such a conversion
Decisions made by the designer to govern data integrity are reflected in the foreign key rules Implementation decisions vary according to the problem being addressed
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
79
The Ch06_Artist Database ERD and Tables
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
80
A Data Dictionary for the Ch06_Artist Database
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
81
A Summary of Foreign Key Rules
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
82
Summary
SQL commands can be divided into two overall categories:
Data definition language commands Data manipulation language commands
Basic data definition commands allow you to create tables, indexes, and views Many SQL constraints can be used with columns Aggregate functions
Special functions that perform arithmetic computations over a set of rows
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
83
Summary (continued)
ORDER BY clause
Used to sort output of a SELECT statement Can sort by one or more columns and use either an ascending or descending order
Join output of multiple tables with SELECT statement Natural join uses join condition to match only rows with equal values in specified columns Right outer join and left outer join used to select rows that have no matching values in other related table
Database Systems: Design, Implementation, & Management, 6th Edition, Rob & Coronel
84