Mysql Sakila Schema
Mysql Sakila Schema
Mysql Sakila Schema
-- Version 1.0
-- Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
-- * Redistributions of source code must retain the above copyright notice, this list of conditions and the
following disclaimer.
-- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
the following disclaimer in the documentation and/or other materials provided with the distribution.
-- * Neither the name of Oracle nor the names of its contributors may be used to endorse or promote
products derived from this software without specific prior written permission.
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
USE sakila;
--
--
--
--
CONSTRAINT `fk_address_city` FOREIGN KEY (city_id) REFERENCES city (city_id) ON DELETE RESTRICT
ON UPDATE CASCADE
--
--
--
-- Table structure for table `city`
--
--
--
--
--
--
CONSTRAINT fk_film_actor_film FOREIGN KEY (film_id) REFERENCES film (film_id) ON DELETE RESTRICT
ON UPDATE CASCADE
--
--
--
--
--
description TEXT,
--
--
DELIMITER ;;
CREATE TRIGGER `ins_film` AFTER INSERT ON `film` FOR EACH ROW BEGIN
END;;
CREATE TRIGGER `upd_film` AFTER UPDATE ON `film` FOR EACH ROW BEGIN
THEN
UPDATE film_text
SET title=new.title,
description=new.description,
film_id=new.film_id
WHERE film_id=old.film_id;
END IF;
END;;
CREATE TRIGGER `del_film` AFTER DELETE ON `film` FOR EACH ROW BEGIN
END;;
DELIMITER ;
--
--
CONSTRAINT fk_inventory_film FOREIGN KEY (film_id) REFERENCES film (film_id) ON DELETE RESTRICT
ON UPDATE CASCADE
--
--
--
--
--
CONSTRAINT fk_rental_staff FOREIGN KEY (staff_id) REFERENCES staff (staff_id) ON DELETE RESTRICT
ON UPDATE CASCADE,
--
CONSTRAINT fk_staff_store FOREIGN KEY (store_id) REFERENCES store (store_id) ON DELETE RESTRICT
ON UPDATE CASCADE,
--
--
--
AS
--
--
AS
--
--
LCASE(SUBSTR(actor.first_name,2,LENGTH(actor.first_name))),_utf8'
',CONCAT(UCASE(SUBSTR(actor.last_name,1,1)),
--
--
AS
SELECT s.staff_id AS ID, CONCAT(s.first_name, _utf8' ', s.last_name) AS name, a.address AS address,
a.postal_code AS `zip code`, a.phone AS phone,
FROM staff AS s JOIN address AS a ON s.address_id = a.address_id JOIN city ON a.city_id = city.city_id
--
-- View structure for view `sales_by_store`
--
AS
SELECT
, SUM(p.amount) AS total_sales
FROM payment AS p
GROUP BY s.store_id
--
--
AS
SELECT
c.name AS category
, SUM(p.amount) AS total_sales
FROM payment AS p
GROUP BY c.name
--
--
AS
SELECT
a.actor_id,
a.first_name,
a.last_name,
FROM sakila.film f
ON f.film_id = fc.film_id
ON f.film_id = fa.film_id
AS film_info
FROM sakila.actor a
ON a.actor_id = fa.actor_id
ON fa.film_id = fc.film_id
ON fc.category_id = c.category_id
--
DELIMITER //
LANGUAGE SQL
NOT DETERMINISTIC
proc: BEGIN
IF min_monthly_purchases = 0 THEN
LEAVE proc;
END IF;
LEAVE proc;
END IF;
/*
Customer IDs.
*/
CREATE TEMPORARY TABLE tmpCustomer (customer_id SMALLINT UNSIGNED NOT NULL PRIMARY
KEY);
/*
*/
SELECT p.customer_id
FROM payment AS p
GROUP BY customer_id
HAVING SUM(p.amount) > min_dollar_amount_purchased
/*
*/
SELECT c.*
FROM tmpCustomer AS t
/* Clean up */
END //
DELIMITER ;
DELIMITER $$
DETERMINISTIC
#OK, WE NEED TO CALCULATE THE CURRENT BALANCE GIVEN A CUSTOMER_ID AND A DATE
# 2) ONE DOLLAR FOR EVERY DAY THE PREVIOUS RENTALS ARE OVERDUE
FROM payment
END $$
DELIMITER ;
DELIMITER $$
CREATE PROCEDURE film_in_stock(IN p_film_id INT, IN p_store_id INT, OUT p_film_count INT)
BEGIN
SELECT inventory_id
FROM inventory
END $$
DELIMITER ;
DELIMITER $$
CREATE PROCEDURE film_not_in_stock(IN p_film_id INT, IN p_store_id INT, OUT p_film_count INT)
BEGIN
SELECT inventory_id
FROM inventory
END $$
DELIMITER ;
DELIMITER $$
CREATE FUNCTION inventory_held_by_customer(p_inventory_id INT) RETURNS INT
BEGIN
FROM rental
RETURN v_customer_id;
END $$
DELIMITER ;
DELIMITER $$
BEGIN
#AN ITEM IS IN-STOCK IF THERE ARE EITHER NO ROWS IN THE rental TABLE
#FOR THE ITEM OR ALL ROWS HAVE return_date POPULATED
FROM rental
IF v_rentals = 0 THEN
RETURN TRUE;
END IF;
RETURN FALSE;
ELSE
RETURN TRUE;
END IF;
END $$
DELIMITER ;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;