SQL: Basic Queries. John Ortiz Cs.utsa.edu

Like dokumenter
SQL: Basic Queries. Basic Select Statement

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

Databases 1. Extended Relational Algebra

Slope-Intercept Formula

Moving Objects. We need to move our objects in 3D space.

Dynamic Programming Longest Common Subsequence. Class 27

UNIVERSITY OF OSLO DEPARTMENT OF ECONOMICS

Neural Network. Sensors Sorter

Trigonometric Substitution

UNIVERSITETET I OSLO

Exercise 1: Phase Splitter DC Operation

Følgende endringer er gjort i denne versjonen:

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Han Ola of Han Per: A Norwegian-American Comic Strip/En Norsk-amerikansk tegneserie (Skrifter. Serie B, LXIX)

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet.

SVM and Complementary Slackness

Call function of two parameters

EN Skriving for kommunikasjon og tenkning

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Kneser hypergraphs. May 21th, CERMICS, Optimisation et Systèmes

Graphs similar to strongly regular graphs

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

5 E Lesson: Solving Monohybrid Punnett Squares with Coding

Level-Rebuilt B-Trees

Hvordan føre reiseregninger i Unit4 Business World Forfatter:

SAS FANS NYTT & NYTTIG FRA VERKTØYKASSA TIL SAS 4. MARS 2014, MIKKEL SØRHEIM

GEOV219. Hvilket semester er du på? Hva er ditt kjønn? Er du...? Er du...? - Annet postbachelor phd

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

XML enabled database. support for XML in Microsoft SQL Server 2000 & Martin Malý

6350 Månedstabell / Month table Klasse / Class 1 Tax deduction table (tax to be withheld) 2012

Information search for the research protocol in IIC/IID

PSi Apollo. Technical Presentation

Dagens tema: Eksempel Klisjéer (mønstre) Tommelfingerregler

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Hvor mye praktisk kunnskap har du tilegnet deg på dette emnet? (1 = ingen, 5 = mye)

Medisinsk statistikk, KLH3004 Dmf, NTNU Styrke- og utvalgsberegning

0:7 0:2 0:1 0:3 0:5 0:2 0:1 0:4 0:5 P = 0:56 0:28 0:16 0:38 0:39 0:23

Maple Basics. K. Cooper

Den som gjør godt, er av Gud (Multilingual Edition)

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

KROPPEN LEDER STRØM. Sett en finger på hvert av kontaktpunktene på modellen. Da får du et lydsignal.

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

TMA4240 Statistikk 2014

MID-TERM EXAM TDT4258 MICROCONTROLLER SYSTEM DESIGN. Wednesday 3 th Mars Time:

Administrasjon av postnummersystemet i Norge Post code administration in Norway. Frode Wold, Norway Post Nordic Address Forum, Iceland 5-6.

Høgskoleni østfold EKSAMEN. The examination set consists of three assignments. All assignments are to be answered.

UNIVERSITY OF OSLO. Faculty of Mathematics and Natural Sciences

Start MATLAB. Start NUnet Applications Statistical and Computational packages MATLAB Release 13 MATLAB 6.5

Fagevalueringsrapport FYS Diffraksjonsmetoder og elektronmikroskopi

TMA4240 Statistikk Høst 2013

Emneevaluering GEOV272 V17

Eksamen ENG1002/1003 Engelsk fellesfag Elevar og privatistar/elever og privatister. Nynorsk/Bokmål

1. Explain the language model, what are the weaknesses and strengths of this model?

Emnedesign for læring: Et systemperspektiv

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Eksamen i emnet Mat131 - Differensiallikningar I Onsdag 25. mai 2016, kl.

Verifiable Secret-Sharing Schemes

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Level Set methods. Sandra Allaart-Bruin. Level Set methods p.1/24

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

FIRST LEGO League. Härnösand 2012

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Physical origin of the Gouy phase shift by Simin Feng, Herbert G. Winful Opt. Lett. 26, (2001)

TUSEN TAKK! BUTIKKEN MIN! ...alt jeg ber om er.. Maren Finn dette og mer i. ... finn meg på nett! Grafiske lisenser.

HONSEL process monitoring

Oppgave. føden)? i tråd med

Mathematics 114Q Integration Practice Problems SOLUTIONS. = 1 8 (x2 +5x) 8 + C. [u = x 2 +5x] = 1 11 (3 x)11 + C. [u =3 x] = 2 (7x + 9)3/2

Hvor mye teoretisk kunnskap har du tilegnet deg på dette emnet? (1 = ingen, 5 = mye)

GEO231 Teorier om migrasjon og utvikling

TUSEN TAKK! BUTIKKEN MIN! ...alt jeg ber om er.. Maren Finn dette og mer i. ... finn meg på nett! Grafiske lisenser.

Endelig ikke-røyker for Kvinner! (Norwegian Edition)

AvtaleGiro beskrivelse av feilmeldinger for oppdrag og transaksjoner kvitteringsliste L00202 levert i CSV fil

Gir vi de resterende 2 oppgavene til én prosess vil alle sitte å vente på de to potensielt tidskrevende prosessene.

TDT4117 Information Retrieval - Autumn 2014

Estimating Peer Similarity using. Yuval Shavitt, Ela Weinsberg, Udi Weinsberg Tel-Aviv University

JDBC. Java Data Base Connec.vity

TUSEN TAKK! BUTIKKEN MIN! ...alt jeg ber om er.. Maren Finn dette og mer i. ... finn meg på nett! Grafiske lisenser.

The regulation requires that everyone at NTNU shall have fire drills and fire prevention courses.

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

2018 ANNUAL SPONSORSHIP OPPORTUNITIES

UNIVERSITETET I OSLO

Andrew Gendreau, Olga Rosenbaum, Anthony Taylor, Kenneth Wong, Karl Dusen

HØGSKOLEN I NARVIK - SIVILINGENIØRUTDANNINGEN

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

TMA4329 Intro til vitensk. beregn. V2017

Forbruk & Finansiering

En praktisk innføring i team-basert læring

Maritech Regnskap versjon

Du må håndtere disse hendelsene ved å implementere funksjonene init(), changeh(), changev() og escape(), som beskrevet nedenfor.

Generalization of age-structured models in theory and practice

MA2501 Numerical methods

CAMES. Technical. Skills. Overskrift 27pt i to eller flere linjer teksten vokser opad. Brødtekst 22pt skrives her. Andet niveau.

Du kan bruke det vedlagte skjemaet Egenerklæring skattemessig bosted 2012 når du søker om frikort.

Hvordan 3 konsulenter tester et konserndatavarehus

Søker du ikke om nytt frikort/skattekort, vil du bli trukket 15 prosent av utbetalingen av pensjon eller uføreytelse fra og med januar 2016.

Kartleggingsskjema / Survey

Transkript:

SQL: Basic Queries John Ortiz Cs.utsa.edu

Basic Select Statement Basic form of the select statement: select target-attribute-list from table-list where conditions; Correspondence to relational algebra: select-clause projection (π) from-clause Cartesian product ( ) where-clause selection (σ) Lecture 11 SQL: Interactive Queries (1) 2

A Sample University Schema Students(SID, Name, Age, Sex, Major, GPA) Courses(Cno, Title, Hours, Dept) Enrollment(SID, Cno, Year, Grade) Offers(Cno, Year, FID) Faculty(FID, Name, Rank, Dept, Salary) Departments(Name, Location, ChairID) Assume a natural choice of data types and foreign key constraints. Lecture 11 SQL: Interactive Queries (1) 3

Single Table Queries Find SID, Name and GPA of students with GPA higher than 3.8. SQL> select SID, Name, GPA 2 from Students 3 where GPA > 3.8; Use shorthand * to select all columns. select * from Students where GPA > 3.8; The where-clause is optional. select Name from Students; Lecture 11 SQL: Interactive Queries (1) 4

Duplicate Removal By default, duplicate rows are kept (why?). How to remove duplicate rows? Use key word distinct. select distinct SID, Cno from Enrollment; Other means (set operations, key attri.) What is the problem with following query? select distinct SID, Name from Students; Lecture 11 SQL: Interactive Queries (1) 5

A Multiple Table Query Find id of faculty members who taught Database I in 1998 select FID from Offers, Courses where Title = Database I and Year = 1998 and Offers.Cno = Courses.Cno; Offers Cno Year FID CS374 1999 2010 M150 1998 1557 CS374 1998 2158 Courses Cno Title Hours Dept CS374 Database I 3 CS M150 Calculus I 3 Math Lecture 11 SQL: Interactive Queries (1) 6

Conceptual Evaluation Previous query can be understood through a conceptual evaluation of the query. 1. Find cross product of Courses & Sections. 2. Select rows satisfying where-clause 3. Project on FID, keeping duplicate rows. Offers Courses Answer Cno Year FID Cno Title Hours Dept CS374 1999 2010 CS374 Database I 3 CS CS374 1999 2010 M150 Calculus I 3 Math M150 1998 1557 CS374 Database I 3 CS M150 1998 1557 M150 Calculus I 3 Math CS374 1998 2158 CS374 Database I 3 CS CS374 1998 2158 M150 Calculus I 3 Math Found! Lecture 11 SQL: Interactive Queries (1) 7

Conceptual Evaluation (cont.) In general, select distinct Ri.A, Rj.B,..., Rk.C from R1, R2,..., Rn where Conditions is interpreted by (up to duplicate elimination) π Ri.A, Rj.B,..., Rk.C (σ Conditions (R1 R2... Rn)) Lecture 11 SQL: Interactive Queries (1) 8

Tuple Variables Tuple Variables (Relation Aliases) can simplify query specifications. Find names and GPAs of students who take Database I. select Name, GPA from Students S, Enrollment E, Courses C where Title = Database I and S.SID = E.SID and E.Cno = C.Cno; Lecture 11 SQL: Interactive Queries (1) 9

When Are Aliases Necessary? Find pairs of students who have same GPA. select s1.sid, s2.sid from Students s1, Students s2 where s1.gpa = s2.gpa and s1.sid < s2.sid Why use s1.ssn < s2.ssn? Find names of students with GPA higher than Tom's. select s1.name from Students s1, Students s2 where s2.name = `Tom' and s1.gpa > s2.gpa Compare to all Tom s or any one Tom? Lecture 11 SQL: Interactive Queries (1) 10

String Matching Operators Find numbers and titles of courses that have systems in the title. select Cno, Title from Courses where Title like `%systems%' % matches 0 or more characters. Find students with a six-letter name starting with an M. select * from Students where Name like `M _' _ matches exactly one character Lecture 11 SQL: Interactive Queries (1) 11

More Operators * Find students whose name contain a _. select * from Students where Name like `%\_ % escape \ Escape character can be explicitly defined. Operator for range conditions: Find names of students with GPA between 3.5 and 3.8. select Name from Students where GPA between 3.5 and 3.8; Lecture 11 SQL: Interactive Queries (1) 12

Set Operations SQL supports three set operations: union, intersect, except (Oracle uses minus) Requires union compatibility. Recall that they have same number of attributes; corresponding attributes have same type. Applied on (relations specified by) subqueries. Set operations automatically removes duplicate rows. To keep duplicate in union, use union all. Lecture 11 SQL: Interactive Queries (1) 13

Examples Using Set Operations Find SID of students who either take Database I or major in CS. (select SID from Enrollment E, Courses C where E.Cno = C.Cno and Title = Database I ) union (select SID from Students where Major = CS ) What do we get if use intersect or except? Lecture 11 SQL: Interactive Queries (1) 14

Testing Set Membership * Find students who are 20, 22, or 24 years old. select * from Students where Age in (20, 22, 24) Lecture 11 SQL: Interactive Queries (1) 15

Nested (Sub)Query Find names of students who take at least one course offered by CS department. select Name from Students S, Enrollment E where S.SID = E.SID and E.Cno in (select Cno from Courses where Dept = 'CS') Outer query Inner query Lecture 11 SQL: Interactive Queries (1) 16

Correlated Nested Query List SID and Cno pairs for which the student takes the course and has the same name as the instructor. select SID, Cno from Students S, Enrollment E where S.SID = E.SID and (Cno, Year) in (select Cno, Year from Offers O, Faculty F where O.FID=F.FID and Name = S.Name) correlation Lecture 11 SQL: Interactive Queries (1) 17

Conceptual Evaluation 1. Compute cross product of outer relations. 2. For each tuple in the cross product that satisfy other conditions in outer query, compute the result of the inner query. Non-correlated inner query only needs to be computed once. In subqueries, local names take precedence over global names. 3. Evaluate the rest of conditions of the outer query and form the final result. Lecture 11 SQL: Interactive Queries (1) 18

Flatten Nested Queries Every nested query has equivalent flat queries. The last query is equivalent to the following. select SID, Cno from Students S, Enrollment E, Offers O, Faculty F where S.SID = E.SID and E.Cno = O.Cno and E.Year = O.Year and O.FID=F.FID and F.Name = S.Name Why nested query? Why flatten nested query? Lecture 11 SQL: Interactive Queries (1) 19

Another Nested Query Find enrollments where a 25-year-old student takes a CS course. select * from Enrollment where (SID, Cno) in (select S.SID, C.Cno from Students S, Courses C where S.Age = 25 and C.Dept = 'CS ) Lecture 11 SQL: Interactive Queries (1) 20

Another Nested Query (cont.) Other ways to write the query: select * from Enrollment where SID in (select SID from Students where Age = 25) and Cno in (select Cno from Courses where Dept = 'CS') select E.* from Enrollment E, Students S, Courses C where S.SID=E.SID and E.Cno=C.Cno and S.Age = 25 and C.Dept = CS Lecture 11 SQL: Interactive Queries (1) 21

Quantified Comparisons Find names of students who are 18 or younger with a GPA higher than the GPA of some students who are 25 or older. select Name from Students where Age <= 18 and GPA >some (select GPA from Students where Age >= 25) Also <some, <=some, >=some, =some, <>some. Can also use any (same as some). Also have all. Lecture 11 SQL: Interactive Queries (1) 22

Meaning of Quantified Comparisons * =some is equivalent to in <>all is equivalent to not in. <>some is equivalent to neither in nor not in Example: Let x = a and S = {a, b}. Then x <>some S is true (x <> b); x not in S is false (a is in S); x <>all S is also false (x = a). Lecture 11 SQL: Interactive Queries (1) 23

Quantified Subquery Find students who take at least one course. Rephrase: Find students such that there exist some courses taken by the students. In SQL, use key word exists select * from Students s where exists (select * from Enrollment where SID = s.sid) What would it mean if use not exists instead? Lecture 11 SQL: Interactive Queries (1) 24

Quantified Subquery (cont.) * The previous query is equivalent to: (1) select s.* from Students s, Enrollment e where s.sid = e.sid (2) select * from Students where SID in (select SID from Enrollment) Lecture 11 SQL: Interactive Queries (1) 25

Quantifiers: More Examples * Find students who do not take CS374. select * from Students s where not exists (select * from Enrollment where SID = s.sid and Cno = 'CS374') This query is equivalent to: select * from Students where SID not in (select SID from Enrollment where Cno = 'CS374') Lecture 11 SQL: Interactive Queries (1) 26

Quantifiers: More Examples Find students who take all CS courses. select * from Students s where not exists (select * from Courses c where Dept = CS and not exists (select * from Enrollment where SID = s.sid and Cno = c.cno)) A student takes all CS courses if and only if no CS course is not taken by the student. Compare with division in relational algebra. Lecture 11 SQL: Interactive Queries (1) 27

Quantifiers: More Examples * Find name and GPA of students who take every course taken by the student with id 1234. select Name, GPA from Students s where not exists (select * from Courses c where Cno in (select Cno from Enrollment where SID = '1234') and not exists (select * from Enrollment where SID = s.sid and Cno = c.cno)) Can you express it in other ways? Lecture 11 SQL: Interactive Queries (1) 28

How Do You Ask This In SQL? * Find names of faculty who did not teach any course in 1996. Find names of students who only take courses taught by Prof. Goodman. Find pairs of names of students who take the same course taught by the same faculty member in different years. Find names of CS students who never take a CS course. Find titles of courses taken by Bill Smith that are also taken by all students under 40. Lecture 11 SQL: Interactive Queries (1) 29

Computation in SQL Arithmetic computations are allowed in select and where clauses. SQL supports a set of operators and built-in functions. Operators include +, -, *, /. Functions include char_length(x), lower(x), upper(x), x y, substring(x from i to j). Special functions to handle null values. Lecture 11 SQL: Interactive Queries (1) 30

Examples of Computation Find id, name and monthly salary of faculty (Faculty.Salary is 9-month salary). select FID, upper(name), Salary/9 Mon-Sal from Faculty Find names of male CS students and precede each name with the title Mr.. select Mr. Name from Students where lower(sex) = m Lecture 11 SQL: Interactive Queries (1) 31

Common Oracle SQL Functions * ceil(x) : smallest integer >= x floor(x) : largest integer <= x mod(m,n) : remainder of m divided by n power(x,y) : x raised to the power y round(n,m) : round n to the m-th digit following the point sign(x) : 0 if x = 0; 1 if x > 0; -1 if x < 0 sqrt(x) : the square root of x initcap(s) : change the first char of each word in s to uppercase Lecture 11 SQL: Interactive Queries (1) 32

Common Oracle SQL Functions * lower(s) : change all chars in s to lowercase replace(s,s1,s2) : replace each s1 by s2 in s substr(s,m,n) : n-char substring of s starting at the m-th char length(s) : the length of s sysdate : the current date last_day : the last day of current month to_char(x) : convert x to char data type to_number(x) : convert string x to numbers. to_date(x) : convert x to date type Lecture 11 SQL: Interactive Queries (1) 33

Case List id and name of students together with a classification of excellent, very good, etc. select SID, Name, case when GPA < 2.5 then 'fair' when GPA < 3 then 'good' when GPA < 3.5 then 'very good' else 'excellent' end from Students The output is from the first satisfied case. Lecture 11 SQL: Interactive Queries (1) 34

The Decode Function Assume Students has an attribute Year with possible values 1, 2, 3, & 4. Find id and name of students together with a status (freshman, sophomore ). select SID, Name, from Students decode(year, 1, freshman, 2, sophomore, 3, junior, 4, senior ) Status Lecture 11 SQL: Interactive Queries (1) 35

Using Null Value Find names of students who have not declared a major. select Name from Students where Major is null Any computation involving a null value yields a null value. Use nvl(exp1, exp2) to convert null value in exp1 to exp2. select Name, Salary + nvl(bonus, 0) Total_wage from Employees Assume Employees(EID, Name, Salary, Bonus) Lecture 11 SQL: Interactive Queries (1) 36

Date Arithmetic in Oracle* One may add/subtract days to/from a date. Month and year boundaries will be taken care of automatically. select Name, Birthday + 20 from Students Returns 12-JAN-96 if a student s birthday is 23-DEC-95. Lecture 11 SQL: Interactive Queries (1) 37