Presentation is loading. Please wait.

Presentation is loading. Please wait.

Advanced SQL Topics Edward Wu.

Similar presentations


Presentation on theme: "Advanced SQL Topics Edward Wu."— Presentation transcript:

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 Useful Function (Decode, Case, Rownum)

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 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 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 Viewing Index Information
Use data dictionary view USER_INDEXES

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

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 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 Database Views 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

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

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 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 Join Queries Retrieve data from multiple tables by joining tables using foreign key references Join query types: Outer Self Inequality

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

16 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

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

18 Outer Joins No records retrieved for Michael:

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 Outer Joins Outer join marker

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

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

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 PARENT_PROJECT Self Joins SUB_PROJECT PROJECT

25 Self Join Example

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 Inequality Joins

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 query’s search condition

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 Example Nested Query Where Subquery Returns a Single Value
Find all the student that goes to Amanda class Find the class that Amanda goes to.

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 Example Nested Query Where Subquery Returns Multiple Values
Find all the students that enrolled in c_sec_id in (1010, 1011) Find all the course that Amanda enrolled in. which returned c_sec_id: 1010, 1011

33 Example of nested queries (cont…)
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); Find the c_sec_id that use bldg_code=‘CR’ which is 1000, 1002, 1007, 1010

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

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

36 Using Set Operators in Queries
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

37 Query Set Operators UNION: combines results, suppresses duplicate rows
UNION ALL: combines results, displays duplicates INTERSECT: finds matching rows MINUS: returns the difference between returned record sets

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 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 Using the DECODE Function

41 Row Num

42 Search Result for web page


Download ppt "Advanced SQL Topics Edward Wu."

Similar presentations


Ads by Google