Академический Документы
Профессиональный Документы
Культура Документы
- Part 2
Lecture 7
2
Advanced Data Definition Commands
All changes in table structure are made by using ALTER
command
Three options:
ALTER COLUMN changes column characteristics
ADD adds a column
DROP deletes a column
Can also be used to:
Add table constraints (e.g., foreign key)
Remove table constraints
3
Changing a Column’s Data Characteristics
Use ALTER to change column’s data characteristics
Syntax:
ALTER TABLE <table name>
ALTER COLUMN <column name> SET DATA TYPE <new
column data type characteristic>
Example:
ALTER TABLE PRODUCT ADD SALECODE CHAR(10)
ALTER TABLE STUDENT ADD GENDER CHAR(1)
DEFAULT ‘F’
5
Adding Table Constraint
ADD CONSTRAINT
Syntax:
ALTER TABLE <table name> ADD CONSTRAINT
<constraint name> <constraint characteristics>
Example:
ALTER TABLE PRODUCT ADD CONSTRAINT PKconstraint
PRIMARY KEY (P_CODE)
6
Dropping a Column
Use ALTER to drop column
Some RDBMSs impose restrictions on the deletion of an
attribute
Syntax:
ALTER TABLE <tablename>
DROP <columnname>
Example:
ALTER TABLE VENDOR DROP V_ORDER
7
Ordering a Listing
ORDER BY clause is useful when listing order is important
Syntax:
SELECT columnlist
FROM tablelist
[WHERE conditionlist]
[ORDER BY columnlist [ASC | DESC]]
Ascending order by default
Example:
SELECT P_CODE, P_DESCRIPT, P_INDATE, P_PRICE
FROM PRODUCT
ORDER BY P_PRICE
8
Order Results in Ascending Order
9
A Query based on Multiple Restrictions
SELECT P_DESCRIPT,V_CODE, P_INDATE, P_PRICE
FROM PRODUCT
WHERE P_INDATE > ’1999-08-20’ AND P_PRICE <= 50.00
ORDER BY V_CODE, P_INDATE
10
Listing Unique Values
DISTINCT clause produces list of only values that are
different from one another
Example:
SELECT DISTINCT V_CODE
FROM PRODUCT
11
Aggregate Functions
COUNT function tallies number of non-null values of an
attribute
Takes one parameter: usually a column name
Can be used with DISTINCT clause
MAX and MIN find highest (lowest) value in a table
SUM computes total sum for any specified attribute
AVG function format is similar to MIN and MAX
12
Aggregate Functions
COUNT(*) counts all rows of a table, regardless of
whether nulls or duplicate values occur.
Can use DISTINCT before column name to eliminate
duplicates.
DISTINCT has no effect with MIN/MAX, but may have with
SUM/AVG
13
Example Output of COUNT Function
14
Example Output of MAX and MIN
Functions
15
Example of SUM and AVG Functions
SUM
SELECT SUM (P_ONHAND * P_PRICE)
FROM PRODUCT
AVG
SELECT AVG (P_PICE)
FROM PRODUCT
16
Example Output of AVG Function
17
Grouping Data
Frequency distributions created by GROUP BY clause
within SELECT statement
Syntax:
SELECT columnlist
FROM tablelist
[WHERE conditionlist]
[GROUP BY columnlist]
[HAVING conditionlist]
[ORDER BY columnlist [ASC | DESC] ]
Only valid when used in conjunction with one of the SQL
aggregate function (COUNT, MIN, MAX,AVG,SUM)
18
Example output of GROUP BY clause
SELECT P_SALECODE, MIN(P_PRICE)
FROM PRODUCT
GROUP BY P_SALECODE
19
NO aggregate
function
(COUNT, MIN,
MAX,AVG,SUM)
20
Grouping Data with HAVING Clause
HAVING clause
Operates very much like WHERE clause
WHERE clause – applies to columns and expressions for
individual rows
HAVING clause – applies to the output of a GROUP BY
operation
21
Grouping Data with HAVING Clause
22
Subqueries/Nested Queries
A subquery is a query inside a query
Normally expressed inside parentheses
The first query in the SQL statement is known as the
outer query
The query inside the SQL statement known as the inner
query
Inner query executed first
Output of an inner query is used as the input for the
output query
The entire SQL statement is sometimes referred to as
nested queries
23
Subqueries/Nested Queries
Example: Outer
query
Inner
query
24
Subqueries/Nested Queries
Example: Outer
query
Inner
query
25
Subqueries/Nested Queries
Example: Outer
query
Inner
query
26
Copying Parts of Tables
SQL permits copying contents of selected table columns
Data need not re-entered manually into newly created
table(s)
Can use SUBQUERIES
2nd Step: Add rows to new table using table rows from
another table
27
Copying Parts of Tables
CREATE TABLE PART (
PART_CODE CHAR(8) NOT NULL,
PART_DESCRIPT CHAR(35),
PART_PRICE DECIMAL(8,2),
V_CODE VARCHAR(5),
PRIMARY KEY(PART_CODE) )
Copy from
New table Product table
29
Joining Database Tables
Join is performed when data are retrieved from more
than one table at a time
Use equality comparison (=) to join foreign key and primary
key of related tables
30
Joining Database Tables
SELECT P_DESCRIPT, P_PRICE, V_NAME, V_CONTACT,
V_AREACODE, V_PHONE
FROM PRODUCT, VENDOR
WHERE PRODUCT.V_CODE = VENDOR.V_CODE
31
Joining Database Tables
SELECT P_DESCRIPT, P_PRICE, V_NAME, V_CONTACT,
V_AREACODE, V_PHONE
FROM PRODUCT, VENDOR
WHERE PRODUCT.V_CODE = VENDOR.V_CODE
AND P_INDATE > ‘1999-08-15’
32
Joining Tables with an Alias
Alias can be used to identify source table
Any legal table name can be used as alias
Add alias after table name in FROM clause
FROM <tablename> <alias>
Example:
SELECT P_DESCRIPT, P_PRICE,V_NAME, V_CONTACT,
V_AREACODE,V_PHONE
FROM PRODUCT P, VENDOR V
WHERE P.V_CODE = V.V_CODE
ORDER BY P_PRICE
33
Outer Joins
Outer join (recap from lecture 2!)
Returns not only the rows matching the join condition but
also the rows with unmatched values
Two types of outer join
Left outer join
Right outer join
34
Outer Joins
LEFT join
Returns rows in the left side table with unmatched values in the
right side table
Example:
SELECT CUS_CODE, CUS_LNAME, CUS_ZIP,
AGENT_CODE, AGENT_PHONE
FROM CUSTOMER LEFT JOIN AGENT ON
CUSTOMER.AGENT_CODE = AGENT.AGENT_CODE
35
Outer Joins
RIGHT join
Returns rows in the right side table with unmatched values in
the left side table
Example:
SELECT CUS_CODE, CUS_LNAME, CUS_ZIP,
AGENT_CODE, AGENT_PHONE
FROM CUSTOMER RIGHT JOIN AGENT ON
CUSTOMER.AGENT_CODE = AGENT.AGENT_CODE
36
Virtual Tables: Creating a View
View is a virtual table based on SELECT query
Create view by using CREATE VIEW command
Syntax:
CREATE VIEW <viewname> AS
SELECT statement
Example:
CREATE VIEW ProductView AS
SELECT * from Product
38
SQL Indexes
When primary key is declared, DBMS automatically
creates unique index
Often need additional indexes to improve search
Syntax:
CREATE INDEX <indexname> ON <tablename (column))>
Example:
CREATE INDEX P_INDATEX ON PRODUCT (P_INDATE)
SQL Indexes