-- #ALTER TABLE statement

-- Передумови

-- Для виконання роботи потрібна база даих little_lemon та такі таблиці в ній:
-- Customers та Bookings.
-- ##########################################
-- 1. Створіть базу даних, якщо не існує:
CREATE DATABASE IF NOT EXISTS little_lemon_1;
-- -------------------------------------------
-- 2. Оберіть базу даних: USE little_lemon;
USE little_lemon_1;
-- -------------------------------------------
-- 3. Створіть необхідні таблиці й наповніть їх запропонованими даними:

CREATE TABLE Customers (
    CustomerID INT NOT NULL PRIMARY KEY,
    FullName VARCHAR(100) NOT NULL,
    PhoneNumber INT NOT NULL UNIQUE
);
-- -------------------------------------------

CREATE TABLE Bookings (
    BookingID INT NOT NULL PRIMARY KEY,
    BookingDate DATE NOT NULL,
    TableNumber INT NOT NULL,
    NumberOfGuests INT NOT NULL CHECK (NumberOfGuests <= 8),
    CustomerID INT NOT NULL,
    FOREIGN KEY (CustomerID) REFERENCES Customers (CustomerID) ON DELETE CASCADE ON UPDATE CASCADE
);
-- -------------------------------------------

INSERT INTO
    Customers (
        CustomerID,
        FullName,
        PhoneNumber
    )
VALUES (
        1,
        "Vanessa McCarthy",
        0757536378
    ),
    (
        2,
        "Marcos Romero",
        0757536379
    ),
    (
        3,
        "Hiroki Yamane",
        0757536376
    ),
    (4, "Anna Iversen", 0757536375),
    (5, "Diana Pinto", 0757536374);
-------------------------------------------

INSERT INTO
    Bookings (
        BookingID,
        BookingDate,
        TableNumber,
        NumberOfGuests,
        CustomerID
    )
VALUES (10, '2021-11-11', 7, 5, 1),
    (11, '2021-11-10', 5, 2, 2),
    (12, '2021-11-10', 3, 2, 4);
-------------------------------------------

CREATE TABLE FoodOrders (
    OrderID INT,
    Quantity INT,
    Cost Decimal(4, 2)
);

-- #######################################################
-- #####################  Завдання  ######################
-- #######################################################
-- #####################  Завдання 1  ####################
-- Напишіть запит, який зробить  поле OrderID первинним ключем таблиці FoodOrders.

ALTER TABLE FoodOrders
ADD CONSTRAINT pk_foodorders PRIMARY KEY (OrderID);

-- #######################################################
-- #####################  Завдання 2  ####################
-- Застосуйте обмеження NOT NULL для полів quantity та cost.

alter table FoodOrders
modify Quantity int not null,
modify Cost decimal(4, 2) not null;

SHOW COLUMNS FROM FoodOrders;

-- #######################################################
-- #####################  Завдання 3  ####################
-- Створіть два нових стовпців таблиці FoodOrders: OrderDate з типом даних DATE та CustomerID
-- типом даних INT. Для обох полів застосуйте обмеження NOT NULL.
--  CustomerID у таблиці FoodOrders зробіть зовнішнім ключем з посиланням на поле CustomerID
--  таблиці Customers.

ALTER TABLE FoodOrders
ADD OrderDate DATE NOT NULL,
ADD CustomerID INT NOT NULL,
ADD CONSTRAINT fk_foodorders_customers FOREIGN KEY (CustomerID) REFERENCES Customers (CustomerID);

SHOW COLUMNS FROM FoodOrders;

-- #######################################################
-- #####################  Завдання 4  ####################
-- Видаліть поле OrderDate з таблиці FoodOrder.

alter table FoodOrders drop column OrderDate;

SHOW COLUMNS FROM FoodOrders;

-- #######################################################
-- #####################  Завдання 5  ####################
-- Додати та перейменуйте стовпець Order_Status таблиці FoodOrders на DeliveryStatus.

alter table FoodOrders add column Order_Status varchar(20) not null;

alter table FoodOrders rename column Order_Status to DeliveryStatus;

alter table FoodOrders modify column DeliveryStatus boolean not null;

SHOW COLUMNS FROM FoodOrders;
-- #######################################################
-- #####################  Завдання 6  ####################
-- Змініть ім’я таблиці з FoodOrders на OrderDeliveryStatus.

alter table FoodOrders rename to OrderDeliveryStatus;

SHOW COLUMNS FROM OrderDeliveryStatus;
-- ########################################################