SQL Fundamentals and Operations Overview
150 likes | 182 Views
Learn the basics of SQL including data definition, query structure, set operations, and aggregate functions. Understand how to manipulate databases and perform nested subqueries efficiently.
SQL Fundamentals and Operations Overview
E N D
Presentation Transcript
Chapter 3Introduction to SQL(2) 2nd Semester, 2016 Sanghyun Park
Outline • History • Data Definition • Basic Query Structure • Additional Basic Operations • Set Operations • Null Values • Aggregate Functions • Nested Subqueries • Database Modification
Basic Query Structure • A typical SQL query has the form:select A1, A2, ..., Anfrom r1, r2, ..., rmwhere P • Aisrepresent attributes • risrepresent relations • P is a predicate • The result of an SQL query is a relation
Select Clause • Select clause lists the attributes desired in query result • Example: find the names of all instructorsselect namefrom instructor • Note: SQL names are case-insensitive(e.g., Name ≡ NAME ≡ name)
Select Clause (Cont.) • SQL allows duplicates in relations and in query results • To force the elimination of duplicates, insert the keyword distinct after select • Find the department names of all instructors, and remove duplicatesselect distinct dept_namefrom instructor • The keyword all specifies that duplicates should not be removedselect all dept_namefrom instructor
Select Clause (Cont.) • An asterisk in select clause denotes “all attributes”select *from instructor • Select clause can contain arithmetic expressionsselect ID, name, salary/12from instructor • Can rename arithmetic expressions using as clause select ID, name, salary/12 as monthly_salaryfrom instructor
Where Clause • Where clause specifies conditions that the result must satisfy • To find all instructors in Comp. Sci. deptselect namefrom instructorwhere dept_name = ‘Comp. Sci.’ • Comparison results can be combined using the logical connectives and, or, and not select namefrom instructorwhere dept_name = ‘Comp. Sci.’ and salary > 80000
From Clause • From clause lists the relations involved in the query • Find the Cartesian product: instructor X teachesselect *from instructor, teaches • The query above generates every possible instructor-teaches pair, with all attributes from both relations
Examples • Find the names of all instructors who have taught some course and the course_idselect name, course_idfrom instructor, teacheswhere instructor.ID = teaches.ID • Find the names of all instructors in the Art department who have taught some course and the course_idselect name, course_idfrom instructor, teacheswhere instructor.ID = teaches.ID and instructor.dept_name = ‘Art’
Rename Operation • SQL allows renaming relations and attributes using the as clause: old-name as new-name • Find the names of all instructors who have a higher salary than some instructor in ‘Comp. Sci.’select distinct T.namefrom instructor as T, instructor as Swhere T.salary > S.salary and S.dept_name = ‘Comp. Sci.’ • Keyword as is optional and may be omitted: instructor as T ≡ instructor T
Cartesian Product Example • Relation emp-super • Find the supervisor of ‘Bob’ • Find the supervisor of the supervisor of ‘Bob’ • Find ALL the supervisors (direct and indirect) of ‘Bob’ person supervisor Bob Alice Mary Susan Alice David David Mary
String Operations • SQL includes a string-matching operator: like • The operator like uses patterns that are described using two special characters • Percent(%) matches any substring • Underscore(_) matches any character • Find the names of all instructors whose name includes the substring ‘dar’select namefrom instructorwhere name like ‘%dar%’
Ordering the Display of Tuples • List in alphabetic order the names of all instructorsselect distinct namefrom instructororder by name • We may specify desc for descending order or asc for ascending order; ascending order is the default • Can sort on multiple attributes:order by dept_name, name
Where Clause Predicates • SQL includes a between comparison operatorselect namefrom instructorwhere salary between 90000 and 100000 • Tuple comparisonselect name, course_idfrom instructor, teacheswhere (instructor.ID, dept_name) = (teaches.ID, ‘Biology’)