advanced select queries cs 146. review: retrieving data from a single table syntax: limitation:...
TRANSCRIPT
Advanced SELECT Queries
CS 146
Review: Retrieving Data From a Single Table Syntax:
Limitation: Retrieves "raw" data Note the default formats…
SELECT column1, column2, …FROM tablenameWHERE search_condition(s)
We can use the DBMS to manipulate retrieved data! Suppress duplicates Sort Format characters, numbers, & dates Perform arithmetic operations Summarize groups of data
Why not just do it in your program?
Suppressing Duplicate Outputs Use the DISTINCT qualifier
Ensures that only distinct rows are returned
SELECT DISTINCT cust_zipFROM candy_customer;
Sorting Query Output
Use the ORDER BY clause:
Always appears as the last item in a SELECT query
SELECT SELECT custnamecustnameFROM FROM customercustomerWHERE WHERE cust_type = 'P'cust_type = 'P'ORDER BY cust_nameORDER BY cust_name;;
Sorting Query Output Default sort order is ascending
Numbers: smallest to largest Characters: alphabetical Dates: oldest to newest
To force a descending sort order, add the DESC modifier:
SELECT purch_id, purch_dateFROM candy_purchaseORDER BY purch_date DESC
Multiple Sort Keys You can sort output by multiple keys
Only makes sense when first sort key has repeating values…
SELECT purch_id, purch_dateFROM candy_purchaseORDER BY purch_date DESC, purch_id
Formatting Number Output Use the FORMAT function Format:FORMAT(number, decimal_places)
SELECT purch_id,FORMAT(pounds, 2)
FROM candy_purchase;
Formatting Number Output as Currency Use the CONCAT and FORMAT function
CONCAT joins two strings to create a single string
CONCAT('$', FORMAT(number, decimal_places))
SELECT prod_id,CONCAT('$', FORMAT(prod_cost, 2))
FROM candy_product;
Formatting Date Output Use the DATE_FORMAT function Format:DATE_FORMAT(date, 'format')
SELECT purch_id, DATE_FORMAT(purch_date, '%b %e, %Y')FROM candy_purchase;
Predefined format specifiers
Format Specifiers %b – abbreviated month name %e – day of the month, numeric, suppresses
leading zeroes %Y – year, numeric, 4 digits
More complete list of specifiers
Formatting Character Output MySQL has a variety of functions for
manipulating stringsFunction Description Example Query
CONCAT(<string1>, <string2>)
Concatenates (joins) two strings
SELECT CONCAT(cust_addr, cust_zip)FROM candy_customer;
UPPER(<string>), LOWER(<string>)
Returns the string, with all characters converted to upper/lower case
SELECT UPPER(username)FROM candy_customer;
LENGTH(<string>) Returns an integer representing the string length
SELECT LENGTH(password)FROM candy_customer;
LPAD(<string>, <number of characters to add>, <padding character>), RPAD(<string>, <total length of return value>, <padding character>)
Returns the value of the string, with sufficient padding characters added to the left/right edge so return value equals total length specified
SELECT LPAD(password, 8, '*')FROM candy_customer;
Default Query Output
Column names are database field names
Calculated column names are the formula
Column Aliases Provide an alternate column name What good are they?
You can use them in the ORDER BY clause You can reference them in embedded programs
NOTE: alias only has to be in single quotes if it contains blank spaces
SELECT LENGTH(cust_name) AS 'name length'FROM candy_customerORDER BY 'name length';
Performing Arithmetic Calculations in Queries Applications often perform arithmetic
operations on retrieved data You can perform basic arithmetic operations on
numbers and dates in a SQL query SELECT clause Rationale:
DBMS makes it easy to perform the operation Network needs to transmit only the data you need
Performing Arithmetic Operations on Number Data Operators: +, -, *, /
Order of evaluation: * / then + - To force a different order, use parentheses
Only use on number data Prices, quantities, etc.
Performing Arithmetic Operations on Number Data Example:
SELECT prod_desc, prod_price - prod_costFROM candy_product;
Performing Arithmetic Operations on Date Data To display a date that is a specific number of
days after/before a stored date, add/subtract the number of days:
SELECT purch_id, purch_date, purch_date + 2FROM candy_purchase;
SELECT purch_id, purch_date, purch_date - 2FROM candy_purchase;
Performing Arithmetic Operations on Date Data To calculate the number of days between two
known dates, use DATEDIFF
SELECT purch_id, purch_date, delivery_date, DATEDIFF(delivery_date, purch_date)FROM candy_purchase;
Retrieving the Current Date Use the CURRENT_DATE() function
Function: code retrieving information that acts like a column in a SQL command
SELECT CURRENT_DATE();
Another Date Calculation Calculating someone’s age from their date of
birth
SELECT (DATEDIFF(CURRENT_DATE(), '1986-11-20')) / 365.25;
SQL Group Functions Performs an operation on a field from a group
of retrieved records AVG (average of all retrieved values) COUNT (number of records retrieved) MAX (maximum value retrieved) MIN (minimum value retrieved) SUM (sum of all retrieved values)
SQL Group Functions Examples
SELECT MAX(prod_cost), MIN(prod_cost), AVG(prod_cost)FROM candy_product;
SELECT COUNT(*)FROM candy_customer;
Using the GROUP BY Clause Whenever you use a group function:
All of the columns in the select clause must be in a group function or
If not, the column must be listed in a GROUP BY clause
Using the GROUP BY Clause Example:
SELECT purch_date, MAX(pounds), MIN(pounds), AVG(pounds)FROM candy_purchaseGROUP BY purch_date;
SUM and Statistical Functions SUM, AVG, MAX, MIN
Can only be used with NUMBER columns
SUM(pounds)
MAX(prod_cost)
MIN(prod_cost)
AVG(prod_cost)
COUNT Function Displays the number of records that a
query will retrieve Can be used on a column of any data type
Forms: COUNT(*) – displays total number of records,
regardless if the record has fields that contain NULL values
COUNT(fieldname) – displays the number of retrieved records in which the specified field is NOT NULL