jef wijsen - université de monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/sql.pdfget the...

45
SQL Jef Wijsen UMONS May 14, 2018 Jef Wijsen (UMONS) SQL May 14, 2018 1 / 45

Upload: others

Post on 12-Mar-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

SQL

Jef Wijsen

UMONS

May 14, 2018

Jef Wijsen (UMONS) SQL May 14, 2018 1 / 45

Page 2: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

1 Create

2 Alter and Drop

3 Select

4 Update

5 Views

6 Embedded SQL

Jef Wijsen (UMONS) SQL May 14, 2018 2 / 45

Page 3: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

S S# SNAME STATUS CITYS1 Smith 20 LondonS2 Jones 10 ParisS3 Blake 30 ParisS4 Clark 20 LondonS5 Adams 30 Athens

Jef Wijsen (UMONS) SQL May 14, 2018 3 / 45

Page 4: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

P P# PNAME COLOR WEIGHT CITYP1 Nut Red 12 LondonP2 Bolt Green 17 ParisP3 Screw Blue 17 RomeP4 Screw Red 14 LondonP5 Cam Blue 12 ParisP6 Cog Red 19 London

Jef Wijsen (UMONS) SQL May 14, 2018 4 / 45

Page 5: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

SP S# P# QTYS1 P1 300S1 P2 200S1 P3 400S1 P4 200S1 P5 100S1 P6 100S2 P1 300S2 P2 400S3 P2 200S4 P2 200S4 P4 300S4 P5 400

Jef Wijsen (UMONS) SQL May 14, 2018 5 / 45

Page 6: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Create

CREATE DOMAIN COLOR CHAR(6) DEFAULT ‘???’

CONSTRAINT VALID_COLORS

CHECK ( VALUE IN

( ‘Red’, ‘Yellow’, ‘Blue’, ‘Green’, ‘???’ ) ) ;

CREATE DOMAIN S# CHAR(5);

...

CREATE DOMAIN QTY NUMERIC(9);

Jef Wijsen (UMONS) SQL May 14, 2018 6 / 45

Page 7: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

CREATE TABLE S

( S# S#,

SNAME NAME,

STATUS STATUS,

CITY CITY,

PRIMARY KEY ( S# ) ) ;

CREATE TABLE P

( P# P#,

PNAME NAME,

COLOR COLOR,

WEIGHT WEIGHT,

CITY CITY,

PRIMARY KEY ( P# ) ) ;

Jef Wijsen (UMONS) SQL May 14, 2018 7 / 45

Page 8: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

CREATE TABLE SP

( S# S# NOT NULL, P# P# NOT NULL, QTY QTY NOT NULL,

PRIMARY KEY ( S#, P# ),

FOREIGN KEY ( S# ) REFERENCES S

ON DELETE CASCADE

ON UPDATE CASCADE,

FOREIGN KEY ( P# ) REFERENCES P

ON DELETE CASCADE

ON UPDATE CASCADE,

CHECK ( QTY > 0 AND QTY < 5001 ) ) ;

Jef Wijsen (UMONS) SQL May 14, 2018 8 / 45

Page 9: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Alter and Drop

ALTER TABLE S ADD COLUMN DISCOUNT INTEGER ;

DROP TABLE S ;

Jef Wijsen (UMONS) SQL May 14, 2018 9 / 45

Page 10: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Select

Get number and status for suppliers in Paris.

SELECT S.S#, S.STATUS

FROM S

WHERE S.CITY = ‘Paris’ ;

Unqualified names are acceptable if they cause no ambiguity.

SELECT S#, STATUS

FROM S

WHERE CITY = ‘Paris’ ;

Result is always a new table.

Jef Wijsen (UMONS) SQL May 14, 2018 10 / 45

Page 11: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

SELECT [ DISTINCT ] ...

FROM ...

[ WHERE ... ]

[ GROUP BY ... ]

[ HAVING ... ]

[ ORDER BY ... ]

Jef Wijsen (UMONS) SQL May 14, 2018 11 / 45

Page 12: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

SELECT S.S#, S.STATUS

FROM S

WHERE S.CITY = ‘Paris’

ORDER BY STATUS DESC ;

Jef Wijsen (UMONS) SQL May 14, 2018 12 / 45

Page 13: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Get the part number for each part supplied.

SELECT DISTINCT P#

FROM SP ;

Jef Wijsen (UMONS) SQL May 14, 2018 13 / 45

Page 14: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

For all parts, get the part number and the weight of that part in grams(1 pound = 454 gram).

SELECT P.P#, ‘Weight in grams’, P.WEIGHT * 454 AS GMWT

FROM P ;

P# GMWTP1 Weight in grams 5448P2 Weight in grams 7718P3 Weight in grams 7718P4 Weight in grams 6356P5 Weight in grams 5448P6 Weight in grams 8626

Jef Wijsen (UMONS) SQL May 14, 2018 14 / 45

Page 15: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Get full details of all suppliers.

SELECT *

FROM S ;

or

SELECT S.*

FROM S ;

Jef Wijsen (UMONS) SQL May 14, 2018 15 / 45

Page 16: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Get number and status for suppliers in Paris with status greater than 20.

SELECT S.S#, S.STATUS

FROM S

WHERE S.CITY = ‘Paris’

AND S.STATUS > 20 ;

Jef Wijsen (UMONS) SQL May 14, 2018 16 / 45

Page 17: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Get all combinations of supplier number and part number such that thesupplier and part in question are colocated.

SELECT S.S#, P.P#

FROM S, P

WHERE S.CITY = P.CITY ;

Jef Wijsen (UMONS) SQL May 14, 2018 17 / 45

Page 18: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

“FROM S, P” gives Cartesian product of S and P.

S.S# S.SNAME S.STATUS S.CITY P.P# P.PNAME . . . P.CITYS1 Smith 20 London P1 Nut . . . LondonS1 Smith 20 London P2 Bolt . . . ParisS1 Smith 20 London P3 Screw . . . RomeS1 Smith 20 London P4 Screw . . . LondonS1 Smith 20 London P5 Cam . . . ParisS1 Smith 20 London P6 Cog . . . LondonS2 Jones 10 Paris P1 Nut . . . LondonS2 Jones 10 Paris P2 Bolt . . . ParisS2 Jones 10 Paris P3 Screw . . . RomeS2 Jones 10 Paris P4 Screw . . . LondonS2 Jones 10 Paris P5 Cam . . . ParisS2 Jones 10 Paris P6 Cog . . . London

. . .S5 Adams 30 Athens P6 Cog . . . London

Jef Wijsen (UMONS) SQL May 14, 2018 18 / 45

Page 19: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

“WHERE S.CITY = P.CITY” selects tuples satisfying condition.

S.S# S.SNAME S.STATUS S.CITY P.P# P.PNAME . . . P.CITYS1 Smith 20 London P1 Nut . . . LondonS1 Smith 20 London P4 Screw . . . LondonS1 Smith 20 London P6 Cog . . . LondonS2 Jones 10 Paris P2 Bolt . . . ParisS2 Jones 10 Paris P5 Cam . . . Paris

. . .

Jef Wijsen (UMONS) SQL May 14, 2018 19 / 45

Page 20: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

“SELECT S.S#, P.P#” selects columns mentioned.

S# P#S1 P1S1 P4S1 P6S2 P2S2 P5

. . .

Jef Wijsen (UMONS) SQL May 14, 2018 20 / 45

Page 21: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Get all pairs of city names such that a supplier located in the first citysupplies a part stored in the second city.

SELECT S.CITY, P.CITY

FROM S, SP, P

WHERE S.S# = SP.S#

AND SP.P# = P.P# ;

Jef Wijsen (UMONS) SQL May 14, 2018 21 / 45

Page 22: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Get the total number of suppliers.

SELECT COUNT(*) AS N

FROM S ;

Jef Wijsen (UMONS) SQL May 14, 2018 22 / 45

Page 23: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Get the total, the maximum, and the minimum quantity for part P2.

SELECT SUM ( SP.QTY ) AS TOTQ,

MAX (SP.QTY ) AS MAXQ,

MIN ( SP.QTY ) AS MINQ

FROM SP

WHERE SP.P# = ‘P2’ ;

Jef Wijsen (UMONS) SQL May 14, 2018 23 / 45

Page 24: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

For each part supplied, get the part number and the total shipmentquantity.

SELECT SP.P#, SUM ( SP.QTY ) AS TOTQTY

FROM SP

GROUP BY SP.P# ;

Jef Wijsen (UMONS) SQL May 14, 2018 24 / 45

Page 25: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Conceptually, “FROM SP GROUP BY SP.P#” gives the following table.

{S#} P# {QTY}{S1, S2} P1 {300, 300}{S1, S2, S3, S4} P2 {200, 400, 200, 200}{S1} P3 {400}{S1, S4} P4 {200, 300}{S1, S4} P5 {100, 400}{S1} P6 {100}

Jef Wijsen (UMONS) SQL May 14, 2018 25 / 45

Page 26: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

“SELECT SP.P#, SUM ( SP.QTY ) AS TOTQTY” gives:

P# TOTQTYP1 600P2 1000P3 400P4 500P5 500P6 100

Jef Wijsen (UMONS) SQL May 14, 2018 26 / 45

Page 27: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

SELECT P.P#, ( SELECT SUM ( SP.QTY)

FROM SP

WHERE SP.P# = P.P# ) AS TOTQTY

FROM P ;

Jef Wijsen (UMONS) SQL May 14, 2018 27 / 45

Page 28: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

The following query is erroneous!

SELECT SP.P#, SP.QTY

FROM SP

GROUP BY SP.P#

Jef Wijsen (UMONS) SQL May 14, 2018 28 / 45

Page 29: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Get part number for all parts supplied by more than one supplier.

SELECT SP.P#

FROM SP

GROUP BY SP.P#

HAVING COUNT ( SP.S# ) > 1 ;

Jef Wijsen (UMONS) SQL May 14, 2018 29 / 45

Page 30: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Get supplier names for suppliers who supply part P2.

SELECT DISTINCT S.SNAME

FROM S

WHERE S.S# IN

( SELECT SP.S#

FROM SP

WHERE SP.P# = ‘P2’ ) ;

Jef Wijsen (UMONS) SQL May 14, 2018 30 / 45

Page 31: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

SELECT DISTINCT S.SNAME

FROM S

WHERE EXISTS

( SELECT *

FROM SP

WHERE SP.P# = ‘P2’

AND SP.S# = S.S# ) ;

Jef Wijsen (UMONS) SQL May 14, 2018 31 / 45

Page 32: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

SELECT DISTINCT S.SNAME

FROM S, SP

WHERE S.S# = SP.S#

AND SP.P# = ‘P2’ ;

Jef Wijsen (UMONS) SQL May 14, 2018 32 / 45

Page 33: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Get supplier numbers for suppliers with status less than the currentmaximum status in the S table.

SELECT S.S#

FROM S

WHERE S.STATUS <

( SELECT MAX ( S.STATUS )

FROM S ) ;

Jef Wijsen (UMONS) SQL May 14, 2018 33 / 45

Page 34: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Get supplier names for suppliers who do not supply part P2.

SELECT DISTINCT S.SNAME

FROM S

WHERE S.S# NOT IN

( SELECT SP.S#

FROM SP

WHERE SP.P# = ‘P2’ ) ;

Jef Wijsen (UMONS) SQL May 14, 2018 34 / 45

Page 35: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

SELECT DISTINCT S.SNAME

FROM S

WHERE NOT EXISTS

( SELECT *

FROM SP

WHERE SP.P# = ‘P2’

AND SP.S# = S.S# ) ;

Jef Wijsen (UMONS) SQL May 14, 2018 35 / 45

Page 36: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Get supplier names for suppliers who supply all red parts.

SELECT S.SNAME

FROM S

WHERE NOT EXISTS

( SELECT *

FROM P

WHERE P.COLOR = ‘Red’

AND NOT EXISTS

( SELECT *

FROM SP

WHERE SP.S# = S.S#

AND SP.P# = P.P# ) ) ;

Jef Wijsen (UMONS) SQL May 14, 2018 36 / 45

Page 37: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Get part numbers for parts that either weigh more than 16 pounds or aresupplied by supplier S2, or both.

SELECT P.P#

FROM P

WHERE P.WEIGHT > 16

UNION

SELECT SP.P#

FROM SP

WHERE SP.S# = ‘S2’ ;

Jef Wijsen (UMONS) SQL May 14, 2018 37 / 45

Page 38: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Update

Single-row INSERT.

INSERT

INTO P ( P#, PNAME, COLOR, WEIGHT, CITY )

VALUES (‘P8’, ‘Sprocket’, ‘Pink’, 14, ‘Nice’ ) ;

Multi-row INSERT.

INSERT

INTO TEMP ( S#, CITY )

SELECT S.S#, S.CITY

FROM S

WHERE S.STATUS > 15 ;

Jef Wijsen (UMONS) SQL May 14, 2018 38 / 45

Page 39: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Multi-row UPDATE.

UPDATE P

SET COLOR = ‘Yellow’,

WEIGHT = P.WEIGHT + 5

WHERE P.CITY = ‘Paris’ ;

Multi-row UPDATE.

UPDATE P

SET CITY = ( SELECT S.CITY

FROM S

WHERE S.S# = ‘S5’ )

WHERE P.COLOR = ‘Red’ ;

Jef Wijsen (UMONS) SQL May 14, 2018 39 / 45

Page 40: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Multi-row DELETE.

DELETE

FROM SP

WHERE ‘London’ =

( SELECT S.CITY

FROM S

WHERE S.S# = SP.S# ) ;

Jef Wijsen (UMONS) SQL May 14, 2018 40 / 45

Page 41: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Views

CREATE VIEW REDPARTS ( P#, PNAME, WT, CITY )

AS SELECT P.P#, P.PNAME, P.WEIGHT, P.CITY

FROM P

WHERE P.COLOR = ‘Red’ ;

CREATE VIEW PQ

AS SELECT SP.P#, SUM ( SP.QTY ) AS TOTQTY

FROM SP

GROUP BY SP.P# ;

Jef Wijsen (UMONS) SQL May 14, 2018 41 / 45

Page 42: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Rewriting of Select

Get red parts that weigh more than 15 pounds.

SELECT P#

FROM REDPARTS

WHERE WT > 15 ;

SELECT P#

FROM P

WHERE WEIGHT > 15

AND COLOR = ‘Red’ ;

Jef Wijsen (UMONS) SQL May 14, 2018 42 / 45

Page 43: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

View Update

UPDATE REDPARTS

SET WT = 454 * WT ;

UPDATE P

SET WEIGHT = 454 * WEIGHT

WHERE COLOR = ‘Red’ ;

Jef Wijsen (UMONS) SQL May 14, 2018 43 / 45

Page 44: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

View Update Problem

UPDATE PQ

SET TOTQTY = TOTQTY + 1 ;

UPDATE SP

SET ???

Jef Wijsen (UMONS) SQL May 14, 2018 44 / 45

Page 45: Jef Wijsen - Université de Monsinformatique.umons.ac.be/ssi/teaching/fbd/theorie/SQL.pdfGet the part number for each part supplied. SELECT DISTINCT P# FROM SP ; Jef Wijsen (UMONS)

Embedded SQL

EXEC SQL DECLARE X CURSOR FOR

SELECT S.S#, S.SNAME, S.STATUS

FROM S

WHERE S.CITY = :Y ; /* colon -> pgm variable */

EXEC SQL OPEN X ; /* execute the query */

EXEC SQL FETCH X INTO :V1, :V2, :V3 ; /* fetch row */

WHILE a row is fetched LOOP

... /* process the row */

EXEC SQL FETCH X INTO :V1, :V2, :V3 ;

END-LOOP

EXEC SQL CLOSE X ; /* deactivate cursor X */

Jef Wijsen (UMONS) SQL May 14, 2018 45 / 45