Lecture 04: SQL. Wednesday, October 4, 2006

Similar documents
Lecture 04: SQL. Monday, April 2, 2007

SQL. Assit.Prof Dr. Anantakul Intarapadung

Introduction to Data Management CSE 344

Lecture 03: SQL. Friday, April 2 nd, Dan Suciu Spring

SQL. Structured Query Language

Introduction to Database Systems CSE 414

Principles of Database Systems CSE 544. Lecture #2 SQL The Complete Story

Lecture 4: Advanced SQL Part II

CSC 261/461 Database Systems Lecture 5. Fall 2017

Introduction to SQL Part 2 by Michael Hahsler Based on slides for CS145 Introduction to Databases (Stanford)

Introduction to Database Systems CSE 414

CS 2451 Database Systems: More SQL

Introduction to Relational Databases

CSE 344 AUGUST 1 ST ENTITIES

Introduction to Data Management CSE 344

Please pick up your name card

Introduction to Data Management CSE 344

CSE 344 MAY 14 TH ENTITIES

Introduction to Data Management CSE 344

Database Systems CSE 414

Entity/Relationship Modelling

Introduction to Database Systems

Introduction to Data Management CSE 344

Where Are We? Next Few Lectures. Integrity Constraints Motivation. Constraints in E/R Diagrams. Keys in E/R Diagrams

Database design and implementation CMPSCI 645. Lecture 06: Constraints and E/R model

CS 564 Midterm Review

CSE 344 JULY 30 TH DB DESIGN (CH 4)

Database Systems CSE 414

Introduction to Data Management CSE 344

Announcements. Database Design. Database Design. Database Design Process. Entity / Relationship Diagrams. Introduction to Data Management CSE 344

Database Systems CSE 414

Principles of Database Systems CSE 544. Lecture #2 SQL, Relational Algebra, Relational Calculus

L07: SQL: Advanced & Practice. CS3200 Database design (sp18 s2) 1/11/2018

Lectures 2&3: Introduction to SQL

Database Design Process Entity / Relationship Diagrams

Introduction to SQL Part 1 By Michael Hahsler based on slides for CS145 Introduction to Databases (Stanford)

Introduction to SQL. IT 5101 Introduction to Database Systems. J.G. Zheng Fall 2011

Database design and implementation CMPSCI 645. Lecture 04: SQL and Datalog

Database Systems CSE 303. Lecture 02

Database Systems CSE 303. Lecture 02

DS Introduction to SQL Part 1 Single-Table Queries. By Michael Hahsler based on slides for CS145 Introduction to Databases (Stanford)

Lecture 2: Introduction to SQL

Information Systems Engineering. SQL Structured Query Language DDL Data Definition (sub)language

Announcements. Database Design. Database Design. Database Design Process. Entity / Relationship Diagrams. Database Systems CSE 414

L12: ER modeling 5. CS3200 Database design (sp18 s2) 2/22/2018

SQL DATA DEFINITION LANGUAGE

CSE 344 APRIL 16 TH SEMI-STRUCTURED DATA

SQL DATA DEFINITION LANGUAGE

Chapter 7 Advanced SQL. Objectives

2. E/R Design Considerations

SQL Functionality SQL. Creating Relation Schemas. Creating Relation Schemas

SQL: Concepts. Todd Bacastow IST 210: Organization of Data 2/17/ IST 210

Assignment 6: SQL III Solution

SQL Overview. CSCE 315, Fall 2017 Project 1, Part 3. Slides adapted from those used by Jeffrey Ullman, via Jennifer Welch

SQL DATA DEFINITION LANGUAGE

Announcements. JSon Data Structures. JSon Syntax. JSon Semantics: a Tree! JSon Primitive Datatypes. Introduction to Database Systems CSE 414

Announcements. Outline UNIQUE. (Inner) joins. (Inner) Joins. Database Systems CSE 414. WQ1 is posted to gradebook double check scores

The Relational Data Model

CMPT 354: Database System I. Lecture 3. SQL Basics

ENTITY-RELATIONSHIP MODEL. CS 564- Spring 2018

CSE 544 Principles of Database Management Systems

Introduction to Data Management CSE 344

Keys, SQL, and Views CMPSCI 645

Querying Data with Transact SQL

The Relational Model of Data (ii)

Lecture 4. Lecture 4: The E/R Model

CSC 261/461 Database Systems Lecture 14. Spring 2017 MW 3:25 pm 4:40 pm January 18 May 3 Dewey 1101

CS 327E Lecture 2. Shirley Cohen. January 27, 2016

Lecture 3 SQL. Shuigeng Zhou. September 23, 2008 School of Computer Science Fudan University

SQL: Data Definition Language

Chapter 6 The database Language SQL as a tutorial

CSE 544 Principles of Database Management Systems

Introduction to Database Systems CSE 414

Introduction to SQL SELECT-FROM-WHERE STATEMENTS SUBQUERIES DATABASE SYSTEMS AND CONCEPTS, CSCI 3030U, UOIT, COURSE INSTRUCTOR: JAREK SZLICHTA

CMPT 354: Database System I. Lecture 2. Relational Model

Announcements. Subqueries. Lecture Goals. 1. Subqueries in SELECT. Database Systems CSE 414. HW1 is due today 11pm. WQ1 is due tomorrow 11pm

Lecture 5. Lecture 5: The E/R Model

SELECT Product.name, Purchase.store FROM Product JOIN Purchase ON Product.name = Purchase.prodName

Exam code: Exam name: Database Fundamentals. Version 16.0

Polls on Piazza. Open for 2 days Outline today: Next time: "witnesses" (traditionally students find this topic the most difficult)

Introduction to SQL. Select-From-Where Statements Multirelation Queries Subqueries. Slides are reused by the approval of Jeffrey Ullman s

The Entity-Relationship Model (ER Model) - Part 2

JSON - Overview JSon Terminology

Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications. Today's Party. Example Database. Faloutsos/Pavlo CMU /615

Big Data Processing Technologies. Chentao Wu Associate Professor Dept. of Computer Science and Engineering

Database Systems CSE 414

CSE 344 JANUARY 19 TH SUBQUERIES 2 AND RELATIONAL ALGEBRA

Database Management

user specifies what is wanted, not how to find it

T-SQL Training: T-SQL for SQL Server for Developers

COSC344 Database Theory and Applications. Lecture 6 SQL Data Manipulation Language (1)

SQL - Subqueries and. Schema. Chapter 3.4 V4.0. Napier University

Database Languages. A DBMS provides two types of languages: Language for accessing & manipulating the data. Language for defining a database schema

SQL: Data Manipulation Language

MTAT Introduction to Databases

COMP 430 Intro. to Database Systems

L Information Systems for Engineers. Final exam. ETH Zurich, Autumn Semester 2017 Friday

SQL: Data De ni on. B0B36DBS, BD6B36DBS: Database Systems. h p:// Lecture 3

DS Introduction to SQL Part 2 Multi-table Queries. By Michael Hahsler based on slides for CS145 Introduction to Databases (Stanford)

Introduction to Database Systems CSE 444

Transcription:

Lecture 04: SQL Wednesday, October 4, 2006 1

Outline The Project Nulls (6.1.6) Outer joins (6.3.8) Database Modifications (6.5) 2

The Project Application: Boutique online music and book store Project: Create database, access through a Web interface Import real data and develop inventory logic Customer checkout Advanced functionality (TBD) 3

The Project Team: Two people Find partner by Friday Tools: SQL Server 2005 Visual Studio 2005 C# 2.0 ASP.NET 2.0 4

The Project Phase 1: posted today, due October 18 Find partner by Friday ( Phase 0 ) Create a schema Populate the database: fake data for now Access through a simple Web interface 5

NULLS in SQL Whenever we don t have a value, we can put a NULL Can mean many things: Value does not exists Value exists but is unknown Value not applicable Etc. The schema specifies for each attribute if can be null (nullable attribute) or not How does SQL cope with tables that have NULLs? 6

Null Values If x= NULL then 4*(3-x)/7 is still NULL If x= NULL then x= Joe is UNKNOWN In SQL there are three boolean values: FALSE = 0 UNKNOWN = 0.5 TRUE = 1 7

Null Values C1 AND C2 = min(c1, C2) C1 OR C2 = max(c1, C2) NOT C1 = 1 C1 SELECT * FROM Person WHERE (age < 25) AND (height > 6 OR weight > 190) Rule in SQL: include only tuples that yield TRUE E.g. age=20 heigth=null weight=200 8

Unexpected behavior: Null Values SELECT * FROM Person WHERE age < 25 OR age >= 25 Some Persons are not included! 9

Null Values Can test for NULL explicitly: x IS NULL x IS NOT NULL SELECT * FROM Person WHERE age < 25 OR age >= 25 OR age IS IS NULL Now it includes all Persons 10

Outerjoins Explicit joins in SQL = inner joins : Product(name, category) Purchase(prodName, store) SELECT Product.name, Purchase.store FROM Product JOIN Purchase ON Product.name = Purchase.prodName Same as: SELECT Product.name, Purchase.store FROM Product, Purchase WHERE Product.name = Purchase.prodName But Products that never sold will be lost! 11

Outerjoins Left outer joins in SQL: Product(name, category) Purchase(prodName, store) SELECT Product.name, Purchase.store FROM Product LEFT OUTER JOIN Purchase ON Product.name = Purchase.prodName 12

Product Purchase Name Category ProdName Store Gizmo gadget Gizmo Wiz Camera Photo Camera Ritz OneClick Photo Camera Wiz Name Gizmo Camera Camera OneClick Store Wiz Ritz Wiz NULL 13

Application Compute, for each product, the total number of sales in September Product(name, category) Purchase(prodName, month, store) SELECT Product.name, count(*) FROM Product, Purchase WHERE Product.name = Purchase.prodName and Purchase.month = September GROUP BY Product.name What s wrong? 14

Application Compute, for each product, the total number of sales in September Product(name, category) Purchase(prodName, month, store) SELECT Product.name, count(*) FROM Product LEFT OUTER JOIN Purchase ON Product.name = Purchase.prodName and Purchase.month = September GROUP BY Product.name Now we also get the products who sold in 0 quantity 15

Outer Joins Left outer join: Include the left tuple even if there s no match Right outer join: Include the right tuple even if there s no match Full outer join: Include the both left and right tuples even if there s no match 16

Modifying the Database Three kinds of modifications Insertions Deletions Updates Sometimes they are all called updates 17

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

Insertions INSERT INTO PRODUCT(name) SELECT DISTINCT Purchase.product FROM Purchase WHERE Purchase.date > 10/26/01 The query replaces the VALUES keyword. Here we insert many tuples into PRODUCT 19

Insertion: an Example Product(name, listprice, category) Purchase(prodName, buyername, price) prodname is foreign key in Product.name Suppose database got corrupted and we need to fix it: Product Purchase prodname buyername name listprice category camera John price 200 gizmo 100 gadgets gizmo Smith 80 camera Smith 225 Task: insert in Product all prodnames from Purchase 20

Insertion: an Example INSERT INTO Product(name) SELECT DISTINCT prodname FROM Purchase WHERE prodname NOT IN IN (SELECT name FROM Product) name listprice category gizmo 100 Gadgets camera - - 21

Insertion: an Example INSERT INTO Product(name, listprice) SELECT DISTINCT prodname, price FROM Purchase WHERE prodname NOT IN IN (SELECT name FROM Product) name listprice category gizmo 100 Gadgets camera 200 - camera?? 225?? - Depends on the implementation 22

Deletions Example: DELETE FROM PURCHASE WHERE seller = Joe AND product = Brooklyn Bridge Factoid about SQL: there is no way to delete only a single occurrence of a tuple that appears twice in a relation. 23

Updates Example: UPDATE PRODUCT SET price = price/2 WHERE Product.name IN IN (SELECT product FROM Purchase WHERE Date = Oct, 25, 25, 1999 ); 24

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 definition: defining the schema. Create tables Delete tables Modify table schema Indexes: to improve performance 25

Creating Tables CREATE TABLE Person( name VARCHAR(30), social-security-number INT, age SHORTINT, city VARCHAR(30), gender BIT(1), Birthdate DATE ); ); 26

Deleting or Modifying a Table Deleting: Example: DROP Person; Exercise with care!! Altering: (adding or removing an attribute). Example: ALTER TABLE Person ADD phone CHAR(16); ALTER TABLE Person DROP age; What happens when you make changes to the schema? 27

Default Values Specifying default values: CREATE TABLE Person( name VARCHAR(30), social-security-number INT, age SHORTINT DEFAULT 100, city VARCHAR(30) DEFAULT Seattle, gender CHAR(1) DEFAULT?, Birthdate DATE The default of defaults: NULL 28

Indexes REALLY important to speed up query processing time. Suppose we have a relation Person (name, age, city) SELECT * FROM Person WHERE name = Smith Sequential scan of the file Person may take long 29

Indexes Create an index on name: Adam Betty Charles. Smith. B+ trees have fan-out of 100s: max 4 levels! Will discuss in the second half of this course 30

Creating Indexes Syntax: CREATE INDEX nameindex ON Person(name) 31

Creating Indexes Indexes can be useful in range queries too: CREATE INDEX ageindex ON Person (age) B+ trees help in: SELECT * FROM Person WHERE age > 25 25 AND age < 28 28 Why not create indexes on everything? 32

Creating Indexes Indexes can be created on more than one attribute: Example: Helps in: and even in: But not in: CREATE INDEX doubleindex ON ON Person (age, (age, city) city) SELECT * FROM Person WHERE age age = 55 55 AND city city = Seattle SELECT * FROM Person WHERE age age = 55 55 SELECT * FROM Person WHERE city city = Seattle 33

The Index Selection Problem Why not build an index on every attribute? On every pair of attributes? Etc.? The index selection problem is hard: balance the query cost v.s. the update cost, in a large application workload 34