Download Document

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Concurrency control wikipedia , lookup

Extensible Storage Engine wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Database wikipedia , lookup

Relational algebra wikipedia , lookup

Open Database Connectivity wikipedia , lookup

Functional Database Model wikipedia , lookup

PL/SQL wikipedia , lookup

Clusterpoint wikipedia , lookup

SQL wikipedia , lookup

Database model wikipedia , lookup

Relational model wikipedia , lookup

Transcript
IT238: Data Modeling and
Database Design
Unit 7:
Data Manipulation: Relational Algebra and
SQL
Instructor: Qing Yan, M.D., Ph.D.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
1
Unit 7 Objectives
• Use comparison and logical operators in the WHERE
clause of an SQL query
• Analyze how to handle null values in SQL queries
Chapter 1 – Database Systems: Architecture and
Components
2
Unit 7 To-Do List
•
Complete the reading
Textbook and Web
• Participate in the discussion board
30 points
• Attend the introductory seminar or complete FLA quiz
20 points
• Complete the unit assignment
50 points
Chapter 1 – Database Systems: Architecture and
Components
3
Chapter 11 – Data Manipulation: Relational Algebra and SQL
4
Chapter 11 – Data Manipulation: Relational Algebra and SQL
5
Key Concepts
• Unary operator- A relational algebra operator that
“operates” on a single relation.
• Select operator- The unary relational algebra
operator used to select a horizontal subset of the
tuples that satisfy a selection condition from a
relation.
• Cartesian product operator- The binary relational
algebra operator that combines tuples from any two
relations in a combinatorial fashion.
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 1 – Database Systems: Architecture and
Components
6
Key Concepts
• DISTINCT qualifier- When specified as part of the
SELECT statement, causes duplicate rows in queries
to be removed.
• LIKE operator- The SQL-92 operator used in
conjunction with pattern matching.
• VARCHAR() data type- A data type, where
represents the length of the column, has a maximum
size of 2000 characters in most DBMSs.
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 1 – Database Systems: Architecture and
Components
7
Key Concepts
• IN [NOT IN] operator- When used in conjunction with
a subquery, evaluates if rows processed by the outer
query are equal [not equal] to any of the values
returned by the subquery.
• ANY operator- When used in conjunction with a
subquery, specifies that the condition be true for at
least one value from the set of values.
• ALL operator- When used in conjunction with a
subquery, specifies that the condition be true for all
values from the set of values.
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 1 – Database Systems: Architecture and
Components
8
Querying Using SQL
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
9
The SELECT-FROM-WHERE Block
• SELECT <column list>
• FROM <table list>
• WHERE <condition>
<-- WHERE clause is
optional
• <column list> is a list of column names whose values
are to be retrieved by the query
• <table list> is a list of the table names required to
process the query
• <condition> is a conditional (Boolean) expression that
identifies the rows to be retrieved by the query.
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
10
Optional Add-ons To SELECT Clause
• GROUP BY group_by expression
• HAVING group_condition
• ORDER BY column name(s)
• group_by_expression forms groups of rows with the
same value
• group_condition filters the groups subject to some
condition
• column name(s) specifies the order of the output.
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
11
COURSE Relation
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
12
SECTION Relation
Se_section# Se_qtr Se_year Se_time Se_maxst Se_room
Se_co_course# Se_pr_profid
----------- ------ ------- ------- -------- -------------- ------------- -----------101 A
2007 T1015
25
22QA375
HT54347
901 A
2006 W1800
35 Rhodes 611
22IS270
SK85977
902 A
2006 H1700
25 Lindner 108
22IS270
SK85977
101 S
2006 T1045
29 Lindner 110
22IS330
SK85977
102 S
2006 H1045
29 Lindner 110
22IS330
CC49234
701 W
2007 M1000
33 Braunstien 211 22IS832
CC49234
101 A
2007 W1800
Baldwin 437
20ECES212
RR79345
101 U
2007 T1015
33
22QA375
HT54347
101 A
2007 H1700
29 Lindner 108
22IS330
SK85977
101 S
2007 T1015
30
22QA375
HT54347
101 W
2007 T1015
20
22QA375
HT54347
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
13
Which courses are three-hour courses?
SELECT COURSE.CO_NAME, COURSE.CO_COURSE#,
COURSE.CO_CREDIT, COURSE.CO_COLLEGE,
COURSE.CO_HRS, COURSE.CO_DPT_DCODE
FROM COURSE
WHERE COURSE.CO_HRS = 3;
SELECT * FROM COURSE WHERE COURSE.CO_HRS = 3;
Co_name
---------------------Intro to Economics
Supply Chain Analysis
Principles of IS
Programming in C++
Optimization
Financial Accounting
Database Principles
Systems Analysis
Co_course#
---------15ECON112
22QA411
22IS270
20ECES212
22QA888
18ACCT801
22IS832
22IS430
Co_credit
--------U
U
G
G
G
G
G
G
Co_college
Co_hrs Co_dpt_dcode
-------------------- ------- -----------Arts and Sciences
3
1
Business
3
3
Business
3
7
Engineering
3
6
Business
3
3
Education
3
4
Business
3
7
Business
3
7
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
14
Which courses offered by Department 7
are three-hour courses?
SELECT *
FROM COURSE
WHERE COURSE.CO_DPT_DCODE = 7 AND
COURSE.CO_HRS = 3;
Result:
Co_name
Co_course# Co_credit Co_college
Co_hrs
Co_dpt_dcode
---------------------- ---------- --------- -------------------- ------- -------------Principles of IS
22IS270
G
Business
3
7
Database Principles
22IS832
G
Business
3
7
Systems Analysis
22IS430
G
Business
3
7
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
15
Which sections have a maximum number of
students greater than 30 or are offered in Linder
110?
SELECT *
FROM SECTION
WHERE SECTION.SE_MAXST > 30 OR SECTION.SE_ROOM =
'Lindner 110';
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
16
Use of AND and/or OR
• When AND and OR appear in the same WHERE
clause, all the ANDs are performed first
• Example:
WHERE COURSE.CO_CREDIT = 'U' and
COURSE.CO_COLLEGE = 'Business' or
COURSE.CO_COLLEGE = 'Engineering‘
• Every condition yields either true or false
• NOT operator
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
17
Use of IN and NOT IN
• IN or NOT IN can also be used as comparison
operators.
• IN is evaluated in the context of being equal to any
member of a set of values
• A nested query can follow the IN/NOT IN operator
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
18
Use of IN and NOT IN (continued)
SELECT *
FROM COURSE
WHERE COURSE.CO_CREDIT = 'U‘ AND
(COURSE.CO_COLLEGE = 'Business' OR
COURSE.CO_COLLEGE = 'Engineering');
SELECT *
FROM COURSE
WHERE COURSE.CO_CREDIT = 'U‘ AND
COURSE.CO_COLLEGE IN ('Business', 'Engineering');
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
19
Which professors earn more than $6,000?
SELECT *
FROM PROFESSOR
WHERE PROFESSOR.PR_SALARY/12 > 6000;
Also: TRUNC, ROUND
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
20
Use of AS in Column Aliases
SELECT PROFESSOR.PR_NAME,
PROFESSOR.PR_SALARY/12 AS "Monthly Salary"
FROM PROFESSOR
WHERE PROFESSOR.PR_SALARY/12 > 6000;
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
21
Use of BETWEEN and NOT BETWEEN
SELECT PROFESSOR.PR_NAME,
PROFESSOR.PR_SALARY/12 AS "Monthly Salary"
FROM PROFESSOR
WHERE PROFESSOR.PR_SALARY/12 BETWEEN 6000 AND
7000;
Note: BETWEEN is inclusive
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
22
Which colleges offer courses?
SELECT COURSE.CO_COLLEGE
FROM COURSE;
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
23
Use of DISTINCT (Versus ALL)
• SELECT DISTINCT COURSE.CO_COLLEGE FROM
COURSE;
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
24
What is the age (in years) of each professor in
Department 3 when hired?
SELECT PROFESSOR.PR_NAME,
TRUNC((PROFESSOR.PR_DATEHIRED PROFESSOR.PR_BIRTHDATE)/365.25,0) "Age
When Hired"
FROM PROFESSOR
WHERE PROFESSOR.PR_DPT_DCODE = 3;
• 365.25 accounts for leap years
• ,0 indicates the decimals
• AS is optional, here it is left out
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
25
NULL Values
• Please note that two ways of inserting null values exist: (1) use
the word NULL, or (2) define a character sting that is zero
characters long
• Example:
INSERT INTO Textbook VALUES (‘111-11111111’, ‘Null
Publisher 1’, 2004, null);
INSERT INTO Textbook VALUES (‘222-22222222’, ‘Null
Publisher 2’, 2004, ‘’);
INSERT INTO Textbook VALUES (‘333-33333333’, ‘Single
Space Publisher’, 2004, ‘ ’);
What does the following SQL statement do?
SELECT TEXTBOOK.TX_PUBLISHER
FROM TEXTBOOK;
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
26
TEXTBOOK Relation
space
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
27
NULL Values Example
SELECT TEXTBOOK.TX_PUBLISHER
FROM TEXTBOOK;
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
28
IS NULL and IS NOT NULL
Instead:
SELECT TEXTBOOK.TX_PUBLISHER
FROM TEXTBOOK
WHERE TEXTBOOK.TX_PUBLISHER
IS NOT NULL;
• Note that the only operator that can be
used with null values IS NULL and IS
NOT NULL! Do not use =, >, <, etc.
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
29
Pattern Matching
• Use the LIKE operator in conjunction with the two
wildcard characters percent sign (%) and the
underscore symbol (_)
• The percent sign represents a series of one or more
unspecified characters while the underscore symbol
represents exactly one character.
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
30
The LIKE Operator
SELECT TEXTBOOK.TX_TITLE
FROM TEXTBOOK
WHERE TEXTBOOK.TX_TITLE LIKE '_i%';
• Remember that character strings are case-sensitive!
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
31
The LIKE Operator (continued)
SELECT TEXTBOOK.TX_TITLE
FROM TEXTBOOK
WHERE TEXTBOOK.TX_TITLE LIKE
'%';
• Note that varchar and char can
make a difference when e.g.,
searching for a string that ends in a
particular character (e.g., ‘%s’)
From: Umanath, N.S., & Scamell, R. (2007). Data Modeling and Database Design. Boston: Thomson Course Technology.
Chapter 11 – Data Manipulation: Relational Algebra and SQL
32
Summary
•
•
•
•
•
•
SELECT-WHERE-FROM clause of an SQL query
AND, OR
IN, NOT IN
BETWEEN, NOT BETWEEN
IS NULL, IS NOT NULL
LIKE, ‘%’, ‘_’
Q&A
• Questions?
Chapter 11 – Data Manipulation: Relational Algebra and SQL
35
Chapter 11 – Data Manipulation: Relational Algebra and SQL
36