|
Limiting
the rows that are selected
|
Select
employee_id, last_name, job_id from employees where department_id= 90
|
|
Character
string and dates
|
Select
last_name, job_id, department_id from employees where last_name = ‘Whalen’
|
|
Comparison
Conditions
>,<,<=,>=,<>,=, between,
and, like is null
|
Select
last_name, salary, from employees where salary between 2500 and 3500;
|
|
Select
employee_id, last_name, salary from emplyees where manager_id in (100, 101,
201);
|
|
Select
first_name from employees where first_name like ‘S%’;
|
|
Select
last_name, manager_id from employees where manager_id is null;
|
|
Logical
Conditions
AND, OR, NOT
|
Select
employee_id, last_name, job_id, salary from employees where salary >=1000
AND
job_id like ‘%MAN%’;
|
|
Select
employee_id, last_name, job_id, salary from employees where job_id NOT IN
(‘IT_PROG’, ‘ST_CLERK’, ‘SA_REP’)
|
|
Rules
of Precedence
·
Arithmetic operations (+,-,/,*)
·
Concatenation operator (||)
·
Comparison conditions
(>,=,<, )
·
Logical Operators:
Is (not) NULL,
LIKE,
(NOT) IN,
(NOT) BETWEEN;
Not equal to;
Not logical condition;
AND logical condition;
OR logical condition;
|
Select
last_name, job_id, salary from employees
Where
job_id = ‘SA_REP’
OR
job_id = ‘AD_PRES’
AND
salary > 1000;
|
|
Select
last_name, job_id, department_id, hire_date from employees
Order
by hire_date;
|
|
Select
employee_id, last_name, salary*12 annualsal from employees
Order
by annualsal, last_name desc;
|
|
|
|
Substitution
Variable
Temporary store values with
single-ampersand(&), Double-ampersand(&&) substitution
|
Select
employee_id, last_name, salary, department_id from employees where
employee_id = &employee_num;
|
|
Select
employee_id, last_name, job_id, &&column_name from employees order by
&column_name;
|
|
Single Row Functions
|
|
v Character
Function
·
Case-Manipulation
lower,UPPER, Initcap
·
Character-Manipulation
CONCAT,
SUBSTR, LENGTH
INSTR,LPAD
| RPAD, TRIM
REPLACE,
TRIM, REPLACE
|
SELECT employee_id, last_name,
department_id
FROM employees
WHERE LOWER/Upper/InITCAP(last_name) = 'higgins';
|
|
Function
Result
-REPLACE--------('JACK and
JUE','J','BL')--------- BLACK and BLUE
-LENGTH---------('HelloWorld')-------------------
10
-INSTR-------------('HelloWorld', 'W')------------
6
-LPAD---------------(salary,10,'*')------------------
*****24000
-RPAD--------------(salary, 10, '*')-----------------
24000*****
-CONCAT----------('Hello', 'World')--------------
HelloWorld
-TRIM---------------('H' FROM
'HelloWorld')---- elloWorld
-SUBSTR------------('HelloWorld',1,5)------------
Hello
|
|
v Number
Round, Trunc, MOD
|
SELECT ROUND(45.923,2), ROUND(45.923),
ROUND(45.923,-1)
FROM DUAL;
|
|
Function
Result
-MOD----------(1600, 300)------------------
100
ROUND--------(45.926,
2)-------------------45.93
TRUNC--------(45.926,
2)-------------------45.92
|
|
v Date
Date, Time
|
SELECT last_name,
(SYSDATE-hire_date)/7 AS WEEKS
FROM employees
WHERE department_id = 90;
|
|
SELECT employee_id, hire_date,
MONTHS_BETWEEN (SYSDATE, hire_date)
TENURE,
ADD_MONTHS (hire_date, 6) REVIEW,
NEXT_DAY (hire_date, 'FRIDAY'),
LAST_DAY(hire_date)
FROM employees
WHERE MONTHS_BETWEEN (SYSDATE,
hire_date) < 70;
|
|
Function Result
MONTHS_BETWEEN----- Number of months
between two dates
ADD_MONTHS------- Add calendar months
to date
NEXT_DAY------------ Next day of the
date specified
LAST_DAY------------- Last day of the
month
ROUND---------------- Round date
TRUNC---------------- Truncate date
|
|
v Conversion Functions
·
Implicit data
type Conversion
·
Explicit data
type conversion
|
SELECT
employee_id, TO_CHAR(hire_date, 'MM/YY') Month_Hired
FROM employees WHERE last_name =
'Higgins';
|
|
SELECT last_name, TO_CHAR(hire_date,
'fmDdspth "of" Month YYYY fmHH:MI:SS AM') HIREDATE FROM employees;
|
|
v General Functions
• NVL=
Converts a null value to an actual value
• NVL2
= If expr1 is not null, NVL2 returns expr2. If expr1 is null, NVL2
returns expr3. The argument expr1 can
have any data type.
• NULLIF
= Compares two expressions and returns null if they are equal; returns
the first expression if they are not
equal
• COALESCE = Returns the first non-null expression in
the expression list
|
SELECT last_name, salary,
commission_pct,
(salary*12) + (salary*12*commission_pct)
AN_SAL
FROM employees;
|
|
• NVL (expr1, expr2)
• NVL2 (expr1, expr2, expr3)
• NULLIF (expr1, expr2)
• COALESCE (expr1, expr2, ..., exprn)
|
|
v
Conditional
Expressions
· Provide the use of IF-THEN-ELSE logic within a SQL
statement Use two method:
· CASE expression
· DECODE function
|
CASE
Expression: Facilitates conditional
inquiries by doing the work of an IF-THEN-ELSE statement.
Select
last_name, job_id, salary,
Case job_jd
when
‘IT_PROG’ Then 1.10*salary
When
‘SA_CLERK’ Then 1.15*salary
When
‘SA_REP’ Then 1.20*salary
Else salary
end “Reviced_Salary”
From
Employees;
|
|
DECODE function: Facilittates conditional
inqueries by doing the work of a case expression an IF-THEN-ELSE statement.
Select
last_name, job_id, salary,
Decode (job_id
‘IT_PROG’,
1.10*salary
‘ST_CLERK’,
1.15*salary
‘SA_RIP’,
1.20*salary salary)
REVICED_SALARY
From
employees;
|
|
Multiple-Row (Group) Functions
|
|
Group functions operate on
sets of rows to give one result per group.
|
|
v Several Group Functions
·
AVG
·
COUNT
·
MAX
·
MIN
·
STDDEV
·
SUM VARIENCE
|
Select
AVG(salary), MAX(salary), MIN(salary), Sum(salary), Count(commission_pct)
from employees where department_id = 80;
|
|
v USING
GROUP BY CLAUSE
|
SELECT
department_id DEPT_ID, job_id, SUM(salary)
From
employees
GROUP BY
department_id, job_id;
|
|
v USING
HAVING CLAUSE
|
SELECT
job_id, sum(salary) Total_Salary from employees
Where
job_id not like ‘%REP’
GROUP BY
job_id
HAVING
sum(salary)>10000
Order by
sum(salary);
|
|
|
|