cmu 15-445/645 database systems (fall 2017) :: embedded ... · $$ language sql; → create table...
TRANSCRIPT
![Page 1: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/1.jpg)
![Page 3: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/3.jpg)
→→
![Page 6: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/6.jpg)
BEGIN
SQL
Program Logic
SQL
Program Logic
⋮
COMMIT
![Page 7: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/7.jpg)
BEGIN
SQL
Program Logic
SQL
Program Logic
⋮
COMMIT
![Page 8: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/8.jpg)
BEGIN
SQL
Program Logic
SQL
Program Logic
⋮
COMMIT
![Page 9: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/9.jpg)
BEGIN
SQL
Program Logic
SQL
Program Logic
⋮
COMMIT
![Page 10: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/10.jpg)
BEGIN
SQL
Program Logic
SQL
Program Logic
⋮
COMMIT
![Page 15: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/15.jpg)
→
CREATE TABLE foo (id INT PRIMARY KEY,val VARCHAR(16)
);
CREATE FUNCTION get_foo(int)RETURNS foo AS $$
SELECT * FROM foo WHERE foo.id = $1;$$ LANGUAGE SQL;
![Page 16: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/16.jpg)
→
CREATE TABLE foo (id INT PRIMARY KEY,val VARCHAR(16)
);
CREATE FUNCTION get_foo(int)RETURNS foo AS $$
SELECT * FROM foo WHERE foo.id = $1;$$ LANGUAGE SQL;
![Page 17: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/17.jpg)
→
CREATE TABLE foo (id INT PRIMARY KEY,val VARCHAR(16)
);
CREATE FUNCTION get_foo(int)RETURNS foo AS $$
SELECT * FROM foo WHERE foo.id = $1;$$ LANGUAGE SQL;
![Page 19: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/19.jpg)
CREATE OR REPLACE FUNCTION get_foo(int)RETURNS SETOF foo AS $$
BEGINRETURN QUERY SELECT * FROM foo
WHERE foo.id = $1;END;
$$ LANGUAGE plpgsql;
![Page 20: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/20.jpg)
CREATE OR REPLACE FUNCTION sum_foo(i int) RETURNS int AS $$
DECLARE foo_rec RECORD;DECLARE out INT;BEGINout := 0;FOR foo_rec IN SELECT id FROM foo
WHERE id > i LOOPout := out + foo_rec.id;
END LOOP;RETURN out;
END;$$ LANGUAGE plpgsql;
![Page 22: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/22.jpg)
BEGIN
SQL
Program Logic
SQL
Program Logic
⋮
COMMIT
![Page 26: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/26.jpg)
→ INSERT→ UPDATE→ DELETE→ TRUNCATE→ CREATE→ ALTER→ DROP
→ TABLE→ DATABASE→ VIEW→ SYSTEM
→→→
→
→
![Page 27: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/27.jpg)
CREATE TABLE foo (id INT PRIMARY KEY,val VARCHAR(16)
);
CREATE TABLE foo_audit (id SERIAL PRIMARY KEY,foo_id INT REFERENCES foo (id),orig_val VARCHAR,cdate TIMESTAMP
);
![Page 28: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/28.jpg)
CREATE TABLE foo (id INT PRIMARY KEY,val VARCHAR(16)
);
CREATE TABLE foo_audit (id SERIAL PRIMARY KEY,foo_id INT REFERENCES foo (id),orig_val VARCHAR,cdate TIMESTAMP
);
CREATE OR REPLACE FUNCTION log_foo_updates() RETURNS trigger AS $$
BEGINIF NEW.val <> OLD.val THENINSERT INTO foo_audit
(foo_id, orig_val, cdate)VALUES (OLD.id, OLD.val, NOW());
END IF;RETURN NEW;
END;$$ LANGUAGE plpgsql;
![Page 29: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/29.jpg)
CREATE TABLE foo (id INT PRIMARY KEY,val VARCHAR(16)
);
CREATE TABLE foo_audit (id SERIAL PRIMARY KEY,foo_id INT REFERENCES foo (id),orig_val VARCHAR,cdate TIMESTAMP
);
CREATE OR REPLACE FUNCTION log_foo_updates() RETURNS trigger AS $$
BEGINIF NEW.val <> OLD.val THENINSERT INTO foo_audit
(foo_id, orig_val, cdate)VALUES (OLD.id, OLD.val, NOW());
END IF;RETURN NEW;
END;$$ LANGUAGE plpgsql;
CREATE TRIGGER foo_updatesBEFORE UPDATE ON foo FOR EACH ROWEXECUTE PROCEDURE log_foo_updates();
![Page 31: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/31.jpg)
CREATE OR REPLACE FUNCTION notify_foo_updates() RETURNS trigger AS $$
DECLARE notification JSON;BEGIN
IF NEW.val <> OLD.val THENnotification = row_to_json(NEW);PERFORM pg_notify('foo_update',
notification::text);END IF;RETURN NEW;
END;$$ LANGUAGE plpgsql;
CREATE TRIGGER foo_notifyBEFORE UPDATE ON foo FOR EACH ROWEXECUTE PROCEDURE notify_foo_updates();
![Page 37: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/37.jpg)
CREATE VIEW cs_students ASSELECT sid, name, login
FROM studentWHERE login LIKE '%@cs';
sid name login age gpa
53666 Kanye West kw@cs 40 3.5
53677 Justin Bieber jb@ece 23 2.25
53688 Tone Loc tloc@isr 51 3.8
53699 Andy Pavlo pavlo@cs 36 3.0
sid name login
53666 Kanye West kw@cs
53699 Andy Pavlo pavlo@cs
![Page 38: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/38.jpg)
CREATE VIEW cs_gpa ASSELECT AVG(gpa) AS avg_gpaFROM studentWHERE login LIKE '%@cs';
![Page 39: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/39.jpg)
VIEW→
SELECT…INTO→
CREATE VIEW cs_gpa ASSELECT AVG(gpa) AS avg_gpa
FROM studentWHERE login LIKE '%@cs';
SELECT AVG(gpa) AS avg_gpaINTO cs_gpaFROM studentWHERE login LIKE '%@cs';
![Page 40: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/40.jpg)
VIEW→
SELECT…INTO→
CREATE VIEW cs_gpa ASSELECT AVG(gpa) AS avg_gpa
FROM studentWHERE login LIKE '%@cs';
SELECT AVG(gpa) AS avg_gpaINTO cs_gpaFROM studentWHERE login LIKE '%@cs';
![Page 42: CMU 15-445/645 Database Systems (Fall 2017) :: Embedded ... · $$ LANGUAGE SQL; → CREATE TABLE foo ... CMU 15-445/645 Database Systems (Fall 2017) :: Embedded Database Logic Author:](https://reader033.vdocument.in/reader033/viewer/2022050208/5f5af439867ab732cd6968b8/html5/thumbnails/42.jpg)
SELECT
CREATE MATERIALIZED VIEW cs_gpa ASSELECT AVG(gpa) AS avg_gpaFROM studentWHERE login LIKE '%@cs';