Murali Mani SQL. Murali Mani SELECT-FROM-WHERE SELECT * FROM Student WHERE sName=“Greg” AND address=“320 FL”  (sName=“Greg” AND address=“320 FL”) (Student)

Slides:



Advertisements
Similar presentations
Union, Intersection, Difference (subquery) UNION (subquery) produces the union of the two relations. Similarly for INTERSECT, EXCEPT = intersection and.
Advertisements

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Queries, Programming, Triggers Chapter 5 Modified by Donghui Zhang.
CS4432: Database Systems II Query Operator & Algebraic Expressions 1.
1 SQL: Structured Query Language (‘Sequel’) Chapter 5.
1 Lecture 12: Further relational algebra, further SQL
E-R Diagram for a Banking Enterprise
1 Database Systems Relations as Bags Grouping and Aggregation Database Modification.
Oct 28, 2003Murali Mani Relational Algebra B term 2004: lecture 10, 11.
Structured Query Language – Continued Rose-Hulman Institute of Technology Curt Clifton.
CMPT 354, Simon Fraser University, Fall 2008, Martin Ester 90 Database Systems I SQL Queries.
Dec 4, 2003Murali Mani SQL B term 2004: lecture 14.
Murali Mani SQL: Updates (DML) and Views (DDL). Murali Mani SQL DML (Updating the Data) Insert Delete Update.
©Silberschatz, Korth and Sudarshan4.1Database System Concepts Chapter 4: SQL Basic Structure Set Operations Aggregate Functions Null Values Nested Subqueries.
Nov 24, 2003Murali Mani SQL B term 2004: lecture 12.
CS3431 SQL : Query Language. CS3431 SELECT-FROM-WHERE SELECT * FROM Student WHERE sName=“Greg” AND address=“320 FL”  (sName=“Greg” AND address=“320 FL”)
Cs3431 SQL: Updates (DML) and Views (DDL). cs3431 SQL DML (Updating the Data) Insert Delete Update.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 6 The Relational Algebra and Relational Calculus.
SQL I. SQL – Introduction  Standard DML/DDL for relational DB’s  DML = “Data Manipulation Language” (queries, updates)  DDL = “Data Definition Language”
Nov 18, 2003Murali Mani Relational Algebra B term 2004: lecture 10, 11.
A Guide to SQL, Seventh Edition. Objectives Retrieve data from a database using SQL commands Use compound conditions Use computed columns Use the SQL.
Chapter 11.1 and 11.2 Data Manipulation: Relational Algebra and SQL Brian Cobarrubia Introduction to Database Management Systems October 4, 2007.
Murali Mani Relational Algebra. Murali Mani What is Relational Algebra? Defines operations (data retrieval) for relational model SQL’s DML (Data Manipulation.
Database System Concepts, 6 th Ed. ©Silberschatz, Korth and Sudarshan See for conditions on re-usewww.db-book.com Chapter 3: Introduction.
Chapter 3 Single-Table Queries
Advanced SQL Murat Kantarcioglu Adapted from Silberchatz et al. slides.
1 ICS 184: Introduction to Data Management Lecture Note 10 SQL as a Query Language (Cont.)
1 CS 430 Database Theory Winter 2005 Lecture 12: SQL DML - SELECT.
Relational Algebra - Chapter (7th ed )
CSE314 Database Systems The Relational Algebra and Relational Calculus Doç. Dr. Mehmet Göktürk src: Elmasri & Navanthe 6E Pearson Ed Slide Set.
1 Single Table Queries. 2 Objectives  SELECT, WHERE  AND / OR / NOT conditions  Computed columns  LIKE, IN, BETWEEN operators  ORDER BY, GROUP BY,
Instructor: Jinze Liu Fall Basic Components (2) Relational Database Web-Interface Done before mid-term Must-Have Components (2) Security: access.
NULLs & Outer Joins Objectives of the Lecture : To consider the use of NULLs in SQL. To consider Outer Join Operations, and their implementation in SQL.
Yufis Azhar – Teknik Informatika – UMM.  Aggregation function takes a collection of values (of a single attribute) and returns a single value as a result.
IS 230Lecture 6Slide 1 Lecture 7 Advanced SQL Introduction to Database Systems IS 230 This is the instructor’s notes and student has to read the textbook.
NULL VALUES CHAPTER 5 (6/E) CHAPTER 8 (5/E) 1. LECTURE OUTLINE  Dealing with null values Three-valued logic Effects in WHERE clauses IS NULL Effects.
1 CSCE Database Systems Anxiao (Andrew) Jiang The Database Language SQL.
1/18/00CSE 711 data mining1 What is SQL? Query language for structural databases (esp. RDB) Structured Query Language Originated from Sequel 2 by Chamberlin.
CS 405G: Introduction to Database Systems Instructor: Jinze Liu Fall 2009.
SqlExam1Review.ppt EXAM - 1. SQL stands for -- Structured Query Language Putting a manual database on a computer ensures? Data is more current Data is.
A Guide to SQL, Eighth Edition Chapter Four Single-Table Queries.
1 SQL: The Query Language. 2 Example Instances R1 S1 S2 v We will use these instances of the Sailors and Reserves relations in our examples. v If the.
Thinking in Sets and SQL Query Logical Processing.
1 Schema for Student Registration System Student Student (Id, Name, Addr, Status) Professor Professor (Id, Name, DeptId) Course Course (DeptId, CrsCode,
SQL: Structured Query Language Instructor: Mohamed Eltabakh 1 Part II.
Subqueries CIS 4301 Lecture Notes Lecture /23/2006.
SQL: Structured Query Language Instructor: Mohamed Eltabakh 1.
More SQL: Complex Queries,
CS3220 Web and Internet Programming More SQL
Introduction to SQL.
SQL: Structured Query Language DML- Queries Lecturer: Dr Pavle Mogin
SQL Structured Query Language 11/9/2018 Introduction to Databases.
SQL : Query Language Part II CS3431.
CS 405G: Introduction to Database Systems
SQL Views CS542.
SQL : Query Language CS3431.
The Relational Algebra and Relational Calculus
SQL Views and Updates cs3431.
Instructor: Mohamed Eltabakh
More SQL: Complex Queries, Triggers, Views, and Schema Modification
CSCE 315 – Programming Studio Spring 2010 Project 1, Lecture 4
SQL: Structured Query Language
Contents Preface I Introduction Lesson Objectives I-2
CSC 453 Database Systems Lecture
SQL: Structured Query Language
SQL: Structured Query Language
SQL: Structured Query Language
SQL: The Query Language (Part III)
SQL: Structured Query Language
Presentation transcript:

Murali Mani SQL

Murali Mani SELECT-FROM-WHERE SELECT * FROM Student WHERE sName=“Greg” AND address=“320 FL”  (sName=“Greg” AND address=“320 FL”) (Student) sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER Student sNumbersNameaddressprofessor 2Greg320FLMM

Murali Mani Project SELECT sNumber, sName FROM Student  (sNumber, sName) (Student) sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER Student sNumbersName 1Dave 2Greg 3Matt

Murali Mani Extended Projection SELECT sNumber || sName AS info FROM Student WHERE address=“320 FL”  (sNumber||sName  info) (  (address=“320 FL”) (Student)) sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER Student info 1Dave 2Greg 3Matt

Murali Mani SQL and Relational Algebra In short,  L (  C (R)) becomes SELECT L FROM R WHERE C

Murali Mani Renaming SELECT s1.sNumber AS num FROM Student S1 WHERE s1.sNumber >= 1;  (s1.sNumber  num) (  (s1.sNumber >= 1) (  S1 (Student))) sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER Student num 1 2 3

Murali Mani String operators Comparison Operators based on lexicographic ordering: =,, <>, >=, <= Concatenation operator: || ‘ represented in strings with two consecutive ‘ Pattern match: s LIKE p p = pattern % : any sequence of 0 or more characters - : matches 1 character Patterns can explicitly declare escape characters as: s LIKE ‘x%am%’ ESCAPE ‘x’

Murali Mani Comparison with NULL values Arithmetic operations on NULL return NULL. Comparison operators on NULL return UNKNOWN. We can explicitly check whether a value is null or not, by IS NULL, IS NOT NULL.

Murali Mani Truth table with UNKNOWN UNKNOWN AND TRUE = UNKNOWN UNKNOWN OR TRUE = TRUE UNKNOWN AND FALSE = FALSE UNKNOWN OR FALSE = UNKNOWN UNKNOWN AND UNKNOWN = UNKNOWN UNKNOWN OR UNKNOWN = UNKNOWN NOT UNKNOWN = UNKNOWN A WHERE clause is satisfied only when it evaluates to TRUE.

Murali Mani UNION, INTERSECT, EXCEPT UNION, INTERSECT, EXCEPT have set semantics. For bag semantics, use UNION ALL, INTERSECT ALL, EXCEPT ALL (SELECT sName FROM Student) EXCEPT (SELECT sName FROM Student WHERE address=‘320 FL’)

Murali Mani EXCEPT - Example sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER 4Matt300FLER Student (SELECT sName FROM Student) EXCEPT (SELECT sName FROM Student WHERE address=‘320 FL’) sNumbersNameaddressprofessor

Murali Mani Joins SELECT sName FROM Student, Professor WHERE pName=‘MM’ AND pNumber=professor;  (sName) (Student ⋈ (pName=‘MM’ and pNumber=professor) Professor)

Murali Mani Joins - example sNumbersNameaddressprofessor 1Dave320FL1 2Greg320FL1 3Matt320FL2 Student pNumberpNameaddress 1MM141FL 2ER201FL Professor sName Dave Greg SELECT sName FROM Student, Professor WHERE pName=‘MM’ AND pNumber=professor;

Murali Mani Cross Product (Cartesian Product) SELECT * FROM Student CROSS JOIN Professor; can also be written as: SELECT * FROM Student, Professor Student X Professor

Murali Mani Cross Product - Example sNumbersNameaddressprofessor 1Dave320FL1 2Greg320FL1 3Matt320FL2 Student pNumberpNameaddress 1MM141FL 2ER201FL Professor sNumbersNameaddressprofessorpNumberpNameaddress 1Dave320FL11MM141FL 1Dave320FL12ER201FL 2Greg320FL11MM141FL 2Greg320FL12ER201FL 3Matt320FL21MM141FL 3Matt320FL22ER201FL

Murali Mani Theta Join SELECT * FROM Student JOIN Professor ON professor=pNumber; Student ⋈ (professor=pNumber) Professor SELECT * FROM Student, Professor WHERE professor=pNumber;

Murali Mani Theta Join Example sNumbersNameaddressprofessorpNumberpNameaddress 1Dave320FL11MM141FL 2Greg320FL11MM141FL 3Matt320FL22ER201FL

Murali Mani Natural Join SELECT * FROM Student NATURAL JOIN Professor (Note: This requires the columns on which the join should be done should have the same names for Student and Professor). Student ⋈ Professor

Murali Mani Natural Join - Example sNumbersNameaddresspNumber 1Dave320FL1 2Greg320FL1 3Matt320FL2 Student pNumberpNameaddress 1MM141FL 2ER201FL Professor sNumbersNameaddresspNumberpNameaddress 1Dave320FL1MM141FL 2Greg320FL1MM141FL 3Matt320FL2ER201FL

Murali Mani Outer Joins SELECT * FROM Student NATURAL FULL OUTER JOIN Professor Student ⋈ o Professor SELECT * FROM Student NATURAL LEFT OUTER JOIN Professor Student ⋈ o L Professor

Murali Mani Outer Joins SELECT * FROM Student NATURAL RIGHT OUTER JOIN Professor Student ⋈ o R Professor

Murali Mani Outer Joins - Example sNumbersNameaddresspNumber 1Dave320FL1 2Greg320FL1 3Matt320FL2 4Ben320FL4 Student pNumberpNameaddress 1MM141FL 2ER201FL 3MW168FL Professor sNumbersNameaddresspNumberpNameaddress 1Dave320FL1MM141FL 2Greg320FL1MM141FL 3Matt320FL2ER201FL 4Ben320FL4Null 3MW168FL

Murali Mani Sorting: ORDER BY clause SELECT * FROM Student WHERE sNumber >= 1 ORDER BY sNumber, sName  (sNumber, sName) (  (sNumber >= 1) (Student))

Murali Mani Subqueries SELECT * FROM Student WHERE professor = (SELECT pName FROM Professor WHERE pNumber=1) Note: the inner subquery returns a relation, but SQL runtime ensures that the subquery returns a relation with one column and with one row, otherwise it is a run-time error.

Murali Mani Subqueries - Example sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER Student pNumberpNameaddress 1MM141FL 2ER201FL Professor sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM SELECT * FROM Student WHERE professor = (SELECT pName FROM Professor WHERE pNumber=1)

Murali Mani Subqueries We can use IN, EXISTS (also NOT IN, NOT EXISTS) ALL, ANY can be used with comparisons SELECT * FROM Student WHERE (sNumber, professor) IN (SELECT pNumber, pName FROM Professor)

Murali Mani Subqueries - Example sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER Student pNumberpNameaddress 1MM141FL 2ER201FL Professor SELECT * FROM Student WHERE (sNumber, professor) IN (SELECT pNumber, pName FROM Professor) sNumbersNameaddressprofessor 1Dave320FLMM

Murali Mani Subqueries: EXISTS SELECT * FROM Student WHERE EXISTS (SELECT pName FROM Professor WHERE Student.professor=pName) sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER Student pNumberpNameaddress 1MM141FL 2ER201FL Professor sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER

Murali Mani Subqueries with negation SELECT * FROM Student WHERE (sNumber, professor) NOT IN (SELECT pNumber, pName FROM Professor) pNumberpNameaddress 1MM141FL 2ER201FL Professor sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER Student sNumbersNameaddressprofessor 2Greg320FLMM 3Matt320FLER

Murali Mani Subqueries with negation SELECT * FROM Student WHERE NOT EXISTS (SELECT pName FROM Professor WHERE Student.professor=pName) sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER Student pNumberpNameaddress 1MM141FL 2ER201FL Professor sNumbersNameaddressprofessor

Murali Mani Subqueries: ALL, ANY SELECT * FROM Student WHERE sNumber > ALL (SELECT pNumber FROM Professor) SELECT * FROM Student WHERE sNumber = ANY (SELECT pNumber FROM Professor)

Murali Mani Subqueries: ALL - Example SELECT * FROM Student WHERE sNumber > ALL (SELECT pNumber FROM Professor) sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER Student pNumberpNameaddress 1MM141FL 2ER201FL Professor sNumbersNameaddressprofessor 3Matt320FLER

Murali Mani Subqueries: ANY - Example SELECT * FROM Student WHERE sNumber = ANY (SELECT pNumber FROM Professor) sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER Student pNumberpNameaddress 1MM141FL 2ER201FL Professor sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM

Murali Mani Subqueries: NOT ALL - Example SELECT * FROM Student WHERE NOT sNumber > ALL (SELECT pNumber FROM Professor) sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER Student pNumberpNameaddress 1MM141FL 2ER201FL Professor sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM

Murali Mani Subqueries: NOT ANY - Example SELECT * FROM Student WHERE NOT sNumber = ANY (SELECT pNumber FROM Professor) sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER Student pNumberpNameaddress 1MM141FL 2ER201FL Professor sNumbersNameaddressprofessor 3Matt320FLER

Murali Mani Subqueries: Tip

Murali Mani Subqueries in FROM clause SELECT sName, pName FROM Student, (SELECT * FROM Professor WHERE pNumber=1) WHERE professor=pName; pNumberpNameaddress 1MM141FL 2ER201FL Professor sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER Student sNamepName DaveMM GregMM

Murali Mani Duplicate Elimination SELECT DISTINCT * FROM Student;  (Student) SELECT DISTINCT address FROM Student WHERE sNumber >= 1;  (  (address) (  (sNumber >= 1) (Student))) sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER Student address 320FL

Murali Mani Aggregation SELECT COUNT (*) FROM Student; SELECT COUNT (sNumber) FROM Student; SELECT MIN (sNumber) FROM Student; SELECT MAX (sNumber) FROM Student; SELECT SUM (sNumber) FROM Student; SELECT AVG (sNumber) FROM Student; We can have distinct such as: SELECT COUNT (DISTINCT sNumber) FROM Student

Murali Mani Grouping SELECT COUNT (sName) FROM Student GROUP BY address;  (COUNT (sName)) (  (address, COUNT (sName)) (Student)) sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER Student COUNT (sName) 3

Murali Mani Grouping SELECT address, COUNT (sNumber) FROM Student WHERE sNumber > 1 GROUP BY address HAVING COUNT (sNumber) > 1; sNumbersNameaddressprofessor 1Dave320FLMM 2Greg320FLMM 3Matt320FLER 4Ben300FLER Student addressCOUNT (sNumber) 320FL2

Murali Mani Aggregation and NULLs NULLs are ignored in any aggregation; except COUNT (*) However if the set of attributes to be grouped on has null values, then grouping is done on the null values as well.

Murali Mani SQL Queries - Summary SELECT [DISTINCT] a1, a2, …, an FROM R1, R2, …, Rm [WHERE C1] [GROUP BY g1, g2, …, gl [HAVING C2]] [ORDER BY o1, o2, …, oj]