Download presentation
Presentation is loading. Please wait.
1
Guide to Oracle 10g1 Chapter 3: Using SQL Queries to Insert, Update, Delete, and View Data
2
Guide to Oracle 10g2 Queries are the DML commands that allow users to retrieve database data, because the retrieved data are answers to questions. Action queries are the DML commands that insert, update, or delete database data, because the commands perform an action that change the data value. Queries and action queries
3
Guide to Oracle 10g3 Script: text file that contains a sequence of SQL commands. Usually have.sql extension Running a script: SQL> START path_to_script_file; OR SQL> @ path_to_script_file; Path cannot contain any blank spaces SQL Scripts
4
Guide to Oracle 10g4 Syntax: INSERT INTO tablename VALUES (column1_value, column2_value, …); You must insert a value or a NULL placeholder for every field. Fields must be entered in the order they appear in the table when you issue the DESCRIBE command. Inserting a Value Into Every Field in a Record
5
Guide to Oracle 10g5 Inserting a Value Into Every Field in a Record Example:
6
Guide to Oracle 10g6 Command to insert values for selected record fields: INSERT INTO tablename (column1_name, column2_name, …) VALUES (column1_value, column2_value, …); Inserting Selected Table Fields
7
Guide to Oracle 10g7 Example: Inserting Selected Table Fields
8
Guide to Oracle 10g8 Format Models (Masks) All data is stored in the database in a standard binary format Format masks are alphanumeric text strings that specify the format of input and output data Table 3-1: Number format masks Table 3-2: Date format masks
9
Guide to Oracle 10g9 Date values must be converted from characters to dates using the TO_DATE function and a format mask Example: Inserting Date Values
10
Guide to Oracle 10g10 Must be enclosed in single quotes Is case-sensitive To insert a string with a single quote, type the single quote twice Example: 'Mike''s Motorcycle Shop' Inserting Text Data
11
Guide to Oracle 10g11 Year To Month Interval: TO_YMINTERVAL(‘years-months’) e.g. TO_YMINTERVAL(‘3-2’) Day To Second Interval: TO_DSINTERVAL(‘days HH:MI:SS.99’) e.g. TO_DSINTERVAL(‘-0 01:15:00’) Inserting Interval Values
12
Guide to Oracle 10g12 Oracle stores LOB data in a separate physical location from other types of data in a row. Before inserting data in a LOB column, a locator must be inserted first. A locator is a structure that contains information that identifies the LOB data type and points to the alternate memory location. After that a program or a utility is needed to insert the data into the DB (chapter 10). Ex. To create a locator for a BLOB data: EMPTY_BLOB(); Another example page 96. Inserting LOB Column Locators
13
Guide to Oracle 10g13 Transaction Logical unit of work consisting of one or more SQL DML commands INSERT, UPDATE, DELETE All transaction commands must succeed or none can succeed Transaction results are not visible to other users until they are “committed” to the database (this is not the case with DDL commands) Until a transaction is committed, it can easily be “rolled back” (undone) Transactions
14
Guide to Oracle 10g14 A transaction starts when you type one or more DML commands in SQL*Plus A transaction ends when you issue either the COMMIT or ROLLBACK command SQL>COMMIT; SQL>ROLLBACK; Transactions
15
Guide to Oracle 10g15 Committing and Rolling Back Data COMMIT Makes transaction command changes permanent in the database and visible to other users ROLLBACK Rolls back transaction command changes and restores database to its state before the transaction
16
Guide to Oracle 10g16 Used to mark individual sections of a transaction You can roll back a transaction to a savepoint Savepoints
17
Guide to Oracle 10g17 Format: WHERE fieldname operator expression Operators Equal (=) Greater than, Less than (>, <) Greater than or Equal to (>=) Less than or Equal to (<=) Not equal (, !=, ^=) LIKE BETWEEN IN NOT IN Search Conditions
18
Guide to Oracle 10g18 WHERE s_name = ‘Sarah’ WHERE s_age > 18 WHERE s_class <> ‘SR’ Text in single quotes is case sensitive Search Condition Examples
19
Guide to Oracle 10g19 Syntax: UPDATE tablename SET column1 = new_value, column2 = new_value, … WHERE search_condition; Each update statement can update row(s) in one table only Can update multiple records if they all match the search condition Updating Records
20
Guide to Oracle 10g20 Syntax: DELETE FROM tablename WHERE search_condition; Deletes multiple records if search condition specifies multiple records If search condition is omitted, all table records are deleted You can’t delete a record if it contains a primary key value that is referenced as a foreign key Deleting Records
21
Guide to Oracle 10g21 Truncating Tables Removes ALL table data WITHOUT saving any rollback information (DELETE needs to save a copy of all the deleted records for a rollback possibility) Advantage: fast way to delete table data Disadvantage: can’t be undone (rollback) Syntax: TRUNCATE TABLE tablename;
22
Guide to Oracle 10g22 Truncating Tables You can not truncate a table that has an enabled foreign key constrain. So you need to disable the constraint first: Syntax: TRUNCATE TABLE tablename DISABLE CONSTRAINT constraint_name;
23
Guide to Oracle 10g23 Sequential list of numbers that is automatically generated by the database Used to generate unique values for surrogate keys Sequences
24
Guide to Oracle 10g24 Syntax: CREATE SEQUENCE sequence_name [optional parameters]; Example: CREATE SEQUENCE f_id_sequence START WITH 200; Creating Sequences
25
Guide to Oracle 10g25 Viewing Sequence Information Query the SEQUENCE Data Dictionary View: (user_sequences) see table 2.3 p.69
26
Guide to Oracle 10g26 Pseudocolumns To use sequences, psedocolumns should be understood first. Psedocolumns acts like a column in a database table, but it is actually a command that returns a specific value. Used to retrieve: Current system date Name of the current database user Next or Current values of a sequence
27
Guide to Oracle 10g27 Pseudocolumn Examples Pseudocolumn Name Output CURRVALMost recently retrieved sequence value NEXTVALNext value in a sequence SYSDATECurrent system date from database server USERUsername of current user
28
Guide to Oracle 10g28 Retrieving the current system date : SELECT SYSDATE FROM DUAL; Retrieving the name of the current user: SELECT USER FROM DUAL; DUAL is a system table that is used with pseudocolumns. It contains one column. Its value can not be deleted or modified. ( P.110 ) Using Pseudocolumns
29
Guide to Oracle 10g29 Accessing the next value in a sequence: sequence_name.NEXTVAL (Can you know the retrieved value before using it?) see next slide. Inserting a new record using a sequence: INSERT INTO my_faculty VALUES (f_id_sequence.nextval, ‘Professor Jones’); Using Pseudocolumns With Sequences
30
Guide to Oracle 10g30 The following command shows the NEXT value of the sequence: SELECT sequence_name.NEXTVAL FROM DUAL; The following command shows the current value of the sequence: SELECT sequence_name.CURRVAL FROM DUAL; See example page 111. Accessing CURRVAL without NEXTVAL in advance cause an error. See example page 112. Seeing value of sequences
31
Guide to Oracle 10g31 The following DDL command drops sequences from a DB: DROP SEQUENCE sequence_name; No need for commit with DDL commands. Deleting Sequencing
32
Guide to Oracle 10g32 Permissions that you can grant to other users to allow them to access or modify your database objects Object Privileges Object TypePrivilegeDescription Table, Sequence ALTERAllows user to change object’s structure using the ALTER command Table, Sequence DROPAllows user to drop object Table, Sequence SELECTAllows user to view object TableINSERT, UPDATE, DELETE Allows user to insert, update, delete table data Any database object ALLAllows user to perform any operation on object
33
Guide to Oracle 10g33 Syntax Granting object privileges: GRANT privilege1, privilege2, … ON object_name TO user1, user 2, …; Revoking (cancel) object privileges: REVOKE privilege1, privilege2, … ON object_name FROM user1, user 2, …;
34
Guide to Oracle 10g34 Granting and Revoking Object Privileges
35
Guide to Oracle 10g35 Syntax: SELECT column1, column2, … FROM tablename WHERE search_condition; Retrieving Data From a Single Table
36
Guide to Oracle 10g36 To retrieve every column in a table: SELECT * FROM … To retrieve every record in a table, omit the search condition SELECT column1, column2, … FROM tablename; Retrieving Data From a Single Table
37
Guide to Oracle 10g37 Qualifying Table Names If you retrieve data from a table that is owned by another user, you must qualify the table name by prefacing it with the owner’s name. ( we will study it again when joining multiple tables P.159 )
38
Guide to Oracle 10g38 Sometimes queries retrieve duplicate records To suppress duplicate outputs, use the DISTINCT qualifier : SELECT DISTINCT column1, column2, … FROM... Suppressing Duplicate Records
39
Guide to Oracle 10g39 Use the search condition (where) to retrieve rows matching specific criteria. Combining search conditions AND: both conditions must be true OR: either condition can be true Combining AND and OR in a single operation AND comparisons are evaluated first Always use parentheses to force conditions to be evaluated in the correct order Using Multiple Search Conditions
40
Guide to Oracle 10g40 SQL> SELECT room 2.FROM location 3.WHERE bldg_code = ‘BUS’ 4.AND capacity >= 40; Example
41
Guide to Oracle 10g41 NULL: not defined Use IS NULL search condition SELECT s_name, s_class FROM my_students WHERE s_class IS NULL; Searching for NULL Records
42
Guide to Oracle 10g42 Use IS NOT NULL operator SELECT s_name, s_age FROM my_students WHERE s_class IS NOT NULL; Searching for NOT NULL Records
43
Guide to Oracle 10g43 Using the IN and NOT IN Operators IN retrieves all values where the search column value matches a set of values SELECT * FROM enrollment WHERE grade IN (‘A’, ‘B’); Either A or B.
44
Guide to Oracle 10g44 Using the IN and NOT IN Operators NOT IN retrieves all values where the search column value matches a set of values SELECT * FROM enrollment WHERE grade NOT IN (‘A’, ‘B’); Neither A or B.
45
Guide to Oracle 10g45 Using the LIKE Operator Performs inexact searches by matching part of a character string WHERE fieldname LIKE character_string;
46
Guide to Oracle 10g46 Using the LIKE Operator Character string must be in single quotes and use wildcard characters (%) represents multiple wildcard characters ‘%2006’ Exact search of a string its right characters same as ‘2006’, it ignores anything on the left (no matter how many characters are there). ‘FALL%’ all rows in which the first 4 characters are FALL. (_) Underscore represents a single wildcard character ‘_R’ retrieve all values its first character can be any value, but the second must be ‘R’. Wildcard characters can be placed at beginning or end of string
47
Guide to Oracle 10g47 Examples Using the LIKE Operator SELECT * from term WHERE term_desc LIKE ‘Fall%’; SELECT course_no FROM course WHERE course_no LIKE ‘%1__’; Two underscores
48
Guide to Oracle 10g48 Use the ORDER BY clause Specify sort key, which is the column used as a basis for ordering the output data SELECT s_name, s_age FROM my_students ORDER BY s_age; Sorting Query Output
49
Guide to Oracle 10g49 Default sort order Numerical: ascending Character: A - Z Date: oldest - newest To force the sort order: use ASC or DESC Example SELECT s_name, s_age FROM my_students ORDER BY s_age DESC; You can specify multiple sort keys. Example P. 131. Sorting Query Data
50
Guide to Oracle 10g50 Calculation using SQL directly is efficient, because the result is returned to the client calculated. Arithmetic operations on retrieved data Addition (+) Subtraction (-) Multiplication (*) Division (/) Calculations are performed on NUMBER, DATE, and INTERVAL data types. Using Calculations in Queries
51
Guide to Oracle 10g51 SELECT inv_id, inv_qoh * inv_price FROM inventory; Date calculations involve the current date. To retrieve the current date from the server use: SELECT SYSDATE FROM DUAL; And then use it in equations: SYSDATE – o_date Example Calculations in Queries
52
Guide to Oracle 10g52 Remember that time_enrolled is an INTERVAL data type in STUDENT table. SELECT s_id, s_last, SYSDATE – time_enrolled FROM student; Remember to use SELECT SYSDATE FROM DUAL first. Example Calculations in Queries
53
Guide to Oracle 10g53 Called so, because they return a single result for each row of data retrieved. ABS - absolute value CEIL – rounds a number up to the next integer FLOOR – rounds a number down to the previous integer MOD – returns the remainder of a number and a divisor POWER - raises a number to an exponent ROUND - rounds a number SQRT – returns the square root of a value TRUNC - truncates a number to the nearest whole number Table 3-7 P. 137. Single-Row Number Functions
54
Guide to Oracle 10g54 Example: SELECT s_name, TRUNC((SYSDATE - s_dob)/365) FROM my_students; Using Single-Row Number Functions
55
Guide to Oracle 10g55 CONCAT – joins 2 character strings INITCAP – returns a string with the initial letter only uppercase LENGTH – returns the length of a string LPAD, RPAD – returns a string with a specific number of characters added on the left or right side LTRIM, RTRIM – returns a string with all instances of a specific character trimmed from the left or right side REPLACE – replaces all instances of a character with another character UPPER/LOWER – returns a string in all upper/lower case letters Table 3-8 P. 139 Single-Row Character Functions
56
Guide to Oracle 10g56 Example: SELECT UPPER(s_name) FROM my_students; Using Single-Row Character Functions
57
Guide to Oracle 10g57 To find a date that is a specific number of days before or after a known date, add or subtract the number from the known date Example: SELECT order_date + 30 FROM cust_order; Date Arithmetic
58
Guide to Oracle 10g58 To find the number of days between two known dates, subtract the later date from the earlier date Example: SELECT SYSDATE – s_dob FROM my_students; Date Arithmetic
59
Guide to Oracle 10g59 ADD_MONTHS returns a date that is a specific number of months after a given date Example: SELECT ADD_MONTHS(SYSDATE, 6) FROM dual; Single-row Date Functions
60
Guide to Oracle 10g60 LAST_DATE Returns the date that is the last day of the month specified in the current date Example: SELECT LAST_DATE(order_date) FROM cust_order WHERE order_id = 1057; Date Functions
61
Guide to Oracle 10g61 MONTHS_BETWEEN Returns the number of months between two input dates Example: SELECT MONTHS_BETWEEN(order_date, SYSDATE) FROM cust_order WHERE order_id = 1057; Date Functions
62
Guide to Oracle 10g62 Used to perform an operation on a field from a group of retrieved records AVG (average of all retrieved values) COUNT (number of records retrieved) MAX (maximum value retrieved) MIN (minimum value retrieved) SUM (sum of all retrieved values) Group Functions
63
Guide to Oracle 10g63 SELECT AVG (s_age) FROM my_students; SELECT MAX (s_age) FROM my_students; SELECT MIN (s_age) FROM my_students; SELECT SUM (s_age) FROM my_students; Group Function Examples
64
Guide to Oracle 10g64 Group the output by the column with duplicate values and apply group functions to the grouped data. Example: SELECT bldg_code, SUM(capacity) FROM location GROUP BY bldg_code; The bldg_code has 3 values(CR,BUS,LIB) see page 31. Each value has several occurrences, BUS=7 times. So the query group the occurrences of each value and AVG the capacity of each. See result page 145. Note that AVG(capacity)without group by gives different results. NOT as desired. THINK! Using the GROUP BY Clause
65
Guide to Oracle 10g65 Is used to filter grouped data. It can be used to place condition on the results of queries that display group function calculation. Example: SELECT bldg_code, SUM(capacity) FROM location HAVING SUM(capacity) >= 100 GROUP BY bldg_code; Here we are interested in the total capacity of more than 99 for each building. Using the HAVING Clause
66
Guide to Oracle 10g66 Creating Alternate Column Headings in SQL*Plus Formatting output: did you notice the output of the queries? the column name appeared as it is in the DB or the calculation formula. To display a different headings: Syntax: SELECT column1 “heading1”, column2 “heading2”, … Example : SELECT bldg_code “Building”, SUM(capacity) “Building Capacity” FROM location GROUP BY bldg_code; Might contain spaces. Example (Building Capacity) See output page 147.
67
Guide to Oracle 10g67 Creating a Column Alias Column alias: is an alternate column name that can be referenced in the ORDER BY and GROUP BY clauses Syntax: SELECT column1 AS alias1 … Example: SELECT (SYSDATE – s_dob) AS age_alias ORDER BY age_alias Can NOT contain space.
68
Guide to Oracle 10g68 SQL* Plus Environment Options Environment Linessize Custom 120 (char/line) Pagesize Custom 40 (line/page) OK
69
Guide to Oracle 10g69 Formatting Data Using the TO_CHAR Function Used to display NUMBER and DATE values using a specific format mask (model table 3-2 page 92) Syntax: TO_CHAR(fieldname, ‘format_mask’); Note the single quote. Example SELECT c_sec_id, sec_num,c_sec_day, TO_CHAR(c_sec_time, ‘HH:M1 AM’) FROM course_section; See output page 152. See example page 152 for currency format.
70
Guide to Oracle 10g70 Join Queries Retrieve data from multiple tables by joining tables using foreign key references Syntax SELECT col1, col2, … FROM table1, table2 WHERE table1.joincol = table2.joincol AND search_condition(s); Qualify a column by specifying the table that contains the column followed by a period and then the column name. The WHERE clause contains the join condition, which contains the foreign key reference and the primary key in the other table. Search condition is added using AND or OR operators.
71
Guide to Oracle 10g71 Join Queries Types Join query types: Inner (equality) Outer Self Inequality
72
Guide to Oracle 10g72 Inner Joins Occurs when joining two tables based on values in one table being equal to values in another table.
73
Guide to Oracle 10g73 Syntax: SELECT column1, column2, … FROM table1, table2 WHERE table1.join_column = table2.join_column You must include a join condition for every link between 2 tables Inner Joins Join condition
74
Guide to Oracle 10g74 Example: SELECT s_name, f_name FROM student, faculty WHERE student.f_id = faculty.f_id; If you have N tables in the FROM clause, you must have (N - 1) join conditions Inner Joins
75
Guide to Oracle 10g75 If the tables have a single commonly named and defined column, you can use the NATURAL JOIN keywords to join the tables. See example figure 3- 43 page 161. Example SELECT s_name, f_name FROM student NATURAL JOIN faculty; Note: No commas between table names, just the key words. No qualifiers are needed. Inner Joins
76
Guide to Oracle 10g76 Qualifying Field Names If a field in the SELECT clause exists in multiple tables in the FROM clause, you must qualify the field name by prefacing it with either table’s name
77
Guide to Oracle 10g77 1.Identify all of the tables involved in the query, and label: Display fields Join fields Search fields 2.Write the query List all display fields in the SELECT clause List all table names in the FROM clause List all join condition links in the WHERE clause List all search fields in the WHERE clause Process for Designing Complex Inner Join Queries
78
Guide to Oracle 10g78 1.What happens if you omit a join condition in a multiple-table query? The output retrieves more rows than expected. (Cartesian product). See example page 166. Process for Designing Complex Inner Join Queries
79
Guide to Oracle 10g79 Outer Joins Limitation of inner joins: some records may be omitted if corresponding records don’t exist in one of the tables Example: retrieve records for all students, along with their corresponding ENROLLMENT information
80
Guide to Oracle 10g80 Outer Joins Student 105 (Michael Connoly) does not have any ENROLLMENT records. So no information about 105 will be retrieved when using inner join.
81
Guide to Oracle 10g81 Outer Joins No records retrieved for Michael:
82
Guide to Oracle 10g82 Outer Joins To include records in first (inner) table, even when they do not have matching records in second (outer) table: place outer join marker (+) beside outer table name in join clause The (+) signals the DBMS to insert a NULL value for the columns in the outer table that do not have matching rows in the inner table.
83
Guide to Oracle 10g83 Outer Joins Outer join marker
84
Guide to Oracle 10g84 Self Joins Used to join a table to itself when the table has a foreign key that references a column in the same table.
85
Guide to Oracle 10g85 Self Joins To create a self-join, you need to create a table alias, which gives an alternate name to the table so you can create a join condition Syntax to create table alias in FROM clause: FROM table1 alias1, table2 alias2
86
Guide to Oracle 10g86 Self Joins PARENT_PROJECT PROJECT SUB_PROJECT Alias 1 Alias 2
87
Guide to Oracle 10g87 Self Join Example Note: the table alias is used in the select clause and in join conditions. NOT the table name.
88
Guide to Oracle 10g88 Inequality Joins Join created by placing making join condition satisfy an inequality condition(, !=) Only makes sense when primary/foreign key values are not surrogate keys
89
Guide to Oracle 10g89 Inequality Joins
90
Guide to Oracle 10g90 Nested Queries Created when a subquery is nested within a main query Main query: first query listed in SELECT command Subquery: retrieves one or more values that specify the main query’s search condition
91
Guide to Oracle 10g91 Nested Query Where Subquery Returns a Single Value Syntax: SELECT column1, column2, … FROM table1, table2, … WHERE join conditions AND search_column1 = (SELECT column1 FROM table1, table2, … WHERE search and join conditions) Subquery that returns one value
92
Guide to Oracle 10g92 Nested Query Where Subquery Returns Multiple Values Syntax: SELECT column1, column2, … FROM table1, table2, … WHERE join conditions AND search_column1 IN (SELECT column1 FROM table1, table2, … WHERE search and join conditions) Subquery that returns multiple values
93
Guide to Oracle 10g93 Performs set operations on outputs of two unrelated queries Both queries must have: same number of display fields corresponding display fields must have same data type Using Set Operators in Queries
94
Guide to Oracle 10g94 UNION: combines results, suppresses duplicate rows UNION ALL: combines results, displays duplicates INTERSECT: finds matching rows MINUS: returns the difference between returned record sets Query Set Operators
95
Guide to Oracle 10g95 Logical table based on a query Does not physically exist in the database Presents data in a different format from underlying tables Uses: Security Simplifying complex queries Database Views
96
Guide to Oracle 10g96 Creating a view: CREATE VIEW view_name AS SQL_command; Views can be queried just like tables: SELECT * FROM view_name; Database Views
97
Guide to Oracle 10g97 Simple Views Based on SQL query that retrieves data from only one table View can support all table DML operations: INSERT UPDATE DELETE
98
Guide to Oracle 10g98 Complex Views Based on query that retrieves data from multiple tables Can only be used to support SELECT operations No DML operations supported
99
Guide to Oracle 10g99 Synonyms Alternate name for a table Allows you to not have to preface table with owner’s username when you are querying a table that belongs to another user
100
Guide to Oracle 10g100 Public Synonyms Can only be created by a DBA Syntax: CREATE PUBLIC SYNONYM synonym_name FOR owner_name.tablename; All users with privileges to use table can then use synonym instead of owner_name.tablename
101
Guide to Oracle 10g101 Private Synonyms You can create private synonyms for any tables that you have privileges to use Only you can use the synonym Syntax: CREATE SYNONYM synonym_name FOR table_name.table_name;
102
Guide to Oracle 10g102 Dynamic SQL Queries Queries that allow users to specify search conditions at runtime Approaches Substitution Values Runtime Variables
103
Guide to Oracle 10g103 Using Substitution Values Created when search expression is prefaced with an ampersand (&) System then prompts user for value
104
Guide to Oracle 10g104 Using Runtime Variables Runtime variable: variable defined in SQL*Plus environment Syntax: DEFINE variable_name = variable_value; You can then substitute the variable name for a query search condition value
105
Guide to Oracle 10g105 Using Runtime Variables Example:
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.