Chapter Four SQL
Chapter Four SQL
1
Chapter 4 Outline
SQL Data Definition and Data Types
Specifying Constraints in SQL
Basic Retrieval Queries in SQL
INSERT, DELETE, and UPDATE Statements in SQL
Additional Features of SQL
2
Basic SQL
SQL language
Considered one of the major reasons for the commercial success of relational
databases
SQL
The origin of SQL is relational predicate calculus called tuple calculus (see Ch.8)
which was proposed initially as the language SQUARE.
SQL Actually comes from the word “SEQUEL” which was the original term used in the paper:
“SEQUEL TO SQUARE” by Chamberlin and Boyce. IBM could not copyright that term, so they
abbreviated to SQL and copyrighted the term SQL.
Now popularly known as “Structured Query language”.
SQL is an informal or practical rendering of the relational data model with syntax
3
SQL Data Definition, Data Types, Standards
Terminology:
Table, row, and column used for relational model terms relation,
tuple, and attribute
CREATE statement
Main SQL command for data definition
The language has features for : Data definition, Data Manipulation,
Transaction control (Transact-SQL, Ch. 20), Indexing (Ch.17), Security
specification (Grant and Revoke- see Ch.30), Active databases (Ch.26),
Multi-media (Ch.26), Distributed databases (Ch.23) etc.
4
SQL Standards
SQL has gone through many standards: starting with SQL-86 or SQL
1.A. SQL-92 is referred to as SQL-2.
Later standards (from SQL-1999) are divided into core specification and
specialized extensions. The extensions are implemented for different
applications – such as data mining, data warehousing, multimedia etc.
SQL-2006 added XML features (Ch. 13); In 2008 they added Object-
oriented features (Ch. 12).
SQL-3 is the current standard which started with SQL-1999. It is not fully
implemented in any RDBMS.
5
Schema and Catalog Concepts in SQL
We cover the basic standard SQL syntax – there are variations in
existing RDBMS systems
SQL schema
Identified by a schema name
Includes an authorization identifier and descriptors for each element
Schema elements include
Tables, constraints, views, domains, and other constructs
Each statement in SQL ends with a semicolon
6
Schema and Catalog Concepts in SQL (cont’d.)
CREATE SCHEMA statement
CREATE SCHEMA COMPANY AUTHORIZATION ‘Jsmith’;
Catalog
Named collection of schemas in an SQL environment
SQL also has the concept of a cluster of catalogs.
7
The CREATE TABLE Command in SQL
Specifying a new relation
Provide name of table
Specify attributes, their types and initial constraints
Can optionally specify schema:
CREATE TABLE COMPANY.EMPLOYEE ...
or
CREATE TABLE EMPLOYEE ...
8
The CREATE TABLE Command in SQL (cont’d.)
Base tables (base relations)
Relation and its tuples are actually created and stored as a file by the
DBMS
Virtual relations (views)
Created through the CREATE VIEW statement. Do not correspond to
any physical file.
9
COMPANY relational database schema (Fig.
5.7)
10
One possible database state for the COMPANY relational
database schema (Fig. 5.6)
11
One possible database state for the
COMPANY relational database schema –
continued (Fig. 5.6)
12
SQL CREATE TABLE data definition statements
for defining the COMPANY schema from Figure
5.7 (Fig. 6.1)
13
SQL CREATE TABLE data definition statements for defining
the COMPANY schema from Figure 5.7 (Fig. 6.1) -continued
14
Attribute Data Types and Domains in SQL
Basic data types
Numeric data types
Integer numbers: INTEGER, INT, and SMALLINT
Floating-point (real) numbers: FLOAT or REAL, and DOUBLE
PRECISION
Character-string data types
Fixed length: CHAR(n), CHARACTER(n)
Varying length: VARCHAR(n), CHAR VARYING(n), CHARACTER
VARYING(n)
16
Attribute Data Types and Domains in SQL
(cont’d.)
Bit-string data types
Fixed length: BIT(n)
Varying length: BIT VARYING(n)
Boolean data type
Values of TRUE or FALSE or NULL
DATE data type
Ten positions
Components are YEAR, MONTH, and DAY in the form YYYY-MM-DD
Multiple mapping functions available in RDBMSs to change date formats
17
Attribute Data Types and Domains in SQL
(cont’d.)
Additional data types
Timestamp data type
Includes the DATE and TIME fields
Plus a minimum of six positions for decimal fractions of seconds
Optional WITH TIME ZONE qualifier
INTERVAL data type
Specifies a relative value that can be used to increment or decrement an
absolute value of a date, time, or timestamp
DATE, TIME, Timestamp, INTERVAL data types can be cast or converted to
string formats for comparison.
18
Attribute Data Types and Domains in SQL
(cont’d.)
Domain
Name used with the attribute specification
Makes it easier to change the data type for a domain that is used
by numerous attributes
Improves schema readability
Example:
CREATE DOMAIN SSN_TYPE AS CHAR(9);
TYPE
User Defined Types (UDTs) are supported for object-oriented
applications. (See Ch.12) Uses the command: CREATE TYPE
19
Specifying Constraints in SQL
Basic constraints:
Relational Model has 3 basic constraint types that are supported in
SQL:
Key constraint: A primary key value cannot be duplicated
Entity Integrity Constraint: A primary key value cannot be null
Referential integrity constraints : The “foreign key “ must have a
value that is already present as a primary key, or may be null.
20
Specifying Attribute Constraints
Other Restrictions on attribute domains:
Default value of an attribute
DEFAULT <value>
NULL is not permitted for a particular attribute (NOT NULL)
CHECK clause
Dnumber INT NOT NULL CHECK (Dnumber > 0 AND Dnumber
< 21);
21
Specifying Key and Referential Integrity
Constraints
PRIMARY KEY clause
Specifies one or more attributes that make up the primary key of a
relation
Dnumber INT PRIMARY KEY;
UNIQUE clause
Specifies alternate (secondary) keys (called CANDIDATE keys in the
relational model).
Dname VARCHAR(15) UNIQUE;
22
Specifying Key and Referential Integrity
Constraints (cont’d.)
FOREIGN KEY clause
Default operation: reject update on violation
Attach referential triggered action clause
Options include SET NULL, CASCADE, and SET DEFAULT
Action taken by the DBMS for SET NULL or SET DEFAULT is the same
for both ON DELETE and ON UPDATE
CASCADE option suitable for “relationship” relations
23
Giving Names to Constraints
Using the Keyword CONSTRAINT
Name a constraint
Useful for later altering
24
Default attribute values and referential integrity triggered
action specification (Fig. 6.2)
25
Specifying Constraints on Tuples Using CHECK
Additional Constraints on individual tuples within a relation are also
possible using CHECK
CHECK clauses at the end of a CREATE TABLE statement
Apply to each tuple individually
CHECK (Dept_create_date <= Mgr_start_date);
26
Basic Retrieval Queries in SQL
SELECT statement
One basic statement for retrieving information from a database
SQL allows a table to have two or more tuples that are identical in
all their attribute values
Unlike relational model (relational model is strictly set-theory based)
Multiset or bag behavior
Tuple-id may be used as a key
27
The SELECT-FROM-WHERE Structure of Basic
SQL Queries
Basic form of the SELECT statement:
28
The SELECT-FROM-WHERE Structure of Basic
SQL Queries (cont’d.)
Logical comparison operators
=, <, <=, >, >=, and <>
Projection attributes
Attributes whose values are to be retrieved
Selection condition
Boolean condition that must be true for any retrieved tuple.
Selection conditions include join conditions (see Ch.8) when
multiple relations are involved.
29
Basic Retrieval Queries
30
Basic Retrieval Queries (Contd.)
31
Ambiguous Attribute Names
Same name can be used for two (or more) attributes in different
relations
As long as the attributes are in different relations
Must qualify the attribute name with the relation name to prevent
ambiguity
32
Aliasing, and Renaming
Aliases or tuple variables
Declare alternative relation names E and S to refer to the
EMPLOYEE relation twice in a query:
Query 8. For each employee, retrieve the employee’s first and last name and the first and last
name of his or her immediate supervisor.
SELECT E.Fname, E.Lname, S.Fname, S.Lname
FROM EMPLOYEE AS E, EMPLOYEE AS S
WHERE E.Super_ssn=S.Ssn;
Recommended practice to abbreviate names and to prefix same or
similar attribute from multiple tables.
33
Aliasing,Renaming and Tuple Variables (contd.)
The attribute names can also be renamed
EMPLOYEE AS E(Fn, Mi, Ln, Ssn, Bd, Addr, Sex,
Sal, Sssn, Dno)
Note that the relation EMPLOYEE now has a variable name E
34
Unspecified WHERE Clause
and Use of the Asterisk
Missing WHERE clause
Indicates no condition on tuple selection
Effect is a CROSS PRODUCT
Result is all possible tuple combinations (or the Algebra operation of
Cartesian Product– see Ch.8) result
35
Unspecified WHERE Clause
and Use of the Asterisk (cont’d.)
Specify an asterisk (*)
Retrieve all the attribute values of the selected tuples
The * can be prefixed by the relation name; e.g., EMPLOYEE *
36
Tables as Sets in SQL
SQL does not automatically eliminate duplicate tuples in query results
For aggregate operations (See sec 7.1.7) duplicates must be accounted for
Use the keyword DISTINCT in the SELECT clause
Only distinct tuples should remain in the result
37
Tables as Sets in SQL (cont’d.)
Set operations
UNION, EXCEPT (difference), INTERSECT
Corresponding multiset operations: UNION ALL, EXCEPT ALL,
INTERSECT ALL)
Type compatibility is needed for these operations to be valid
38
Substring Pattern Matching and Arithmetic
Operators
LIKE comparison operator
Used for string pattern matching
% replaces an arbitrary number of zero or more
characters
underscore (_) replaces a single character
Examples: WHERE Address LIKE ‘%Houston,TX%’;
WHERE Ssn LIKE ‘_ _ 1_ _ 8901’;
BETWEEN comparison operator
E.g., in Q14 :
WHERE(Salary BETWEEN 30000 AND 40000)
AND Dno = 5;
39
Arithmetic Operations
40
Ordering of Query Results
Use ORDER BY clause
Keyword DESC to see result in a descending order of values
Keyword ASC to specify ascending order explicitly
Typically placed at the end of the query
41
Basic SQL Retrieval Query Block
42
INSERT, DELETE, and UPDATE Statements in
SQL
Three commands used to modify the database:
INSERT, DELETE, and UPDATE
43
INSERT
In its simplest form, it is used to add one or more tuples to a
relation
Attribute values should be listed in the same order as the attributes
were specified in the CREATE TABLE command
Constraints on data types are observed automatically
Any integrity constraints as a part of the DDL specification are
enforced
44
The INSERT Command
Specify the relation name and a list of values for the tuple. All
values including nulls are supplied.
45
BULK LOADING OF TABLES
Another variation of INSERT is used for bulk-loading of several tuples
into tables
A new table TNEW can be created with the same attributes as T and
using LIKE and DATA in the syntax, it can be loaded with entire data.
EXAMPLE:
46
DELETE
Removes tuples from a relation
Includes a WHERE-clause to select the tuples to be deleted
Tuples are deleted from only one table at a time (unless CASCADE is specified
47
The DELETE Command
Removes tuples from a relation
Includes a WHERE clause to select the tuples to be deleted. The
number of tuples deleted will vary.
48
UPDATE
Used to modify attribute values of one or more selected tuples
A WHERE-clause selects the tuples to be modified
An additional SET-clause specifies the attributes to be modified
and their new values
Each command modifies tuples in the same relation
Referential integrity specified as part of DDL specification is
enforced
49
UPDATE (contd.)
Example: Change the location and controlling department number
of project number 10 to 'Bellaire' and 5, respectively
50
UPDATE (contd.)
Example: Give all employees in the 'Research' department a 10% raise in
salary.
U6: UPDATE EMPLOYEE
SET SALARY = SALARY *1.1
WHERE DNO IN (SELECT DNUMBER
FROM DEPARTMENT
WHERE DNAME='Research')
In this request, the modified SALARY value depends on the original SALARY
value in each tuple
The reference to the SALARY attribute on the right of = refers to the old
SALARY value before modification
The reference to the SALARY attribute on the left of = refers to the new
SALARY value after modification
51
Additional Features of SQL
Techniques for specifying complex retrieval queries (see Ch.7)
Writing programs in various programming languages that include SQL
statements: Embedded and dynamic SQL, SQL/CLI (Call Level
Interface) and its predecessor ODBC, SQL/PSM (Persistent Stored
Module) (See Ch.10)
Set of commands for specifying physical database design parameters,
file structures for relations, and access paths, e.g., CREATE INDEX
52
Additional Features of SQL (cont’d.)
Transaction control commands (Ch.20)
Specifying the granting and revoking of privileges to users (Ch.30)
Constructs for creating triggers (Ch.26)
Enhanced relational systems known as object-relational define
relations as classes. Abstract data types (called User Defined
Types- UDTs) are supported with CREATE TYPE
New technologies such as XML (Ch.13) and OLAP (Ch.29) are
added to versions of SQL
53
Summary
SQL
A Comprehensive language for relational database management
Data definition, queries, updates, constraint specification, and view
definition
Covered :
Data definition commands for creating tables
Commands for constraint specification
Simple retrieval queries
Database update commands
54