Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Sql server lab_4

405 views

Published on

  • Be the first to comment

  • Be the first to like this

Sql server lab_4

  1. 1. MS SQL Server 2005 Lab # 4 :  Practicing Queries, part #2 Complex Queries Adavnced Database Programming 1
  2. 2. 2. Complex Queries WHERE Clause Form: USE database_name SELECT Column_List [ INTO New_table ] From table1[table2,….] [ WHERE conditions ] [ GROUP BY group_by_expression ] [ HAVING search_conditions ] [ ORDER BY order_expression[ASC|DESC] ] Adavnced Database Programming 2
  3. 3. Subqueries An Outer query contains an Inner query, which can be included in the WHERE Clause or in the FROM Clause Outer Query: SELECT FROM WHERE (Inner Query) Outer Query: SELECT FROM (Inner Query) Adavnced Database Programming 3
  4. 4. Subqueries And Comparison Operators Example : Q: View all Employees First & Last name who work in Innovation DepartmentA: Use Company Select FName, LName From Employee where DNO=( Select DNumber From Department Where DName=‘Innovation’) Adavnced Database Programming 4
  5. 5. Subqueries And Comparison Operators Example : Q: View all Employees Last name who work on project BuildingA: Use Company SelectLName From Employee where SSN IN( Select ESSN From Works_On Where PNO IN(SELECT PNumber From Project WHERE PName=‘Building’)) Can we Substitute the IN clause with = ? Adavnced Database Programming 5
  6. 6. Subqueries (Inner Query included in FROMClause) Example : Q: View all Employees Last name who their SSN is greater than 1000A: Use Company Select LName Should I give the inner query From (Select * result a name? From Employee Where SSN>1000) AS NewEmp Adavnced Database Programming 6
  7. 7. Subqueries ( ANY & ALL Operators ) ANY: Returns true if the result of an inner query contains at least one row that satisfies the comparison ALL: Evaluates true if the evaluation of the table column in the inner query returns all values of that column Syntax :Outer_query column operator [ANY | ALL] Inner_query Adavnced Database Programming 7
  8. 8. Subqueries ( ANY & ALL Operators ) Example : Q: View the oldest Employees SSN who their BDate is less than all other employeesA: Use Company Select SSN From Employee where Bdate>=ALL (Select BDate From Employee) Adavnced Database Programming 8
  9. 9. EXIST Function Checks the inner query of a subquery and evaluates to true if its result contains at least one row Syntax: [NOT] EXISTS (query) Adavnced Database Programming 9
  10. 10. EXIST FunctionQ: View all employees info only if there is an employee who’s salary is 5000A: Use Company Select * From Employee where Exists (Select * From Employee Where salary=5000) Adavnced Database Programming 10
  11. 11. GROUP BY Clause Defines one or more columns as a group such that all rows within any group have the same values for those columns ALL columns specified in the SELECT clause must appear in the GROUP BY clause If an aggregate function appears in the SELECT clause, then you can’t include a simple column in it unless if its used in the Group By clause Adavnced Database Programming 11
  12. 12. GROUP BY ClauseQ: For each Project View all employees SSN with hours working on more than 20 hoursA: Use Company Select PNO,Hours,ESSN From Works_On where hours>20 Group by PNO,Hours,ESSN Adavnced Database Programming 12
  13. 13. GROUP BY Clause Example : Q: How many Employees works in each project? A: Use Company Select PNumber ,COUNT(*) emp_count From Works_IN Group by PNumber Adavnced Database Programming 13
  14. 14. HAVING Clause Defines conditions that is then applied to groups of rows (Such as WHERE Clause condition applied on rows) and its Syntax: HAVING conditionQ: Get Project numbers for all projects employing less than four personsA: Use Company Select PNO From Works_On Group by PNO Having Count(*)<4 Adavnced Database Programming 14
  15. 15. HAVING Clause Example : Q: View Projects names that their name starts with S A: Use Company Select PName From Project Group by PName HAVING PName LIKE ‘S%’ Adavnced Database Programming 15
  16. 16. ORDER BY Clause Defines the order of the rows in the result and its Syntax: ORDER BY [col_name | col_no [ASC | DESC]] , …Q: Get employees all info ordered by their SSNA: Use Company Select * From Employee Order BY SSN Adavnced Database Programming 16
  17. 17. ORDER BY ClauseQ: Get employees first & last names ordered by their last name then their first nameA: Use Company Select FName, LName From Employee Order BY LName, FName Adavnced Database Programming 17
  18. 18. ORDER BY ClauseQ: Get employees first & last names ordered by their last name Ascending and then their first name DescendingA: Use Company Select FName, LName From Employee Order BY 2 Asc, 1 DESC Adavnced Database Programming 18
  19. 19. INTO ClauseIt performs two parts: 1. Create a new table with columns as same the columns specified in the select clause 2. Insert the rows that matches the query into the new tableBasic INTO form: Use database_name Select columns_List INTO NewTableName From table(s) Adavnced Database Programming 19
  20. 20. INTO ClauseQ: Create a separate table for all employees who aren’t supervisedA: Use Company Select * INTO Head_Supervisors From Employee Where MGRSSN IS NULL Adavnced Database Programming 20
  21. 21. Set Operators UPDATE table_name SET column_name = newValue WHERE condition EX. UPDATE employee SET Salary=32400 WHERE SSN=2341 Adavnced Database Programming 21
  22. 22. Set Operators Union is the set of all elements appearing in either or both of tables Form: Query_1 UNION [ALL]Query_2 … ALL option includes all resulting rows including duplicates are to be displayed Adavnced Database Programming 22
  23. 23. Set Operators ( UNION)Q: View all employees numbers who either belong to department 5 or work on their project more than 20 hours in ascending order of employee numberA: Use Company Select SSN From Employee Where DNO=5UNION Select ESSN From Works_On Where Hours>20 Order By 1 Adavnced Database Programming 23
  24. 24. Set Operators INTERSECTION is the set of all elements belongs to both of the tables Form: Query_1 INTERSECT Query_2 … Adavnced Database Programming 24
  25. 25. Set Operators ( INTERSECT)Q: View all employees numbers who belong to department 5 and work on their project more than 20 hours in ascending order of employee numberA: Use Company Select SSN From Employee Where DNO=5INTERSECT Select ESSN From Works_On Where Hours>20 Order By 1 Adavnced Database Programming 25
  26. 26. Set Operators DIFFERENCE is the set of all elements belongs to the first table but doesn’t belong to the second table Form: Query_1 EXCEPT Query_2 … Adavnced Database Programming 26
  27. 27. Set Operators (EXCEPT)Q: View all employees numbers who belongs to department 5 except those who work on their project more than 20 hours in ascending order of employee numberA: Use Company Select SSN From Employee Where DNO=5EXCEPT Select ESSN From Works_On Where Hours>20 Order By 1 Adavnced Database Programming 27
  28. 28. CASE Expression CASE Basic form: CASE expression_1 {WHEN exp_2 THEN result_1} {ELSE result_n} END Adavnced Database Programming 28
  29. 29. CASE ExpressionQ: View all employees SSN,FNAME,Lname and Grade as following: Salary  Employee Grade: 0-6000  1 , 6000-15000  2 , 15000-22000  3 , >22000 4A: Use Company Select SSN,FNAME,LNAME, CASE when Salary>0 and Salary<=6000 Then 1 when Salary>6000 and Salary<=15000 Then 2 when Salary>15000 and Salary<=22000 Then 3 ELSE 4 END Employee_Grade Column name after END From Employee Adavnced Database Programming 29
  30. 30. COMPUTE Clause Uses aggregate function(Min, Max,…) to calculate summary values that appear as additional rows in the result of queryBasic COMPUTE form: Use database_name Select columns_List From table(s) Where condition COMPUTE aggre_Func(column_name) Adavnced Database Programming 30
  31. 31. COMPUTE ClauseQ: View all employees numbers, project their working on, and working hours for employees work on project 3 or 10. And view the minimum working hoursA: Use Company Select * From Works_on Where PNO=3 OR PNO=10 Compute MIN(Hours) Adavnced Database Programming 31
  32. 32. COMPUTE Clause (Using BY option)Q: View all employees numbers, project their working on, and working hours for employees work on project 3 or 10. And view the minimum working hours for each projectA: Use Company Select * From Works_on Where PNO=3 OR PNO=10 Order By PNO Compute MIN(Hours) BY PNO Adavnced Database Programming 32
  33. 33. COMPUTE Clause(Multiple aggregatefunction)Q: View all employees numbers, project their working on, and working hours for employees work on project 3 or 10. And view the minimum, maximum, avrage working hoursA: Use Company Select * From Works_on Where PNO=3 OR PNO=10 Compute MIN(Hours), MAX(Hours), AVG(Hours) Adavnced Database Programming 33
  34. 34. COMPUTE Clause SELCET INTO is not allowed (because the result of the COMPUTE clause is not a table) All columns in the COMPUTE clause must appear in the SELECT list The name of each column in the COMPUTE BY clause must appear in the ORDER BY clause The order of the columns in the COMPUTE BY & ORDER BY clauses must be identical Adavnced Database Programming 34

×