Oracle Lecture 4

Embed Size (px)

Citation preview

  • 7/29/2019 Oracle Lecture 4

    1/45

    Copyright 2004, Oracle. All rights reserved.

    Lecture 4:

    1-Retrieving Data Usingthe SQL SELECT Statement

    2-Restricting and Sorting Data

    ORACLE

  • 7/29/2019 Oracle Lecture 4

    2/45

    Objectives

    After completing this lesson, you should

    be able to do the following:

    List the capabilities of SQL SELECTstatements

    Execute a basic SELECT statement

  • 7/29/2019 Oracle Lecture 4

    3/45

    Capabilities of SQL SELECT

    Statements

    SelectionProjection

    Table 1 Table 2

    Table 1Table 1

    Join

  • 7/29/2019 Oracle Lecture 4

    4/45

    Basic SELECT Statement

    SELECT identifies the columns to be displayed

    FROM identifies the table containing thosecolumns

    SELECT *|{[DISTINCT] column|expression [alias],...}

    FROM table;

  • 7/29/2019 Oracle Lecture 4

    5/45

    Selecting All Columns

    SELECT *

    FROM departments;

  • 7/29/2019 Oracle Lecture 4

    6/45

    Selecting Specific Columns

    SELECT department_id, location_id

    FROM departments;

  • 7/29/2019 Oracle Lecture 4

    7/45

    Writing SQL Statements

    SQL statements are not case-sensitive.

    SQL statements can be on one or morelines.

    Keywords cannot be abbreviated or splitacross lines.

    Clauses are usually placed on separatelines.

    Indents are used to enhance readability.

    In SQL*plus, you are required to endeach SQL statement with a semicolon (;).

  • 7/29/2019 Oracle Lecture 4

    8/45

    Arithmetic Expressions

    Create expressions with number and date data byusing arithmetic operators.

    Operator Description

    + Add

    - Subtract

    * Multiply

    / Divide

  • 7/29/2019 Oracle Lecture 4

    9/45

    SELECT last_name, salary, salary + 300

    FROM employees;

    Using Arithmetic Operators

  • 7/29/2019 Oracle Lecture 4

    10/45

    SELECT last_name, salary, 12*salary+100

    FROM employees;

    Operator Precedence

    SELECT last_name, salary, 12*(salary+100)

    FROM employees;

    1

    2

  • 7/29/2019 Oracle Lecture 4

    11/45

    Defining a Null Value

    A null is a value that is unavailable, unassigned,unknown, or inapplicable.

    A null is not the same as a zero or a blankspace.

    SELECT last_name, job_id, salary, commission_pctFROM employees;

  • 7/29/2019 Oracle Lecture 4

    12/45

    SELECT last_name, 12*salary*commission_pct

    FROM employees;

    Null Values

    in Arithmetic Expressions

    Arithmetic expressions containing a null value evaluateto null.

  • 7/29/2019 Oracle Lecture 4

    13/45

    Defining a Column Alias

    A column alias: Renames a column heading

    Is useful with calculations

    Immediately follows the column name(There can also be the optional AS keywordbetween the column name and alias.)

    Requires double quotation marks if itcontains spaces or special characters or if it

    is case-sensitive

  • 7/29/2019 Oracle Lecture 4

    14/45

    Using Column Aliases

    SELECT last_name "Name" , salary*12 "Annual Salary"

    FROM employees;

    SELECT last_name AS name, commission_pct comm

    FROM employees;

  • 7/29/2019 Oracle Lecture 4

    15/45

    Concatenation Operator

    A concatenation operator:

    Links columns or character strings to othercolumns

    Is represented by two vertical bars (||) Creates a resultant column that is a character

    expression

    SELECT last_name||job_id AS "Employees"

    FROM employees;

  • 7/29/2019 Oracle Lecture 4

    16/45

    Literal Character Strings

    A literal is a character, a number, or a datethat is included in the SELECT statement.

    Date and character literal values must beenclosed by single quotation marks.

    Each character string is output once foreachrow returned.

  • 7/29/2019 Oracle Lecture 4

    17/45

    Using Literal Character Strings

    SELECT last_name ||' is a '||job_id

    AS "Employee Details"

    FROM employees;

  • 7/29/2019 Oracle Lecture 4

    18/45

    Alternative Quote (q)

    Operator Specify your own quotation mark delimiter

    Choose any delimiter

    Increase readability and usability

    SELECT department_name ||q'[, it's assigned Manager Id: ]'

    || manager_id

    AS "Department and Manager"

    FROM departments;

  • 7/29/2019 Oracle Lecture 4

    19/45

    Duplicate Rows

    The default display of queries is all rows, includingduplicate rows.

    SELECT department_id

    FROM employees;

    SELECT DISTINCT department_id

    FROM employees;

    1

    2

  • 7/29/2019 Oracle Lecture 4

    20/45

    Summary

    In this lesson, you should havelearned how to: Write a SELECT statement that:

    Returns all rows and columns from a table

    Returns specified columns from a table

    Uses column aliases to display moredescriptive column headings

    SELECT *|{[DISTINCT] column|expression [alias],...}

    FROMtable;

  • 7/29/2019 Oracle Lecture 4

    21/45

    Practice 1:1- The following SELECT statement executes successfully:SELECT last_name, job_id, salary AS Sal

    FROM employees;

    True/False

    2-The following SELECT statement executes successfully:

    SELECT *

    FROM job_grades;

    True/False

    3-There are four coding errors in the following statement. Can

    you identify them?

    SELECT employee_id, last_name

    sal x 12 ANNUAL SALARY

    FROM employees;

  • 7/29/2019 Oracle Lecture 4

    22/45

    Practice 1 :

    4-The HR department needs a query to display allunique job codes from the EMPLOYEES table.

    5-The HR department has requested a report of all

    employees and their job IDs. Display the lastname concatenated with the job ID (separated

    by a comma and space) and name the column

    Employee and Title.

  • 7/29/2019 Oracle Lecture 4

    23/45Copyright 2004, Oracle. All rights reserved.

    2-Restricting and Sorting Data

    ORACLE

  • 7/29/2019 Oracle Lecture 4

    24/45

    Objectives

    After completing this lesson, you

    should be able to do the following:

    Limit the rows that are retrieved by aquery

    Sort the rows that are retrieved by a

    query

  • 7/29/2019 Oracle Lecture 4

    25/45

    Limiting Rows Using a

    Selection

    retrieve all

    employees indepartment 90

    EMPLOYEES

  • 7/29/2019 Oracle Lecture 4

    26/45

    Limiting the Rows That Are

    Selected

    Restrict the rows that are returned by using theWHERE clause:

    The WHERE clause follows the FROM clause.

    SELECT *|{[DISTINCT] column | expression [alias],...}

    FROM table

    [WHERE condition(s)];

  • 7/29/2019 Oracle Lecture 4

    27/45

    SELECT employee_id, last_name, job_id, department_id

    FROM employees

    WHERE department_id = 90 ;

    Using the WHERE Clause

  • 7/29/2019 Oracle Lecture 4

    28/45

    SELECT last_name, job_id, department_id

    FROM employees

    WHERE last_name = 'Whalen' ;

    Character Strings and Dates

    Character strings and date values areenclosed by single quotation marks.

    Character values are case-sensitive, and

    date values are format-sensitive. The default date format is DD-MON-RR.

  • 7/29/2019 Oracle Lecture 4

    29/45

    Comparison Conditions

    Operator Meaning

    = Equal to

    > Greater than

    >= Greater than or equal to< Less than

  • 7/29/2019 Oracle Lecture 4

    30/45

    SELECT last_name, salary

    FROM employees

    WHERE salary

  • 7/29/2019 Oracle Lecture 4

    31/45

    SELECT last_name, salaryFROM employees

    WHERE salary BETWEEN 2500 AND 3500 ;

    Using the BETWEEN Condition

    Use the BETWEEN condition to display rows based on arange of values:

    Lower limit Upper limit

  • 7/29/2019 Oracle Lecture 4

    32/45

    SELECT employee_id, last_name, salary, manager_id

    FROM employees

    WHERE manager_id IN (100, 101, 201) ;

    Using the IN Condition

    Use the IN membership condition to test for values ina list:

  • 7/29/2019 Oracle Lecture 4

    33/45

    SELECT first_name

    FROM employeesWHERE first_name LIKE 'S%' ;

    Using the LIKE Condition

    Use the LIKE condition to perform wildcardsearches of valid search string values.

    Search conditions can contain either literalcharacters or numbers: % denotes zero or many characters.

    _ denotes one character.

  • 7/29/2019 Oracle Lecture 4

    34/45

    Using the LIKE Condition

    You can combine pattern-matchingcharacters:

    SELECT last_name

    FROM employees

    WHERE last_name LIKE '_o%' ;

  • 7/29/2019 Oracle Lecture 4

    35/45

    SELECT last_name, manager_id

    FROM employees

    WHERE manager_id IS NULL ;

    Using the NULL Conditions

    Test for nulls with the IS NULL operator.

  • 7/29/2019 Oracle Lecture 4

    36/45

    Logical Conditions

    Operator Meaning

    AND Returns TRUE ifbothcomponent

    conditions are true

    OR Returns TRUE ifeithercomponent

    condition is true

    NOT Returns TRUE if the following

    condition is false

  • 7/29/2019 Oracle Lecture 4

    37/45

    SELECT employee_id, last_name, job_id, salary

    FROM employees

    WHERE salary >=10000

    AND job_id LIKE '%MAN%' ;

    Using the AND Operator

    AND requires both conditions to be true:

  • 7/29/2019 Oracle Lecture 4

    38/45

    SELECT employee_id, last_name, job_id, salaryFROM employees

    WHERE salary >= 10000

    OR job_id LIKE '%MAN%' ;

    Using the OR Operator

    OR requires either condition to be true:

  • 7/29/2019 Oracle Lecture 4

    39/45

    SELECT last_name, job_id

    FROM employees

    WHERE job_id

    NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ;

    Using the NOT Operator

  • 7/29/2019 Oracle Lecture 4

    40/45

    Rules of Precedence

    You can use parentheses to override rules ofprecedence.

    Operator Meaning

    1 Arithmetic operators

    2 Concatenation operator

    3 Comparison conditions

    4 IS[NOT]NULL, LIKE, [NOT]IN

    5 [NOT] BETWEEN

    6 Not equal to

    7 NOT logical condition

    8 AND logical condition

    9 ORlogical condition

  • 7/29/2019 Oracle Lecture 4

    41/45

    SELECT last_name, job_id, salaryFROM employees

    WHERE job_id = 'SA_REP'

    OR job_id = 'AD_PRES'

    AND salary > 15000;

    Rules of Precedence

    SELECT last_name, job_id, salary

    FROM employees

    WHERE (job_id = 'SA_REP'OR job_id = 'AD_PRES')

    AND salary > 15000;

    1

    2

  • 7/29/2019 Oracle Lecture 4

    42/45

    Using the ORDER BY Clause

    Sort retrieved rows with the ORDER BYclause: ASC: ascending order, default

    DESC: descending order

    The ORDER BY clause comes last in theSELECT statement:SELECT last_name, job_id, department_id, hire_date

    FROM employees

    ORDER BY hire_date ;

  • 7/29/2019 Oracle Lecture 4

    43/45

    Sorting

    Sorting in descending order:

    Sorting by column alias:

    Sorting by multiple columns:

    SELECT last_name, job_id, department_id, hire_date

    FROM employees

    ORDER BY hire_date DESC ; 1

    SELECT employee_id, last_name, salary*12 annsal

    FROM employees

    ORDER BY annsal ;2

    SELECT last_name, department_id, salary

    FROM employees

    ORDER BY department_id, salary DESC;

    3

  • 7/29/2019 Oracle Lecture 4

    44/45

    SELECT *|{[DISTINCT] column|expression [alias],...}FROM table

    [WHERE condition(s)]

    [ORDER BY {column, expr, alias} [ASC|DESC]] ;

    Summary

    In this lesson, you should have learned howto: Use the WHERE clause to restrict rows of output:

    Use the comparison conditions Use the BETWEEN, IN, LIKE, and NULL conditions

    Apply the logical AND, OR, and NOT operators

    Use the ORDER BY clause to sort rows ofoutput

  • 7/29/2019 Oracle Lecture 4

    45/45

    Practice 2:

    1-The HR departments needs to find high-salary and low-salary

    employees. display the last name and salary of employees who earn

    between $5,000 and $12,000 and are in department 20 or 50. Label

    the columns Employee and Monthly Salary, respectively.

    2- Create a report to display the last name, salary, and commission ofall employees who earn commissions. Sort data in descending order

    of salary and commissions.

    3- Display the last name of all employees who have both an a and an e

    in their last name.

    4- Display the last name, job, and salary for all employees whose jobis SA_REP orST_CLERKand whose salary is not equal to

    $2,500, $3,500, or $7,000.