Files
obsidian/WS2324/Datenbank/Unterricht/11. Funktionen und Prozeduren (19.12.2023)/Praktikum/Shop.sql

263 lines
12 KiB
SQL

ALTER SESSION SET NLS_DATE_FORMAT='DD.MM.YYYY';
DROP TABLE Kunde cascade constraints;
DROP TABLE Artikel cascade constraints;
DROP TABLE Warenkorb cascade constraints;
DROP TABLE Lager cascade constraints;
DROP TABLE Artikelkategorie CASCADE Constraints;
DROP TABLE Bestellung CASCADE CONSTRAINTS;
DROP TABLE Bestellposition CASCADE CONSTRAINTS;
drop table Lieferer_has_Artikel cascade constraints;
drop table lieferer cascade constraints;
DROP SEQUENCE Best_seq;
DROP SEQUENCE Pos_seq;
CREATE TABLE Kunde(
Kundennummer INTEGER PRIMARY KEY,
Anrede CHARACTER(4) CHECK (Anrede IN ('Herr','Frau')),
Vorname CHARACTER(50),
Nachname CHARACTER(30) DEFAULT 'N.N.',
Geburtsdatum DATE,
email varchar(30),
Ort CHARACTER(50),
plz VARCHAR(10),
strasse varchar(50),
hausnummer varchar(5)
);
CREATE TABLE Artikelkategorie(
KategorieKrz CHAR(3) PRIMARY KEY,
Bezeichnung VARCHAR(50),
Oberkategorie CHAR(3),
FOREIGN KEY (Oberkategorie) REFERENCES Artikelkategorie(KategorieKrz)
);
CREATE TABLE Artikel(
Artikelnummer INTEGER PRIMARY KEY,
Artikelname VARCHAR (1000),
Preis NUMERIC (7,2) CHECK (Preis >=0),
KategorieKrz CHAR(3) NOT NULL,
FOREIGN KEY (KategorieKrz) REFERENCES Artikelkategorie(KategorieKrz)
);
CREATE TABLE Warenkorb(
Kundennummer INTEGER,
Artikelnummer INTEGER,
Anzahl INTEGER CHECK( Anzahl >=0),
PRIMARY KEY (Kundennummer, Artikelnummer),
FOREIGN KEY (Kundennummer) REFERENCES Kunde(Kundennummer)
ON DELETE CASCADE,
FOREIGN KEY (Artikelnummer) REFERENCES Artikel(Artikelnummer)
ON DELETE CASCADE
);
CREATE TABLE Lager(
Lagernummer INTEGER,
Standort VARCHAR (3) CHECK (Standort IN ('INF', 'MED', 'FAN', 'WIR')),
ANummer INTEGER,
Lagerbestand INTEGER CHECK (Lagerbestand >=0),
PRIMARY KEY (Lagernummer),
FOREIGN KEY (ANummer) REFERENCES Artikel(Artikelnummer)
ON DELETE SET NULL
);
CREATE TABLE Bestellung(
Bestellnummer INTEGER,
Kundennummer INTEGER,
Bestelldatum DATE,
Bestellstatus VARCHAR(10) CHECK (Bestellstatus IN ('bestellt', 'bestaetigt', 'geliefert')),
wunschtermin TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (Bestellnummer),
FOREIGN KEY (Kundennummer) REFERENCES Kunde (Kundennummer)
);
CREATE TABLE Bestellposition(
Pos INTEGER,
Bestellnummer INTEGER,
Artikelnummer INTEGER,
Anzahl INTEGER CHECK( Anzahl >=0),
Preis NUMERIC (7,2) CHECK (Preis >0),
Reduktion NUMERIC (4,2) DEFAULT 0.0,
PRIMARY KEY (Bestellnummer, Pos),
FOREIGN KEY (Bestellnummer) REFERENCES Bestellung(Bestellnummer)
ON DELETE CASCADE,
FOREIGN KEY (Artikelnummer) REFERENCES Artikel(Artikelnummer)
);
CREATE TABLE lieferer (
lieferernummer NUMBER(10) NOT NULL PRIMARY KEY,
anrede CHARACTER(4) CHECK (Anrede IN ('Herr','Frau')),
vorname VARCHAR(45) NOT NULL,
nachname VARCHAR(45) NOT NULL
) ;
CREATE TABLE Lieferer_has_Artikel (
lieferernummer NUMBER(10) NOT NULL,
artikelnummer number(10) not null,
FOREIGN KEY (Artikelnummer) REFERENCES Artikel(Artikelnummer),
FOREIGN KEY (lieferernummer) REFERENCES Lieferer(lieferernummer),
Primary key(artikelnummer,lieferernummer)
) ;
CREATE SEQUENCE Best_seq
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
CACHE 10;
CREATE SEQUENCE Pos_seq
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
CACHE 10;
--
-- Dumping data for table kunde
--
INSERT INTO kunde VALUES (1,'Frau','Herta','Mueller', '04.10.1921', 'fritz@hotmail.de', '39850','Maieskuel', 'Neuerstrasse', null);
INSERT INTO kunde VALUES (6,'Herr','Dagobert','Duck', '24.09.1930', 'dd@gmx.de', '39850', 'Maieskuel', 'Am Geldspeicher', '5');
INSERT INTO kunde VALUES (7,'Frau','Freya','Wille', '22.05.1979', 'freyaw@satannet.org', '39846', 'Maieskuel', 'Feldweg', '5');
INSERT INTO kunde VALUES (8,'Herr','Hubert','Humbug','12.04.1966', 'hubihum@yahoo.com', '39846', 'Maieskuel', 'Am Markt', '88');
INSERT INTO kunde VALUES (9,'Frau','Amber','Love','04.02.1983', 'amberlove@forsale.de', '39846', 'Maieskuel', 'Rotlichtgasse', '7');
INSERT INTO kunde VALUES (10,'Herr','P.','Usher','22.02.1988', 'Drugstore@gmx.at','Maieskuel', '39000', 'Rotlichtgasse', '4');
INSERT INTO kunde VALUES (11,'Frau','Kriemhild','Kratzbaum','23.05.1944', 'katzenlady@whiskas.de', '39000', 'Maieskuel', 'Feldweg', '17');
INSERT INTO kunde VALUES (12,'Herr','A.','S. S. Assin','29.06.1967', 'gunfreak@hotmail.com', '39846', 'Maieskuel', 'Am Friedhof', '666');
INSERT INTO kunde VALUES (13,'Frau','Mathilda','Metzger','24.04.1977', 'metzgereimetzger@gmx.de', '39846', 'Maieskuel', 'Am Markt', '1');
INSERT INTO kunde VALUES (14,'Herr','Vlad','Draculea','09.09.1431', 'tepes@gmx.ru', '39001', 'Maieskuel', 'Am Friedhof', '77');
INSERT INTO kunde VALUES (2,'Herr','Jeffrey','Döhmer','21.03.1960', 'jeff@gmx.de', '39846', 'Maieskuel', 'An der Schokoladenfabrik', '8');
INSERT INTO kunde VALUES (4,'Frau','Pueppi','Lawless','24.10.1983', 'plawless@gmx.de', '39850', 'Maieskuel', 'Freier Fall', '24');
INSERT INTO kunde VALUES (5,'Frau','Stefanie','Meier','04.11.1979', 'mutti@yahoo.com', '39850', 'Maieskuel', 'Am Markt', '20');
INSERT INTO kunde VALUES (3,'Herr','Rupert','Ratte','22.07.1963', 'harleyfahrer@web.de', '39850', 'Maieskuel', 'Rotlichtgasse', '55');
INSERT INTO kunde VALUES (16,'Herr','Georg','Hausierer','12.12.1990', 'rodentizid@web.de', '39850', 'Maieskuel', 'Am Trigger', '88');
INSERT INTO kunde VALUES (17,'Frau','Chantal','Schulze','12.01.1998', 'discomaus18@gmx.net', '39000', 'Maieskuel', 'An der Schokoladenfabrik', '8');
UPDATE kunde SET vorname='Vladimir', nachname='Drach' WHERE kundennummer='14';
-- UPDATE kunde SET passwort='curare', anrede='Herr', vorname='Georg', nachname='Hausierer', geburtsdatum='12.12.1990', strasse='Am Trigger 88', wohnort='Orakel', plz='39850', tel='0346-465483', mail='rodentizid@web.de', konto_nr='5236785', blz='370001', bankname='Sparkasse Orakel' WHERE idKunde='16';
INSERT INTO kunde (Kundennummer, anrede, vorname, nachname, geburtsdatum, ort) VALUES ('18', 'Herr', 'Pierre', 'Bauklo', '28.02.1998', 'Maieskuel');
INSERT INTO kunde (Kundennummer, anrede, vorname, nachname, geburtsdatum, ort) VALUES ('19', 'Herr', 'Marco', 'Mark', '30.05.1977', 'Maieskuel');
--
-- Dumping data for table artikelkategorie
--
INSERT INTO artikelkategorie VALUES('GET', 'Getraenke', NULL);
INSERT INTO artikelkategorie VALUES('AKF','Alkoholfreie','GET');
INSERT INTO artikelkategorie VALUES('SAE','Saefte','GET');
INSERT INTO artikelkategorie VALUES('WAS','Wasser','GET');
INSERT INTO artikelkategorie VALUES('LIM','Limonade','GET');
INSERT INTO artikelkategorie VALUES('ALK','Alkoholhaltige','GET');
INSERT INTO artikelkategorie VALUES('WEI','Wein','ALK');
INSERT INTO artikelkategorie VALUES('BIE','Bier','ALK');
INSERT INTO artikelkategorie VALUES('MIL','Milchhaltige','GET');
INSERT INTO artikelkategorie VALUES('MIS','Milchsorte','MIL');
INSERT INTO artikelkategorie VALUES('SPE','Spezielles','GET');
INSERT INTO artikelkategorie VALUES ('WHI', 'Whiskey', 'ALK');
INSERT INTO artikelkategorie VALUES ('SEK', 'Sekt', 'ALK');
UPDATE artikelkategorie SET bezeichnung='Koelsch' WHERE KategorieKrz='BIE';
INSERT INTO artikelkategorie VALUES ('COL', 'Cola', 'LIM');
INSERT INTO artikelkategorie VALUES ('KAF', 'Kaffeegetraenk', 'MIS');
INSERT INTO artikelkategorie VALUES ('HMI', 'H-Milch', 'MIS');
INSERT INTO artikelkategorie VALUES ('KAK', 'Kakao', 'MIS');
INSERT INTO artikelkategorie VALUES ('PIL', 'Pils', 'BIE');
INSERT INTO artikelkategorie VALUES ('APF', 'Apfelsaft', 'SAE');
INSERT INTO artikelkategorie VALUES ('ORA', 'Orangensaft', 'SAE');
INSERT INTO artikelkategorie VALUES ('KOH', 'Kohlensaeurenhaltig', 'GET');
--
-- Dumping data for table artikel
--
INSERT INTO artikel VALUES (1,'Multisaft',2.95,'SAE');
INSERT INTO artikel VALUES(2,'Bonaqua',2.95,'KOH');
INSERT INTO artikel VALUES(3,'Cola',2.95,'KOH');
INSERT INTO artikel VALUES(4,'Bordeaux',5,'ALK');
INSERT INTO artikel VALUES(5,'Pils',2.5,'ALK');
INSERT INTO artikel VALUES(6,'LatteGetraenk',2.55,'MIL');
INSERT INTO artikel VALUES(7,'Kirschsaft',2.55,'SAE');
INSERT INTO artikel VALUES(8,'Sanguis',65.95,'ALK');
--
-- Dumping data for table bestellung
--
INSERT INTO bestellung VALUES (50,6, '21.07.2016','bestaetigt','23.07.2016 15:00:00');
INSERT INTO bestellung VALUES (49,14, '21.07.2016','bestaetigt','23.07.2016 14:30:00');
INSERT INTO bestellung VALUES (48,10, '21.07.2016','bestaetigt','23.7.2016 11:30:00');
INSERT INTO bestellung VALUES (47,1, '20.07.2016','bestaetigt','24.07.2016 14:00:00');
INSERT INTO bestellung VALUES (46,4,'20.07.2016','bestaetigt','22.07.2016 12:00:00');
INSERT INTO bestellung VALUES (45,3,'20.07.2016','bestaetigt','23.07.2016 15:00:00');
INSERT INTO bestellung VALUES (44,7,'20.07.2016','bestaetigt','21.07.2016 14:00:00');
INSERT INTO bestellung VALUES (43,11,'20.07.2016','bestaetigt','25.07.2016 16:00:00');
INSERT INTO bestellung VALUES (51,12,'22.07.2016','bestellt','26.07.2016 17:00:00');
INSERT INTO bestellung VALUES (52,8,'22.07.2016','bestellt','26.07.2016 07:00:00');
INSERT INTO bestellung VALUES (53,9,'22.07.2016','bestellt','26.07.2016 11:00:00');
INSERT INTO bestellung VALUES (54,11,'23.07.2016','bestellt','01.08.2016 14:00:00');
INSERT INTO bestellung VALUES (55,5,'23.07.2016','bestaetigt','25.07.2016 12:00:00');
INSERT INTO bestellung VALUES (56,2,'23.07.2016','bestaetigt','25.07.2016 14:10:00');
INSERT INTO bestellung VALUES (57,6,'23.07.2016','bestellt','31.07.2016 14:30:00');
INSERT INTO bestellung VALUES (58,13,'24.07.2016','bestellt','02.08.2016 16:00:00');
INSERT INTO bestellung VALUES (59,7,'24.07.2016','bestellt','01.08.2016 07:00:00');
INSERT INTO bestellung VALUES (60,14,'25.07.2016','bestellt','04.08.2016 16:00:00');
INSERT INTO bestellung VALUES (61, 9, '25.07.2016', 'bestellt', '31.07.2016 14:00:00');
--
-- Dumping data for table bestellposition
--
INSERT INTO bestellposition VALUES (117,60,8,20, 65.95,0);
INSERT INTO bestellposition VALUES (116,59,3,10,2.95,0);
INSERT INTO bestellposition VALUES (115,58,2,25,2.95,0);
INSERT INTO bestellposition VALUES (114,57,8,9,65.95,0);
INSERT INTO bestellposition VALUES (113,56,7,4,2.55,0);
INSERT INTO bestellposition VALUES (112,55,5,18, 2.5,0);
INSERT INTO bestellposition VALUES (111,54,8,4,65.95,0);
INSERT INTO bestellposition VALUES (110,53,1,4,2.95,0);
INSERT INTO bestellposition VALUES (109,52,3,15,2.95,0);
INSERT INTO bestellposition VALUES (108,51,4,4,5,0);
INSERT INTO bestellposition VALUES (107,50,8,8,65.95,0);
INSERT INTO bestellposition VALUES (106,49,8,5,65.95,0);
INSERT INTO bestellposition VALUES (105,48,1,10, 2.95,0);
INSERT INTO bestellposition VALUES (104,47,8,7,65.95,0);
INSERT INTO bestellposition VALUES (103,46,2,20, 2.95,0);
INSERT INTO bestellposition VALUES (102,45,6,10, 2.55,0);
INSERT INTO bestellposition VALUES (101,44,5,12, 2.5,0);
INSERT INTO bestellposition VALUES (100,43,8,6,65.95,0);
INSERT INTO bestellposition VALUES (118, 61, 4, 4,5,0);
--
-- Dumping data for table lieferer
--
INSERT INTO lieferer VALUES (1,'Herr','Lars','Mayer');
INSERT INTO lieferer VALUES (2,'Frau','Anastasia','Mueller');
INSERT INTO lieferer VALUES (3,'Herr','Eric','Beckers');
INSERT INTO lieferer VALUES (4,'Herr','Dorian','Graie');
--
-- Dumping data for table warenkorb
--
INSERT INTO warenkorb VALUES (3,3,2);
INSERT INTO warenkorb VALUES (3,5,4);
INSERT INTO warenkorb VALUES (5,1,5);
--
-- Dumping data for table lager
--
INSERT INTO Lager VALUES (27135,'INF',1, 2);
INSERT INTO Lager VALUES (27136,'INF',2, 18);
INSERT INTO Lager VALUES (27432,'FAN',3, 0);
INSERT INTO Lager VALUES (27522,'MED',4, 1);
INSERT INTO Lager VALUES (27523,'MED',5, 3);
INSERT INTO Lager VALUES (27525,'MED',6, 5);
INSERT INTO Lager VALUES (27527,'INF',7, 3);
INSERT INTO Lager VALUES (27528,'MED',8, 5);
INSERT INTO Lieferer_has_Artikel VALUES(1,1);
INSERT INTO Lieferer_has_Artikel VALUES(2,2);
INSERT INTO Lieferer_has_Artikel VALUES(3,3);
INSERT INTO Lieferer_has_Artikel VALUES(4,4);
INSERT INTO Lieferer_has_Artikel VALUES(4,8);