Download presentation
Presentation is loading. Please wait.
Published byLynn Taylor Modified over 9 years ago
1
Temple University – CIS Dept. CIS331– Principles of Database Systems V. Megalooikonomou Relational Model – SQL Part II (based on notes by Silberchatz,Korth, and Sudarshan and notes by C. Faloutsos at CMU)
2
General Overview - rel. model Formal query languages rel algebra and calculi Commercial query languages SQL QBE, (QUEL)
3
Overview - detailed - SQL DML select, from, where, renaming, ordering, aggregate functions, nested subqueries insertion, deletion, update other parts: DDL, embedded SQL, auth etc
4
Reminder: our Mini-U db CLASS c-idc-nameunits cis331d.b.2 cis321o.s.2 TAKES SSNc-idgrade 123cis331A 234cis331B
5
DML - insertions etc insert into student values (“123”, “smith”, “main”) insert into student(ssn, name, address) values (“123”, “smith”, “main”)
6
DML - insertions etc bulk insertion: how to insert, say, a table of ‘foreign-student’s, in bulk?
7
DML - insertions etc bulk insertion: insert into student select ssn, name, address from foreign-student
8
DML - deletion etc delete the record of ‘smith’
9
DML - deletion etc delete the record of ‘smith’: delete from student where name=‘smith’ (careful - it deletes ALL the ‘smith’s!)
10
DML - update etc record the grade ‘A’ for ssn=123 and course cis351 update takes set grade=“A” where ssn=“123” and c-id=“cis351” (will set to “A” ALL such records)
11
DML - view update consider the db-takes view: create view db-takes as (select * from takes where c-id=“cis351”) view updates are tricky - typically, we can only update views that have no joins, nor aggregates even so, consider changing a c-id to cis333....
12
DML - joins so far: ‘INNER’ joins, eg: select ssn, c-name from takes, class where takes.c-id = class.c-id
13
Reminder: our Mini-U db CLASS c-idc-nameunits cis331d.b.2 cis321o.s.2 TAKES SSNc-idgrade 123cis331A 234cis331B
14
inner join SSNc-name 123d.b. 234d.b. o.s.: gone! TAKES SSNc-idgrade 123cis331A 234cis331B CLASS c-idc-nameunits cis331d.b.2 cis321o.s.2
15
outer join SSNc-name 123d.b. 234d.b. nullo.s. TAKES SSNc-idgrade 123cis331A 234cis331B CLASS c-idc-nameunits cis331d.b.2 cis321o.s.2
16
outer join SSNc-name 123d.b. 234d.b. nullo.s. select ssn, c-name from takes outer join class on takes.c- id=class.c-id
17
outer join left outer join right outer join full outer join natural join
18
Overview - detailed - SQL DML select, from, where, renaming, ordering, aggregate functions, nested subqueries insertion, deletion, update other parts: DDL, embedded SQL, auth etc
19
Data Definition Language create table student (ssn char(9) not null, name char(30), address char(50), primary key (ssn) )
20
Data Definition Language create table r( A1 D1, …, An Dn, integrity-constraint1, … integrity-constraint-n)
21
Data Definition Language Domains: char(n), varchar(n) int, numeric(p,d), real, double precision float, smallint date, time
22
Data Definition Language integrity constraints: primary key foreign key check(P)
23
Data 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”))
24
Data Definition Language delete a table: difference between drop table student delete from student
25
Data Definition Language modify a table: alter table student drop address alter table student add major char(10)
26
Overview - detailed - SQL DML select, from, where, renaming, ordering, aggregate functions, nested subqueries insertion, deletion, update other parts: DDL, embedded SQL, auth etc
27
Embedded SQL from within a ‘host’ language (eg., ‘C’, ‘VB’) EXEC SQL END-EXEC Q: why do we need embedded SQL??
28
Embedded SQL SQL returns sets; host language expects a tuple - impedance mismatch! solution: ‘cursor’, i.e., a ‘pointer’ over the set of tuples example:
29
Embedded SQL main(){ … EXEC SQL declare c cursor for select * from student END-EXEC …
30
Embedded SQL - ctn’d … EXEC SQL open c END-EXEC … while( !sqlerror ){ EXEC SQL fetch c into :cssn, :cname, :cad END-EXEC fprintf( …, cssn, cname, cad); }
31
Embedded SQL - ctn’d … EXEC SQL close c END-EXEC … } /* end main() */
32
dynamic SQL Construct and submit SQL queries at run time “?”: a place holder for a value provided when it is executed main(){ /* set all grades to user’s input */ … char *sqlcmd=“ update takes set grade = ?”; EXEC SQL prepare dynsql from :sqlcmd ; char inputgrade[5]=“a”; EXEC SQL execute dynsql using :inputgrade; … } /* end main() */
33
Overview - detailed - SQL DML select, from, where, renaming, ordering, aggregate functions, nested subqueries insertion, deletion, update other parts: DDL, embedded SQL, authorization, etc
34
SQL - misc Later, we’ll see authorization: grant select on student to transactions other features (triggers, assertions etc)
35
General Overview - rel. model Formal query languages rel algebra and calculi Commercial query languages SQL QBE, (QUEL)
36
Rel. model – Introduction to QBE Inspired by the domain relational calculus “P.” -> print (ie., ‘select’ of SQL) _x, _y: domain variables (ie., attribute names) Example: find names of students taking cis351
37
Rel. model - QBE CLASS c-idc-nameunits cis331d.b.2 cis321o.s.2 TAKES SSNc-idgrade 123cis331A 234cis331B
38
Rel. model - QBE
39
SSNc-idgrade _xcis351 names of students taking cis351
40
Rel. model - QBE condition box self-joins (Tom’s grandparents) ordering (AO., DO.) aggregation (SUM.ALL., COUNT.UNIQUE., …) group-by (G.)
41
Rel. model - QBE aggregate: avg grade overall:
42
Rel. model - QBE aggregate: avg. grade per student:
43
General Overview - rel. model Formal query languages rel algebra and calculi Commercial query languages SQL QBE, (QUEL)
44
Rel. model - QUEL Used in INGRES only - of historical interest. Eg.: find all ssn’s in mini-U: range of s is student; retrieve (s.ssn);
45
Rel. model - QUEL general syntax: range of …. is t-name retrieve (attribute list) where condition SQL select attr. list from t-name where condition
46
Rel. model - QUEL very similar to SQL also supports aggregates, ordering etc
47
General Overview Formal query languages rel algebra and calculi Commercial query languages SQL QBE, (QUEL) Integrity constraints Functional Dependencies Normalization - ‘good’ DB design
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.