Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 3 Introduction to SQL Yonsei University 1 st Semester, 2015 Sanghyun Park.

Similar presentations


Presentation on theme: "Chapter 3 Introduction to SQL Yonsei University 1 st Semester, 2015 Sanghyun Park."— Presentation transcript:

1 Chapter 3 Introduction to SQL Yonsei University 1 st Semester, 2015 Sanghyun Park

2 Outline  History  Basic Structure  Aggregate Functions  Nested Subqueries  Database Modification

3 History  IBM Sequel language developed as part of System R project at the IBM San Jose Research Laboratory  Renamed Structured Query Language (SQL)  ANSI and ISO standard SQL  SQL-86, SQL-89, SQL-92  SQL:1999 (language name became Y2K compliant)  SQL:2003  Commercial systems offer most SQL-92 features, plus varying feature sets from later standards and special proprietary features

4 Schema Diagram for University Database

5 Basic Structure  SQL is based on set and relational operations with certain modifications and enhancements  A typical SQL query has the form: selectA 1, A 2,..., A n fromr 1, r 2,..., r m whereP  A i s represent attributes  r i s represent relations  P is a predicate  This query is equivalent to the relational algebra expression:  ∏ A1, A2,..., An (  P (r 1 x r 2 x... x r m ))  The result of an SQL query is a relation

6 SELECT Clause  The select clause lists the attributes desired in the query result  An asterisk in the select clause denotes “all attributes”  The select clause can contain arithmetic expressions  SQL allows duplicates in relations as well as in query results  Find department names of all instructors w/o duplicates: selectdistinct dept_name frominstructor  The keyword all specifies that duplicates not be removed: selectall dept_name frominstructor

7 WHERE Clause  The where clause specifies conditions the result must satisfy  To find all instructors in the Comp. Sci. dept with salary > 80000: selectname frominstructor wheredept_name = ‘Comp. Sci’ and salary > 80000  Comparison results can be combined using the logical connectives and, or, and not  Comparisons can be applied to results of arithmetic expressions  SQL includes a between comparison operator

8 FROM Clause  The from clause lists the relations involved in the query  Find the Cartesian product instructor x teaches: select* frominstructor, teaches  Find the course ID, semester, year and title of each course offered by the Comp. Sci. dept: selectsection.course_id, semester, year, title fromsection, course wheresection.course_id = course.course_id and dept_name = ‘Comp. Sci.’

9 Aggregate Functions  These functions operate on the multiset of values of a column, and return a single value  avg, min, max, sum, count  Find the average salary of instructors in the Comp. Sci. dept: selectavg (salary) frominstructor wheredept_name = ‘Comp. Sci’  Find the names and average salaries of all departments whose average salary is greater than 42000: selectdept_name, avg (salary) frominstructor group bydept_name havingavg (salary) > 42000

10 Nested Subqueries  SQL provides a mechanism for the nesting of subqueries  A subquery is a select-from-where expression that is nested within another query  A common use of subqueries is to perform tests for set membership, set comparisons, and set cardinality  Find courses offered both in Fall 2009 and in Spring 2010: selectdistinct course_id fromsection wheresemester = ‘Fall’ and year = 2009 and course_id in (select course_id fromsection wheresemester = ‘Spring’ and year = 2010)

11 Database Modification - Delete  Delete all instructors from the Finance dept: delete frominstructor wheredept_name = ‘Finance’  Delete all instructors whose salary is less than the average salary of instructors: delete frominstructor wheresalary < (select avg (salary) from instructor)

12 Database Modification - Insert  Add a new tuple to course: insert into course values(‘CS-437’, ‘Database Systems’, ‘Comp. Sci’, 4) or equivalently insert into course(course_id, title, credits, dept_name) values(‘CS-437’, ‘Database Systems’, 4, ‘Comp. Sci’)  Add all instructors to the student relation with tot_creds set to 0: insert intostudent selectID, name, dept_name, 0 frominstructor

13 Database Modification - Update  Increase salaries of instructors whose salary is over $100,000 by 3% and all others receive 5% raise: updateinstructor setsalary = salary  1.03 wheresalary > 100000; updateinstructor setsalary = salary  1.05 wheresalary  100000  The order is important  Can be done better using the case statement updateinstructor setsalary = case when salary  100000 then salary *1.05 else salary * 1.03 end


Download ppt "Chapter 3 Introduction to SQL Yonsei University 1 st Semester, 2015 Sanghyun Park."

Similar presentations


Ads by Google