Presentation is loading. Please wait.

Presentation is loading. Please wait.

Database Programming Sections 7–Multi-row sub queries, IN, ANY, ALL, Data Manipulation Language (DML) transaction, INSERT, implicit, explicit, USER, UPDATE,

Similar presentations


Presentation on theme: "Database Programming Sections 7–Multi-row sub queries, IN, ANY, ALL, Data Manipulation Language (DML) transaction, INSERT, implicit, explicit, USER, UPDATE,"— Presentation transcript:

1 Database Programming Sections 7–Multi-row sub queries, IN, ANY, ALL, Data Manipulation Language (DML) transaction, INSERT, implicit, explicit, USER, UPDATE, DELETE, integrity constraint, Parent record, Child record

2 Marge Hohly2 Multi-row subquery

3 Marge Hohly3 7.1.4 Example  Write a query to find the name of the Global Fast Foods employee who makes the most money?  Solution next slide

4 Marge Hohly4 Solution using subquery

5 Marge Hohly5 Multiple-Row Subqueries  Subqueries that return more than one value are called multiple-row subqueries  When used in a WHERE clause, the multiple-row subquery must use a multiple- row operator, such as IN, ANY, or ALL.  The multiple-row operators are: IN ANY ALL  The NOT operator can be used with any of these three operators See example on next slide

6 Marge Hohly6 Multiple-Row Subqueries cont’d  SELECT employee_id, last_name, salary, department_id FROM employees WHERE salary NOT IN (SELECT salary FROM employees WHERE last_name = ‘King’);

7 Marge Hohly7 IN  SELECT last_name,salary, department_id FROM employees Where salary IN(SELECT MIN(salary) FROM employees GROUP BY department_id);

8 Marge Hohly8 ANY  The ANY operator compares a value to each value returned by a subquery.  SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary < ANY (SELECT salary FROM employees WHERE job_id = ‘IT_PROG’);  Results next slide

9 Marge Hohly9 Results of ANY

10 Marge Hohly10 All  Used when the outer- query WHERE clause is designed to restrict rows based on all values returned from the inner query.  the inner query will return a list of values.  The ALL operator compares a value to every value returned by the inner query.

11 Marge Hohly11 NULL Values in Subqueries SELECT emp.last_name FROM employees emp WHERE emp.employee_id NOT IN (SELECT mgr.manager_id FROM employees mgr); SQL Query Results No Data One of the values returned by the inner query is a null value, and hence the entire query returns no rows. King does not have a manager. MANAGER_ID - 100 102 103 100 124 100 149

12 Marge Hohly12 NULL Example  SELECT department_id, department_name FROM departments WHERE department_id = (SELECT department_id FROM employees WHERE salary >60000); SQL Query Results. No data found. No employee has a salary >60000 There is no such thing as = NULL as NULL is not zero!

13 Marge Hohly13 Null Values in Subqueries, cont’d  SELECT emp.last_name FROM employees emp WHERE emp.employee_id NOT IN (SELECT mgr.manager_id FROM employees mgr WHERE mgr.manager_id IS NOT NULL);  View results of inner query on next slide.  Now, none of the values returned by the inner query is a null value, thus it works.

14 Marge Hohly14 Results of Inner Query

15 Marge Hohly15 Examples 7.2.4  1. Select all the employees (name, job ID, salary) in departments 10 and 30. Write two different queries that will produce the desired result.  2. Select the name of all the departments (department name and location id) and order by department number. Do not display the department number in the output.

16 Marge Hohly16 Possible Answers 7.2.4 1. a.SELECT last_name,job_id, salary FROM employees WHERE department_id in (10,30); b.SELECT last_name,job_id, salary FROM employees WHERE department_id = 10 or department_id=30; c.This is not the most efficient answer, but it does return the correct results: SELECT last_name,job_id,salary FROM employees WHERE department_id IN( SELECT department_id FROM departments WHERE department_id IN (10,30)); 2. SELECT department_name, location_id FROM departments ORDER BY department_id;

17 Marge Hohly17 Overview of remainder of lesson  Data Manipulation Language DML INSERT UPDATE DELETE MERGE  Default Values  Merge Statements  Creating Tables  Using Data Types  Data Definition Language DDL ALTER TABLE DROP TABLE RENAME TRUNCATE COMMENT  Define Constraints  Manage Constraints

18 Marge Hohly18 Using a subquery to copy a table  In order to experiment with the tables, make a copy of them: Select all rows from the EMPLOYEES table and insert them into the COPY_EMPLOYEES table. CREATE TABLE copy_employees AS (SELECT * FROM employees); Verify by: SELECT * FROM copy_employees;  the integrity rules (primary keys, default values are not passed to the copy, only the column datatype definitions.)

19 Marge Hohly19 Explicitly inserting data  The INSERT statement is used to add new rows to a table. To get the column names and default order, use:  The statement requires three values: the name of the table the name of the column in the table to populate a corresponding value for the column –  INSERT INTO copy_departments (department_id, department_name, manager_id, location_id) VALUES (70,’Public Relations’, 100, 1700);  INSERT INTO copy_departments (department_id, manager_id, location_id, department_name) VALUES (99, 100, 1700, ‘Advertising’)

20 Marge Hohly20 Implicitly inserting data  Omit the column names  Match exactly the default order in which columns appear in the table  Provide a value for each column.  INSERT INTO copy_departments VALUES (100,’Education’, 100, 1700);  using VALUES adds on row at a time

21 Marge Hohly21 Insert with NULL values  Implicit Method – omit the column from the column list Any column that is not listed obtains a null value in the new row – errors can occur – the row has been specified NOT NULL, uniqueness, foreign key violation INSERT INTO copy_departments (department_id, department_name) VALUES (30,’Purchasing’);  Explicit Method – specify the NULL keyword in the values clause INSERT INTO copy_departments VALUES (100, ‘finance’, NULL, NULL);

22 Marge Hohly22 Inserting Special Values  Special values such as SYSDATE and USER can be entered in the VALUES list of an INSERT statement.  SYSDATE puts current date in a column  USER places current username (HTML DB will put HTMLDB_PUBLIC_USER)  INSERT INTO copy_employees (employee_id, last_name, email, hire_date,job_id) VALUES(1001, USER, ‘Test’ SYSDATE, ‘IT_PROG’);

23 Marge Hohly23 Inserting Specific date values  The default date before Oracle 9i was DD- MON-YY.  The default format for Oracle 9i is DD-MON- RR century defaults to the current century default time of midnight (00:00:00) formats other than the default format use TO_DATE function  INSERT INTO copy_employees VALUES (114, ‘Den’, ‘Raphealy’, ‘DRAPHEAL’, ‘515.127.4561’, ’03-FEB-49’, ‘AC_ACCOUNT’, 11000, NULL, 100, 30);

24 Marge Hohly24 Date Example  INSERT INTO copy_employees VALUES (114, ‘Den’, ‘Raphealy’, ‘DRAPHEAL’, ‘515.127.4561’, ’03-FEB-49’, ‘AC_ACCOUNT’, 11000, NULL, 100, 30);  SELECT last_name, TO_CHAR(hire_date, ’Month dd, RRRR’) FROM copy_employees WHERE employee_id = 114;

25 Marge Hohly25 Using a subquery to copy rows  Copy values from an existing table CREATE TABLE sales_reps (id number(5), name varchar2(15), salary number(10), commission_pct number (8));  No VALUES clause INSERT INTO sales_reps(id, name, salary, commission_pct) SELECT employee_id, last_name, salary, commission_pct FROM employees WHERE job_id LIKE ‘%REP%’;

26 Marge Hohly26 UPDATE statements  The UPDATE statement is used to modify existing rows in a table. It requires four values: the name of the table  UPDATE copy_employees the name of the column in the table to populate  SET department_id a corresponding value or subquery for the column  SET department_id = 70 a condition that identifies the columns and the changes for each column  WHERE employee_id = 113;

27 Marge Hohly27 Updating one column  Specific row or rows are modified if you specify the WHERE clause. UPDATE copy_employees SET department_id = 70 WHERE employee_id = 113; (One row is updated)  All rows in the table are modified if you omit the WHERE clause. UPDATE copy_employees SET department_id = 110; (All rows are updated)

28 Marge Hohly28 Update using subquery  UPDATE copy_employees SET department_id = (SELECT department_id FROM employees WHERE last_name = ‘Ernest’) WHERE employee_id = 113;

29 Marge Hohly29 Updating columns with subqueries  You can update one or more columns in the SET clause of an UPDATE statement by writing subqueries.  UPDATE copy_employees SET job_id = (SELECT jobt_id FROM employees WHERE employee_id =205) salary = (SELECT salary FROM employees WHERE employee_id =205) WHERE employee_id = 114;

30 Marge Hohly30 Integrity Constraints  Integrity constraints define certain data quality requirements that the data in the database needs to meet. If a user tries to insert data that doesn’t meet these requirements an error will occur.  Types of Integrity constraints NOT NULL – each row in the column must have a value PRIMARY KEY – unique and not null FOREIGN KEY – A foreign key constraint (also called referential integrity constraint) on a column ensures that the value in that column is found in the primary key of another table. CHECK – value meets certain conditions salary CHECK < 50000 UNIQUE – no duplicate values in a column (email address)

31 Marge Hohly31 Integrity Constraint Errors  UPDATE employees SET department_id = 55 WHERE department_id = 110;  ORA-02291: integrity constraint (USCA_INST_SQL03_T01.EMP_DEPT_ FK) violated – parent key not found  There is no department_id = 55 in the departments table which is the parent table

32 Marge Hohly32 DELETE statement  The DELETE statement is used to remove existing rows in a table. The statement requires two values: the name of the table the condition that identifies the rows to be deleted DELETE * FROM copy_employees WHERE employee_id = 200;

33 Marge Hohly33 Subquery Delete  Use subqueries in DELETE statements to remove rows from a table based on values from another table.  DELETE FROM copy_employees WHERE department_id = (SELECT department_id FROM departments WHERE department_name LIKE ‘%REP%’);

34 Marge Hohly34 Default Values  A column in a table can be given a default value.  Assigning default values prevents null values from existing in the column.  Default values can be: a literal value ‘no commission assigned’ an expression salary*1.15 SQL function, such as SYSDATE or USER  Default values must match the data type of the column

35 Marge Hohly35 Default Values Examples  Default Values Specified as the time the table is created: CREATE TABLE items( part_number VARCHAR2(10), description VARCHAR2(10), qty_on_hand NUMBER DEFAULT 0);  INSERT INTO items(part_number, description) VALUES (‘AB154’,’hammer’);

36 Marge Hohly36 Default Values - Examples  Use DEFAULT when inserting values: INSERT INTO items(part_number, description, qty_on_hand) VALUES (300,’Widger’, DEFAULT);  Use DEFAULT when updating values: UPDATE items SET qty_on_hand = DEFAULT WHERE part_number = 200;  Now check the results! SELECT * FROM items;

37 Marge Hohly37 MERGE  MERGE Statement Accomplishes an UPDATE and INSERT at the same time ** the ON clause specifies the match – if two id’s match make the following updates, otherwise insert the following as new rows MERGE INTO copy_emp c USING employees e ON (c.employee_id = e.employee_id) WHEN MATCH THEN UPDATE SET c.first_name = e.first_name c.last_name = e.last_name..... c.department_id = e.department_id WHEN NOT MATCHED THEN INSERT VALUES( e.employee_id, e.first_name, e.last_name, e.salary, e.commission_pct, e.manager_id, e.department_id);

38 Marge Hohly38 MERGE Example:  MERGE INTO copy_items c USING items i ON(c.part_number = i.part_number) WHEN MATCHED THEN UPDATE SET c.description = i.description c.qty_on_hand = i.qty_on_hand WHEN NOT MATCHED THEN INSERT VALUES (i.part_number, i.description, i.qty_on_hand);

39 Marge Hohly39 CREATING TABLES  Naming Rules: Must begin with a letter Must be 1 to 30 characters in length Must only contain alpha/numeric,_,$,# Must be unique Must not be an Oracle Server reserved word

40 Marge Hohly40 Using Data Types  Most Common Data Types: VARCHAR2  Examples: Name, Address NUMBER  Examples: Price, Quatity DATE  Examples: DOB, Hire Date

41 Marge Hohly41 Creating Tables  CREATE TABLE name (column name DATATYPE(specifications for datatype) VARCHAR2(number of characters) – variable length data 1-4000 CHAR(size) – fixed length data 1-2000 NUMBER(precision, scale) – total number of decimal digits(1 to 38), right of decimal digits(- 84 to 127) For example, a scale of 2 means the value is rounded to the nearest hundredth (3.456 becomes 3.46); a scale of -3 means the number is rounded to the nearest thousand (3456 becomes 3000). DATE – date and time

42 Marge Hohly42 Creating Tables cont’d  CREATE TABLE students (id, VARCHAR2(5), lname VARCHAR2(15), fname VARCHAR2(15), GPA number(6), enroll_date date DEFAULT SYSDATE);

43 Marge Hohly43 ORACLE Data Dictionary  The data dictionary is a collection of tables created and maintained by the Oracle Server and contains information about the database.  All data dictionary tables are owned by the SYS user. Because the tables are difficult to understand, users access data dictionary includes names of the Oracle Server users, privileges granted to users, database object names, table constrains and auditing information.  You may browse the Oracle Data Dictionary to show objects you own. SELECT * FROM DICTIONARY; - returns 610 items SELECT table_name FROM user_tables; SELECT DISTINCT object_type FROM user_objects; SELECT * FROM user_catalog;

44 Marge Hohly44 Using Interval Year to Month  INTERVAL YEAR TO MONTH: Stores a period of time in years/months Note that the argument 3 in the create table and insert statements refers to precision  CREATE TABLE time_ex2 (school_year_duration INTERVAL YEARS(3) TO MONTH);  INSERT INTO time_ex2(school_year_duration) VALUES(INTERVAL ‘9’ Month(3));  SELECT TO_CHAR(SYSDATE + school_year_duration, ‘dd-Mon-yyyy’) FROM time_ex2;  Returned 9 month from today’s date

45 Marge Hohly45 USING INTERVAL DAY TO SECOND  INTERVAL DAY TO SECOND: Stores a more precise period of time (days/hours/minutes/seconds) CREATE TABLE time_ex3(day_duration INTERVAL DAY(3) to SECOND); INSERT INTO time_ex3(day_duration) VALUES(INTERVAL ‘180’ DAY(3)); SELECT SYSDATE + day_duration “Half Year” FROM time_ex3;

46 Marge Hohly46 Using Time Data Types  TIMESTAMP: stores values with respect to universal time CREATE TABLE time_example (order_date TIMESTAMP WITH LOCAL TIME ZONE, ship_date DATE DEFAULT SYSDATE); INSERT INTO time_example VALUES(SYSDATE, SYSDATE); SELECT * FROM time_example;


Download ppt "Database Programming Sections 7–Multi-row sub queries, IN, ANY, ALL, Data Manipulation Language (DML) transaction, INSERT, implicit, explicit, USER, UPDATE,"

Similar presentations


Ads by Google