-- ----------------------------------------------------------- --
--  1. Beispiel) Constraints, DDL Statements
-- ----------------------------------------------------------- --
-- Legen Sie die Tabelle PRODUCER AN:
 
CREATE TABLE PRODUCER
(
    PRODUCER_LABEL VARCHAR(100),
    PRIMARY KEY (PRODUCER_LABEL)
);
 
-- region 1.1) ALTER TABLE
 
-- Bennen Sie die Tabelle in PRODUCERS um:
-- TODO
 
-- Fügen Sie folgende Spalte zur Tabelle hinzu:
-- CODE VARCHAR(5) NOT NULL UNIQUE
-- TODO
 
-- endregion
 
-- region 1.2) USER_CONSTRAINTS
 
-- Fragen Sie die Constraints der PRODUCERS Tabelle ab:
-- TODO
 
-- der PRODUCER_LABEL soll einen NOT NULL Constraint bekommen:
-- TODO
 
-- endregion
 
-- region 1.3) INSERT INTO
 
-- FÜgen Sie 3 Datensatze in die Tabelle ein.
-- Verwenden Sie nur ein einziges Statement dafür.
-- TODO
 
-- endregion
-- ----------------------------------------------------------- --
--  2. Beispiel) DDL Statements
-- ----------------------------------------------------------- --
-- Legen Sie die folgende Tabelle an.
 
CREATE TABLE BEVERAGES
(
    BEVERAGE_ID INT NOT NULL,
    LABEL       VARCHAR(50)   NOT NULL,
    PRIMARY KEY (BEVERAGE_ID)
);
 
-- region 2.1) ALTER TABLE
 
-- Fügen Sie einen UNIQUE Constraint auf die LABEL Spalte hinzu:
-- TODO
 
-- Fügen Sie eine Fremdschlüssel auf die PRODUCERS Tabelle ein:
-- TODO
 
 
-- Schalten Sie den referentiellen Constraint  ab:
-- TODO
 
-- Pruefen Sie den Status der Constraints fuer die Tabelle:
-- TODO
 
-- Schalten Sie den referentiellen Constraint wieder ein:
-- TODO
 
-- endregion
 
-- region 2.2) DDL Statements
 
-- Fügen Sie die AUTO_INCREMENT Eigenschaft zur Spalte BEVERAGE_ID hinzu.
-- TODO
 
-- Entfernen Sie die AUTO_INCREMENT Eigenschaft und fügen Sie die folgenden Werte ein.
-- TODO
 
INSERT INTO BEVERAGES (BEVERAGE_ID, LABEL, PRODUCER_LABEL)
VALUES (1, 'Coca Cola', 'COCA COLA COMPANY');
INSERT INTO BEVERAGES (BEVERAGE_ID, LABEL, PRODUCER_LABEL)
VALUES (2, 'Coca Cola Classic', 'COCA COLA COMPANY');
INSERT INTO BEVERAGES (BEVERAGE_ID, LABEL, PRODUCER_LABEL)
VALUES (3, 'Coca Cola Vanille', 'COCA COLA COMPANY');
 
 
-- Fügen Sie die AUTO_INCREMENT Eigenschaft erneut hinzu.
-- TODO
 
INSERT INTO BEVERAGES (LABEL, BEVERAGES.PRODUCER_LABEL)
values ('Coca Cola Zero', 'COCA COLA COMPANY');
 
-- endregion
 
-- ----------------------------------------------------------- --
--  3. Beispiel) SOFT_DRINKS
-- ----------------------------------------------------------- --
 
-- region 3.1) ALTER TABLE
 
-- Benennen Sie die BEVERAGES Tabelle in BEVERAGES_BT um.
-- TODO
 
-- endregion
 
-- region 3.2) ALTER TABLE
 
-- Legen Sie die folgenden Tabelle an:
 
CREATE TABLE SOFT_DRINKS
(
    BEVERAGE_ID   INT NOT NULL,
    SUGAR_CONTENT INTEGER,
    PRIMARY KEY (BEVERAGE_ID)
);
 
-- Definieren Sie folgenden Constraint fÜr die SUGAR_CONTENT
-- Spalte: SUGAR_CONTENT INT NOT NULL
-- TODO
 
-- Definieren Sie eine referentiellen Constraint auf die BEVERAGES_BT
-- Tabelle
-- TODO
 
-- endregion
 
-- region 3.3 ALTER TABLE
 
-- Fuegen Sie die folgenden Werte in die Tablle ein:
 
insert into BEVERAGES_BT (BEVERAGE_ID, LABEL, PRODUCER_LABEL)
values (5, 'Ice Tea Zitron', 'Radlberger Inc.');
insert into BEVERAGES_BT (BEVERAGE_ID, LABEL, PRODUCER_LABEL)
values (6, 'Ice Tea Pfirsich', 'Radlberger Inc.');
 
SELECT *
FROM BEVERAGES_BT;
 
INSERT INTO SOFT_DRINKS (BEVERAGE_ID, SUGAR_CONTENT)
values (2, 2);
INSERT INTO SOFT_DRINKS (BEVERAGE_ID, SUGAR_CONTENT)
values (3, 2);
INSERT INTO SOFT_DRINKS (BEVERAGE_ID, SUGAR_CONTENT)
values (4, 0);
INSERT INTO SOFT_DRINKS (BEVERAGE_ID, SUGAR_CONTENT)
values (5, 30);
 
-- endregion
 
-- region 3.3) ALTER TABLE
 
-- SUGAR_CONTENT Werte muessen zwischen 0 und 100 liegen
-- Führen Sie ein Update aus um die Werte auf maximal 100 und minimal 0 zu setzen.
-- TODO
 
 
-- Fügen Sie ein CHECK Constraint hinzu um zu verhindern, 
-- dass Werte außerhalb des zulässigen Bereichs eingefügt werden
-- TODO
 
-- Testen Sie Ihr Constraint mit folgendem INSERT
INSERT INTO SOFT_DRINKS (BEVERAGE_ID, SUGAR_CONTENT)
values (6, 200);
 
-- endregion
 
-- ----------------------------------------------------------- --
--  4. Beispiel) BEER
-- ----------------------------------------------------------- --
 
-- region 4.1) CREATE TABLE, ALTER TABLE
 
CREATE TABLE BEER
(
    BEVERAGE_ID       INT NOT NULL,
    ALCOHOLIC_CONTENT INTEGER       NOT NULL,
    PRIMARY KEY (BEVERAGE_ID),
    CONSTRAINT FK_BEER_BEVERAGE_ID FOREIGN KEY (BEVERAGE_ID)
        REFERENCES BEVERAGES_BT (BEVERAGE_ID)
            ON DELETE CASCADE
);
 
-- Check Constraint: ALCOHOLIC_CONTENT Werte muessen zwischen 0 und 15 liegen
-- TODO
 
-- Wird ein beverage Datensatz geloescht soll der entsprechende
-- BEER Datensatz automatisch geloescht werden.
-- TODO
 
-- endregion
 
-- region 4.2)
-- Fuegen Sie folgende Werte ein:
 
 
INSERT INTO BEVERAGES_BT (BEVERAGE_ID, LABEL, PRODUCER_LABEL)
values (9, 'Zwettler Bier', 'Zwettler Brauerei Inc. ');
INSERT INTO BEER (BEVERAGE_ID, ALCOHOLIC_CONTENT)
VALUES (9, 12);
INSERT INTO BEVERAGES_BT (BEVERAGE_ID, LABEL, PRODUCER_LABEL)
values (8, 'Zwettler Bier Geisterbräu', 'Zwettler Brauerei Inc. ');
INSERT INTO BEER (BEVERAGE_ID, ALCOHOLIC_CONTENT)
VALUES (8, 14);
 
 
-- endregion
 
-- region 4.3) TRUNCATE TABLE, DELETE
-- Loeschen Sie die Bier Datensaetze.
 
 
-- endregion
 
-- ----------------------------------------------------------- --
--  5. Beispiel) CUSTOMERS
-- ----------------------------------------------------------- --
 
-- region 5.1) CREATE TABLE
 
-- Legen Sie die folgende Tabelle an
 
CREATE TABLE CUSTOMERS
(
    CUSTOMER_ID INT NOT NULL,
    FIRST_NAME  VARCHAR(50)   NOT NULL,
    LAST_NAME   VARCHAR(50)   NOT NULL,
    PRIMARY KEY (CUSTOMER_ID)
);
 
 
-- Aktivieren Sie das AUTO_INCREMENT
 
ALTER TABLE CUSTOMERS
MODIFY CUSTOMER_ID INT NOT NULL AUTO_INCREMENT;
-- endregion
 
-- region 5.2) DML Statements
 
-- Fügen Sie zwei Werte ein
-- TODO
 
 
-- Fuegen Sie der Tabelle die folgende Spalte hinzu:
-- JOINED_AT DATE not null
-- TODO
 
-- Loeschen Sie alle Datensaetze der Tabelle customers
-- TODO
 
 
-- endregion
 
-- ----------------------------------------------------------- --
--  6. Beispiel) ORDERS
-- ----------------------------------------------------------- --
 
-- region 6.1) DDL Statements
-- Legen Sie die folgenden Datenbankobjkete an:
 
create table orders
(
    order_id   int not null,
    order_date date          not null,
    primary key (order_id)
);
 
insert into orders (order_id, order_date)
values
(1, '21.12.2025'),
(2, '22.12.2025'),
(3, '23.12.2025'),
(4, '24.12.2025'),
(5, '25.12.2025'),
(6, '26.12.2025'),
(7, '27.12.2025'),
(8, '28.12.2025');
 
-- Fügen Sie die auto_increment Eigenschaft zur Spalte orders.order_id hinzu
-- TODO
 
-- Erstellen Sie eine Tabelle customer_has_orders
-- customer_id (PK,FK), orders_id (PK, FK), beverage_id (PK, FK), price
-- Check Constraint: price muss zwischen 0 und 1000 liegen
-- TODO
 
-- Fügen Sie drei Werte in die neue Tabelle ein
-- TODO
 
-- endregion
 
-- ----------------------------------------------------------- --
--  DELETE OBJECTS
-- ----------------------------------------------------------- --
drop table customer_has_orders;
drop table orders;
drop table CUSTOMERS;
drop table BEER;
drop table SOFT_DRINKS;
drop table BEVERAGES_BT;
drop table PRODUCERS;