Upload
rosaline-craig
View
223
Download
0
Embed Size (px)
Citation preview
Database Design
Sections 17 & 18 – Concatenations, DISTINCT, DESCRIBE, Logical Operators, Order of Operations, Sorting
Marge Hohly 2
Concatenation
A concatenation operator: Concatenates columns or charter strings
to other columns Is represented by two vertical bars (||) Creates a resultant column that is a
character expression
Marge Hohly 3
Practice SELECT last_name ||', '|| first_name
FROM employees; Using the DJ on Demand EVENT table,
create and display :"On date, the event was name“
Run the command again using an alias Events for the column heading
Create SQL to get the phase like “King earns $24000” from the employees table
SELECT doesn’t change data
Marge Hohly 4
Practice database UCLA CREATE table UCLA
(id number, name varchar2(20)); DESC ucla; INSERT INTO ucla
values(1,'Joe'); values(2,‘Mary'); SELECT *
FROM ucla; We can use the ucla table for practice during lecture
Marge Hohly 5
Using Literal Character Strings
A literal is a character, a number, or a date included in the SELECT list.
Date and character literal values must be enclosed within single quotation marks.
Each character string is output once for each row returned.
Marge Hohly 6
Using Literals
SELECT id, 'hello‘FROM ucla; hello is a literal This inserts values in a column of the
UCLA table with the value ‘hello’ Try it. Try this:
SELECT id, 15FROM ucla
Marge Hohly 7
DISTINCT: Eliminating duplicate rows
The default display of queries is all rows, including duplicate rows.
Use the DISTINCT keyword in the SELECT clause to eliminate duplicate rows.
DISTINCT must appear just after the SELECT keyword.
Marge Hohly 8
DISTINCT practice SELECT job_id
FROM employees; Note the large number of rows returned Revise using DISTINCT
SELECT DISTINCT job_id FROM employees;
When DISTINCT is after the SELECT it applies to all other fields in the SELECT
SELECT DISTINCT job_id, salaryFROM employees;
Marge Hohly 9
Limiting rows
SELECT*|{[DISTINCT] column|expression [alias],...}FROM table[WHEREcondition(s)];
Example:SELECT DISTINCT year AS “Year”FROM d_cdsWHERE year < 2000;
Marge Hohly 10
Practice 17.1.10
2. Each statement below has errors. Correct the errors and execute the query in HTML DB.
a. SELECT first nameFROM f_staffs;
b. SELECT first_name |" " | last_name AS "DJs on Demand Clients“FROM d_clients;
c. SELECT DISCTINCT f_order_linesFROM quantity;
d. SELECT order numberFROM f_orders;
Marge Hohly 11
Using DESCRIBE (DESC)
Use the DESCRIBE command to display the structure of a table.
DESC[RIBE] tablename
Marge Hohly 12
Practice 17.1.11
4. Which of the following is TRUE about the following query? SELECT first_name, DISTINCT birthdate
FROM f_staffs;a. Only two rows will be returned.b. Four rows will be returned.c. Only Fred 05-JAN-88 and Lizzie 10-NOV-87
will be returned.d. No rows will be returned.
Marge Hohly 13
Practice 17.2.41. True/False -- The following SELECT statement
executes successfully:SELECT last_name, job_id, salary AS SalFROM employees;
2. True/False -- The following SELECT statement executes successfully:SELECT *FROM job_grades;
3. There are four coding errors in this statement. Can you identify them?SELECT employee_id, last_namesal x 12 ANNUAL SALARYFROM employees;
4. In the arithmetic expression salary*12 - 400, which operation will be evaluated first?
Marge Hohly 14
Practice 17.2.55. Which of the following can be used in the SELECT statement to return
all columns of data in the Global Fast Foods f_staffs table?a. column namesb. *c. DISTINCT idd. both a and b
5. Using SQL to choose the columns in a table uses which capability? a. selectionb. projectionc. partitioningd. join
6. SELECT department_id, first_name, last_name AS "Employee". The column heading in the query result will appear as:a. EMPLOYEEb. employeec. Employeed. "Employee:
Marge Hohly 15
Practice 17.2.68. Which statement below will return a list of employees in the following format?
Mr./Ms. Steven King is an employee of our company.
a. SELECT "Mr./Ms."||first_name||' '||last_name 'is an employee of our company.' AS "Employees“FROM employees;
b. SELECT 'Mr./Ms. 'first_name,last_name ||' '||'is an employee of our company.'
FROM employees;c. SELECT 'Mr./Ms. '||first_name||' '||last_name ||' '||'is an employee of our
company.' AS "Employees“FROM employees
d. SELECT Mr./Ms. ||first_name||' '||last_name ||' '||"is an employee of our company." AS "Employees“FROM employees
9. Which expression below will produce the largest value? a. SELECT salary*6 + 100b. SELECT salary* (6 + 100)c. SELECT 6(salary+ 100)d. SELECT salary+6*100
Marge Hohly 16
Practice 17.2.710. Which is true about SQL statements?
a. SQL statements are case-sensitiveb. SQL clauses should not be written on separate lines.c. Keywords cannot be abbreviated or split across lines.d. SQL keywords are typically entered in lowercase; all other words in uppercase.
11. Which query will return three columns each with UPPERCASE column headings?
a. SELECT "Department_id", "Last_name", "First_name“FROM employees;
a. SELECT DEPARTMENT_ID, LAST_NAME, FIRST_NAME FROM employees;
a. SELECT department_id, last_name, first_name AS UPPER CASE FROM employees
a. SELECT department_id, last_name, first_nameFROM employees;
Marge Hohly 17
Practice 17.2.8
12. Which statement below will likely fail?
a. SELCT * FROM employees;b. Select * FROM employees;c. SELECT * FROM EMPLOYEES;d. SelecT* FROM employees;
13. You are now ready to take Quiz #7
Marge Hohly 18
Limiting Rows with WHERE
The WHERE clause can compare values in columns, literal values, arithmetic expressions, or functions. It consists of three elements: Column name Comparison condition Expressions, constant, or list of values
Marge Hohly 19
WHERE clause
The WHERE clause follows the FROM clause in a SQL statement.
An alias cannot be used in the WHERE clause!
Example: SELECT last_name, first_name, department_id
FROM employeesWHERE department_id = 50;
Marge Hohly 20
Comparison Operators The symbols != and ^= can also represent the not equal to
condition.Operator Meaning
= Equal to
> Greater than
>= Greater than or equal to
< Less than
<= Less than or equal to
<> Not equal to
Marge Hohly 21
WHERE clauses Using comparison operators
SELECT last_name,first_name,department_idFROM employeesWHERE department_id >= 60;
SELECT last_name,first_name,department_idFROM employeesWHERE department_id <> 60;
Write a SELECT statement to produce the following results:"The song title is "Another one bites the dust.Where ‘Another one bites the dust’ is the title of a song.Remember Oracle SQL is case sensitive
Marge Hohly 22
BETWEEN ... AND BETWEEN...AND operator is used to
select and display rows based on a range of values.
BETWEEN ... AND are inclusive SELECT last_name,first_name,department_id
FROM employeesWHERE department_id BETWEEN 60 AND 90;
SELECT last_name,first_name,department_idFROM employeesWHERE department_id NOT BETWEEN 60 AND 90;
SELECT title, yearFROM d_cdsWHERE year BETWEEN '1999' AND '2001';
Marge Hohly 23
More Complex WHERE clause
Example: "I would like to know Global Fast Foods
employees whose manager ID is 19 and earn a salary less than $12.00 per hour.
SELECT *FROM f_staffsWHERE manager_id = 19 and salary <12.00;
Marge Hohly 24
WHERE clause using LIKE LIKE condition allows you to select
rows that match either literal characters or number patterns.
% and underscore (_ ) are wildcard characters, used to
construct a search string. % symbol used to represent any
sequence of zero or more characters. Underscore (_ ) symbol used to represent
a single character.
Marge Hohly 25
LIKE examples SELECT last_name,first_name,department_id
FROM employeesWHERE last_name LIKE 'A%';
SELECT last_name,first_name,department_idFROM employeesWHERE last_name LIKE '%s‘;
SELECT last_name,first_name,department_idFROM employeesWHERE last_name LIKE '%s%‘;
SELECT last_name,first_name,department_idFROM employeesWHERE last_name LIKE ‘_ _ _ _ _s%‘
Using 5 underscores
Marge Hohly 26
Using IS NULL, IS NOT NULL NULL is unavailable, unassigned, unknown,
or inapplicable. No presence of data. NOT NULL test for presence of data in
column/field. Examples:
SELECT last_name,first_name,department_id, commission_pctFROM employeesWHERE commission_pct is NULL;
SELECT last_name,first_name,department_id, commission_pctFROM employeesWHERE commission_pct is NOT NULL;
Marge Hohly 27
17.5.11 & 17.5.12
2. Display the location type and comments for all DJs on Demand venues that are Private Home.
5. Who are the partners of DJs on Demand who do not get an authorized expense amount?
Marge Hohly 28
IN is like OR’s
IN is like a string of OR clauses. Example:
SELECT last_name,first_name,department_idFROM employeesWHERE department_id IN(50, 60, 90);
Marge Hohly 29
Logical Comparisons A logical condition combines the results of two
or more conditions to produce a single result. A row is returned ONLY IF the overall result of the condition is true.
AND – Returns TRUE if both conditions are true. OR – Returns TRUE if either conditions are true. NOT – Returns TRUE if the condition is false.
Marge Hohly 30
Precedence using AND & OR Evaluate these two examples. What
is the difference? SELECT last_name, job_id, salary
FROM employeesWHERE job_id = ‘SA_REP’OR job_id=‘AD_PRES’AND salary>15000;
SELECT last_name, job_id, salaryFROM employeesWHERE (job_id = ‘SA_REP’OR job_id=‘AD_PRES’)AND salary>15000;
AND before OR
Marge Hohly 31
Logical Comparisons
Logical conditions (a few examples) SELECT last_name, job_id, department_id
FROM employeesWHERE job_id = ‘SA_REP’OR department_id = 10;
SELECT last_name, job_id, SALARYFROM employeesWHERE job_id = ‘SA_REP’AND salary > 15000;
Can you explain what rows are to be returned in each?
Marge Hohly 32
Logical operator Write a select statement to find an address
in the DJs on Demand database d_venues table that has the word "Primrose" in the description.
SELECT addressFROM d_venuesWHERE address LIKE '%Primrose%‘;
Variations: …WHERE cd_id NOT IN(105, 206, 332); …WHERE cd_id != 105 and cd_id != 206 and
cd_id!= 332;
Marge Hohly 33
Examples: Below are phrases and conditions in which they
would not be true employee_id = 100 AND last_name LIKE 'S%'
Ms. Smith whose employee_id is 50 Employee_id 100 whose last name is King
department = 10 AND employee_id = 100; Employee_id 100 is in department 20 Employee_id 50 is in department 10
Marge Hohly 34
Complex AND and OR clause
Take an arc
#id
ID = A
ID = B
ID = C
Marge Hohly 35
Complex AND and OR clause Example Table:
ID A B C
PK Fk1 Fk2 Fk3
* O O O
Marge Hohly 36
Complex AND and OR clause
WHERE clause example for ARC: WHERE ((A is NOT NULL and B is NULL
and C is NULL) OR (A is NULL and B is NOT NULL and C is NULL) OR (A is NULL and B is NULL and C is NOT NULL)) /*--- comment ---*/
Precedence is AND before OR
Marge Hohly 37
Rules of Precedence The rules of
precedence determine the order in which expressions are evaluated and calculated. The table lists the default order, which can overridden by using parentheses.
Order Operator
1 Arithmetic operations
2 Concatenation operators
3 Comparison conditions
4 IN [NOT] NULL, LIKE, [NOT] IN
5 [NOT] BETWEEN
6 NOT logical operator
7 AND logical operator
8 OR logical operator
Marge Hohly 38
Order of Operations Examples What order will these process in? SELECT last_name, specialty, auth_expense_amt
FROM d_partnersWHERE specialty ='All Types‘OR specialty IS NULLAND auth_expense_amt = 300000;
SELECT last_name, specialty, auth_expense_amtFROM d_partnersWHERE (specialty ='All Types‘OR specialty IS NULL)AND auth_expense_amt = 300000;
Marge Hohly 39
Examples 18.1.8 & 18.1.9
3. “I need to know who the Global Fast Foods employees are that make more than $6.50/hour and their position is not Order Taker.“
8. What's my email address?Because I have been working for Oracle since the beginning of 1996, I make more than $9000 per month. Because I make so much money, I don't get a commission.
Marge Hohly 40
Examples: AND and OR conditions
What are the titles of the jobs whose minimum salary is 4000 and whose maximum salary is 9000?
Try this with OR and then AND Rewritten query including the salary
columns to verify that both conditions are met:
Note: you might want to review the jobs table fields/columns etc.
Marge Hohly 41
Sorting rows ORDER BY
Information sorted by the column referenced. ORDER BY clause follows the FROM clause and is
at the end of the SELECT statement. ORDER BY clause sorts in ascending order by
default. Only limit to how many columns can be added to
the ORDER BY clause is the number of columns in the table.
Marge Hohly 42
ORDER BY
Example of single value sort SELECT department_id, job_id,
last_name, salaryFROM employeesORDER BY department_id desc;
Marge Hohly 43
ORDER BY multiple values SELECT department_id, job_id, last_name, salary
FROM employeesORDER BY department_id, job_id, salary;
SELECT department_id, job_id, last_name, salaryFROM employeesORDER BY department_id, job_id desc, salary;
SELECT department_id, job_id, last_name, salaryFROM employeesORDER BY 3; The 3 is field from SELECT
SELECT department_id, job_id, last_name, salaryFROM employeesORDER BY 2, last_name;
Marge Hohly 44
Sort order The default sort order is ascending.
Numeric values are displayed lowest to highest.
Date values are displayed with the earliest value first.
Character values are displayed in alphabetical order.
Null values are displayed last in ascending order and first in descending order.
Marge Hohly 45
ORDER BY multiple values
Place the following hire dates in descending order: 22-MAY-85, null, 10-JAN-04, 17-NOV-55, 21-DEC-98
Write a query to find the answer, using the employees table and hire_date column
Marge Hohly 46
Order of execution in a SELECT statement
The order of execution of a SELECT statement is as follows: FROM clause -- locates the table that
contains the data WHERE clause -- restricts the rows to be
returned SELECT clause -- selects from the
reduced data set the columns requested ORDER BY -- orders the results set
Marge Hohly 47
Example
SELECT employee_id, first_name FROM employeesWHERE employee_id < 105ORDER BY last_name;
What order does this execute in?
Marge Hohly 48
11.1.7 & 11.1.8
2. Create a query that will return all the DJ on Demand CD titles ordered by year with titles in alphabetical order by year.
5. Write a SQL statement using the employees table and the ORDER BY clause that could retrieve the information in the following table. Return only those employees with employee_id<125.
Marge Hohly 49
Function classification
Single-row and multi-row functions Single-row functions operate on a single
row and return only one result per row. Multiple-row functions can manipulate
groups of rows to give one result per group of rows.
This section provides a brief overview of this topic. It is covered in depth in the next section.
Marge Hohly 50
SQL Single row functions Character
Converting character values from uppercase to lowercase
Number rounding off Manipulate output for groups of rows by finding an
average or sum for several rows Date
Format dates and numbers for display Conversion
Convert column data types such as converting a character string to a number or date
General
Marge Hohly 51
Single-row functions They can be used in SELECT, WHERE, and ORDER BY
clauses.
They return ONE result per row.
They can return a data value of a different type.
They can possibly expect one or more arguments or values sent to them.
They act on each row returned in the query.
Marge Hohly 52
Examples
SELECT 'The most popular song in our collection is ' || UPPER(title)AS "Most Requested”FROM d_songsWHERE id = 47;
SELECT CONCAT(title, year)FROM d_cds;
Marge Hohly 53
Examples Use ‘ single quote when referring to data in a database Use “ “ for text as an alias if text has space or specific case
etc. In an ORDER BY clause you can use an alias, expression,
number, field names SELECT department_id, job_id AS job, last_name, salary*12
FROM employeesORDER BY job;
SELECT department_id, job_id AS job, last_name, salary*12FROM employeesORDER BY salary*12;
SELECT department_id, job_id AS job, last_name, salary*12FROM employeesORDER BY 3;
Marge Hohly 54
Examples Fields used in ORDER BY don’t have to be
used in SELECT clause SELECT last_name
FROM employeesWHERE salary > 4000ORDER BY job_id;
In development you might want to include the ORDER BY field in SELECT to verify that your getting the correct results, then remove the field.
Marge Hohly 55
Single-row function example
The single-row function is done for every row
What would be returned from this statement? SELECT last_name || ' ' || first_name,
salary,round(salary,-3)FROM employeesWHERE salary>400;