Title: Advanced SQL
1Advanced SQL
2Learning Objectives
- SQL queries examples
- Advanced SQL
- Queries
- Commands
3MySQL Datatypes
- BOOL, BIT
- INTEGER or INT (may be UNSIGNED)SMALLINT,
MEDIUMINT, BIGINTmay be followed by optional M - FLOAT (M, D)
- DOUBLE(M,D) or REAL(M,D)
- DECIMAL(M,D) or NUMERIC(M,D) is unpacked
floating-point - CHAR(M), CHAR, VARCHAR(M), TEXT or BLOB,
MEDIUMTEXT or MEDIUMBLOB, LONGTEXT or LONBLOB
(LOB Large OBject) - DATE, DATETIME, TIMESTAMP (yyyy-mm-dd-hh.mm.ss.nnn
nnn), TIME, YEAR - ENUM, SET
4Data Manipulation Commands
5Data Entry and Saving
- Enters data into a table
- Saves changes to disk
INSERT INTO lttable namegt (attribute_name_1,
) VALUES (attribute_1_value, attribute_2_value,
etc.)
COMMIT lttable_ namegt
6Listing Table Contents and Other Commands
- Allows table contents to be listed
- UPDATE command makes data entry corrections
- ROLLBACK command restores database back to
previous condition if COMMIT hasnt been used - DELETE command removes table row
SELECT ltattribute namesgt FROM lttable namesgt
7Queries
- Creating partial listings of table contents
SELECT ltcolumn(s)gtFROM lttable namegtWHERE
ltconditionsgt
Table 5.4 Mathematical Operators
8Examples
- Mathematical operators
- Mathematical operators on character attributes
- Mathematical operators on dates
SELECT P_DESCRIPT, P_INDATE, P_PRICE, V_CODE FROM
PRODUCT WHERE V_CODE ltgt 21344
SELECT P_CODE,P_DESCRIPT,P_ONHAND,P_MIN,P_PRICEFR
OM PRODUCTWHERE P_CODE lt 1558-QWI
SELECT P_DESCRIPT,P_ONHAND,P_MIN,P_PRICE,PINDATEF
ROM PRODUCTWHERE P_INDATE gt 01/20/2002
9Computed Columns
- New columns can be created through valid
computations or formulas - Formulas may contain mathematical operators
- May contain attributes of any tables specified in
FROM clause - Alias is alternate name given to table or column
in SQL statement
SELECT P_DESCRIPT,P_ONHAND,P_PRICE,P_ONHANDP_PRIC
E AS TOTVALUE FROM PRODUCT
10Operators
- Logical AND, OR, NOT
- Rules of precedence
- Conditions within parenthesis executed first
- Boolean algebra
- Special
- BETWEEN - defines limits
- IS NULL - checks for nulls
- LIKE - checks for similar string (st, _st)
- IN - checks for value in a set
- EXISTS - opposite of IS NULL
SELECT FROM PRODUCTWHERE V_CODE 21344 OR
V_CODE 24288
11Advanced Data ManagementCommands
- ALTER - changes table structure
- ADD - adds column
- MODIFY - changes column characteristics
- Entering data into new column
ALTER TABLE lttable namegtADD (ltcolumn namegt ltnew
column characteristicsgt) ALTER TABLE lttable
namegtMODIFY (ltcolumn namegt ltnew column
characteristicsgt)
UPDATE PRODUCTSET P_SALECODE 2WHERE P_CODE
1546-QQ2
12Advanced Data Management Commands
- Dropping a column
- Arithmetic operators and rules of precedence
ALTER TABLE VENDORDROP COLUMN V_ORDER
13Advanced Data Management Commands
- Copying parts of tables
- Deleting a table from database
- Primary and foreign key designation
INSERT INTO ltreceiving tablegt ltreceiving tables
column namesgtSELECT ltcolumn names of the columns
to be copiedgtFROM ltcontributing table namegt
DROP TABLE PART
ALTER TABLE LINE ADD PRIMARY KEY (INV_NUMBER,
LINE_NUMBER) ADD FOREIGN KEY (INV_NUMBER)
REFERENCES INVOICE ADD FOREIGN KEY (PROD_CODE)
REFERENCES PRODUCT
14Advanced Data Management Commands
INSERT INTO PART (PART_CODE, PART_DESCRIPT,
PART_PRICE) SELECT P_CODE, P_DESCRIPT, P_PRICE
FROM PRODUCT
The table PART must have been created beforehand
15Example Aggregate Function Operations
- COUNT (count not null values)
- MAX and MIN
SELECT COUNT(DISTINCT V_CODE)FROM
PRODUCT SELECT COUNT(DISTINCT V_CODE)FROM
PRODUCTWHERE P_PRICE lt 10.00
SELECT MIN(P_PRICE)FROM PRODUCT SELECT P_CODE,
P_DESCRIPT, P_PRICEFROM PRODUCTWHERE P_PRICE
MAX(P_PRICE)
16Example Aggregate Function Operations (cont.)
SELECT SUM(P_ONHAND P_PRICE)FROM PRODUCT
SELECT P_DESCRIPT, P_ONHAND, P_PRICE, V_CODEFROM
PRODUCTWHERE P_PRICE gt (SELECT AVG(P_PRICE)
FROM PRODUCT)ORDER BY P_PRICE DESC
17More Complex Queries and SQL Functions
- Ordering a listing
- Results ascending by default ASC
- Descending order uses DESC
- Cascading order sequence
ORDER BY ltattributegt
ORDER BY ltattributegt DESC
ORDER BY ltattribute 1, attribute 2, ...gt
18More Complex Queries and SQL Functions (cont.)
- Listing unique values
- DISTINCT clause produces list of different values
- Aggregate functions
- Mathematical summaries
SELECT DISTINCT V_CODE FROM PRODUCT
19More Complex Queries and SQL Functions (cont.)
- Grouping data
- Creates frequency distributions
- Only valid when used with SQL arithmetic
functions - HAVING clause operates like WHERE for grouping
output
SELECT P_SALECODE, MIN(P_PRICE)FROM
PRODUCT_2GROUP BY P_SALECODE
SELECT V_CODE,COUNT(DISTINCT(P_CODE)),AVG(P_PRICE)
FROM PRODUCT_2 GROUP BY V_CODE HAVING
AVG(P_PRICE) lt 10
20More Complex Queries and SQL Functions (cont.)
21More Complex Queries and SQL Functions (cont.)
22More Complex Queries and SQL Functions (cont.)
23More Complex Queries and SQL Functions (cont.)
- Virtual tables creating a view
- CREATE VIEW command
- Creates logical table existing only in virtual
memory - SQL indexes
CREATE VIEW PRODUCT_3 ASSELECT P_DESCRIPT,
P_ONHAND, P_PRICEFROM PRODUCTWHERE P_PRICE gt
50.00
CREATE INDEX P_CODEXON PRODUCT(P_CODE)
24More Complex Queries and SQL Functions (cont.)
25More Complex Queries and SQL Functions (cont.)
- Joining database tables
- Data are retrieved from more than one table
- Recursive queries joins a table to itself
- Outer joins can be used when null values need
to be included in query result
SELECT PRODUCT.P_DESCRIPT, PRODUCT.P_PRICE,
VENDOR.V_NAME, VENDOR.V_CONTACT,
VENDOR.V_AREACODE, VENDOR.V_PHONEFROM PRODUCT,
VENDORWHERE PRODUCT.V_CODE VENDOR.V_CODE
SELECT A.EMP_NUM,A.EMP_LNAME,A.EMP_MGR, B.EMP_LNAM
E FROM EMP A, EMP B WHERE A.EMP_MGRB.EMP_NUM ORDE
R BY A.EMP_MGR
26More Complex Queries and SQL Functions (cont.)
27Updatable Views
- Common operation in production environments is
use of batch routines to update master table
attributes using transaction data - Overnight batch jobs
- Not all views are updatable (primary key has to
be unique) - Restrictions
- GROUP BY expressions cannot be used
- Cannot use set operators---UNION, INTERSECTION,
etc. - Most restrictions based on use of JOINS or group
operators in views
28More Complex Queries and SQL Functions (cont.)
29Procedural SQL
- SQL shortcomings
- Doesnt support execution of stored procedures
based on logical condition - Fails to support looping operations
- Solutions
- Embedded SQL can be called from within procedural
programming languages - Shared Code is isolated and used by all
application programs. - Procedural SQL (PL/SQL) stored within the
database, executed by DBMS, and invoked by the
end user - Triggers
- Stored procedures
- PL/SQL functions
30Procedural SQL (cont.)
- Procedural SQL allows the use of procedural code
and SQL statements that are stored within the
database. - The procedural code is executed by the DBMS when
it is invoked by the end user. - End users can use procedural SQL (PL/SQL) to
create - Triggers
- Stored procedures
- PL/SQL functions
31Triggers
- Procedural SQL code invoked before or after data
row is selected, inserted, or updated - Associated with a database table
- Table may have multiple triggers
- Executed as part of transaction
- Can enforce particular constraints
- Automate critical actions and provide warnings
for remedial action - Can update values, insert records, and call
procedures - Add processing power
32Triggers (cont.)
CREATE OR REPLACE TRIGGER lttrigger_namegtBEFORE/A
FTER DELETE/INSERT/UPDATE OF ltcolumn_name ON
lttable_namegtFOR EACH ROWBEGIN PL/SQL
instructions END
33Triggers
34Stored Procedures
- Named collection of procedural and SQL statements
stored in database - Invoked by name
- Executed as unit
- Invoked with EXEC
CREATE OR REPLACE PROCEDURE procedure_name
(argument IN/OUT data-type, etc) IS/AS
BEGIN DECLARE variable name and data
type PL/SQL or SQL statementsEND
EXEC store_procedure_name (parameter, parameter,
)
35Stored Procedures
36PL/SQL Stored Functions
- Named group of procedural and SQL statements that
returns a value - Invoked from within stored procedures or triggers
- Cannot be invoked from within SQL statements
CREATE FUNCTION function_name (argument IN
data-type, etc)RETURN data-typeAS BEGIN PL/SQL
statements RETURN (value) END
37Artist Database ERD and Tables
Figure 5.55
38General Rules Governing Relationships Among
Tables
Figure 5.56 MN, Both Sides Mandatory
(D/RESTRICT, U/CASCADE
Figure 5.57 MN, Both Sides Optional(D/CASCADE,
U/CASCADE)
39General Rules Governing Relationships Among
Tables
Figure 5.58 MN, One Side Optional
Figure 5.59 1M, Both Sides Mandatory
(D/RESTRICT, U/CASCADE)
40General Rules Governing Relationships Among
Tables
Figure 5.60 1M, Both Sides Optional
Figure 5.61 1M, Many Side Optional, One Side
Mandatory
41General Rules Governing Relationships Among
Tables
Figure 5.62 1M, One Side Optional, One Side
Mandatory
Figure 5.63 11, Both Sides Mandatory
42General Rules Governing Relationships Among
Tables
Figure 5.64 11, Both Sides Optional
Figure 5.65 11, One Side Optional, One Side
Mandatory(D/SET NULL, U/CASCADE)
43General Rules Governing Relationships Among
Tables (Cont.)
Figure 5.66 Weak Entity, Foreign Key Located in
Weak Entity
Figure 5.67 Multivalued Attributes (New Table in
1M Relationship, Foreign Key CAR_VIN in the New
Table