Database SQL. Relational language SQL SQL or Structured Query Language SQL is an interactive Query language and database programming Language.

Slides:



Advertisements
Similar presentations
1 Lecture 02: SQL. 2 Outline Data in SQL Simple Queries in SQL (6.1) Queries with more than one relation (6.2) Recomeded reading: Chapter 3, Simple Queries.
Advertisements

SQL Introduction Standard language for querying and manipulating data Structured Query Language Many standards out there: SQL92, SQL2, SQL3. Vendors support.
TURKISH STATISTICAL INSTITUTE 1 /34 SQL FUNDEMANTALS (Muscat, Oman)
1 Database Systems ( 資料庫系統 ) October 22/24, 2007 Lecture #5.
COMP 3715 Spring 05. Working with data in a DBMS Any database system must allow user to  Define data Relations Attributes Constraints  Manipulate data.
1 Lecture 12: SQL Friday, October 26, Outline Simple Queries in SQL (5.1) Queries with more than one relation (5.2) Subqueries (5.3) Duplicates.
1 Lecture 03: Advanced SQL. 2 Outline Unions, intersections, differences Subqueries, Aggregations, NULLs Modifying databases, Indexes, Views Reading:
SQL Sangeeta Devadiga CS157A, Fall Outline Background Data Definition Basic Structure Set Operation.
1 Data Definition in SQL So far we have see the Data Manipulation Language, DML Next: Data Definition Language (DDL) Data types: Defines the types. Data.
1 Lecture 05: SQL Wednesday, October 8, Outline Outer joins (6.3.8) Database Modifications (6.5) Defining Relation Schema in SQL (6.6) Indexes.
1 Lecture 03: SQL Friday, January 7, Administrivia Have you logged in IISQLSRV yet ? HAVE YOU CHANGED YOUR PASSWORD ? Homework 1 is now posted.
1 Lecture 02: Basic SQL. 2 Outline Data in SQL Simple Queries in SQL Queries with more than one relation Reading: Chapter 3, “Simple Queries” from SQL.
SQL SQL stands for Structured Query Language SQL allows you to access a database SQL is an ANSI standard computer language SQL can execute queries against.
Correlated Queries SELECT title FROM Movie AS Old WHERE year < ANY (SELECT year FROM Movie WHERE title = Old.title); Movie (title, year, director, length)
1 Lecture 2: SQL Wednesday, January 7, Agenda Leftovers from Monday The relational model (very quick) SQL Homework #1 given out later this week.
1 Lecture 3: More SQL Friday, January 9, Agenda Homework #1 on the web site today. Sign up for the mailing list! Next Friday: –In class ‘activity’
1 Information Systems Chapter 6 Database Queries.
Exercises Product ( pname, price, category, maker) Purchase (buyer, seller, store, product) Company (cname, stock price, country) Person( per-name, phone.
1 Lecture 4: More SQL Monday, January 13th, 2003.
1. Midterm summary Types of data on the web: unstructured, semi- structured, structured Scale and uncertainty are key features Main goals are to model,
Structured Query Language (SQL) A2 Teacher Up skilling LECTURE 2.
1 SQL cont.. 2 Outline Unions, intersections, differences (6.2.5, 6.4.2) Subqueries (6.3) Aggregations (6.4.3 – 6.4.6) Hint for reading the textbook:
IM433-Industrial Data Systems Management Lecture 5: SQL.
Intro. to SQL DSC340 Mike Pangburn. Learning Objectives Understand the data-representation terminology underlying relational databases Understand core.
More SQL: Complex Queries, Triggers, Views, and Schema Modification UMM AL QURA UNIVERSITY College of Computer Dr. Ali Al Najjar 1.
SQL Queries and Subqueries Zaki Malik September 04, 2008.
Chapter 7 SQL HUANG XUEHUA. SQL SQL server2005 introduction Install components  management studio.
SQL SQL Server : Overview SQL : Overview Types of SQL Database : Creation Tables : Creation & Manipulation Data : Creation & Manipulation Data : Retrieving.
SQL SQL Review. SQL Introduction Standard language for querying and manipulating data Structured Query Language Many standards out there: ANSI SQL, SQL92.
Chapter 8: SQL. Data Definition Modification of the Database Basic Query Structure Aggregate Functions.
SQL Basics. What is SQL? SQL stands for Structured Query Language. SQL lets you access and manipulate databases.
Database Management COP4540, SCS, FIU Structured Query Language (Chapter 8)
SQL. SQL Introduction Standard language for querying and manipulating data Structured Query Language Many standards out there: ANSI SQL, SQL92 (a.k.a.
CMPT 258 Database Systems The Relationship Model (Chapter 3)
Hassan Tariq MULTIPLE TABLES: SQL provides a convenient operation to retrieve information from multiple tables.SQL provides a convenient operation to.
1 Introduction to Database Systems CSE 444 Lecture 02: SQL September 28, 2007.
©Silberschatz, Korth and Sudarshan1 Structured Query Language (SQL) Data Definition Language Domains Integrity Constraints.
1 Lecture 02: SQL Friday, September 30, Administrivia Homework 1 is out. Due: Wed., Oct. 12 Did you login on IISQLSRV ? Did you change your password.
Lectures 2&3: Introduction to SQL. Lecture 2: SQL Part I Lecture 2.
Hassan Tariq INTRODUCTION TO SQL What is SQL? –When a user wants to get some information from a database file, he can issue a query. – A query is a user–request.
Aggregation SELECT Sum(price) FROM Product WHERE manufacturer=“Toyota” SQL supports several aggregation operations: SUM, MIN, MAX, AVG, COUNT Except COUNT,
1 Lecture 03: SQL Monday, January 9, Project t/Default.aspxhttp://iisqlsrv.cs.washington.edu/444/Projec.
1 Lecture 05: SQL Wednesday, October 8, Outline Database Modifications (6.5) Defining Relation Schema in SQL (6.6) Indexes Defining Views (6.7)
SQL. SQL Introduction Standard language for querying and manipulating data Structured Query Language Many standards out there: ANSI SQL, SQL92 (a.k.a.
Standard language for querying and manipulating data Structured Query Language Many standards out there: ANSI SQL, SQL92 (a.k.a. SQL2), SQL99 (a.k.a. SQL3),
SQL.
Chapter 3 Introduction to SQL
Lecture 05: SQL Wednesday, January 12, 2005.
Cours 7: Advanced SQL.
Lecture 04: SQL Monday, January 10, 2005.
Server-Side Application and Data Management IT IS 3105 (FALL 2009)
Database Systems October 14, 2009 Lecture #5.
Introduction to Database Systems CSE 444 Lecture 04: SQL
Database SQL.
Introduction to Database Systems CSE 444 Lecture 03: SQL
Introduction to SQL Wenhao Zhang October 5, 2018.
Introduction to Database Systems CSE 444 Lecture 03: SQL
CSE544 SQL Wednesday, March 31, 2004.
SQL Introduction Standard language for querying and manipulating data
Lecture 12: SQL Friday, October 20, 2000.
Introduction to Database Systems CSE 444 Lecture 02: SQL
Lecture 4: SQL Thursday, January 11, 2001.
Lectures 6: Introduction to SQL 5
Lecture 3 Monday, April 8, 2002.
Lecture 4: SQL Wednesday, April 10, 2002.
Lecture 03: SQL Friday, October 3, 2003.
Lecture 04: SQL Monday, October 6, 2003.
Lecture 14: SQL Wednesday, October 31, 2001.
Presentation transcript:

Database SQL

Relational language SQL SQL or Structured Query Language SQL is an interactive Query language and database programming Language

SQL History Originally (mid-’70s) defined as Sequel in System R project at IBM San Jose Research Center Name change to SQL, multiple iterations of standards (’86, ’87, ’89, ’92,…) Has usual good and bad aspects of much- used, much-extended languages Think of C++ or Fortran-90…

SQL From American National Institue ANSI, it was SQL-86 (ANSI 1986) and SQL-2 (SQL-92) SQL Language is divided into DDL : Data Definition Language DML : Data Manipulation Language DCL : Data Control Language

DDL It is commands used for: Creates databases, tables, indices Create views Specify integrity constraints DDL commands are CREATE ALTER DROP

DML For values in the database Perform queries Perform updates DML commands: SELECT UPDATE DELETE INSERT

DCL For controlling the access of data DCL commands are GRANT REVOKE

SQL - DDL It used to define and manage the structure of tables in the database Its statements as CREATE TABLECREATE INDEX ALTER TABLE DROP TABLEDROP INDEX

Creating tables create table name (attr1 domain1, attr2 domain2, … ) Can also have integrity constraints not null unique primary key (attr1, attr2, … ) check (predicate) To be a primary key, must be non-null and unique Different SQLs differ about whether not null is implied by primary key

CREATE Commands Create the table S (s#, Sname, Status, City) CREATE TABLE S (s# CHAR(5), Sname CHAR(20), Status INT, City CHAR(15), PRIMARY KEY (s#)).

Data Definition Language Every attribute has a domain Some common ones: char(n): character string of fixed length n varchar(n): character string of length up to n int: integer, exact size machine-dependent smallint: another (usually smaller than int) integer

More common domains numeric(p,d): fixed point number with p total digits, d of them to the right of the decimal point real, double precision: floating-point numbers float(n): floating-point with precision at least n date: a calendar date (day, month, year) time: hours, minutes, seconds datetime: a time on a date

13 Example: Default Values CREATE TABLE Students( name CHAR(30) PRIMARY KEY, addr CHAR(50) DEFAULT ‘123 Sesame St.’, phone CHAR(16) );

14 Other Keys CREATE TABLE Product ( productID CHAR(10), name CHAR(30), category VARCHAR(20), price INT, PRIMARY KEY (productID), UNIQUE (name, category)) CREATE TABLE Product ( productID CHAR(10), name CHAR(30), category VARCHAR(20), price INT, PRIMARY KEY (productID), UNIQUE (name, category)) There is at most one PRIMARY KEY; there can be many UNIQUE

15 Foreign Key Constraints (name, category) must be a PRIMARY KEY CREATE TABLE Purchase ( prodName CHAR(30), category VARCHAR(20), date DATETIME, FOREIGN KEY (prodName, category) REFERENCES Product(name, category) CREATE TABLE Purchase ( prodName CHAR(30), category VARCHAR(20), date DATETIME, FOREIGN KEY (prodName, category) REFERENCES Product(name, category)

Example Create a database which can use in Seaport The database consists of 3 tables: 1. Sailors (sid integer, sname char, rating integer, age real) 2. Reverses (sid, bid, day) 3. Boats (bid integer, bname char, color char)

DROP command DROP TABLE BOATS DROP TABLE REVERSES DROP TABLE SAILORS

ALTER COMMAND ALTER TABLE Sailors ADD address CHAR(30) ALTER TABLE Boats DROP colors

INDEX CREATE INDEX S ON Sailors (sid) CREATE INDEX R ON REVERSES (sid, bid, day) CREATE INDEX B ON Boats (bid) DROP INDEX R

20 Example 1 WorksIn ProfessorDepartment SinceStatus CREATE TABLE WorksIn ( Since DATE, -- attribute Status CHAR (10), -- attribute ProfId INTEGER, -- role (key of Professor) DeptId CHAR (4), -- role (key of Department) PRIMARY KEY (ProfId), -- since a professor works in at most one department FOREIGN KEY (ProfId) REFERENCES Professor (Id), FOREIGN KEY (DeptId) REFERENCES Department )

21 Example 2 Sold ProjectPart DatePrice CREATE TABLE Sold ( Price INTEGER, -- attribute Date DATE, -- attribute ProjId INTEGER, -- role SupplierId INTEGER, -- role PartNumber INTEGER, -- role PRIMARY KEY (ProjId, SupplierId, PartNumber, Date), //WHY DATE? FOREIGN KEY (ProjId) REFERENCES Project, FOREIGN KEY (SupplierId) REFERENCES Supplier (Id), FOREIGN KEY (PartNumber) REFERENCES Part (Number) ) Supplier

DML  SELECT The basic format for the SELECT command is SELECT FROM WHERE

Simple SQL Query PNamePriceCategoryManufacturer Gizmo$19.99GadgetsGizmoWorks Powergizmo$29.99GadgetsGizmoWorks SingleTouch$149.99PhotographyCanon MultiTouch$203.99HouseholdHitachi SELECT * FROM Product WHERE category=‘Gadgets’ Product PNamePriceCategoryManufacturer Gizmo$19.99GadgetsGizmoWorks Powergizmo$29.99GadgetsGizmoWorks “selection”

Examples Retrieve the birthdate and address of employee whose name is “John B. Smith” SELECT Bdate, Address FROM Employee WHERE Name = ‘John B. Smith’

Example Retrieve all Sailors name whose reverses boat id 103 SELECT sname FROM Sailors, Reverses WHERE Sailors.sid = Reverses.sid AND Reverses.bid=103

ORDER BY The Select command has sentential ORDER BY Select S.sname FROM Sailors S, Reverses R WHERE S.sid = R.sid AND R.bid = 103 ORDER BY age DESC

27 The LIKE operator s LIKE p: pattern matching on strings p may contain two special symbols: % = any sequence of characters _ = any single character Product(PName, Price, Category, Manufacturer) Find all products whose name mentions ‘gizmo’: SELECT * FROM Products WHERE PName LIKE ‘%gizmo%’

Eliminating Duplicates SELECT DISTINCT category FROM Product SELECT DISTINCT category FROM Product Compare to: SELECT category FROM Product SELECT category FROM Product Category Gadgets Photography Household Category Gadgets Photography Household

Joins in SQL Connect two or more tables: PNamePriceCategoryManufacturer Gizmo$19.99GadgetsGizmoWorks Powergizmo$29.99GadgetsGizmoWorks SingleTouch$149.99PhotographyCanon MultiTouch$203.99HouseholdHitachi Product Company CnameStockPriceCountry GizmoWorks25USA Canon65Japan Hitachi15Japan What is the connection between them ?

Joins Product (pname, price, category, manufacturer) Company (cname, stockPrice, country) Find all countries that manufacture some product in the ‘Gadgets’ category. SELECT country FROM Product, Company WHERE manufacturer=cname AND category=‘Gadgets’

Joins Product (pname, price, category, manufacturer) Purchase (buyer, seller, store, product) Person(persname, phoneNumber, city) Find names of people living in Seattle that bought some product in the ‘Gadgets’ category, and the names of the stores they bought such product from SELECT DISTINCT persname, store FROM Person, Purchase, Product WHERE persname=buyer AND product = pname AND city=‘Seattle’ AND category=‘Gadgets’

Complex Correlated Query Product ( pname, price, category, maker, year) Find products (and their manufacturers) that are more expensive than all products made by the same manufacturer before 1972 Powerful, but much harder to optimize ! SELECT DISTINCT pname, maker FROM Product AS x WHERE price > ALL (SELECT price FROM Product AS y WHERE x.maker = y.maker AND y.year < 1972); SELECT DISTINCT pname, maker FROM Product AS x WHERE price > ALL (SELECT price FROM Product AS y WHERE x.maker = y.maker AND y.year < 1972);

33 Aggregate Operators COUNT (*) COUNT ( [DISTINCT] A) A is a column SUM ( [DISTINCT] A) AVG ( [DISTINCT] A) MAX (A) MIN (A) Count the number of sailors SELECT COUNT (*) FROM Sailors S

34 Find name and age of the oldest sailor(s) SELECT S.sname, MAX (S.age) FROM Sailors S This is illegal, but why? Cannot combine a column with a value SELECT S.sname, S.age FROM Sailors S WHERE S.age = (SELECT MAX (S2.age) FROM Sailors S2)

Examples What is the average distance between plazas? select avg(distfromprev) from plazas How many events are there? select count(*) from events  29 How many distinct times are there? select count(distinct occurredat) from events  24 How do we find the duplicates?

Aggregation: Count SELECT Count(*) FROM Product WHERE year > 1995 SELECT Count(*) FROM Product WHERE year > 1995 Except COUNT, all aggregations apply to a single attribute

Aggregation: Count COUNT applies to duplicates, unless otherwise stated: SELECT Count(category) same as Count(*) FROM Product WHERE year > 1995 Better: SELECT Count(DISTINCT category) FROM Product WHERE year > 1995

Aggregate functions GROUP BY & HAVING GROUP BY for grouping the Query results Having to provide a condition on the group

Example SELECT Pnumber, Pname, COUNT(*) FROM PROJECT, WORKS_ON WHERE Pnumber = PNO GROUP BY Pnumber, Pname HAVING COUNT(*) >2

Grouping and Aggregation Usually, we want aggregations on certain parts of the relation. Purchase(product, date, price, quantity) Example 2: find total sales after 10/1 per product. SELECT product, Sum(price*quantity) AS TotalSales FROM Purchase WHERE date > “10/1” GROUPBY product SELECT product, Sum(price*quantity) AS TotalSales FROM Purchase WHERE date > “10/1” GROUPBY product Let’s see what this means…

Grouping and Aggregation 1. Compute the FROM and WHERE clauses. 2. Group by the attributes in the GROUPBY 3. Select one tuple for every group (and apply aggregation) SELECT can have (1) grouped attributes or (2) aggregates.

HAVING Clause SELECT product, Sum(price * quantity) FROM Purchase WHERE date > “9/1” GROUP BY product HAVING Sum(quantity) > 30 SELECT product, Sum(price * quantity) FROM Purchase WHERE date > “9/1” GROUP BY product HAVING Sum(quantity) > 30 Same query, except that we consider only products that had at least 100 buyers. HAVING clause contains conditions on aggregates.

Find all authors who wrote at least 10 documents: Attempt 1: with nested queries SELECT DISTINCT Author.name FROM Author WHERE count(SELECT Wrote.url FROM Wrote WHERE Author.login=Wrote.login) > 10 SELECT DISTINCT Author.name FROM Author WHERE count(SELECT Wrote.url FROM Wrote WHERE Author.login=Wrote.login) > 10 This is SQL by a novice

Find all authors who wrote at least 10 documents: Attempt 2: SQL style (with GROUP BY) SELECT Author.name FROM Author, Wrote WHERE Author.login=Wrote.login GROUP BY Author.name HAVING count(wrote.url) > 10 SELECT Author.name FROM Author, Wrote WHERE Author.login=Wrote.login GROUP BY Author.name HAVING count(wrote.url) > 10 This is SQL by an expert No need for DISTINCT: automatically from GROUP BY

SQL Using the following tables ageratingsnameSid 457Dustin22 331Brutus Lubber Andy Rusty58 357Horatio Zorba71 409Horatio Art bob95 Sailors

Example DaybidSid 10/10/ /10/ /8/ /7/ /10/ /6/ /12/ /5/ /8/ /8/ ColorBanemBid BlueInterlake101 RedInterlake102 GreenClipper103 RedMarine104 Reverses Boats

Queries Find the names and ages of all sailors Find all sailors with rating above 7 Find the name of sailors who have reserved boat number 104

48

49 Quiz Write an SQL query for following, and show the result on the example tables: Find all course names that were not taught in 1997 List the professor names along with all the departments ids where a professor has taught Find the names of students who took courses in all the departments that offered a course in Fall of 1995 or 1997.

Exercises Product (pname, price, category, manufacturer) Purchase (buyer, seller, store, product) Company (cname, stock price, country) Person(per-name, phone number, city) Ex #1: Find people who bought telephony products. Ex #2: Find names of people who bought American products Ex #3: Find names of people who bought American products and they live in Seattle. Ex #4: Find people who have both bought and sold something. Ex #5: Find people who bought stuff from Joe or bought products from a company whose stock prices is more than $50.

Mutating (non-read-only) queries Deletion Deletes whole tuples Insertion Inserts whole tuples Update Changes values of attributes Can generally do these to tables but not to views or other derived entities Note that renaming is not in itself derivation So a renamed relation can be mutated like the original

Update update name set assignment where P where clause is optional (selects tuples to be updated) Give Jane Swift a $20 balance update subscribers set balance = 20 where firstname= “ Jane ” and lastname= “ Swift ” Give every subscriber a $3 rebate update subscribers set balance = balance + 3

Update examples UPDATEP SETColor = ‘Yellow’ Weight = Weight + 5 City = NULL WHEREP# = 2

Deletion delete from name where P Delete all events from transponder 72 delete from events where tid=72 Delete all events relating to George Bush delete from events where tid in select from transponders as t, subscribers as s where t.tid = s.tid and s.firstname= “ George ” and s.lastname= “ Bush ”

Delete example DELETE FROM S WHERE S# =1

56 Insertions General form: Missing attribute  NULL. May drop attribute names if give them in order. INSERT INTO R(A1,…., An) VALUES (v1,…., vn) INSERT INTO Purchase(buyer, seller, product, store) VALUES (‘Joe’, ‘Fred’, ‘wakeup-clock-espresso-machine’, ‘The Sharper Image’) INSERT INTO Purchase(buyer, seller, product, store) VALUES (‘Joe’, ‘Fred’, ‘wakeup-clock-espresso-machine’, ‘The Sharper Image’) Example: Insert a new purchase to the database:

Insert example INSERT INTOP(P#, City, Weight) VALUES (7, ‘athens’, 24 )

Grant & revoke operations the format are GRANT operation ON table TO user REVOKEoperation FROM user

Examples GRANTINSERT, DELETE ON TABLE reserves TO ahmed GRANT ALL ON TABLE saliros TO hassan REVOKE SELECT ON TABLE boats FROM manal

Grant Example GRANT SELECT ON TABLE S TO u3 WITH GRANT OPTION REVOKE DELETE ON TABLE S FROM U2

61 Starwars Exercises char(name, race, homeworld, affiliation) planets(name, type, affiliation) timetable(cname, pname, movie, arrival, departure) Which planet does Princess Leia go to in movie3? SELECT distinct pname FROM timetable WHERE cname ='Princess Leia' and movie=3;

62 Starwars Exercises char(name, race, homeworld, affiliation) planets(name, type, affiliation) timetable(cname, pname, movie, arrival, departure) How many humans stay on Dagobah in movie 3? SELECT count(*) FROM timetable, characters WHERE movie=3 and pname =‘Dagobah’ and timetable.cname=characters.name and characters.race=‘Human’;

63 Starwars Exercises char(name, race, homeworld, affiliation) planets(name, type, affiliation) timetable(cname, pname, movie, arrival, departure) Who has been to his/her homeworld in movie 2? SELECT distinct c.name FROM characters c, timetable t WHERE c.name=t.cname and t.pname=c.homeworld and movie=2;

64 Starwars Exercises char(name, race, homeworld, affiliation) planets(name, type, affiliation) timetable(cname, pname, movie, arrival, departure) Find distinct names of the planets visited by those of race “ droid ”. SELECT distinct t.pname FROM char c, timetable t WHERE c.name=t.cname and c.race=‘droid’;

65 Starwars Exercises char(name, race, homeworld, affiliation) planets(name, type, affiliation) timetable(cname, pname, movie, arrival, departure) For each character and for each neutral planet, how much time total did the character spend on the planet? SELECT c.name, p.name, SUM(t.departure-t.arrival) as amount FROM characters c, timetable t, planets p WHERE t.cname=c.name and t.pname=p.name and p.affiliation='neutral' GROUP BY c.name, p.name;

EXERCISE 1: Queries 1. First and last name of employees who have no supervisor. 2. First and last name of employees supervised by Franklin Wong. 3. Last name of employees who have dependents. 4. Last name of employees who have daughters. 5. Last name of employees in department 5 who work more than 10 hours/week on ProductX. 6. Last name of supervisors of employees in department 5 who work more than 10 hours/week on ProductX. 7. First and last names of all department managers. 8. Salaries of all employees who have worked on the Reorganization project. 9. SSN of all employees who have worked on a project that is controlled by a department different than the department that they are assigned to. 10. Last name of all employees who are not married.

EXERCISE 1: Schema

EXERCISE 1: Instance

EXERCISE 2: Queries 1. List all airplane types that can land at any airport in San Francisco. 2. List the ids and number of seats for all airplanes that can land at any airport in Chicago. 3. List the name and phone number of all customers with a seat reserved on a flight that leaves Chicago O’Hara airport (ORD) on October 31, List all airlines that have seats available for flights leaving Los Angeles (LAX) on September 25, List all airlines that operate at San Jose International Airport (SJC).

Exercise 2: Schema

EXERCISE 3: Queries 1. Count the number of overdue books. 2. How many books by author Harry Crews are in the database? 3. Determine the number of library cards assigned to each borrower phone number. 4. Find names of all borrowers who do not have any book loans. 5. Do any library branches have every book?

EXERCISE 3: Schema