Title: SQL and Client Applications
1SQL and Client Applications
- University of California, Berkeley
- School of Information
- IS 257 Database Management
2Lecture Outline
- Review
- Relational Operations
- Relational Algebra
- Relational Calculus
- Introduction to SQL
- Introduction to SQL (continued)
- Application Development in Access
3Lecture Outline
- Review
- Relational Operations
- Relational Algebra
- Relational Calculus
- Introduction to SQL
- Introduction to SQL (continued)
- Application Development in Access
4Relational Algebra Operations
- Select
- Project
- Product
- Union
- Intersect
- Difference
- Join
- Divide
5Select
- Extracts specified tuples (rows) from a specified
relation (table).
6Project
- Extracts specified attributes(columns) from a
specified relation.
7Join
- Builds a relation from two specified relations
consisting of all possible concatenated pairs,
one from each of the two relations, such that in
each pair the two tuples satisfy some condition.
(E.g., equal values in a given col.)
(Natural or Inner) Join
8Outer Join
- Outer Joins are similar to PRODUCT -- but will
leave NULLs for any row in the first table with
no corresponding rows in the second.
9Join Items
10Relational Algebra
- What is the name of the customer who ordered
Large Red Widgets? - Select large Red Widgets from Part as temp1
- Join temp1 with Line-item on Part as temp2
- Join temp2 with Invoice on Invoice as temp3
- Join temp3 with customer on cust as temp4
- Project Name from temp4
11Relational Calculus
- Relational Algebra provides a set of explicit
operations (select, project, join, etc) that can
be used to build some desired relation from the
database. - Relational Calculus provides a notation for
formulating the definition of that desired
relation in terms of the relations in the
database without explicitly stating the
operations to be performed - SQL is based on the relational calculus.
12SQL - History
- Structured Query Language
- SEQUEL from IBM San Jose
- ANSI 1992 Standard is the version used by most
DBMS today (SQL92) - Basic language is standardized across relational
DBMSs. Each system may have proprietary
extensions to standard.
13Lecture Outline
- Review
- Relational Operations
- Relational Algebra
- Relational Calculus
- Introduction to SQL
- Introduction to SQL (continued)
- Application Development in Access
14SQL Uses
- Database Definition and Querying
- Can be used as an interactive query language
- Can be imbedded in programs
- Relational Calculus combines Select, Project and
Join operations in a single command SELECT
15SELECT
- Syntax
- SELECT DISTINCT attr1, attr2,, attr3 FROM
rel1 r1, rel2 r2, rel3 r3 WHERE condition1 AND
OR condition2 ORDER BY attr1 DESC, attr3
DESC
16SELECT
- Syntax
- SELECT a.author, b.title FROM authors a, bibfile
b, au_bib c WHERE a.AU_ID c.AU_ID and c.accno
b.accno ORDER BY a.author - Examples in Access...
17SELECT Conditions
- equal to a particular value
- gt greater than or equal to a particular value
- gt greater than a particular value
- lt less than or equal to a particular value
- ltgt not equal to a particular value
- LIKE term (may be other wild cards in other
systems) - IN (opt1, opt2,,optn)
- BETWEEN val1 AND val2
- IS NULL
18Relational Algebra Selection using SELECT
- Syntax
- SELECT FROM rel1 WHERE condition1 AND OR
condition2
19Relational Algebra Projection using SELECT
- Syntax
- SELECT DISTINCT attr1, attr2,, attr3 FROM
rel1 r1, rel2 r2, rel3 r3
20Relational Algebra Join using SELECT
- Syntax
- SELECT FROM rel1 r1, rel2 r2 WHERE r1.linkattr
r2.linkattr
21Sorting
- SELECT BIOLIFE.Common Name, BIOLIFE.Length
(cm) - FROM BIOLIFE
- ORDER BY BIOLIFE.Length (cm) DESC
Note the square brackets are not part of the
standard, But are used in Access for names with
embedded blanks
22Subqueries
- SELECT SITES.Site Name, SITES.Destination no
- FROM SITES
- WHERE sites.Destination no IN (SELECT
Destination no from DEST where avg temp (f)
gt 78) - Can be used as a form of JOIN.
23Aggregate Functions
- Count
- Avg
- SUM
- MAX
- MIN
- Others may be available in different systems
24Using Aggregate functions
- SELECT attr1, Sum(attr2) AS name
FROM tab1, tab2 ... - GROUP BY attr1, attr3 HAVING condition
25Using an Aggregate Function
- SELECT DIVECUST.Name, Sum(Priceqty) AS Total
- FROM (DIVECUST INNER JOIN DIVEORDS ON
DIVECUST.Customer No DIVEORDS.Customer No)
INNER JOIN DIVEITEM ON DIVEORDS.Order No
DIVEITEM.Order No - GROUP BY DIVECUST.Name
- HAVING (((DIVECUST.Name) Like "Jazdzewski"))
26GROUP BY
- SELECT DEST.Destination Name, Count() AS Expr1
- FROM DEST INNER JOIN DIVEORDS ON
DEST.Destination Name DIVEORDS.Destination - GROUP BY DEST.Destination Name
- HAVING ((Count())gt1)
- Provides a list of Destinations with the number
of orders going to that destination
27Lecture Outline
- Review
- Relational Operations
- Relational Algebra
- Relational Calculus
- Introduction to SQL
- Introduction to SQL (continued)
- Application Development in Access
28ORACLE Examples
- Logging in
- Starting SQLPLUS
- Running SQL queries against my copies of the
Diveshop database - settings for readability
- creating SQLPLUS scripts
29CREATE Table
- CREATE TABLE table-name (attr1 attr-type
PRIMARYKEY, attr2 attr-type,,attrN attr-type) - Adds a new table with the specified attributes
(and types) to the database.
30Access Data Types
- Numeric (1, 2, 4, 8 bytes, fixed or float)
- Text (255 max)
- Memo (64000 max)
- Date/Time (8 bytes)
- Currency (8 bytes, 15 digits 4 digits decimal)
- Autonumber (4 bytes)
- Yes/No (1 bit)
- OLE (limited only by disk space)
- Hyperlinks (up to 64000 chars)
31Access Numeric types
- Byte
- Stores numbers from 0 to 255 (no fractions). 1
byte - Integer
- Stores numbers from 32,768 to 32,767 (no
fractions) 2 bytes - Long Integer (Default)
- Stores numbers from 2,147,483,648 to
2,147,483,647 (no fractions). 4 bytes - Single
- Stores numbers from -3.402823E38 to 1.401298E45
for negative values and from 1.401298E45 to
3.402823E38 for positive values. 4 bytes - Double
- Stores numbers from 1.79769313486231E308 to
4.94065645841247E324 for negative values and
from 1.79769313486231E308 to 4.94065645841247E324
for positive values. 15 8 bytes - Replication ID
- Globally unique identifier (GUID) N/A 16 bytes
32Oracle Data Types
- CHAR (size) -- max 2000
- VARCHAR2(size) -- up to 4000
- DATE
- DECIMAL, FLOAT, INTEGER, INTEGER(s), SMALLINT,
NUMBER, NUMBER(size,d) - All numbers internally in same format
- LONG, LONG RAW, LONG VARCHAR
- up to 2 Gb -- only one per table
- BLOB, CLOB, NCLOB -- up to 4 Gb
- BFILE -- file pointer to binary OS file
33Creating a new table from existing tables
- Syntax
- SELECT DISTINCT attr1, attr2,, attr3 INTO
newtablename FROM rel1 r1, rel2 r2, rel3 r3
WHERE condition1 AND OR condition2 ORDER BY
attr1 DESC, attr3 DESC
34ALTER Table
- ALTER TABLE table-name ADD COLUMN attr1
attr-type - DROP COLUMN attr1
- Adds a new column to an existing database table.
35INSERT
- INSERT INTO table-name (attr1, attr4, attr5,,
attrK) VALUES (val1, val4, val5,, valK) - Adds a new row(s) to a table.
- INSERT INTO table-name (attr1, attr4, attr5,,
attrK) VALUES SELECT ...
36DELETE
- DELETE FROM table-name WHERE ltwhere clausegt
- Removes rows from a table.
37UPDATE
- UPDATE tablename SET attr1newval, attr2
newval2 WHERE ltwhere clausegt - changes values in existing rows in a table (those
that match the WHERE clause).
38DROP Table
- DROP TABLE tablename
- Removes a table from the database.
39CREATE INDEX
- CREATE UNIQUE INDEX indexname ON tablename
(attr1 ASCDESC, attr2 ASCDESC, ...) WITH
PRIMARY DISALLOW NULL IGNORE NULL
40Lecture Outline
- Review
- Relational Operations
- Relational Algebra
- Relational Calculus
- Introduction to SQL
- Introduction to SQL (continued)
- Application Development in Access
41Database Applications
- Generally, end-users of database data probably do
not want to learn SQL in order to access the
information in the database - Instead, they would prefer to use a familiar PC
or Web interface that uses the graphical
conventions and behaviors that they are familiar
with - Today we will look at PC style client
applications using systems like Access - Next time we will look at Web-based systems
42Query-by-Example
- QBE was developed in the 1970s as a simpler to
use interface for IBM mainframe databases - In QBE the user puts parts of what they want to
get from the database into a form similar to what
the output will look like - The Query Design View in Access is an example of
QBE
43Access Usability Hierarchy
API
VBA
MACROS
Functions/Expressions
Objects Tables, queries Forms, Reports
From McFadden Chap. 10
44Examples
- Access OBJECT level
- QBE querying
- Building Application interfaces
- User wants point and click and forms to fill
in, not a Query editing screen or wizard - How to build them
- Drag and drop as in Access
- Programming Languages
- 4th Generation languages (more on these later)
45The MS JET Database Engine
Adapted from Roman, Access Database Design and
Programming
46Using Access for Applications
- Forms
- Reports
- Macros
- VBA programming
- Application framework
- HTML Pages