From 77737db3d208c98ee7a3383414495dc6e27be2e4 Mon Sep 17 00:00:00 2001 From: Peter Gerwinski <peter.gerwinski@hs-bochum.de> Date: Thu, 14 Dec 2023 14:12:38 +0100 Subject: [PATCH] Beispiele 14.12.2023 --- 20231207/school-01.php | 2 +- 20231214/hello-03.sh | 3 + 20231214/hello-04.sh | 5 + 20231214/hello-05.sh | 6 + 20231214/hello-06.sh | 8 + 20231214/hello-07.sh | 8 + 20231214/hello-08.sh | 8 + 20231214/index-03.html | 8 + 20231214/index-04.html | 8 + 20231214/index-05.html | 8 + 20231214/index-06.html | 8 + 20231214/index-07.html | 8 + 20231214/index-08.html | 8 + 20231214/school-03.html | 10 + 20231214/school-03.php | 52 +++ 20231214/school-04.html | 10 + 20231214/school-04.php | 52 +++ 20231214/testdb-20231214-01.sql | 620 +++++++++++++++++++++++++++++++ 20231214/testdb-20231214-02.sql | 627 ++++++++++++++++++++++++++++++++ 19 files changed, 1458 insertions(+), 1 deletion(-) create mode 100755 20231214/hello-03.sh create mode 100755 20231214/hello-04.sh create mode 100755 20231214/hello-05.sh create mode 100755 20231214/hello-06.sh create mode 100755 20231214/hello-07.sh create mode 100755 20231214/hello-08.sh create mode 100644 20231214/index-03.html create mode 100644 20231214/index-04.html create mode 100644 20231214/index-05.html create mode 100644 20231214/index-06.html create mode 100644 20231214/index-07.html create mode 100644 20231214/index-08.html create mode 100644 20231214/school-03.html create mode 100644 20231214/school-03.php create mode 100644 20231214/school-04.html create mode 100644 20231214/school-04.php create mode 100644 20231214/testdb-20231214-01.sql create mode 100644 20231214/testdb-20231214-02.sql diff --git a/20231207/school-01.php b/20231207/school-01.php index 2905666..368dea1 100644 --- a/20231207/school-01.php +++ b/20231207/school-01.php @@ -17,7 +17,7 @@ $db->exec ('INSERT INTO students (first_name, family_name) VALUES ( ' .$_POST["first_name"].', '.$_POST["familty_name"] .' );'); - $stmt = $db->query ('SELECT * FROM student;'); + $stmt = $db->query ('SELECT * FROM students;'); echo '<table><tr>'; while ($row = $stmt->fetch()) { diff --git a/20231214/hello-03.sh b/20231214/hello-03.sh new file mode 100755 index 0000000..9f3f770 --- /dev/null +++ b/20231214/hello-03.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +echo "Hello, world!" diff --git a/20231214/hello-04.sh b/20231214/hello-04.sh new file mode 100755 index 0000000..b485fe8 --- /dev/null +++ b/20231214/hello-04.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +echo Content-Type: text/plain +echo +echo "Hello, world!" diff --git a/20231214/hello-05.sh b/20231214/hello-05.sh new file mode 100755 index 0000000..c5d804a --- /dev/null +++ b/20231214/hello-05.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +echo Content-Type: text/plain +echo + +echo "QUERY_STRING = $QUERY_STRING" diff --git a/20231214/hello-06.sh b/20231214/hello-06.sh new file mode 100755 index 0000000..814f8e3 --- /dev/null +++ b/20231214/hello-06.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +echo Content-Type: text/plain +echo + +name=$(echo $QUERY_STRING | cut -d '=' -f 2) + +echo "Hello, $name!" diff --git a/20231214/hello-07.sh b/20231214/hello-07.sh new file mode 100755 index 0000000..fc3855d --- /dev/null +++ b/20231214/hello-07.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +echo Content-Type: text/plain +echo + +name=$(cut -d '=' -f 2) + +echo "Hello, $name!" diff --git a/20231214/hello-08.sh b/20231214/hello-08.sh new file mode 100755 index 0000000..29468b4 --- /dev/null +++ b/20231214/hello-08.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +echo Content-Type: text/plain +echo + +name=$(echo $QUERY_STRING | cut -d '=' -f 2) + +echo Hello, $name! diff --git a/20231214/index-03.html b/20231214/index-03.html new file mode 100644 index 0000000..648e721 --- /dev/null +++ b/20231214/index-03.html @@ -0,0 +1,8 @@ +<html> + <body> + <form action="http://localhost/cgi-bin/hello-03.sh" method="post"> + Your name: <input type="text" name="name"><br> + <input type="submit"> + </form> + </body> +</html> diff --git a/20231214/index-04.html b/20231214/index-04.html new file mode 100644 index 0000000..f943391 --- /dev/null +++ b/20231214/index-04.html @@ -0,0 +1,8 @@ +<html> + <body> + <form action="http://localhost/cgi-bin/hello-04.sh" method="get"> + Your name: <input type="text" name="name"><br> + <input type="submit"> + </form> + </body> +</html> diff --git a/20231214/index-05.html b/20231214/index-05.html new file mode 100644 index 0000000..9f8c06a --- /dev/null +++ b/20231214/index-05.html @@ -0,0 +1,8 @@ +<html> + <body> + <form action="http://localhost/cgi-bin/hello-05.sh" method="get"> + Your name: <input type="text" name="name"><br> + <input type="submit"> + </form> + </body> +</html> diff --git a/20231214/index-06.html b/20231214/index-06.html new file mode 100644 index 0000000..ec45793 --- /dev/null +++ b/20231214/index-06.html @@ -0,0 +1,8 @@ +<html> + <body> + <form action="http://localhost/cgi-bin/hello-06.sh" method="get"> + Your name: <input type="text" name="name"><br> + <input type="submit"> + </form> + </body> +</html> diff --git a/20231214/index-07.html b/20231214/index-07.html new file mode 100644 index 0000000..5edf944 --- /dev/null +++ b/20231214/index-07.html @@ -0,0 +1,8 @@ +<html> + <body> + <form action="http://localhost/cgi-bin/hello-07.sh" method="post"> + Your name: <input type="text" name="name"><br> + <input type="submit"> + </form> + </body> +</html> diff --git a/20231214/index-08.html b/20231214/index-08.html new file mode 100644 index 0000000..48bddf3 --- /dev/null +++ b/20231214/index-08.html @@ -0,0 +1,8 @@ +<html> + <body> + <form action="http://localhost/cgi-bin/hello-08.sh" method="get"> + Your name: <input type="text" name="name"><br> + <input type="submit"> + </form> + </body> +</html> diff --git a/20231214/school-03.html b/20231214/school-03.html new file mode 100644 index 0000000..ea7ee82 --- /dev/null +++ b/20231214/school-03.html @@ -0,0 +1,10 @@ +<html> + <body> + <h3>Register new student</h3> + <form action="school-03.php" method="post"> + First name: <input type="text" name="first_name"><br> + Family name: <input type="text" name="family_name"><br> + <input type="submit"> + </form> + </body> +</html> diff --git a/20231214/school-03.php b/20231214/school-03.php new file mode 100644 index 0000000..1877203 --- /dev/null +++ b/20231214/school-03.php @@ -0,0 +1,52 @@ +<html> + <body> + <?php + try + { + $db = new PDO ('pgsql: host = localhost; dbname = testdb; user = dbs; password = 1234'); + } + catch (\PDOException $e) + { + echo '<p>'; + echo $e->getMessage(); + echo '</p>'; + echo '<p>'; + exit ('cannot connect to database'); + echo '</p>'; + } + echo '<p>'; + echo "INSERT INTO students (first_name, family_name) VALUES ( '" + .$_POST["first_name"]."', '".$_POST["family_name"] + ."' );"; + echo '</p>'; + $db->exec ("INSERT INTO students (first_name, family_name) VALUES ( '" + .$_POST["first_name"]."', '".$_POST["family_name"] + ."' );"); + $stmt = $db->query ('SELECT * FROM students;'); + echo '<table><tr>'; + while ($row = $stmt->fetch()) + { + echo '<tr><td>'; + echo $row['id']; + echo '</td><td>'; + echo $row['first_name']; + echo '</td><td>'; + echo $row['family_name']; + echo '</td></tr>'; + } + echo '</tr></table>'; + ?> + </body> +</html> + +<!-- Aus den Log-Dateien des Web-Servers: + + [Thu Dec 07 12:50:06.952167 2023] [php:error] [pid 163970] [client ::1:52394] + PHP Fatal error: Uncaught PDOException: SQLSTATE[42601]: Syntax error: 7 + FEHLER: Syntaxfehler bei \xc2\xbb)\xc2\xab\nLINE 1: ... INTO students + (first_name, family_name) VALUES ( Peter, );\n + ^ in /var/www/dbs/school-01.php:17\nStack trace:\n#0 + /var/www/dbs/school-01.php(17): PDO->exec()\n#1 {main}\n thrown in + /var/www/dbs/school-01.php on line 17 + +--> diff --git a/20231214/school-04.html b/20231214/school-04.html new file mode 100644 index 0000000..3d20e2c --- /dev/null +++ b/20231214/school-04.html @@ -0,0 +1,10 @@ +<html> + <body> + <h3>Register new student</h3> + <form action="school-04.php" method="post"> + First name: <input type="text" name="first_name"><br> + Family name: <input type="text" name="family_name"><br> + <input type="submit"> + </form> + </body> +</html> diff --git a/20231214/school-04.php b/20231214/school-04.php new file mode 100644 index 0000000..285f40e --- /dev/null +++ b/20231214/school-04.php @@ -0,0 +1,52 @@ +<html> + <body> + <?php + try + { + $db = new PDO ('pgsql: host = localhost; dbname = testdb; user = dbs; password = 1234'); + } + catch (\PDOException $e) + { + echo '<p>'; + echo $e->getMessage(); + echo '</p>'; + echo '<p>'; + exit ('cannot connect to database'); + echo '</p>'; + } + echo '<p>'; + $first_name = str_replace ("'", "''", $_POST["first_name"]); + $family_name = str_replace ("'", "''", $_POST["family_name"]); + echo "INSERT INTO students (first_name, family_name) VALUES ( '" + .$first_name."', '".$family_name."' );"; + echo '</p>'; + $db->exec ("INSERT INTO students (first_name, family_name) VALUES ( '" + .$first_name."', '".$family_name."' );"); + $stmt = $db->query ('SELECT * FROM students;'); + echo '<table><tr>'; + while ($row = $stmt->fetch()) + { + echo '<tr><td>'; + echo $row['id']; + echo '</td><td>'; + echo $row['first_name']; + echo '</td><td>'; + echo $row['family_name']; + echo '</td></tr>'; + } + echo '</tr></table>'; + ?> + </body> +</html> + +<!-- Aus den Log-Dateien des Web-Servers: + + [Thu Dec 07 12:50:06.952167 2023] [php:error] [pid 163970] [client ::1:52394] + PHP Fatal error: Uncaught PDOException: SQLSTATE[42601]: Syntax error: 7 + FEHLER: Syntaxfehler bei \xc2\xbb)\xc2\xab\nLINE 1: ... INTO students + (first_name, family_name) VALUES ( Peter, );\n + ^ in /var/www/dbs/school-01.php:17\nStack trace:\n#0 + /var/www/dbs/school-01.php(17): PDO->exec()\n#1 {main}\n thrown in + /var/www/dbs/school-01.php on line 17 + +--> diff --git a/20231214/testdb-20231214-01.sql b/20231214/testdb-20231214-01.sql new file mode 100644 index 0000000..41d713c --- /dev/null +++ b/20231214/testdb-20231214-01.sql @@ -0,0 +1,620 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 15.5 (Debian 15.5-0+deb12u1) +-- Dumped by pg_dump version 15.5 (Debian 15.5-0+deb12u1) + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +ALTER TABLE ONLY public.lied DROP CONSTRAINT lied_fkey_cd_id; +ALTER TABLE ONLY public.customer DROP CONSTRAINT customer_fkey_account_id; +ALTER TABLE ONLY public.cd DROP CONSTRAINT cd_fkey_interpret_id; +DROP TRIGGER after_update_account ON public.account; +DROP INDEX public.index_account_number; +ALTER TABLE ONLY public.tier DROP CONSTRAINT tier_pkey; +ALTER TABLE ONLY public.interpret DROP CONSTRAINT interpret_pkey; +ALTER TABLE ONLY public.customer DROP CONSTRAINT customer_pkey; +ALTER TABLE ONLY public.cd DROP CONSTRAINT cd_pkey; +ALTER TABLE ONLY public.account DROP CONSTRAINT account_pkey; +ALTER TABLE public.tier ALTER COLUMN id DROP DEFAULT; +ALTER TABLE public.students ALTER COLUMN id DROP DEFAULT; +ALTER TABLE public.interpret ALTER COLUMN id DROP DEFAULT; +ALTER TABLE public.customer ALTER COLUMN id DROP DEFAULT; +ALTER TABLE public.cd ALTER COLUMN cd_id DROP DEFAULT; +ALTER TABLE public.account ALTER COLUMN id DROP DEFAULT; +DROP SEQUENCE public.tier_id_seq; +DROP TABLE public.tier; +DROP TABLE public.test; +DROP SEQUENCE public.students_id_seq; +DROP TABLE public.students; +DROP VIEW public.lied_auf_cd; +DROP TABLE public.lied; +DROP SEQUENCE public.interpret_id_seq; +DROP TABLE public.interpret; +DROP SEQUENCE public.customer_id_seq; +DROP TABLE public.customer; +DROP SEQUENCE public.cd_cd_id_seq; +DROP TABLE public.cd; +DROP TABLE public.account_log; +DROP SEQUENCE public.account_id_seq; +DROP TABLE public.account; +DROP PROCEDURE public.transfer(IN sender integer, IN receiver integer, IN amount integer); +DROP FUNCTION public.log_change(); +-- +-- Name: log_change(); Type: FUNCTION; Schema: public; Owner: dbs +-- + +CREATE FUNCTION public.log_change() RETURNS trigger + LANGUAGE plpgsql + AS $$ +begin if new.balance <> old.balance then + insert into account_log (account_id, change, datetime) values (old.id, new.balance - old.balance, now ()); +end if; +return new; +end; +$$; + + +ALTER FUNCTION public.log_change() OWNER TO dbs; + +-- +-- Name: transfer(integer, integer, integer); Type: PROCEDURE; Schema: public; Owner: dbs +-- + +CREATE PROCEDURE public.transfer(IN sender integer, IN receiver integer, IN amount integer) + LANGUAGE sql + AS $$UPDATE account SET balance = balance + amount WHERE id = receiver; UPDATE account SET balance = balance - amount WHERE id = sender;$$; + + +ALTER PROCEDURE public.transfer(IN sender integer, IN receiver integer, IN amount integer) OWNER TO dbs; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: account; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.account ( + id integer NOT NULL, + number text, + balance integer +); + + +ALTER TABLE public.account OWNER TO dbs; + +-- +-- Name: account_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs +-- + +CREATE SEQUENCE public.account_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.account_id_seq OWNER TO dbs; + +-- +-- Name: account_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs +-- + +ALTER SEQUENCE public.account_id_seq OWNED BY public.account.id; + + +-- +-- Name: account_log; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.account_log ( + account_id integer, + change integer, + datetime timestamp without time zone +); + + +ALTER TABLE public.account_log OWNER TO dbs; + +-- +-- Name: cd; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.cd ( + cd_id integer NOT NULL, + albumtitel text, + interpret_id integer, + erscheinungsjahr integer +); + + +ALTER TABLE public.cd OWNER TO dbs; + +-- +-- Name: cd_cd_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs +-- + +CREATE SEQUENCE public.cd_cd_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.cd_cd_id_seq OWNER TO dbs; + +-- +-- Name: cd_cd_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs +-- + +ALTER SEQUENCE public.cd_cd_id_seq OWNED BY public.cd.cd_id; + + +-- +-- Name: customer; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.customer ( + id integer NOT NULL, + lastname text, + firstname text, + account_id integer +); + + +ALTER TABLE public.customer OWNER TO dbs; + +-- +-- Name: customer_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs +-- + +CREATE SEQUENCE public.customer_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.customer_id_seq OWNER TO dbs; + +-- +-- Name: customer_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs +-- + +ALTER SEQUENCE public.customer_id_seq OWNED BY public.customer.id; + + +-- +-- Name: interpret; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.interpret ( + id integer NOT NULL, + name text, + gruendungsjahr integer +); + + +ALTER TABLE public.interpret OWNER TO dbs; + +-- +-- Name: interpret_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs +-- + +CREATE SEQUENCE public.interpret_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.interpret_id_seq OWNER TO dbs; + +-- +-- Name: interpret_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs +-- + +ALTER SEQUENCE public.interpret_id_seq OWNED BY public.interpret.id; + + +-- +-- Name: lied; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.lied ( + cd_id integer, + track integer, + titel text +); + + +ALTER TABLE public.lied OWNER TO dbs; + +-- +-- Name: lied_auf_cd; Type: VIEW; Schema: public; Owner: dbs +-- + +CREATE VIEW public.lied_auf_cd AS + SELECT cd.cd_id, + cd.albumtitel, + interpret.name, + interpret.gruendungsjahr, + cd.erscheinungsjahr, + lied.track, + lied.titel + FROM ((public.cd + JOIN public.lied ON ((cd.cd_id = lied.cd_id))) + JOIN public.interpret ON ((cd.interpret_id = interpret.id))); + + +ALTER TABLE public.lied_auf_cd OWNER TO dbs; + +-- +-- Name: students; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.students ( + id integer NOT NULL, + first_name text, + family_name text +); + + +ALTER TABLE public.students OWNER TO dbs; + +-- +-- Name: students_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs +-- + +CREATE SEQUENCE public.students_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.students_id_seq OWNER TO dbs; + +-- +-- Name: students_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs +-- + +ALTER SEQUENCE public.students_id_seq OWNED BY public.students.id; + + +-- +-- Name: test; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.test ( + id integer, + s text +); + + +ALTER TABLE public.test OWNER TO dbs; + +-- +-- Name: tier; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.tier ( + id integer NOT NULL, + name text, + tierart text +); + + +ALTER TABLE public.tier OWNER TO dbs; + +-- +-- Name: tier_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs +-- + +CREATE SEQUENCE public.tier_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.tier_id_seq OWNER TO dbs; + +-- +-- Name: tier_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs +-- + +ALTER SEQUENCE public.tier_id_seq OWNED BY public.tier.id; + + +-- +-- Name: account id; Type: DEFAULT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.account ALTER COLUMN id SET DEFAULT nextval('public.account_id_seq'::regclass); + + +-- +-- Name: cd cd_id; Type: DEFAULT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.cd ALTER COLUMN cd_id SET DEFAULT nextval('public.cd_cd_id_seq'::regclass); + + +-- +-- Name: customer id; Type: DEFAULT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.customer ALTER COLUMN id SET DEFAULT nextval('public.customer_id_seq'::regclass); + + +-- +-- Name: interpret id; Type: DEFAULT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.interpret ALTER COLUMN id SET DEFAULT nextval('public.interpret_id_seq'::regclass); + + +-- +-- Name: students id; Type: DEFAULT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.students ALTER COLUMN id SET DEFAULT nextval('public.students_id_seq'::regclass); + + +-- +-- Name: tier id; Type: DEFAULT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.tier ALTER COLUMN id SET DEFAULT nextval('public.tier_id_seq'::regclass); + + +-- +-- Data for Name: account; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.account (id, number, balance) FROM stdin; +1 DE12 3456 7890 ABCD EFGH IJ 1000009 +2 DE98 7654 3210 ABCD EFGH IJ 3999990 +\. + + +-- +-- Data for Name: account_log; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.account_log (account_id, change, datetime) FROM stdin; +1 10 2023-12-07 12:07:38.614305 +2 -10 2023-12-07 12:07:38.614305 +\. + + +-- +-- Data for Name: cd; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.cd (cd_id, albumtitel, interpret_id, erscheinungsjahr) FROM stdin; +4711 Not That Kind 1 2000 +4712 Wish You Were Here 2 1975 +4713 Freak of Nature 1 2001 +4714 Songs for the Deaf 3 2002 +\. + + +-- +-- Data for Name: customer; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.customer (id, lastname, firstname, account_id) FROM stdin; +2 Mustermann Erika 1 +4 Rich Richie 2 +\. + + +-- +-- Data for Name: interpret; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.interpret (id, name, gruendungsjahr) FROM stdin; +1 Anastacia 1999 +2 Pink Floyd 1965 +3 Queens of the Stone Age 1996 +\. + + +-- +-- Data for Name: lied; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.lied (cd_id, track, titel) FROM stdin; +4711 1 Not That Kind +4711 2 I'm Otta Love +4711 3 Cowboys & Kisses +4712 1 Shine On You Crazy Diamond +4713 1 Paid my Dues +\. + + +-- +-- Data for Name: students; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.students (id, first_name, family_name) FROM stdin; +1 Peter Gerwinski +2 Benedikt Wildenhain +\. + + +-- +-- Data for Name: test; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.test (id, s) FROM stdin; +7 Zwerge +\. + + +-- +-- Data for Name: tier; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.tier (id, name, tierart) FROM stdin; +1 Esmeralda Spinne +2 Timmy Hund +3 Dio Katze +4 Tusnelda Spinne +5 Ragnar Katze +6 Putzi Ratte +7 Felix Troll +8 Rex Ameise +\. + + +-- +-- Name: account_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs +-- + +SELECT pg_catalog.setval('public.account_id_seq', 2, true); + + +-- +-- Name: cd_cd_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs +-- + +SELECT pg_catalog.setval('public.cd_cd_id_seq', 1, false); + + +-- +-- Name: customer_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs +-- + +SELECT pg_catalog.setval('public.customer_id_seq', 4, true); + + +-- +-- Name: interpret_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs +-- + +SELECT pg_catalog.setval('public.interpret_id_seq', 1, false); + + +-- +-- Name: students_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs +-- + +SELECT pg_catalog.setval('public.students_id_seq', 2, true); + + +-- +-- Name: tier_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs +-- + +SELECT pg_catalog.setval('public.tier_id_seq', 1, false); + + +-- +-- Name: account account_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.account + ADD CONSTRAINT account_pkey PRIMARY KEY (id); + + +-- +-- Name: cd cd_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.cd + ADD CONSTRAINT cd_pkey PRIMARY KEY (cd_id); + + +-- +-- Name: customer customer_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.customer + ADD CONSTRAINT customer_pkey PRIMARY KEY (id); + + +-- +-- Name: interpret interpret_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.interpret + ADD CONSTRAINT interpret_pkey PRIMARY KEY (id); + + +-- +-- Name: tier tier_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.tier + ADD CONSTRAINT tier_pkey PRIMARY KEY (id); + + +-- +-- Name: index_account_number; Type: INDEX; Schema: public; Owner: dbs +-- + +CREATE INDEX index_account_number ON public.account USING btree (number); + + +-- +-- Name: account after_update_account; Type: TRIGGER; Schema: public; Owner: dbs +-- + +CREATE TRIGGER after_update_account AFTER UPDATE ON public.account FOR EACH ROW EXECUTE FUNCTION public.log_change(); + + +-- +-- Name: cd cd_fkey_interpret_id; Type: FK CONSTRAINT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.cd + ADD CONSTRAINT cd_fkey_interpret_id FOREIGN KEY (interpret_id) REFERENCES public.interpret(id); + + +-- +-- Name: customer customer_fkey_account_id; Type: FK CONSTRAINT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.customer + ADD CONSTRAINT customer_fkey_account_id FOREIGN KEY (account_id) REFERENCES public.account(id); + + +-- +-- Name: lied lied_fkey_cd_id; Type: FK CONSTRAINT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.lied + ADD CONSTRAINT lied_fkey_cd_id FOREIGN KEY (cd_id) REFERENCES public.cd(cd_id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/20231214/testdb-20231214-02.sql b/20231214/testdb-20231214-02.sql new file mode 100644 index 0000000..e6cfaf9 --- /dev/null +++ b/20231214/testdb-20231214-02.sql @@ -0,0 +1,627 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 15.5 (Debian 15.5-0+deb12u1) +-- Dumped by pg_dump version 15.5 (Debian 15.5-0+deb12u1) + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +ALTER TABLE ONLY public.lied DROP CONSTRAINT lied_fkey_cd_id; +ALTER TABLE ONLY public.customer DROP CONSTRAINT customer_fkey_account_id; +ALTER TABLE ONLY public.cd DROP CONSTRAINT cd_fkey_interpret_id; +DROP TRIGGER after_update_account ON public.account; +DROP INDEX public.index_account_number; +ALTER TABLE ONLY public.tier DROP CONSTRAINT tier_pkey; +ALTER TABLE ONLY public.interpret DROP CONSTRAINT interpret_pkey; +ALTER TABLE ONLY public.customer DROP CONSTRAINT customer_pkey; +ALTER TABLE ONLY public.cd DROP CONSTRAINT cd_pkey; +ALTER TABLE ONLY public.account DROP CONSTRAINT account_pkey; +ALTER TABLE public.tier ALTER COLUMN id DROP DEFAULT; +ALTER TABLE public.students ALTER COLUMN id DROP DEFAULT; +ALTER TABLE public.interpret ALTER COLUMN id DROP DEFAULT; +ALTER TABLE public.customer ALTER COLUMN id DROP DEFAULT; +ALTER TABLE public.cd ALTER COLUMN cd_id DROP DEFAULT; +ALTER TABLE public.account ALTER COLUMN id DROP DEFAULT; +DROP SEQUENCE public.tier_id_seq; +DROP TABLE public.tier; +DROP TABLE public.test; +DROP SEQUENCE public.students_id_seq; +DROP TABLE public.students; +DROP VIEW public.lied_auf_cd; +DROP TABLE public.lied; +DROP SEQUENCE public.interpret_id_seq; +DROP TABLE public.interpret; +DROP SEQUENCE public.customer_id_seq; +DROP TABLE public.customer; +DROP SEQUENCE public.cd_cd_id_seq; +DROP TABLE public.cd; +DROP TABLE public.account_log; +DROP SEQUENCE public.account_id_seq; +DROP TABLE public.account; +DROP PROCEDURE public.transfer(IN sender integer, IN receiver integer, IN amount integer); +DROP FUNCTION public.log_change(); +-- +-- Name: log_change(); Type: FUNCTION; Schema: public; Owner: dbs +-- + +CREATE FUNCTION public.log_change() RETURNS trigger + LANGUAGE plpgsql + AS $$ +begin + if new.balance <> old.balance then + insert into account_log (account_id, change, datetime) + values (old.id, new.balance - old.balance, now ()); + end if; + return new; +end; +$$; + + +ALTER FUNCTION public.log_change() OWNER TO dbs; + +-- +-- Name: transfer(integer, integer, integer); Type: PROCEDURE; Schema: public; Owner: dbs +-- + +CREATE PROCEDURE public.transfer(IN sender integer, IN receiver integer, IN amount integer) + LANGUAGE sql + AS $$ +UPDATE account SET balance = balance + amount WHERE id = receiver; +UPDATE account SET balance = balance - amount WHERE id = sender; +$$; + + +ALTER PROCEDURE public.transfer(IN sender integer, IN receiver integer, IN amount integer) + OWNER TO dbs; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: account; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.account ( + id integer NOT NULL, + number text, + balance integer +); + + +ALTER TABLE public.account OWNER TO dbs; + +-- +-- Name: account_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs +-- + +CREATE SEQUENCE public.account_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.account_id_seq OWNER TO dbs; + +-- +-- Name: account_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs +-- + +ALTER SEQUENCE public.account_id_seq OWNED BY public.account.id; + + +-- +-- Name: account_log; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.account_log ( + account_id integer, + change integer, + datetime timestamp without time zone +); + + +ALTER TABLE public.account_log OWNER TO dbs; + +-- +-- Name: cd; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.cd ( + cd_id integer NOT NULL, + albumtitel text, + interpret_id integer, + erscheinungsjahr integer +); + + +ALTER TABLE public.cd OWNER TO dbs; + +-- +-- Name: cd_cd_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs +-- + +CREATE SEQUENCE public.cd_cd_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.cd_cd_id_seq OWNER TO dbs; + +-- +-- Name: cd_cd_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs +-- + +ALTER SEQUENCE public.cd_cd_id_seq OWNED BY public.cd.cd_id; + + +-- +-- Name: customer; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.customer ( + id integer NOT NULL, + lastname text, + firstname text, + account_id integer +); + + +ALTER TABLE public.customer OWNER TO dbs; + +-- +-- Name: customer_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs +-- + +CREATE SEQUENCE public.customer_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.customer_id_seq OWNER TO dbs; + +-- +-- Name: customer_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs +-- + +ALTER SEQUENCE public.customer_id_seq OWNED BY public.customer.id; + + +-- +-- Name: interpret; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.interpret ( + id integer NOT NULL, + name text, + gruendungsjahr integer +); + + +ALTER TABLE public.interpret OWNER TO dbs; + +-- +-- Name: interpret_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs +-- + +CREATE SEQUENCE public.interpret_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.interpret_id_seq OWNER TO dbs; + +-- +-- Name: interpret_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs +-- + +ALTER SEQUENCE public.interpret_id_seq OWNED BY public.interpret.id; + + +-- +-- Name: lied; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.lied ( + cd_id integer, + track integer, + titel text +); + + +ALTER TABLE public.lied OWNER TO dbs; + +-- +-- Name: lied_auf_cd; Type: VIEW; Schema: public; Owner: dbs +-- + +CREATE VIEW public.lied_auf_cd AS + SELECT cd.cd_id, + cd.albumtitel, + interpret.name, + interpret.gruendungsjahr, + cd.erscheinungsjahr, + lied.track, + lied.titel + FROM ((public.cd + JOIN public.lied ON ((cd.cd_id = lied.cd_id))) + JOIN public.interpret ON ((cd.interpret_id = interpret.id))); + + +ALTER TABLE public.lied_auf_cd OWNER TO dbs; + +-- +-- Name: students; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.students ( + id integer NOT NULL, + first_name text, + family_name text +); + + +ALTER TABLE public.students OWNER TO dbs; + +-- +-- Name: students_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs +-- + +CREATE SEQUENCE public.students_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.students_id_seq OWNER TO dbs; + +-- +-- Name: students_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs +-- + +ALTER SEQUENCE public.students_id_seq OWNED BY public.students.id; + + +-- +-- Name: test; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.test ( + id integer, + s text +); + + +ALTER TABLE public.test OWNER TO dbs; + +-- +-- Name: tier; Type: TABLE; Schema: public; Owner: dbs +-- + +CREATE TABLE public.tier ( + id integer NOT NULL, + name text, + tierart text +); + + +ALTER TABLE public.tier OWNER TO dbs; + +-- +-- Name: tier_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs +-- + +CREATE SEQUENCE public.tier_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.tier_id_seq OWNER TO dbs; + +-- +-- Name: tier_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs +-- + +ALTER SEQUENCE public.tier_id_seq OWNED BY public.tier.id; + + +-- +-- Name: account id; Type: DEFAULT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.account ALTER COLUMN id SET DEFAULT nextval('public.account_id_seq'::regclass); + + +-- +-- Name: cd cd_id; Type: DEFAULT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.cd ALTER COLUMN cd_id SET DEFAULT nextval('public.cd_cd_id_seq'::regclass); + + +-- +-- Name: customer id; Type: DEFAULT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.customer ALTER COLUMN id SET DEFAULT nextval('public.customer_id_seq'::regclass); + + +-- +-- Name: interpret id; Type: DEFAULT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.interpret ALTER COLUMN id SET DEFAULT nextval('public.interpret_id_seq'::regclass); + + +-- +-- Name: students id; Type: DEFAULT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.students ALTER COLUMN id SET DEFAULT nextval('public.students_id_seq'::regclass); + + +-- +-- Name: tier id; Type: DEFAULT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.tier ALTER COLUMN id SET DEFAULT nextval('public.tier_id_seq'::regclass); + + +-- +-- Data for Name: account; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.account (id, number, balance) FROM stdin; +1 DE12 3456 7890 ABCD EFGH IJ 1000009 +2 DE98 7654 3210 ABCD EFGH IJ 3999990 +\. + + +-- +-- Data for Name: account_log; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.account_log (account_id, change, datetime) FROM stdin; +1 10 2023-12-07 12:07:38.614305 +2 -10 2023-12-07 12:07:38.614305 +\. + + +-- +-- Data for Name: cd; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.cd (cd_id, albumtitel, interpret_id, erscheinungsjahr) FROM stdin; +4711 Not That Kind 1 2000 +4712 Wish You Were Here 2 1975 +4713 Freak of Nature 1 2001 +4714 Songs for the Deaf 3 2002 +\. + + +-- +-- Data for Name: customer; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.customer (id, lastname, firstname, account_id) FROM stdin; +2 Mustermann Erika 1 +4 Rich Richie 2 +\. + + +-- +-- Data for Name: interpret; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.interpret (id, name, gruendungsjahr) FROM stdin; +1 Anastacia 1999 +2 Pink Floyd 1965 +3 Queens of the Stone Age 1996 +\. + + +-- +-- Data for Name: lied; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.lied (cd_id, track, titel) FROM stdin; +4711 1 Not That Kind +4711 2 I'm Otta Love +4711 3 Cowboys & Kisses +4712 1 Shine On You Crazy Diamond +4713 1 Paid my Dues +\. + + +-- +-- Data for Name: students; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.students (id, first_name, family_name) FROM stdin; +1 Peter Gerwinski +2 Benedikt Wildenhain +\. + + +-- +-- Data for Name: test; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.test (id, s) FROM stdin; +7 Zwerge +\. + + +-- +-- Data for Name: tier; Type: TABLE DATA; Schema: public; Owner: dbs +-- + +COPY public.tier (id, name, tierart) FROM stdin; +1 Esmeralda Spinne +2 Timmy Hund +3 Dio Katze +4 Tusnelda Spinne +5 Ragnar Katze +6 Putzi Ratte +7 Felix Troll +8 Rex Ameise +\. + + +-- +-- Name: account_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs +-- + +SELECT pg_catalog.setval('public.account_id_seq', 2, true); + + +-- +-- Name: cd_cd_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs +-- + +SELECT pg_catalog.setval('public.cd_cd_id_seq', 1, false); + + +-- +-- Name: customer_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs +-- + +SELECT pg_catalog.setval('public.customer_id_seq', 4, true); + + +-- +-- Name: interpret_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs +-- + +SELECT pg_catalog.setval('public.interpret_id_seq', 1, false); + + +-- +-- Name: students_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs +-- + +SELECT pg_catalog.setval('public.students_id_seq', 2, true); + + +-- +-- Name: tier_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs +-- + +SELECT pg_catalog.setval('public.tier_id_seq', 1, false); + + +-- +-- Name: account account_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.account + ADD CONSTRAINT account_pkey PRIMARY KEY (id); + + +-- +-- Name: cd cd_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.cd + ADD CONSTRAINT cd_pkey PRIMARY KEY (cd_id); + + +-- +-- Name: customer customer_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.customer + ADD CONSTRAINT customer_pkey PRIMARY KEY (id); + + +-- +-- Name: interpret interpret_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.interpret + ADD CONSTRAINT interpret_pkey PRIMARY KEY (id); + + +-- +-- Name: tier tier_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.tier + ADD CONSTRAINT tier_pkey PRIMARY KEY (id); + + +-- +-- Name: index_account_number; Type: INDEX; Schema: public; Owner: dbs +-- + +CREATE INDEX index_account_number ON public.account USING btree (number); + + +-- +-- Name: account after_update_account; Type: TRIGGER; Schema: public; Owner: dbs +-- + +CREATE TRIGGER after_update_account AFTER UPDATE ON public.account + FOR EACH ROW EXECUTE FUNCTION public.log_change(); + + +-- +-- Name: cd cd_fkey_interpret_id; Type: FK CONSTRAINT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.cd + ADD CONSTRAINT cd_fkey_interpret_id FOREIGN KEY (interpret_id) REFERENCES public.interpret(id); + + +-- +-- Name: customer customer_fkey_account_id; Type: FK CONSTRAINT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.customer + ADD CONSTRAINT customer_fkey_account_id FOREIGN KEY (account_id) REFERENCES public.account(id); + + +-- +-- Name: lied lied_fkey_cd_id; Type: FK CONSTRAINT; Schema: public; Owner: dbs +-- + +ALTER TABLE ONLY public.lied + ADD CONSTRAINT lied_fkey_cd_id FOREIGN KEY (cd_id) REFERENCES public.cd(cd_id); + + +-- +-- PostgreSQL database dump complete +-- + -- GitLab