Week 8

advertisement
Database Design
Sections 16 & 17 – Columns, Characters,
Rows, Concatenations, DISTINCT,
DESCRIBE, Logical Operators, Order of
Operations, Sorting
Using DESCRIBE (DESC)
 Use the DESCRIBE command to
display the structure of a table.
DESC[RIBE] tablename;
Marge Hohly
2
Describe command
 DESCRIBE (DESC) command displays
the structure of a table
 Try the following:
DESC departments;
 See the results on the next slide.
Marge Hohly
3
Describe command
Marge Hohly
4
Concatenation
 A concatenation operator:
 Concatenation means to connect or link
together in a series
 Concatenates columns, expressions or
character strings to other columns
 Is represented by two vertical bars (||)
or two “pipes”
 Creates a resultant column that is a
character expression
 “On date, the event was name”
Marge Hohly
5
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
6
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
7
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
8
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, 15
FROM ucla;
Marge Hohly
9
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
10
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, salary
FROM employees;
Marge Hohly
11
Limiting rows
 SELECT*|{[DISTINCT]
column|expression [alias],...}
FROM table
[WHERE condition(s)];
 WHERE clause limits the number of
rows.
 Example:
SELECT DISTINCT year AS “Year”
FROM d_cds
WHERE year <= 2000;
Marge Hohly
12
Practice
 Each statement below has errors. Correct
the errors and execute the query in APEX
a. SELECT first name
FROM f_staffs;
b. SELECT first_name |" " | last_name AS “DJs on
Demand Clients”
FROM d_clients;
c. SELECT DISCTINCT f_order_lines
FROM quantity;
d. SELECT order number
FROM f_orders;
Marge Hohly
13
Practice
 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
14
More Practice
1. True/False -- The following SELECT statement
executes successfully:
SELECT last_name, job_id, salary AS Sal
FROM 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_name
sal x 12 ANNUAL SALARY
FROM employees;
4. In the arithmetic expression salary*12 - 400, which
operation will be evaluated first?
Marge Hohly
15
Practice
1.
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.
b.
c.
d.
column names
*
DISTINCT id
both a and b
2.
Using SQL to choose the columns in a table uses which capability?
3.
SELECT department_id, first_name, last_name AS "Employee". The
column heading in the query result will appear as:
a.
b.
c.
d.
a.
b.
c.
d.
selection
projection
partitioning
join
EMPLOYEE
employee
Employee
"Employee:
Marge Hohly
16
More Practice
4.
Which statement below will return a list of employees in the following format?
Mr./Ms. Steven King is an employee of our company.
a.
b.
c.
d.
5.
SELECT "Mr./Ms."||first_name||' '||last_name 'is an employee of our
company.' AS "Employees“
FROM employees;
SELECT 'Mr./Ms. 'first_name,last_name ||' '||'is an employee of our
company.'
FROM employees;
SELECT 'Mr./Ms. '||first_name||' '||last_name ||' '||'is an employee of our
company.' AS "Employees“
FROM employees
SELECT Mr./Ms. ||first_name||' '||last_name ||' '||"is an employee of our
company." AS "Employees“
FROM employees
Which expression below will produce the largest value?
a.
b.
c.
d.
SELECT
SELECT
SELECT
SELECT
salary*6 + 100
salary* (6 + 100)
6(salary+ 100)
salary+6*100
Marge Hohly
17
More Practice
6.
Which is true about SQL statements?
7.
Which query will return three columns each with UPPERCASE column
headings?
a.
b.
c.
d.
SQL statements are case-sensitive
SQL clauses should not be written on separate lines.
Keywords cannot be abbreviated or split across lines.
SQL keywords are typically entered in lowercase; all other words in uppercase.
a)
SELECT "Department_id", "Last_name", "First_name“
FROM employees;
b)
SELECT DEPARTMENT_ID, LAST_NAME, FIRST_NAME FROM employees;
c)
SELECT department_id, last_name, first_name AS UPPER CASE FROM
employees;
d)
SELECT department_id, last_name, first_name
FROM employees;
Marge Hohly
18
More Practice
8. Which statement below will likely
fail?
a.
b.
c.
d.
SELCT * FROM employees;
Select * FROM employees;
SELECT * FROM EMPLOYEES;
SelecT* FROM employees;
Marge Hohly
19
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
20
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 employees
WHERE department_id = 50;
Marge Hohly
21
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
<>
Not equal to
Marge Hohly
Less than or
equal to
22
WHERE clauses
 Using comparison operators
 SELECT last_name,first_name,department_id
FROM employees
WHERE department_id >= 60;
 SELECT last_name,first_name,department_id
FROM employees
WHERE department_id <> 60;
 Write a SELECT statement to produce the following
results:
The song title is “Meet Me At the Altar.”
Where ‘Meet Me At the Altar’ is the title of a song.
Remember Oracle SQL is case sensitive
Marge Hohly
23
Other comparison operators
 BETWEEN …. AND
 IN
 LIKE
Marge Hohly
24
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 employees
WHERE department_id BETWEEN 60 AND 90;
 SELECT last_name,first_name,department_id
FROM employees
WHERE department_id NOT BETWEEN 60 AND 90;
 SELECT title, year
FROM d_cds
WHERE year BETWEEN '1999' AND '2001';
Marge Hohly
25
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_staffs
WHERE manager_id = 19 and salary <12.00;
Marge Hohly
26
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
27
LIKE examples
 SELECT last_name,first_name,department_id
FROM employees
WHERE last_name LIKE 'A%';
 SELECT last_name,first_name,department_id
FROM employees
WHERE last_name LIKE '%s’;
 SELECT last_name,first_name,department_id
FROM employees
WHERE last_name LIKE '%s%’;
 SELECT last_name,first_name,department_id
FROM employees
WHERE last_name LIKE ‘_ _ _ _ _s%’;
Using 5 underscores
Marge Hohly
28
Like
 For an exact match where _ or % are
part of the string and not a wildcard
use the \ symbol
Marge Hohly
29
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_pct
FROM employees
WHERE commission_pct is NULL;
SELECT last_name,first_name,department_id,
commission_pct
FROM employees
WHERE commission_pct is NOT NULL;
Marge Hohly
30
Practice problems
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
31
IN is like OR’s
 IN is like a string of OR clauses.
 Example:
 SELECT last_name,first_name,department_id
FROM employees
WHERE department_id IN(50, 60, 90);
Marge Hohly
32
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
33
Examples of using Logical operators
 SELECT id, title, duration, type_code
FROM d_songs
WHERE id > 40
AND type_code = 77;
Marge Hohly
34
Precedence using AND & OR
 Evaluate these two examples. What
is the difference?
 SELECT last_name, job_id, salary
FROM employees
WHERE job_id = ‘SA_REP’
OR job_id=‘AD_PRES’
AND salary>15000;
 SELECT last_name, job_id, salary
FROM employees
WHERE (job_id = ‘SA_REP’
OR job_id=‘AD_PRES’)
AND salary>15000;
 AND before OR
Marge Hohly
35
Logical Comparisons
 Logical conditions (a few examples)
 SELECT last_name, job_id, department_id
FROM employees
WHERE job_id = ‘SA_REP’
OR department_id = 10;
 SELECT last_name, job_id, SALARY
FROM employees
WHERE job_id = ‘SA_REP’
AND salary > 15000;
 Can you explain what rows are to be returned
in each?
Marge Hohly
36
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 address
FROM d_venues
WHERE address LIKE '%Primrose%‘;
 Variations:
 …WHERE id NOT IN(105, 206, 332);
 …WHERE id != 105 and id != 206 and id!= 332;
Marge Hohly
37
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
38
Complex AND and OR clause
 Take an arc
ID = A
#id
ID = B
ID = C
Marge Hohly
39
Complex AND and OR clause
 Example Table:
ID
A
B
C
PK
Fk1
Fk2
Fk3
*
O
O
O
Marge Hohly
40
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
41
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 be
overridden by using
parentheses.
Order Operator
Arithmetic operations
1
Concatenation operators
2
Comparison conditions
3
IN [NOT] NULL, LIKE,
4
[NOT] IN
Marge Hohly
5
6
7
8
[NOT] BETWEEN
NOT logical operator
AND logical operator
OR logical operator
42
Order of Operations Examples
 What order will these process in?
 SELECT last_name, specialty, auth_expense_amt
FROM d_partners
WHERE specialty ='All Types‘
OR
specialty IS NULL
AND auth_expense_amt = 300000;
 SELECT last_name, specialty, auth_expense_amt
FROM d_partners
WHERE (specialty ='All Types‘
OR
specialty IS NULL)
AND auth_expense_amt = 300000;
Marge Hohly
43
Examples 18.1.8 & 18.1.9
3. “I need to know who of the Global Fast
Foods employees makes 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
44
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
45
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
46
ORDER BY
 Example of single value sort
 SELECT department_id, job_id,
last_name, salary
FROM employees
ORDER BY department_id desc;
Marge Hohly
47
ORDER BY multiple values
 SELECT department_id, job_id, last_name, salary
FROM employees
ORDER BY department_id, job_id, salary;
 SELECT department_id, job_id, last_name, salary
FROM employees
ORDER BY department_id, job_id desc, salary;
 SELECT department_id, job_id, last_name, salary
FROM employees
ORDER BY 3;
The 3 is field from SELECT
 SELECT department_id, job_id, last_name, salary
FROM employees
ORDER BY 2, last_name;
Marge Hohly
48
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
49
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
50
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
51
Example
 SELECT employee_id, first_name
FROM employees
WHERE employee_id < 105
ORDER BY last_name;
 What order does this execute in?
Marge Hohly
52
18.2.7 & 18.2.8
2. Create a query that will return all the
DJ on Demand CD titles ordered by
year with titles in alphabetical order.
Marge Hohly
53
Produce the show results
 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
54
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
55
Function types
Marge Hohly
56
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
57
Functions:
Marge Hohly
58
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
59
Examples
 SELECT 'The most popular song in
our collection is ' || UPPER(title)AS
"Most Requested”
FROM d_songs
WHERE id = 47;
 SELECT CONCAT(title, year)
FROM d_cds;
Marge Hohly
60
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 employees
ORDER BY job;
SELECT department_id, job_id AS job, last_name, salary*12
FROM employees
ORDER BY salary*12;
SELECT department_id, job_id AS job, last_name, salary*12
FROM employees
ORDER BY 3;
Marge Hohly
61
Examples
 Fields used in ORDER BY don’t have to be
used in SELECT clause
 SELECT last_name
FROM employees
WHERE salary > 4000
ORDER 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
62
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 employees
WHERE salary>400;
Marge Hohly
63
Multi-Row Functions
 Aggregate data





AVG
COUNT
MAX
MIN
SUM
Marge Hohly
64
Download