Chapter 3 Introduction to SQL Database System Concepts

Chapter 3: Introduction to SQL Database System Concepts, 6 th Ed. ©Silberschatz, Korth and Sudarshan See www. db-book. com for conditions on re-use

Create Table Construct n An SQL relation is defined using the create table command: create table r (A 1 D 1, A 2 D 2, . . . , An Dn, (integrity-constraint 1), . . . , (integrity-constraintk)) l r is the name of the relation l each Ai is an attribute name in the schema of relation r l Di is the data type of values in the domain of attribute Ai n Example: create table instructor ( ID char(5), name varchar(20) not null, dept_name varchar(20), salary numeric(8, 2)) n insert into instructor values (‘ 10211’, ’Smith’, ’Biology’, 66000); n insert into instructor values (‘ 10211’, null, ’Biology’, 66000); Database System Concepts - 6 th Edition 3. 2 ©Silberschatz, Korth and Sudarshan

Schema Diagram for University Database System Concepts - 6 th Edition 3. 3 ©Silberschatz, Korth and Sudarshan

Basic Query Structure n A typical SQL query has the form: select A 1, A 2, . . . , An from r 1, r 2, . . . , rm where P l Ai represents an attribute l Ri represents a relation l P is a predicate. n The result of an SQL query is a relation. Database System Concepts - 6 th Edition 3. 4 ©Silberschatz, Korth and Sudarshan

The select Clause n The select clause lists the attributes desired in the result of a query l corresponds to the projection operation of the relational algebra n Example: find the names of all instructors: select name from instructor Database System Concepts - 6 th Edition 3. 5 ©Silberschatz, Korth and Sudarshan

The select Clause (Cont. ) n SQL allows duplicates in relations as well as in query results. n To force the elimination of duplicates, insert the keyword distinct after select. n Find the names of all departments with instructor, and remove duplicates select distinct dept_name from instructor n The keyword all specifies that duplicates not be removed. select all dept_name from instructor Database System Concepts - 6 th Edition 3. 6 ©Silberschatz, Korth and Sudarshan

The select Clause (Cont. ) n An asterisk in the select clause denotes “all attributes” select * from instructor n The select clause can contain arithmetic expressions involving the operation, +, –, , and /, and operating on constants or attributes of tuples. n The query: select ID, name, salary/12 from instructor would return a relation that is the same as the instructor relation, except that the value of the attribute salary is divided by 12. Database System Concepts - 6 th Edition 3. 7 ©Silberschatz, Korth and Sudarshan

The where Clause n The where clause specifies conditions that the result must satisfy l Corresponds to the selection predicate of the relational algebra. n To find all instructors in Comp. Sci. dept with salary > 80000 select name from instructor where dept_name = ‘Comp. Sci. ' and salary > 80000 n Comparison results can be combined using the logical connectives and, or, and not. n Comparisons can be applied to results of arithmetic expressions. Database System Concepts - 6 th Edition 3. 8 ©Silberschatz, Korth and Sudarshan

The from Clause n The from clause lists the relations involved in the query l Corresponds to the Cartesian product operation of the relational algebra. n Find the Cartesian product instructor X teaches select from instructor, teaches l generates every possible instructor – teaches pair, with all attributes from both relations. n Cartesian product not very useful directly, but useful combined with where-clause condition (selection operation in relational algebra). Database System Concepts - 6 th Edition 3. 9 ©Silberschatz, Korth and Sudarshan

Cartesian Product teaches instructor Database System Concepts - 6 th Edition 3. 10 ©Silberschatz, Korth and Sudarshan

Joins n For all instructors who have taught courses, find their names and the course ID of the courses they taught. select name, course_id from instructor, teaches where instructor. ID = teaches. ID n Find the course ID, semester, year and title of each course offered by the Comp. Sci. department select section. course_id, semester, year, title from section, course where section. course_id = course_id and dept_name = ‘Comp. Sci. ' Database System Concepts - 6 th Edition 3. 11 ©Silberschatz, Korth and Sudarshan

Natural Join n Natural join matches tuples with the same values for all common attributes, and retains only one copy of each common column n select * from instructor natural join teaches; Database System Concepts - 6 th Edition 3. 12 ©Silberschatz, Korth and Sudarshan

Natural Join (Cont. ) n Danger in natural join: beware of unrelated attributes with same name which get equated incorrectly n List the names of instructors along with the titles of courses that they teach n Incorrect version (equates course. dept_name with instructor. dept_name) l select name, title from instructor natural join teaches natural join course; n Correct version l select name, title from instructor natural join teaches, course where teaches. course_id = course_id; n Another correct version l select name, title from (instructor natural join teaches) join course using(course_id); Database System Concepts - 6 th Edition 3. 13 ©Silberschatz, Korth and Sudarshan

The Rename Operation n The SQL allows renaming relations and attributes using the as clause: old-name as new-name n E. g. , l select ID, name, salary/12 as monthly_salary from instructor n Find the names of all instructors who have a higher salary than some instructor in ‘Comp. Sci’. l select distinct T. name from instructor as T, instructor as S where T. salary > S. salary and S. dept_name = ‘Comp. Sci. ’ n Keyword as is optional and may be omitted instructor as T ≡ instructor T Database System Concepts - 6 th Edition 3. 14 ©Silberschatz, Korth and Sudarshan

Where Clause Predicates n SQL includes a between comparison operator n Example: Find the names of all instructors with salary between $90, 000 and $100, 000 (that is, $90, 000 and $100, 000) l select name from instructor where salary between 90000 and 100000 Database System Concepts - 6 th Edition 3. 15 ©Silberschatz, Korth and Sudarshan

Set Operations n Find courses that ran in Fall 2009 or in Spring 2010 (select course_id from section where sem = ‘Fall’ and year = 2009) union (select course_id from section where sem = ‘Spring’ and year = 2010) n Find courses that ran in Fall 2009 and in Spring 2010 (select course_id from section where sem = ‘Fall’ and year = 2009) intersect (select course_id from section where sem = ‘Spring’ and year = 2010) n Find courses that ran in Fall 2009 but not in Spring 2010 (select course_id from section where sem = ‘Fall’ and year = 2009) except (select course_id from section where sem = ‘Spring’ and year = 2010) Database System Concepts - 6 th Edition 3. 16 ©Silberschatz, Korth and Sudarshan

Null Values n It is possible for tuples to have a null value, denoted by null, for some of their attributes n null signifies an unknown value or that a value does not exist. n The result of any arithmetic expression involving null is null l Example: 5 + null returns null n The predicate is null can be used to check for null values. l Example: Find all instructors whose salary is null. select name from instructor where salary is null Database System Concepts - 6 th Edition 3. 17 ©Silberschatz, Korth and Sudarshan

Null Values and Three Valued Logic n Any comparison with null returns unknown l Example: 5 < null or null <> null or null = null n Three-valued logic using the truth value unknown: l OR: (unknown or true) = true, (unknown or false) = unknown, (unknown or unknown) = unknown l AND: (true and unknown) = unknown, (false and unknown) = false, (unknown and unknown) = unknown l NOT: (not unknown) = unknown l “P is unknown” evaluates to true if predicate P evaluates to unknown n Result of where clause predicate is treated as false if it evaluates to unknown Database System Concepts - 6 th Edition 3. 18 ©Silberschatz, Korth and Sudarshan

Null Values n select A 3 from R where A 1 + 5 > A 2 and A 4 = ‘x’ A 1 A 2 A 3 A 4 5 x n When it evaluates the second tuple: 2 1) Null + 5 Null (for A 1 + 5) 3 9 alpha 4 beta 4 gamma delta x 2) Null > 4 Null (for A 1 + 5 > A 2) 3) Null = ‘x’ Null (for A 4 = ‘x’) 4) Null and Null (for A 1 + 5 > A 2 and A 4 = ‘x’) 5) Where clause results false since it is Null. So it does not output “beta” Database System Concepts - 6 th Edition 3. 19 ©Silberschatz, Korth and Sudarshan

Aggregate Functions n These functions operate on the multiset of values of a column of a relation, and return a value avg: average value min: minimum value max: maximum value sum: sum of values count: number of values Database System Concepts - 6 th Edition 3. 20 ©Silberschatz, Korth and Sudarshan

Aggregate Functions (Cont. ) n Find the average salary of instructors in the Computer Science department l select avg (salary) from instructor where dept_name= ’Comp. Sci. ’; n Find the total number of instructors who teach a course in the Spring 2010 semester l select count (distinct ID) from teaches where semester = ’Spring’ and year = 2010 n Find the number of tuples in the course relation l select count (*) from course; Database System Concepts - 6 th Edition 3. 21 ©Silberschatz, Korth and Sudarshan

Aggregate Functions – Group By n Find the average salary of instructors in each department l select dept_name, avg (salary) from instructor group by dept_name; Database System Concepts - 6 th Edition 3. 22 ©Silberschatz, Korth and Sudarshan

Aggregate Functions – Having Clause n Find the names and average salaries of all departments whose average salary is greater than 42000 select dept_name, avg (salary) from instructor group by dept_name having avg (salary) > 42000; Note: predicates in the having clause are applied after the formation of groups whereas predicates in the where clause are applied before forming groups Database System Concepts - 6 th Edition 3. 23 ©Silberschatz, Korth and Sudarshan

Nested Subqueries n SQL provides a mechanism for the nesting of subqueries. n A subquery is a select-from-where expression that is nested within another query. n A common use of subqueries is to perform tests for set membership, set comparisons, and set cardinality. Database System Concepts - 6 th Edition 3. 24 ©Silberschatz, Korth and Sudarshan

Example Query n Find courses offered in Fall 2009 and in Spring 2010 select distinct course_id from section where semester = ’Fall’ and year= 2009 and course_id in (select course_id from section where semester = ’Spring’ and year= 2010); n Find courses offered in Fall 2009 but not in Spring 2010 select distinct course_id from section where semester = ’Fall’ and year= 2009 and course_id not in (select course_id from section where semester = ’Spring’ and year= 2010); Database System Concepts - 6 th Edition 3. 25 ©Silberschatz, Korth and Sudarshan

Test for Empty Relations n The exists construct returns the value true if the argument subquery is nonempty. n exists r r Ø n not exists r r = Ø Database System Concepts - 6 th Edition 3. 26 ©Silberschatz, Korth and Sudarshan

Correlation Variables n Yet another way of specifying the query “Find all courses taught in both the Fall 2009 semester and in the Spring 2010 semester” select course_id from section as S where semester = ’Fall’ and year = 2009 and exists (select * from section as T where semester = ’Spring’ and year= 2010 and S. course_id= T. course_id); n Correlated subquery n Correlation name or correlation variable Database System Concepts - 6 th Edition 3. 27 ©Silberschatz, Korth and Sudarshan

Not Exists n Find all students who have taken all courses offered in the Biology department. select distinct S. ID, S. name from student as S where not exists ( (select course_id from course where dept_name = ’Biology’) except (select T. course_id from takes as T where S. ID = T. ID)); n Note that X – Y = Ø X Y Database System Concepts - 6 th Edition 3. 28 ©Silberschatz, Korth and Sudarshan

Test for Absence of Duplicate Tuples n The unique construct tests whether a subquery has any duplicate tuples in its result. n Find all courses that were offered at most once in 2009 select T. course_id from course as T where unique (select R. course_id from section as R where T. course_id= R. course_id and R. year = 2009); Database System Concepts - 6 th Edition 3. 29 ©Silberschatz, Korth and Sudarshan

Modification of the Database – Deletion n Delete all instructors delete from instructor n Delete all instructors from the Finance department delete from instructor where dept_name= ’Finance’; n Delete all tuples in the instructor relation for those instructors associated with a department located in the Watson building. delete from instructor where dept name in (select dept name from department where building = ’Watson’); Database System Concepts - 6 th Edition 3. 30 ©Silberschatz, Korth and Sudarshan

Example Query n Delete all instructors whose salary is less than the average salary of instructors delete from instructor where salary < (select avg (salary) from instructor); l Problem: as we delete tuples from instructor, the average salary changes l Solution used in SQL: 1. First, compute avg salary and find all tuples to delete 2. Next, delete all tuples found above (without recomputing avg or retesting the tuples) Database System Concepts - 6 th Edition 3. 31 ©Silberschatz, Korth and Sudarshan

Modification of the Database – Insertion n Add a new tuple to course insert into course values (’CS-437’, ’Database Systems’, ’Comp. Sci. ’, 4); n or equivalently insert into course (course_id, title, dept_name, credits) values (’CS-437’, ’Database Systems’, ’Comp. Sci. ’, 4); n Add a new tuple to student with tot_creds set to null insert into student values (’ 3003’, ’Green’, ’Finance’, null); Database System Concepts - 6 th Edition 3. 32 ©Silberschatz, Korth and Sudarshan

Modification of the Database – Insertion n Add all instructors to the student relation with tot_creds set to 0 insert into student select ID, name, dept_name, 0 from instructor n The select from where statement is evaluated fully before any of its results are inserted into the relation (otherwise queries like insert into table 1 select * from table 1 would cause problems) Database System Concepts - 6 th Edition 3. 33 ©Silberschatz, Korth and Sudarshan

Modification of the Database – Updates n Increase salaries of instructors whose salary is over $100, 000 by 3%, and all others receive a 5% raise l Write two update statements: update instructor set salary = salary * 1. 03 where salary > 100000; update instructor set salary = salary * 1. 05 where salary <= 100000; l The order is important Database System Concepts - 6 th Edition 3. 34 ©Silberschatz, Korth and Sudarshan
- Slides: 34