Download Document

Document related concepts

Tandem Computers wikipedia , lookup

Serializability wikipedia , lookup

Relational algebra wikipedia , lookup

DBase wikipedia , lookup

Microsoft Access wikipedia , lookup

IMDb wikipedia , lookup

Oracle Database wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Extensible Storage Engine wikipedia , lookup

Ingres (database) wikipedia , lookup

Concurrency control wikipedia , lookup

Functional Database Model wikipedia , lookup

Open Database Connectivity wikipedia , lookup

SQL wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

Database wikipedia , lookup

PL/SQL wikipedia , lookup

ContactPoint wikipedia , lookup

Clusterpoint wikipedia , lookup

Relational model wikipedia , lookup

Database model wikipedia , lookup

Transcript
Chapter 7
Introduction to
Structured Query Language
(SQL)
5/22/2017
Database Concepts
1
Objectives
• Definition of terms
• Interpret history and role of SQL
• Define a database using SQL data
definition language
• Write single table queries using SQL
• Establish referential integrity using SQL
• Discuss SQL:1999 and SQL:2003
standards
5/22/2017
Database Concepts
2
The Physical Design Stage of SDLC
(Revisited)
Project Identification
and Selection
Database activity –
physical database design and
database implementation
Project Initiation
and Planning
Analysis
Logical Design
Physical
Physical Design
Design
Purpose –programming, testing,
training, installation, documenting
Deliverable – operational
programs, documentation, training
materials, program/data structures
5/22/2017
Database Concepts
Implementation
Implementation
Maintenance
3
SQL Overview
• Structured Query Language
– Pronounced Sequel or S-Q-L
• The standard for Relational Database
Management Systems (RDBMS)
– Data management system which implements a
relational data model
• Data is stored in collection of tables
• Data relationships are represented by common values in
related tables, not links
5/22/2017
Database Concepts
4
History of SQL
1970
E. Codd develops relational database
concept
1974-1979
System R with Sequel (later SQL) created
at IBM Research Lab
1979
Oracle markets first relational DB with SQL
1986
ANSI SQL standard released
1989, 1992,
1999, 2003
Major ANSI standard updates
Current
SQL is supported by most major database
vendors
5/22/2017
Database Concepts
5
Purpose of SQL Standards
• Specifies syntax/semantics for data definition
and manipulation
• Defines data structures and basic operations
– For designing, accessing, maintaining, controlling
and protecting an SQL database
• Enables portability between conforming
DBMS’s
• Specifies minimal (level 1) and complete
(level 2) standards
• Provides for later growth/enhancement to
standard
5/22/2017
Database Concepts
6
Benefits of a Standardized
Relational Language
•
•
•
•
•
Reduced training costs
Productivity
Application portability
Application longevity
Reduced dependence on a single
vendor (nonproprietary)
• Cross-system communication
5/22/2017
Database Concepts
7
SQL Environment -1
• Catalog
– A set of schemas that constitute the description of
a database
• Schema
– The structure that contains descriptions of related
objects created by a user (base tables, views,
constraints)
• Data Definition Language (DDL)
– Commands that define a database, including
creating, altering, and dropping tables and
establishing constraints
5/22/2017
Database Concepts
8
SQL Environment -2
• Data Manipulation Language (DML)
– Commands that maintain and query a
database
• Data Control Language (DCL)
– Commands that control a database,
including administering privileges and
committing data
5/22/2017
Database Concepts
9
Typical SQL Environment
Simplified Schematic
As described by the
SQL-92 Standard
5/22/2017
Database Concepts
10
Some SQL Data types
(from Oracle)
5/22/2017
Database Concepts
11
Database Development Process
DDL
DML
DCL
5/22/2017
Database Concepts
12
SQL Database Definition
• Data Definition Language (DDL)
• Major CREATE statements:
– CREATE SCHEMA
• defines a portion of the database owned by a
particular user
– CREATE TABLE
• defines a table and its columns
– CREATE VIEW
• defines a logical table from one or more views
5/22/2017
Database Concepts
13
SQL Database Definition
• Other CREATE statements:
– CHARACTER SET
• Defines a character set for text strings
– COLLATION
• Specifies the order of the character set
– TRANSLATION
• Rules that map characters from source CS to a
destination CS
– ASSERTION
• Established a CHECK constraint
– DOMAIN
• Sets a domain for valid values
5/22/2017
Database Concepts
14
Table Creation
General Syntax for
CREATE TABLE
Steps in table creation:
1. Identify data types for
attributes
2. Identify columns that
can and cannot be null
3. Identify columns that
must be unique
(candidate keys)
4. Identify primary keyforeign key mates
5. Determine default
values
6. Identify constraints on
columns (domain
specifications)
7. Create the table and
associated indexes
5/22/2017
Database Concepts
15
The Enterprise Data Model
for Pine Valley Furniture
5/22/2017
Database Concepts
16
Tables
Defined
SQL Database
Definition Commands
Overall table
definitions
Customer_T
Order_T
Product_t
Order_Line_T
5/22/2017
Database Concepts
17
Defining Attributes
and their Data Types
5/22/2017
Database Concepts
18
Non-nullable specification
Primary keys
can never have
NULL values
Identifying primary key
5/22/2017
Database Concepts
19
Non-nullable specifications
Primary key
Some primary keys are composite –
composed of multiple attributes
5/22/2017
Database Concepts
20
Controlling the values in attributes
Default value
Domain constraint
5/22/2017
Database Concepts
21
Identifying Foreign Keys and
Establishing Relationships
Primary key of
parent table
5/22/2017
Foreign key of dependent table
Database Concepts
22
Data Integrity Controls
• Referential integrity
– constraint that ensures that foreign key
values of a table must match primary key
values of a related table in 1:M
relationships
• Restricting:
– Deletes of primary records
– Updates of primary records
– Inserts of dependent records
5/22/2017
Database Concepts
23
Ensuring Data Integrity Through
Updates
Relational
integrity is
enforced via
the primarykey to foreignkey match
5/22/2017
Database Concepts
24
Changing and Removing Tables
• ALTER TABLE statement allows
changes in change column
specifications:
– ALTER TABLE CUSTOMER_T ADD (TYPE
VARCHAR(2))
• DROP TABLE statement removal of
tables from schema:
– DROP TABLE CUSTOMER_T
5/22/2017
Database Concepts
25
Schema Definition
• Control processing/storage efficiency:
–
–
–
–
–
Choice of indexes
File organizations for base tables
File organizations for indexes
Data clustering
Statistics maintenance
• Creating indexes
– Speed up random/sequential access to base table
data
– Example
• CREATE INDEX NAME_IDX ON
CUSTOMER_T(CUSTOMER_NAME)
• This makes an index for the CUSTOMER_NAME field of
the CUSTOMER_T table
5/22/2017
Database Concepts
26
Insert Statements -1
• Adds data to a table
• Inserting into a table
– INSERT INTO CUSTOMER_T VALUES
(001, ‘Contemporary Casuals’, ‘1355 S.
Himes Blvd.’, ‘Gainesville’, ‘FL’, 32601);
5/22/2017
Database Concepts
27
Insert Statements -2
• Inserting a record that has some null
attributes requires identifying the fields that
actually get data
– INSERT INTO PRODUCT_T (PRODUCT_ID,
PRODUCT_DESCRIPTION, PRODUCT_FINISH,
STANDARD_PRICE, PRODUCT_ON_HAND)
VALUES (1, ‘End Table’, ‘Cherry’, 175, 8);
• Inserting from another table
– INSERT INTO CA_CUSTOMER_T SELECT *
FROM CUSTOMER_T WHERE STATE = ‘CA’;
5/22/2017
Database Concepts
28
Creating Tables with Identity Columns
New with SQL:2003
Inserting into a table does not require explicit customer ID entry or
field list
INSERT INTO CUSTOMER_T VALUES ( ‘Contemporary Casuals’,
‘1355 S. Himes Blvd.’, ‘Gainesville’, ‘FL’, 32601);
5/22/2017
Database Concepts
29
Delete Statement
• Removes rows from a table
• Delete certain rows
– DELETE FROM CUSTOMER_T WHERE
STATE = ‘HI’;
• Delete all rows
– DELETE FROM CUSTOMER_T;
5/22/2017
Database Concepts
30
Update Statement
• Modifies data in existing rows
– UPDATE PRODUCT_T SET UNIT_PRICE
= 775 WHERE PRODUCT_ID = 7;
5/22/2017
Database Concepts
31
Merge Statement
Makes it easier to update a table…allows combination of Insert and
Update in one statement
Useful for updating master tables with new data
5/22/2017
Database Concepts
32
SELECT Statement
Used for queries on single or multiple tables
Clauses of the SELECT statement:
• SELECT
• GROUP BY
– List the columns (and
expressions) that should be
returned from the query
• FROM
– Indicate the table(s) or
view(s) from which data will
be obtained
• HAVING
– Indicate the conditions
under which a category
(group) will be included
• ORDER BY
• WHERE
– Indicate the conditions
under which a row will be
included in the result
5/22/2017
– Indicate categorization of
results
– Sorts the result according
to specified criteria
Database Concepts
33
SQL
Statement
Processing
Order
Adapted from
van der Lans
5/22/2017
Database Concepts
34
SQL Examples
5/22/2017
Database Concepts
35
SELECT
• Find products with standard price less
than $275
_V indicates a View
where the View is
the Result
SELECT PRODUCT_NAME,
STANDARD_PRICE
FROM PRODUCT_V
WHERE STANDARD_PRICE < 275;
Result:
PRODUCT_NAME
5/22/2017
STANDARD_PRICE
End Table
175
Computer Desk
250
Coffee Table
200
Database Concepts
36
SQL Comparison Operators
(notice the Not Equal To)
5/22/2017
Database Concepts
37
SELECT Using Alias
• Alias is an alternative column or table name
SELECT CUST.CUSTOMER AS NAME,
CUST.CUSTOMER_ADDRESS
Alias for Customer Name
FROM CUSTOMER_V CUST
WHERE NAME = ‘Home Furnishings’;
Result:
5/22/2017
NAME
CUSTOMER_ADDRESS
Home Furnishings
1900 Allard Ave.
Database Concepts
38
Using a Function
• Using the COUNT aggregate function to find
totals
Result:
SELECT COUNT(*)
COUNT (*)
FROM ORDER_LINE_V
2
WHERE ORDER_ID = 1004;
• Note: aggregate functions can’t have single-valued
columns included in the SELECT clause
• Aggregate functions only produce a one-row
answer.
• Note differences between COUNT (*) and COUNT
5/22/2017
Database Concepts
39
Using Boolean Operators & the Like
• AND, OR, and NOT Operators for
customizing conditions in WHERE
clause
• The LIKE operator permits comparing
strings using wildcards.
– Example
• The % wildcard in ‘%Desk’ indicates that all
strings that have any number of characters
preceding the word “Desk” will be allowed
5/22/2017
Database Concepts
40
Using Boolean Operators & Like
SELECT PRODUCT_DESCRIPTION, PRODUCT_FINISH,
STANDARD_PRICE
FROM PRODUCT_V
WHERE (PRODUCT_DESCRIPTION LIKE ‘%Desk’
OR PRODUCT_DESCRIPTION LIKE ‘%Table’)
AND UNIT_PRICE > 300;
Result:
5/22/2017
PRODUCT_DESCRIPTION
PRODUCT_FINISH
Computer Desk
Natural Ash
375
Writer's Desk
Cherry
325
8-Drawer Desk
White Ash
750
Dining Table
Natural Ash
800
Computer Desk
Walnut
350
Database Concepts
STANDARD_PRICE
41
Venn Diagram from Previous Query
5/22/2017
Database Concepts
42
Using Ranges
SELECT PRODUCT_DESCRIPTION, STANDARD_PRICE
FROM PRODUCT_V
WHERE STANDARD_PRICE > 199 AND
STANDARD_PRICE < 301;
Result:
PRODUCT_NAME
STANDARD_PRICE
Coffee Table
200
Computer Desk
250
5/22/2017
Database Concepts
43
Using Distinct & All
• Can only be used once in a SELECT
statement
SELECT DISTINCT ORDER_ID
FROM ORDER_LINE_V;
• Returns only one occurrence of each
ORDER_ID instead of all occurrences
5/22/2017
Database Concepts
44
Sorting Results with the
ORDER BY Clause
• Sort the results first by STATE, and within a
state by CUSTOMER_NAME
SELECT CUSTOMER_NAME, CITY, STATE
FROM CUSTOMER_V
WHERE STATE IN (‘FL’, ‘TX’, ‘CA’, ‘HI’)
ORDER BY STATE, CUSTOMER_NAME;
Result:
CUSTOMER_NAME
CITY
ST
California Classics
Santa Clara
CA
Impressions
Sacramento
CA
Contemporary Casuals
Gainesville
FL
M and H Casual Furniture
Clearwater
FL
Seminole Interiors
Seminole
FL
Kaneohe Homes
Kaneohe
HI
Value Furniture
Plano
TX
5/22/2017
Database Concepts
Note: the IN operator
includes rows whose
STATE value is either FL,
TX, CA, or HI. It is more
efficient than separate OR
conditions.
NOT IN can also be used.
45
Categorizing Results Using
the GROUP BY Clause
• For use with aggregate functions
– Scalar aggregate
• single value returned from SQL query with aggregate
function
– Vector aggregate
• multiple values returned from SQL query with aggregate
function (via GROUP BY)
– Note: you can use single-value fields with
aggregate functions if they are included in the
GROUP BY clause
5/22/2017
Database Concepts
46
Categorizing Results Using
the GROUP BY Clause
SELECT CUSTOMER_STATE,
COUNT(CUSTOMER_STATE)
FROM CUSTOMER_V
GROUP BY CUSTOMER_STATE
5/22/2017
Database Concepts
Result:
ST
COUNT(STATE)
CA
2
CO
1
FL
3
HI
1
MI
1
NJ
2
NY
1
PA
1
TX
1
UT
1
WA
1
47
Qualifying Results by Categories
Using the HAVING Clause with Group By
SELECT STATE, COUNT(CUSTOMER_STATE)
FROM CUSTOMER_V
GROUP BY CUSTOMER_STATE
HAVING COUNT(CUSTOMER_STATE) > 1;
Result:
ST
COUNT(CUSTOMER_STATE)
CA
2
FL
3
NJ
2
Like a WHERE clause, but it operates on groups (categories),
not on individual rows. Here, only those groups with total
numbers greater than 1 will be included in final result
5/22/2017
Database Concepts
48
Views
5/22/2017
Database Concepts
49
Using and Defining Views
• Views provide users controlled access
to tables
• Base Table
– table containing the raw data
5/22/2017
Database Concepts
50
Dynamic & Materialized Views
• Dynamic View
• Materialized View
– A “virtual table” created
dynamically upon request
by a user
– No data actually stored;
instead data from base
table made available to
user
– Based on SQL SELECT
statement on base tables
or other views
5/22/2017
– Copy or replication of
data
– Data actually stored
– Must be refreshed
periodically to match the
corresponding base
tables
Database Concepts
51
Sample CREATE VIEW
CREATE VIEW EXPENSIVE_STUFF_V AS
SELECT PRODUCT_ID, PRODUCT_NAME, UNIT_PRICE
FROM PRODUCT_T
WHERE UNIT_PRICE >300
WITH CHECK_OPTION;
View has a name
View is based on a SELECT statement
CHECK_OPTION works only for
updateable views and prevents updates that
would create rows not included in the view
5/22/2017
Database Concepts
52
Advantages of Views
• Simplify query commands
• Assist with data security
– Caution: do not rely on views for security
exclusively, there are more important security
measures
•
•
•
•
•
Enhance programming productivity
Contain most current base table data
Use little storage space
Provide customized view for user
Establish physical data independence
5/22/2017
Database Concepts
53
Disadvantages of Views
• Use processing time each time view is
referenced
• May or may not be directly updateable
5/22/2017
Database Concepts
54
Homework Assignment
• Homework Assignment 7
• In Class Exercise
– Do Project Assignment #P1, Page 332
5/22/2017
Database Concepts
55
5/22/2017
Database Concepts
56