1 Lecture 5: SQL Schema & Views. 2 Data Definition in SQL So far we have see the Data Manipulation Language, DML Next: Data Definition Language (DDL)

Slides:



Advertisements
Similar presentations
Chapter 1 The Study of Body Function Image PowerPoint
Advertisements

Structured Query Language (SQL)
Jeopardy Q 1 Q 6 Q 11 Q 16 Q 21 Q 2 Q 7 Q 12 Q 17 Q 22 Q 3 Q 8 Q 13
Jeopardy Q 1 Q 6 Q 11 Q 16 Q 21 Q 2 Q 7 Q 12 Q 17 Q 22 Q 3 Q 8 Q 13
FACTORING ax2 + bx + c Think “unfoil” Work down, Show all steps.
Relational data objects 1 Lecture 6. Relational data objects 2 Answer to last lectures activity.
1 Term 2, 2004, Lecture 6, Views and SecurityMarian Ursu, Department of Computing, Goldsmiths College Views and Security 3.
Data Definition and Integrity Constraints
SQL: The Query Language Part 2
1 Lecture 4: Advanced SQL. 2 INTERSECT and EXCEPT: (missing from MySQL) (SELECT R.A, R.B FROM R) INTERSECT (SELECT S.A, S.B FROM S) (SELECT R.A, R.B FROM.
ABC Technology Project
9 Copyright © 2004, Oracle. All rights reserved. Using DDL Statements to Create and Manage Tables.
Creating Tables, Setting Constraints, and Datatypes What is a constraint and why do we use it? What is a datatype? What does CHAR mean? Page 97 in Course.
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.
Yong Choi School of Business CSU, Bakersfield
Chapter Information Systems Database Management.
Creating Tables. 2 home back first prev next last What Will I Learn? List and provide an example of each of the number, character, and date data types.
VOORBLAD.
SQL Introduction Standard language for querying and manipulating data Structured Query Language Many standards out there: SQL92, SQL2, SQL3. Vendors support.
Note: A bolded number or letter refers to an entire lesson or appendix. A Adding Data Through a View ADD_MONTHS Function 03-22, 03-23, 03-46,
© 2012 National Heart Foundation of Australia. Slide 2.
Fundamentals of Database Systems Fourth Edition El Masri & Navathe
25 seconds left…...
We will resume in: 25 Minutes.
©Brooks/Cole, 2001 Chapter 12 Derived Types-- Enumerated, Structure and Union.
PSSA Preparation.
1 Lecture 03: Advanced SQL. 2 Outline Unions, intersections, differences Subqueries, Aggregations, NULLs Modifying databases, Indexes, Views Reading:
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.
SQL April 25 th, Agenda Grouping and aggregation Sub-queries Updating the database Views More on views.
1 Lecture 06: SQL Friday, January 14, Outline Indexes Defining Views (6.7) Constraints (Chapter 7) We begin E/R diagrams (Chapter 2)
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.
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.
M.P. Johnson, DBMS, Stern/NYU, Spring C : Database Management Systems Lecture #15 M.P. Johnson Stern School of Business, NYU Spring, 2005.
SQL Overview Defining a Schema CPSC 315 – Programming Studio Spring 2008 Project 1, Lecture 3 Slides adapted from those used by Jeffrey Ullman, via Jennifer.
Correlated Queries SELECT title FROM Movie AS Old WHERE year < ANY (SELECT year FROM Movie WHERE title = Old.title); Movie (title, year, director, length)
Integrity Constraints An important functionality of a DBMS is to enable the specification of integrity constraints and to enforce them. Knowledge of integrity.
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 Lecture 7: End of Normal Forms Outerjoins, Schema Creation and Views Wednesday, January 28th, 2004.
SQL (almost end) April 26 th, Agenda HAVING clause Views Modifying views Reusing views.
SQL April 22 th, Agenda Union, intersections Sub-queries Modifying the database Views Modifying views Reusing views.
1 Lecture 6: Views Friday, January 17th, Updating Views How can I insert a tuple into a table that doesn’t exist? Employee(ssn, name, department,
SQL Basics. What is SQL? SQL stands for Structured Query Language. SQL lets you access and manipulate databases.
CMPT 258 Database Systems The Relationship Model (Chapter 3)
Week 8-9 SQL-1. SQL Components: DDL, DCL, & DML SQL is a very large and powerful language, but every type of SQL statement falls within one of three main.
1 Introduction to Database Systems CSE 444 Lecture 04: SQL April 7, 2008.
1 Lecture 5: Outerjoins, Schema Creation and Views Wednesday, January 15th, 2003.
Aggregation SELECT Sum(price) FROM Product WHERE manufacturer=“Toyota” SQL supports several aggregation operations: SUM, MIN, MAX, AVG, COUNT Except COUNT,
1 Lecture 06 Data Modeling: E/R Diagrams Wednesday, January 18, 2006.
1 Lecture 05: SQL Wednesday, October 8, Outline Database Modifications (6.5) Defining Relation Schema in SQL (6.6) Indexes Defining Views (6.7)
CPSC-310 Database Systems
Lecture 05: SQL Wednesday, January 12, 2005.
Cours 7: Advanced SQL.
Modifying the Database
Introduction to Database Systems CSE 444 Lecture 04: SQL
SQL OVERVIEW DEFINING A SCHEMA
SQL Introduction Standard language for querying and manipulating data
Lecture 05 Views, Constraints
Lecture 12: SQL Friday, October 20, 2000.
SQL-1 Week 8-9.
Lecture 4: SQL Thursday, January 11, 2001.
Integrity Constraints
Lecture 06: SQL Monday, October 11, 2004.
Lecture 4: SQL Wednesday, April 10, 2002.
Syllabus Introduction Website Management Systems
CSE544 SQL Monday, April 5, 2004.
Lecture 05: SQL Wednesday, October 9, 2002.
Lecture 14: SQL Wednesday, October 31, 2001.
Presentation transcript:

1 Lecture 5: SQL Schema & Views

2 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

3 Data Types in SQL Characters: –CHAR(20)-- fixed length –VARCHAR(40)-- variable length Numbers: –INT, REAL plus variations Times and dates: –DATE, DATETIME Reusing domains: CREATE DOMAIN address AS VARCHAR(55)

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

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

6 Default Values Specifying default values: CREATE TABLE Person( nameVARCHAR(30), ssnINT, ageSHORTINTDEFAULT100, cityVARCHAR(30) DEFAULT Seattle, genderCHAR(1) DEFAULT ?, BirthdateDATE CREATE TABLE Person( nameVARCHAR(30), ssnINT, ageSHORTINTDEFAULT100, cityVARCHAR(30) DEFAULT Seattle, genderCHAR(1) DEFAULT ?, BirthdateDATE The default of defaults: NULL

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

8 Create an index on name: B+ trees have fan-out of 100s: max 4 levels ! Indexes AdamBettyCharles….Smith….

9 Creating Indexes CREATE INDEX nameIndex ON Person(name) Syntax:

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

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

12 Defining Views Views are relations, except that they are not physically stored. For presenting different information to different users Employee(ssn, name, department, project, salary) Payroll has access to Employee, others only to Developers CREATE VIEW Developers AS SELECT name, project FROM Employee WHERE department = Development CREATE VIEW Developers AS SELECT name, project FROM Employee WHERE department = Development

13 A Different View Person(name, city) Purchase(buyer, seller, product, store) Product(name, maker, category) We have a new virtual table: Seattle-view(buyer, seller, product, store) CREATE VIEW Seattle-view AS SELECT buyer, seller, product, store FROM Person, Purchase WHERE Person.city = Seattle AND Person.name = Purchase.buyer CREATE VIEW Seattle-view AS SELECT buyer, seller, product, store FROM Person, Purchase WHERE Person.city = Seattle AND Person.name = Purchase.buyer

14 A Different View SELECT name, store FROM Seattle-view, Product WHERE Seattle-view.product = Product.name AND Product.category = shoes SELECT name, store FROM Seattle-view, Product WHERE Seattle-view.product = Product.name AND Product.category = shoes We can later use the view:

15 What Happens When We Query a View ? SELECT name, Seattle-view.store FROM Product, Seattle-view WHERE Seattle-view.product = Product.name AND Product.category = shoes SELECT name, Seattle-view.store FROM Product, Seattle-view WHERE Seattle-view.product = Product.name AND Product.category = shoes SELECTname, Seattle-view.store FROMProduct, (SELECTbuyer, seller, product, store FROMPerson, Purchase WHEREPerson.city = Seattle AND Person.name = Purchase.buyer) AS Seattle-view WHERESeattle-view.product = Product.name AND Product.category = shoes SELECTname, Seattle-view.store FROMProduct, (SELECTbuyer, seller, product, store FROMPerson, Purchase WHEREPerson.city = Seattle AND Person.name = Purchase.buyer) AS Seattle-view WHERESeattle-view.product = Product.name AND Product.category = shoes

16 Types of Views Virtual views: –Used in databases –Computed only on-demand – slow at runtime –Always up to date Materialized views –Used in data warehouses –Precomputed offline – fast at runtime –May have stale (old) data

17 Updating Views How can I insert a tuple into a table that doesnt exist? Employee(ssn, name, department, project, salary) CREATE VIEW Developers AS SELECT name, project FROM Employee WHERE department = Development CREATE VIEW Developers AS SELECT name, project FROM Employee WHERE department = Development INSERT INTO Developers VALUES(Joe, Optimizer) INSERT INTO Employee VALUES(NULL, Joe, NULL, Optimizer, NULL) If we make the following insertion: It becomes: Is there anything missing?

18 Non-Updatable Views CREATE VIEW Seattle-view AS SELECT seller, product, store FROM Person, Purchase WHERE Person.city = Seattle AND Person.name = Purchase.buyer CREATE VIEW Seattle-view AS SELECT seller, product, store FROM Person, Purchase WHERE Person.city = Seattle AND Person.name = Purchase.buyer How can we add the following tuple to the view? (Joe, Shoe Model 12345, Nine West) We need to add Joe to Person first, but how do we know this?

19 Non-Updatable Views When we need to update several tables When the SELECT uses a column more than once When DISTINCT is used When there is an Aggregate, GROUP BY, HAVING When there is UNION (ALL) Discussion: are they really not updatable?

20 Answering Queries Using Views What if we want to use a set of views to answer a query. Why? –The obvious reason… –Answering queries over web data sources. Very cool stuff! (i.e., lots of research on this).

21 Reusing a Materialized View Suppose I have only the result of SeattleView: SELECT buyer, seller, product, store FROM Person, Purchase WHERE Person.city = Seattle AND Person.name = Purchase.buyer and I want to answer the query SELECT buyer, seller FROM Person, Purchase WHERE Person.city = Seattle AND Person.name = Purchase.buyer AND Purchase.product=gizmo. Then, I can rewrite the query using the view.

22 Query Rewriting Using Views Rewritten query: SELECT buyer, seller FROM SeattleView WHERE product= gizmo Original query: SELECT buyer, seller FROM Person, Purchase WHERE Person.city = Seattle AND Person.name = Purchase.buyer AND Purchase.product=gizmo.

23 Another Example I still have only the result of SeattleView: SELECT buyer, seller, product, store FROM Person, Purchase WHERE Person.city = Seattle AND Person.name = Purchase.buyer but I want to answer the query SELECT buyer, seller FROM Person, Purchase WHERE Person.city = Seattle AND Person.name = Purchase.buyer AND Person.Phone LIKE %.

24 And Now? I still have only the result of: SELECT buyer, seller, product, store FROM Person, Purchase, Product WHERE Person.city = Seattle AND Person.name = Purchase.buyer AND Purchase.product = Product.name but I want to answer the query SELECT buyer, seller FROM Person, Purchase WHERE Person.city = Seattle AND Person.name = Purchase.buyer.

25 And Now? I still have only the result of: SELECT seller, buyer, Sum(Price) FROM Purchase WHERE Purchase.store = The Bon Group By seller, buyer but I want to answer the query SELECT seller, Sum(Price) FROM Purchase WHERE Person.store = The Bon Group By seller And what if its the other way around?

26 Finally… I still have only the result of: SELECT seller, buyer, Count(*) FROM Purchase WHERE Purchase.store = The Bon Group By seller, buyer but I want to answer the query SELECT seller, Count(*) FROM Purchase WHERE Person.store = The Bon Group By seller

27 The General Problem Given a set of views V1,…,Vn, and a query Q, can we answer Q using only the answers to V1,…,Vn? Why do we care? –We can answer queries more efficiently. –We can query data sources on the WWW in a principled manner. Many, many papers on this problem.

28 Querying the WWW Assume a virtual schema of the WWW, e.g., –Course(number, university, title, prof, quarter) Every data source on the web contains the answer to a view over the virtual schema: TAU database: SELECT number, title, prof FROM Course WHERE univ=TAU AND quarter=2/02 Stanford database: SELECT number, title, prof, quarter FROM Course WHERE univ=Stanford User query: find all professors who teach database systems