Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Advanced SQL Topics Edward Wu. 2 Lesson Objectives Learn how to create and use indexes Create, Alter, and Drop Views Outer / Self Join Nested Queries.

Similar presentations


Presentation on theme: "1 Advanced SQL Topics Edward Wu. 2 Lesson Objectives Learn how to create and use indexes Create, Alter, and Drop Views Outer / Self Join Nested Queries."— Presentation transcript:

1 1 Advanced SQL Topics Edward Wu

2 2 Lesson Objectives Learn how to create and use indexes Create, Alter, and Drop Views Outer / Self Join Nested Queries Useful Function (Decode, Case, Rownum)

3 3 Database Indexes Similar to an index in a book Table with list of sorted data values and corresponding physical location Used to speed searches Primary key indexed automatically Unlimited number allowed, but more indexes means more processing time for action queries (insert, update, delete)

4 4 Creating an Index Create index after table data is loaded CREATE INDEX index_name ON tablename (index_fieldname); Convention for naming index: tablename_fieldname.

5 5 Composite Index Contains multiple (up to 16) sorted columns Used for queries with multiple search conditions CREATE INDEX index_name ON tablename(index_fieldname1, index_fieldname2, …);

6 6 Viewing Index Information Use data dictionary view USER_INDEXES

7 7 Dropping an Index If an index is no longer needed or does not improve performance, delete it DROP INDEX index_name;

8 8 Use an Index When Table contains a large number of records (a rule of thumb is that a large table contains over 100,000 records) The field contains a wide range of values The field contains a large number of NULL values Application queries frequently use the field in a search condition or join condition Most queries retrieve less than 2% to 4% of the table rows

9 9 Do Not Use an Index When The table does not contain a large number of records Applications do not use the proposed index field in a query search condition Most queries retrieve more than 2% to 4% of the table records Applications frequently insert or modify table data

10 10 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

11 11 Creating a view: CREATE VIEW view_name AS SQL_command; Views can be queried just like tables: SELECT * FROM view_name; Database Views

12 12 Simple Views Based on SQL query that retrieves data from only one table (limit data for different user) View can support all table DML operations: INSERT UPDATE DELETE

13 13 Complex Views Based on query that retrieves data from multiple tables Can only be used to support SELECT operations No DML operations supported For reporting purposes. (Sales Report) Can create index on view.

14 14 Join Queries Retrieve data from multiple tables by joining tables using foreign key references Join query types: Outer Self Inequality

15 15 Inner Join with Group by Find the total inventory amount on hand for each item Different price

16 16 Outer Joins Limitation of inner joins: some records may be omitted if corresponding records dont exist in one of the tables Example: retrieve records for all students, along with their corresponding ENROLLMENT information

17 17 Outer Joins Student 105 (Michael Connoly) does not have any ENROLLMENT records

18 18 Outer Joins No records retrieved for Michael:

19 19 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

20 20 Outer Joins Outer join marker

21 21 AB AB BA A.id = B.id (+)A.id = B.id A.id = B.id(+) Note: Orange is the area that is returned

22 22 Self Joins Used to join a table to itself when the table has a hierarchical relationship

23 23 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

24 24 Self Joins PARENT_PROJECT PROJECT SUB_PROJECT

25 25 Self Join Example

26 26 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

27 27 Inequality Joins

28 28 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 querys search condition

29 29 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 Note: subquery is just another sql command contained within a parenthesis

30 30 Example Nested Query Where Subquery Returns a Single Value Find the class that Amanda goes to. Find all the student that goes to Amanda class

31 31 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

32 32 Example Nested Query Where Subquery Returns Multiple Values Find all the course that Amanda enrolled in. which returned c_sec_id: 1010, 1011 Find all the students that enrolled in c_sec_id in (1010, 1011)

33 33 Example of nested queries (cont…) Find the c_sec_id that use bldg_code=CR which is 1000, 1002, 1007, 1010 select c_sec_id from student s, enrollment e, course_section c where s.s_id = e.s_id and s_last = 'Mobley and s_first = 'Amanda and c_sec_id in (1000, 1002, 1007, 1010);

34 34 Remember previous example of Inner Join with Group by Find the total inventory amount on hand for each item Different price

35 35 Creating Table Alias from select statement Add an extra column for the percentage of inventory on hand

36 36 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

37 37 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

38 38 Decode Function Facilitates conditional inquiries by doing the work of a CASE or IF-THEN-ELSE statement Syntax Decode(column/expression, search1, result1 [, search2, result2, …, ] [, default ] );

39 39 The Decode Function The DECODE function decodes an expression in a way similar to the IF-THEN-ELSE logic used in various languages. The DECODE function decodes expression after comparing it to each search value. If the expression is the same as search, result is returned. Note: If the default value is omitted, a null value is returned where a search value does not match any of the result value.

40 40 Using the DECODE Function

41 41 Row Num

42 42 Search Result for web page


Download ppt "1 Advanced SQL Topics Edward Wu. 2 Lesson Objectives Learn how to create and use indexes Create, Alter, and Drop Views Outer / Self Join Nested Queries."

Similar presentations


Ads by Google