Title: Carnegie Mellon Univ. Dept. of Computer Science 15-415 - Database Applications
1Carnegie Mellon Univ.Dept. of Computer
Science15-415 - Database Applications
- C. Faloutsos
- Rel. model - SQL part3
2General Overview - rel. model
- Formal query languages
- rel algebra and calculi
- Commercial query languages
- SQL
- QBE, (QUEL)
3Overview - detailed - SQL
- DML
- select, from, where, renaming, ordering,
- aggregate functions, nested subqueries
- insertion, deletion, update
- other parts DDL, embedded SQL, auth etc
4Reminder our Mini-U db
5DML - insertions etc
- insert into student
- values (123, smith, main)
- insert into student(ssn, name, address)
- values (123, smith, main)
6DML - insertions etc
- bulk insertion how to insert, say, a table of
foreign-students, in bulk?
7DML - insertions etc
- bulk insertion
- insert into student
- select ssn, name, address
- from foreign-student
8DML - deletion etc
- delete the record of smith
9DML - deletion etc
- delete the record of smith
- delete from student
- where namesmith
- (careful - it deletes ALL the smiths!)
10DML - update etc
- record the grade A for ssn123 and course
15-415 - update takes
- set gradeA
- where ssn123 and c-id15-415
- (will set to A ALL such records)
11DML - view update
- consider the db-takes view
- create view db-takes as
- (select from takes where c-id15-415)
- view updates are tricky - typically, we can only
update views that have no joins, nor aggregates - even so, consider changing a c-id to 15-222...
12DML - joins
- so far INNER joins, eg
- select ssn, c-name
- from takes, class
- where takes.c-id class.c-id
13Reminder our Mini-U db
14inner join
o.s. gone!
15outer join
16outer join
- select ssn, c-name
- from takes outer join class on takes.c-idclass.c-
id
17outer join
- left outer join
- right outer join
- full outer join
- natural join
18Overview - detailed - SQL
- DML
- select, from, where, renaming, ordering,
- aggregate functions, nested subqueries
- insertion, deletion, update
- other parts DDL, embedded SQL, auth etc
19Data Definition Language
- create table student
- (ssn char(9) not null,
- name char(30),
- address char(50),
- primary key (ssn) )
20Data Definition Language
- create table r( A1 D1, , An Dn,
- integrity-constraint1,
-
- integrity-constraint-n)
21Data Definition Language
- Domains
- char(n), varchar(n)
- int, numeric(p,d), real, double precision
- float, smallint
- date, time
22Data Definition Language
- integrity constraints
- primary key
- foreign key
- check(P)
23Data Definition Language
- create table takes
- (ssn char(9) not null,
- c-id char(5) not null,
- grade char(1),
- primary key (ssn, c-id),
- check grade in (A, B, C, D, F))
24Data Definition Language
- delete a table difference between
- drop table student
- delete from student
25Data Definition Language
- modify a table
- alter table student drop address
- alter table student add major char(10)
26Overview - detailed - SQL
- DML
- select, from, where, renaming, ordering,
- aggregate functions, nested subqueries
- insertion, deletion, update
- other parts DDL, embedded SQL, auth etc
27Embedded SQL
- from within a host language (eg., C, VB)
- EXEC SQL ltemb. SQL stmntgt END-EXEC
- Q why do we need embedded SQL??
28Embedded SQL
- SQL returns sets host language expects a tuple -
impedance mismatch! - solution cursor, ie., a pointer over the set
of tuples. - example
29Embedded SQL
- main()
-
- EXEC SQL
- declare c cursor for
- select from student
- END-EXEC
-
30Embedded SQL - ctnd
-
- EXEC SQL open c END-EXEC
-
- while( !sqlerror )
- EXEC SQL fetch c into cssn, cname, cad
- END-EXEC
- fprintf( , cssn, cname, cad)
-
31Embedded SQL - ctnd
-
- EXEC SQL close c END-EXEC
-
- / end main() /
32dynamic SQL
- main() / set all grades to users input /
-
- char sqlcmd update takes set grade ?
- EXEC SQL prepare dynsql from sqlcmd
- char inputgrade5a
- EXEC SQL execute dynsql using inputgrade
-
- / end main() /
33Overview - detailed - SQL
- DML
- select, from, where, renaming, ordering,
- aggregate functions, nested subqueries
- insertion, deletion, update
- other parts DDL, embedded SQL, auth etc
34SQL - misc
- Later, well see
- authorization
- grant select on student to ltuser-idgt
- transactions
- other features (triggers, assertions etc)
- see, e.g.
- http//www.contrib.andrew.cmu.edu/shadow/sql.html
35General Overview - rel. model
- Formal query languages
- rel algebra and calculi
- Commercial query languages
- SQL
- QBE, (QUEL)
36Rel. model - QBE
- Inspired by the R.D.C.
- P. -gt print (ie., select of SQL)
- _x, _y domain variables (ie., attribute names)
- Example find names of students taking 15-415
37Rel. model - QBE
38Rel. model - QBE
39Rel. model - QBE
names of students taking 15-415
40Rel. model - QBE
- condition box
- self-joins (Toms grandparents)
- ordering (AO., DO.)
- aggregation (SUM.ALL., COUNT.UNIQUE. , )
- group-by (G.)
41Rel. model - QBE
aggregate avg grade overall
42Rel. model - QBE
aggregate avg grade per student
43General Overview - rel. model
- Formal query languages
- rel algebra and calculi
- Commercial query languages
- SQL
- QBE, (QUEL)
44Rel. model - QUEL
- Used in INGRES only - of historical interest.
- Eg. find all ssns in mini-U
- range of s is student
- retrieve (s.ssn)
45Rel. model - QUEL
- general syntax
- range of . is t-name
- retrieve (attribute list)
- where condition
SQL select attr. list from t-name where condition
46Rel. model - QUEL
- very similar to SQL
- also supports aggregates, ordering etc
47General Overview
- Formal query languages
- rel algebra and calculi
- Commercial query languages
- SQL
- QBE, (QUEL)
- Integrity constraints
- Functional Dependencies
- Normalization - good DB design