introduction to data management cse 344 - university of … · 2013-02-20 · introduction to data...
TRANSCRIPT
![Page 1: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/1.jpg)
1
Introduction to Data Management CSE 344
Lecture 9: SQL Wrap-up and RDBMs Architecture
CSE 344 - Winter 2013
![Page 2: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/2.jpg)
Announcements
• Webquiz due on Monday, 1/28
• Homework 3 is posted: due on Wednesday, 2/6
CSE 344 - Winter 2013 2
![Page 3: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/3.jpg)
Review: Indexes V(M, N);
SELECT * FROM V WHERE M=?
SELECT * FROM V WHERE N=?
Suppose we have queries like these:
Which of these indexes are helpful for each query?
SELECT * FROM V WHERE M=? and N=?
1. Index on V(M) 2. Index on V(N) 3. Index on V(M,N)
![Page 4: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/4.jpg)
Review: Indexes V(M, N);
SELECT * FROM V WHERE M=3
SELECT * FROM V WHERE N=5
Suppose V(M,N) contains 10,000 records: (1,1), (1,2), …, (100, 100)
SELECT * FROM V WHERE M=3 and N=5
Index on V(M)
B+Tree
1
2
3
4
…
…
100
List of pointers to records (3,1), (3,2), …, (3,100)
![Page 5: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/5.jpg)
Review: Indexes V(M, N);
SELECT * FROM V WHERE M=3
SELECT * FROM V WHERE N=5
Suppose V(M,N) contains 10,000 records: (1,1), (1,2), …, (100, 100)
SELECT * FROM V WHERE M=3 and N=5
How do we compute this query?
B+Tree
1
2
3
4
…
…
100
B+Tree
1
2
3
4
…
…
100
Index on V(M) Index on V(N)
![Page 6: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/6.jpg)
Review: Indexes V(M, N);
SELECT * FROM V WHERE M=3
SELECT * FROM V WHERE N=5
Suppose V(M,N) contains 10,000 records: (1,1), (1,2), …, (100, 100)
SELECT * FROM V WHERE M=3 and N=5
B+Tree
1,1
1,2
…
…
3,4
3,5
…
Single pointer to the record (3,5)
Index on V(M,N)
![Page 7: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/7.jpg)
Review: Indexes
Discussion • Why not create all three indexes V(M), V(N),
V(M,N)? • Suppose M is the primary key in V(M, N):
V = {(1,1), (2,2), …, (10000, 10000)} How do the two indexes V(M) and V(M,N) compare? Consider their utility for evaluating the predicate M=5
CSE 344 - Winter 2013 7
![Page 8: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/8.jpg)
8
Review: Subqueries in WHERE
Universal quantifiers are hard ! L
same as:
CSE 344 - Winter 2013
Universal quantifiers
Product (pname, price, cid) Company(cid, cname, city)
Find all companies that make only products with price < 200
Find all companies s.t. all their products have price < 200
![Page 9: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/9.jpg)
Review: Subqueries in WHERE
2. Find all companies s.t. all their products have price < 200
1. Find the other companies: i.e. s.t. some product ≥ 200 SELECT DISTINCT C.cname FROM Company C WHERE C.cid IN (SELECT P.cid FROM Product P WHERE P.price >= 200)
SELECT DISTINCT C.cname FROM Company C WHERE C.cid NOT IN (SELECT P.cid FROM Product P WHERE P.price >= 200)
9
Product (pname, price, cid) Company(cid, cname, city)
Find all companies s.t. all their products have price < 200
![Page 10: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/10.jpg)
10
Review: Subqueries in WHERE
SELECT DISTINCT C.cname FROM Company C WHERE NOT EXISTS (SELECT * FROM Product P WHERE P.cid = C.cid and P.price >= 200)
Using EXISTS:
CSE 344 - Winter 2013
Universal quantifiers
Product (pname, price, cid) Company(cid, cname, city)
Find all companies s.t. all their products have price < 200
![Page 11: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/11.jpg)
11
Review: Subqueries in WHERE
SELECT DISTINCT C.cname FROM Company C WHERE 200 > ALL (SELECT price FROM Product P WHERE P.cid = C.cid)
Using ALL:
CSE 344 - Winter 2013
Universal quantifiers
Product (pname, price, cid) Company(cid, cname, city)
Find all companies s.t. all their products have price < 200
![Page 12: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/12.jpg)
12
Question for Database Fans and their Friends
• Can we unnest the universal quantifier query ?
CSE 344 - Winter 2013
![Page 13: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/13.jpg)
Monotone Queries • Definition A query Q is monotone if:
– Whenever we add tuples to one or more input tables, the answer to the query will not lose any of of the tuples
pname price cid
Gizmo 19.99 c001
Gadget 999.99 c003
Camera 149.99 c001
Product (pname, price, cid) Company(cid, cname, city)
pname price cid
Gizmo 19.99 c001
Gadget 999.99 c003
Camera 149.99 c001
iPad 499.99 c001
cid cname city
c001 Sunworks Bonn
c002 DB Inc. Lyon
c003 Builder Lodtz
Product Company A B
149.99 Lodtz
19.99 Lyon
cid cname city
c001 Sunworks Bonn
c002 DB Inc. Lyon
c003 Builder Lodtz
A B
149.99 Lyon
19.99 Lyon
19.99 Bonn
149.99 Bonn
Is the mystery query monotone?
Product Company
Q
Q
![Page 14: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/14.jpg)
Monotone Queries • Theorem: A SELECT-FROM-WHERE query (without
subqueries or aggregates) is monotone.
• Proof. We use the nested loop semantics: if we insert a tuple in a relation Ri, this will not remove any tuples from the answer
CSE 344 - Winter 2013 14
SELECT a1, a2, …, ak FROM R1 AS x1, R2 AS x2, …, Rn AS xn WHERE Conditions
for x1 in R1 do for x2 in R2 do ….. for xn in Rn do if Conditions output (a1,…,ak)
![Page 15: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/15.jpg)
Monotone Queries • The query:
is not monotone
• Consequence: we cannot write it as a SELECT-FROM-WHERE query without nested subqueries 15
Find all companies s.t. all their products have price < 200
pname price cid
Gizmo 19.99 c001
cid cname city
c001 Sunworks Bonn
cname
Sunworks
pname price cid
Gizmo 19.99 c001
Gadget 999.99 c001
cid cname city
c001 Sunworks Bonn
cname
Product (pname, price, cid) Company(cid, cname, city)
![Page 16: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/16.jpg)
16
Queries that must be nested
• Queries with universal quantifiers or with negation
• Queries that have complex aggregates
CSE 344 - Winter 2013
![Page 17: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/17.jpg)
17
Practice these queries in SQL
Likes(drinker, beer) Frequents(drinker, bar) Serves(bar, beer)
Find drinkers that frequent some bar that serves some beer they like.
Find drinkers that frequent only bars that serves some beer they like.
Find drinkers that frequent only bars that serves only beer they like.
x: ∃y. ∃z. Frequents(x, y)∧Serves(y,z)∧Likes(x,z)
x: ∀y. Frequents(x, y)⇒ (∃z. Serves(y,z)∧Likes(x,z))
x: ∀y. Frequents(x, y)⇒ ∀z.(Serves(y,z) ⇒ Likes(x,z))
Ullman’s drinkers-bars-beers example
Find drinkers that frequent some bar that serves only beers they like.
x: ∃y. Frequents(x, y)∧∀z.(Serves(y,z) ⇒ Likes(x,z))
![Page 18: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/18.jpg)
GROUP BY v.s. Nested Queries
SELECT product, Sum(quantity) AS TotalSales FROM Purchase WHERE price > 1 GROUP BY product
SELECT DISTINCT x.product, (SELECT Sum(y.quantity) FROM Purchase y WHERE x.product = y.product AND price > 1) AS TotalSales FROM Purchase x WHERE price > 1
Why twice ? 18
Purchase(pid, product, quantity, price)
![Page 19: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/19.jpg)
Unnesting Aggregates
Find the number of companies in each city
SELECT DISTINCT city, (SELECT count(*) FROM Company Y WHERE X.city = Y.city) FROM Company X
SELECT city, count(*) FROM Company GROUP BY city
Equivalent queries
Note: no need for DISTINCT (DISTINCT is the same as GROUP BY)
CSE 344 - Winter 2013 19
Product (pname, price, cid) Company(cid, cname, city)
![Page 20: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/20.jpg)
Unnesting Aggregates
Find the number of products made in each city SELECT DISTINCT X.city, (SELECT count(*) FROM Product Y, Company Z WHERE Z.cid=Y.cid
AND Z.city = X.city) FROM Company X
SELECT X.city, count(*) FROM Company X, Product Y WHERE X.cid=Y.cid GROUP BY X.city
They are NOT equivalent !
(WHY?)
What if there are no products
for a city?
20
Product (pname, price, cid) Company(cid, cname, city)
![Page 21: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/21.jpg)
More Unnesting
• Find authors who wrote ≥ 10 documents: • Attempt 1: with nested queries
SELECT DISTINCT Author.name FROM Author WHERE (SELECT count(Wrote.url) FROM Wrote WHERE Author.login=Wrote.login) > 10
This is SQL by a novice
Author(login,name) Wrote(login,url)
CSE 344 - Winter 2013 21
![Page 22: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/22.jpg)
More Unnesting
• 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
This is SQL by
an expert
CSE 344 - Winter 2013 22
![Page 23: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/23.jpg)
Finding Witnesses
For each city, find the most expensive product made in that city
CSE 344 - Winter 2013 23
Product (pname, price, cid) Company(cid, cname, city)
![Page 24: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/24.jpg)
Finding Witnesses
SELECT x.city, max(y.price) FROM Company x, Product y WHERE x.cid = y.cid GROUP BY x.city;
Finding the maximum price is easy…
But we need the witnesses, i.e. the products with max price CSE 344 - Winter 2013 24
For each city, find the most expensive product made in that city
Product (pname, price, cid) Company(cid, cname, city)
![Page 25: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/25.jpg)
Finding Witnesses To find the witnesses, compute the maximum price in a subquery
CSE 344 - Winter 2013 25
SELECT DISTINCT u.city, v.pname, v.price FROM Company u, Product v, (SELECT x.city, max(y.price) as maxprice FROM Company x, Product y WHERE x.cid = y.cid GROUP BY x.city) w WHERE u.cid = v.cid and u.city = w.city and v.price=w.maxprice;
Product (pname, price, cid) Company(cid, cname, city)
![Page 26: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/26.jpg)
Finding Witnesses
There is a more concise solution here:
CSE 344 - Winter 2013 26
SELECT u.city, v.pname, v.price FROM Company u, Product v, Company x, Product y WHERE u.cid = v.cid and u.city = x.city and x.cid = y.cid GROUP BY u.city, v.pname, v.price HAVING v.price = max(y.price);
Product (pname, price, cid) Company(cid, cname, city)
![Page 27: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/27.jpg)
Finding Witnesses
And another one:
CSE 344 - Winter 2013 27
SELECT u.city, v.pname, v.price FROM Company u, Product v WHERE u.cid = v.cid and v.price >= ALL (SELECT y.price FROM Company x, Product y WHERE u.city=x.city and x.cid=y.cid);
Product (pname, price, cid) Company(cid, cname, city)
![Page 28: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/28.jpg)
Where We Are
• Motivation for using a DBMS for managing data • SQL, SQL, SQL
– Declaring the schema for our data (CREATE TABLE) – Inserting data one row at a time or in bulk (INSERT/.import) – Modifying the schema and updating the data (ALTER/UPDATE) – Querying the data (SELECT) – Tuning queries (CREATE INDEX)
• Next step: More knowledge of how DBMSs work – Client-server architecture – Relational algebra and query execution
CSE 344 - Winter 2013 28
![Page 29: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/29.jpg)
Data Management with SQLite
CSE 344 - Winter 2013 29
File
DBMS Application
(SQLite)
Data file
User Desktop
Disk
• So far, we have been managing data with SQLite as follows:
– One data file – One user – One DBMS application
• But only a limited number of scenarios work with such model
![Page 30: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/30.jpg)
Client-Server Architecture
… File2
File1
Server Machine
Connection (JDBC, ODBC)
30
Client Applications
DBMS Server Process
(SQL Server)
DISK
• One server running the database • Many clients, connecting via the ODBC or JDBC
(Java Database Connectivity) protocol
Data files
Supports many apps and many users simultaneously
![Page 31: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/31.jpg)
31
Client-Server Architecture
• One server that runs the DBMS (or RDBMS): – Your own desktop, or – Some beefy system, or – A cloud service (SQL Azure)
• Many clients run apps and connect to DBMS – Microsoft’s Management Studio (for SQL Server), or – psql (for postgres) – Some Java program (HW5) or some C++ program
• Clients “talk” to server using JDBC/ODBC protocol
CSE 344 - Winter 2013
![Page 32: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/32.jpg)
DBMS Deployment: 3 Tiers
Data files 32 Browser
DB Server
Great for web-based applications
Web Server & App Server
Connection (e.g., JDBC)
HTTP/SSL
![Page 33: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/33.jpg)
CSE 344 - Winter 2013
DBMS Deployment: Cloud
33 Users
Great for web-based applications too
HTTP/SSL
Developers
Data Files
DB Server Web & App Server
![Page 34: Introduction to Data Management CSE 344 - University of … · 2013-02-20 · Introduction to Data Management CSE 344 Lecture 9: SQL Wrap-up ... N); SELECT * FROM V WHERE M=? SELECT](https://reader031.vdocuments.site/reader031/viewer/2022022108/5c0233b509d3f26f1e8dd7be/html5/thumbnails/34.jpg)
Using a DBMS Server
1. Client application establishes connection to server 2. Client must authenticate self 3. Client submits SQL commands to server 4. Server executes commands and returns results
CSE 344 - Winter 2013 34
DBMS