Basic SQL: CHAPTER 4 (6/E) CHAPTER 8 (5/E)
Basic SQL: CHAPTER 4 (6/E) CHAPTER 8 (5/E)
Basic SQL: CHAPTER 4 (6/E) CHAPTER 8 (5/E)
CHAPTER 4 (6/E)
CHAPTER 8 (5/E)
1
LECTURE OUTLINE
SQL Data Definition and Data Types
Specifying Constraints in SQL
Basic Retrieval Queries in SQL
Set Operations in SQL
2
BASIC SQL
Structured Query Language
Considered one of the major reasons for the commercial success of
relational databases
Statements for data definitions, queries, and updates
• Both DDL and DML
• Core specification plus specialized extensions
Terminology:
Relational Model SQL
relation table
tuple row
attribute column
Syntax notes:
• Some interfaces require each statement to end with a semicolon.
• SQL is not case-sensitive.
3
SQL DATA DEFINITION
CREATE statement
• Main SQL command for data definition
SQL schema
• Identified by a schema name
• Includes an authorization identifier (owner)
• Components are descriptors for each schema element
• Tables, constraints, views, domains, and other constructs
CREATE SCHEMA statement
• CREATE SCHEMA COMPANY AUTHORIZATION ‘Jsmith’;
4
CREATE TABLE COMMAND
Specify a new relation
• Provide name
• Specify attributes and initial constraints
• Base tables (base relations)
• Relation and its tuples are physically stored and managed by DBMS
Can optionally specify schema:
• CREATE TABLE COMPANY.EMPLOYEE ...
or
• CREATE TABLE EMPLOYEE ...
Include information for each column (attribute) plus constraints
• Column name
• Column type (domain)
• Key, uniqueness, and null constraints
5
BASIC DATA TYPES
Numeric data types
• Integer numbers: INT, INTEGER, SMALLINT, BIGINT
• Floating-point (real) numbers: REAL, DOUBLE , FLOAT
• Fixed-point numbers: DECIMAL(n,m), DEC(n,m), NUMERIC(n,m), NUM(n,m)
• Character-string data types
• Fixed length: CHAR(n), CHARACTER(n)
• Varying length: VARCHAR(n), CHAR VARYING(n), CHARACTER VARYING(n),
LONG VARCHAR
Large object data types
• Characters: CLOB, CHAR LARGE OBJECT , CHARACTER LARGE OBJECT
• Bits: BLOB, BINARY LARGE OBJECT
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
6
MORE DATA TYPES
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
7
);
);
8
DOMAINS IN SQL
Name used in place of built-in data type
Makes it easier to change the data type used by numerous columns
Improves schema readability
Example:
CREATE DOMAIN SIN_TYPE AS CHAR(9);
9
SPECIFYING KEY CONSTRAINTS
PRIMARY KEY clause
• Specifies one or more attributes that make up the primary key of a
relation
Dnumber INT NOT NULL PRIMARY KEY,
• Primary key attributes must be declared NOT NULL
UNIQUE clause
• Specifies alternate (candidate) keys
Dname VARCHAR(15) UNIQUE;
• May or may not allow null values, depending on declaration
11
REFERENTIAL CONSTRAINTS
FOREIGN KEY clause
FOREIGN KEY (Dept) REFERENCES DEPARTMENT (Dnum),
• Default operation: reject update on violation
• Attach referential triggered action clause in case referenced tuple
is deleted
• Options include SET NULL, CASCADE, and SET DEFAULT
Foreign key declaration must refer to a table already created
12
SPECIFYING TUPLE CONSTRAINTS
Some constraints involve several columns
CHECK clause at the end of a CREATE TABLE statement
• Apply to each tuple individually
Example
• CHECK (Dept_create_date <= Mgr_start_date)
13
EXAMPLE
Recall Employee example:
14
15
16
BASIC SQL RETRIEVAL QUERIES
All retrievals use SELECT statement:
SELECT <return list>
FROM <table list>
[ WHERE <condition> ] ;
where
<return list> is a list of expressions or column names whose
values are to be retrieved by the query
<table list> is a list of relation names required to process the
query
<condition> is a Boolean expression that identifies the tuples
to be retrieved by the query
Example
SELECT title, year, genre
FROM Film
WHERE director = 'Steven Spielberg' AND year > 1990;
18
SEMANTICS FOR 1 RELATION
1. Start with the relation named in the FROM clause
2. Consider each tuple one after the other, eliminating those that do
not satisfy the WHERE clause.
• Boolean condition that must be true for any retrieved tuple
• Logical comparison operators
=, <, <=, >, >=, and <>
3. For each remaining tuple, create a return tuple with columns for
each expression (column name) in the SELECT clause.
• Use SELECT * to select all columns.
Film
title genre year director minutes budget gross
The Company Men drama 2010 John Wells 104 15,000,000 4,439,063
19
SELECT-FROM-WHERE SEMANTICS
What if there are several relations in the FROM clause?
1. Start with cross-product of all relation(s) listed in the FROM clause.
• Every tuple in R1 paired up with every tuple in R2 paired up with …
2. Consider each tuple one after the other, eliminating those that do
not satisfy the WHERE clause.
3. For each remaining tuple, create a return tuple with columns for
each expression (column name) in the SELECT clause.
Steps 2 and 3 are just the same as before.
20
AMBIGUOUS COLUMN NAMES
Same name may be used for two (or more) columns (in different
relations)
• Must qualify the column name with the relation name to prevent
ambiguity
Customer Sale LineItem
custid name address phone saleid date custid saleid product quantity price
21
2-RELATION SELECT-FROM-WHERE
SELECT award, actor, persona, Role.movie
FROM Honours, Role
WHERE category = 'actor' AND winner = actor
AND Honours.movie = Role.movie
Honours Role
movie award category winner actor movie persona
Lincoln Critic's Choice actor Daniel Day-Lewis Ben Affleck Argo Tony Mendez
Argo Critic's Choice director Ben Affleck Tommy Lee Jones Lincoln Thaddeus Stevens
Lincoln SAG supporting actor Tommy Lee Jones Daniel Day-Lewis The Boxer Danny Flynn
Lincoln Critic's Choice screenplay Tony Kushner Daniel Day-Lewis Lincoln Abraham Lincoln
War Horse BMI Flim music John Williams
22
…
RECALL SAMPLE TABLES
23
24
25
26
TABLES AS SETS IN SQL
Duplicate tuples may appear in query results
• From duplicates in base tables
• From projecting out distinguishing columns
Keyword DISTINCT in the SELECT clause eliminates duplicates
28
SET OPERATIONS
Result treated as a set (no duplicates)
• UNION, EXCEPT (difference), INTERSECT
Corresponding multiset (bag) operations:
• UNION ALL, EXCEPT ALL, INTERSECT ALL
Arguments must be union-compatible
• Same number of columns
• Corresponding columns of same type
29
OTHER OPERATORS
Standard arithmetic operators:
• Addition (+), subtraction (–), multiplication (*), and division (/)
[NOT] LIKE comparison operator
• Used for string pattern matching
• Percent sign (%) matches zero or more characters
• Underscore (_) matches a single character
e.g., to also match Tommy Lee Jones as supporting actor:
SELECT award, actor, persona, Role.movie
FROM Honours, Role
WHERE category LIKE '%actor' AND winner = actor
AND Honours.movie = Role.movie;
[NOT] BETWEEN comparison operator
WHERE year BETWEEN 1990 AND 2010
equivalent to WHERE year >= 1990 AND YEAR <= 2010
30
LECTURE SUMMARY
Introduction to SQL
• Comprehensive language
• Data definition including constraint specification
• Basic SELECT-FROM-WHERE
• Set operators
31