MySQL官方演示数据库Sakila 使用指南

打印 上一主题 下一主题

主题 859|帖子 859|积分 2577

MySQL官方演示数据库Sakila 使用指南

简介

Sakila数据库是MySQL 官方提供的一个演示数据库,旨在模仿电影租赁业务。它包含了各种数据库表,如影片、顾客、租赁、付出等,以及关联这些表格的外键关系。Sakila数据库的业务背景重要包括以下几个方面:

  • 影片管理:Sakila数据库包含了各种影片的信息,如标题、形貌、发行年份、租赁价格等。这些影片可以被顾客租借。
  • 顾客管理:数据库中存储了各个顾客的信息,如姓名、地址、联系方式等。顾客可以通过租赁影片来享受娱乐服务。
  • 租赁管理:租赁表格纪录了顾客租借影片的信息,包括租赁日期、归还日期、租赁费用等。租赁管理方便了顾客和影片之间的交互。
  • 付出管理:付出表格纪录了顾客对租赁费用的付出情况,包括付出日期、付出金额等。付出信息与租赁信息相关联,用于管理费用的结算。
  • 库存管理:库存表格纪录了影片的库存情况,包括影片ID、库存量等信息。库存管理确保了影片的可供租借状态。
Sakila数据库可以用于学习数据库筹划、SQL查询和业务逻辑的实践,是一个理想的教学和学习工具,也可用于书籍、教程、文章等的演示示例。Sakila数据库还可用于显现MySQL的功能,如视图、存储过程和触发器。
安装

Sakila样本数据库可从https://dev.mysql.com/doc/index-other.html得到。 可下载的存档有两种格式:tar文件或Zip格式。其中三个文件:sakila-schema.sql、sakila-data.sql和sakila.mwb。
   提示
  Sakila包含MySQL版本特定的注释,因为sakila模式和数据取决于您的MySQL服务器的版本。 例如,MySQL服务器5.7.5为InnoDB添加了对空间数据索引的支持,因此address地址表将包括MySQL 5.7.5及更高版本的空间感知的location列。
  

  • sakila-schema.sql:该文件包含创建Sakila数据库布局所需的所有CREATE语句,包括表、视图、存储过程和触发器。
  • sakila-data.sql: 该文件包含填充数据库所需的INSERT语句,以及初始数据加载后必须创建的触发器的定义。
  • sakila.mwb:该文件是一个MySQL工作台数据模型,可以在MySQL工作台中打开该模型来检查数据库布局。 有关更多信息,请参阅MySQL Workbench。
要安装Sakila示例数据库,请按照以下步调操作:

  • 将下载的存档文件提取到暂时位置,如C:\temp\或/tmp/。当解压存档时,它会创建一个名为sakila-db的目次,其中包含sakila-schema.sql和sakila-data.sql文件。
2.使用mysql命令行客户端连接到MySQL服务器:
  1. $> mysql -u root -p
复制代码
输入密码。也可以使用非root帐户,条件是该帐户具有创建新数据库的权限。

  • 实行sakila-schema.sql脚本创建数据库布局,然后实行sakila-data.sql脚本来填充数据库:
  1. mysql> SOURCE C:/temp/sakila-db/sakila-schema.sql;
  2. mysql> SOURCE C:/temp/sakila-db/sakila-data.sql;
复制代码
将sakila-schema.sql和sakila-data.sql文件的路径替换为系统上的实际路径。
   提示
  在Windows上,在实行SOURCE命令时使用斜杠而不是反斜杠。
  

  • 实行以下语句,确认示例数据库已正确安装。
  1. mysql> USE sakila;
  2. Database changed
  3. mysql> SHOW FULL TABLES;
  4. +----------------------------+------------+
  5. | Tables_in_sakila           | Table_type |
  6. +----------------------------+------------+
  7. | actor                      | BASE TABLE |
  8. | actor_info                 | VIEW       |
  9. | address                    | BASE TABLE |
  10. | category                   | BASE TABLE |
  11. | city                       | BASE TABLE |
  12. | country                    | BASE TABLE |
  13. | customer                   | BASE TABLE |
  14. | customer_list              | VIEW       |
  15. | film                       | BASE TABLE |
  16. | film_actor                 | BASE TABLE |
  17. | film_category              | BASE TABLE |
  18. | film_list                  | VIEW       |
  19. | film_text                  | BASE TABLE |
  20. | inventory                  | BASE TABLE |
  21. | language                   | BASE TABLE |
  22. | nicer_but_slower_film_list | VIEW       |
  23. | payment                    | BASE TABLE |
  24. | rental                     | BASE TABLE |
  25. | sales_by_film_category     | VIEW       |
  26. | sales_by_store             | VIEW       |
  27. | staff                      | BASE TABLE |
  28. | staff_list                 | VIEW       |
  29. | store                      | BASE TABLE |
  30. +----------------------------+------------+
  31. 23 rows in set (0.01 sec)
  32. mysql> SELECT COUNT(*) FROM film;
  33. +----------+
  34. | COUNT(*) |
  35. +----------+
  36. |     1000 |
  37. +----------+
  38. 1 row in set (0.00 sec)
  39. mysql> SELECT COUNT(*) FROM film_text;
  40. +----------+
  41. | COUNT(*) |
  42. +----------+
  43. |     1000 |
  44. +----------+
  45. 1 row in set (0.00 sec)
复制代码
数据布局



名称形貌actor演员表address地址表category种别表city都会表country国家表customer客户表film电影表film_actor电影-演员关联表film_category电影-种别关联表film_text电影文本表inventory库存表language语言表payment付出表rental租赁表staff员工表store店铺表 实体关系图(ER图)


视图

视图形貌actor_info包含演员的详细信息的视图。customer_list包含客户列表的视图。film_list包含电影列表的视图。nicer_but_slower_film_list包含更优质但速度较慢的电影列表的视图。 存储过程

名称形貌film_in_stock存储过程,用于获取库存中的电影信息。film_not_in_stock存储过程,用于获取缺货的电影信息。rewards_report存储过程,用于天生奖励陈诉。 存储函数

函数形貌get_customer_balance用于获取客户的余额信息。inventory_held_by_customer用于获取客户持有的库存信息。inventory_in_stock用于获取库存中的库存信息。 触发器

触发器形貌customer_create_date当创建客户时触发,用于纪录客户创建日期。payment_date当添加付出纪录时触发,用于纪录付出日期。rental_date当添加租赁纪录时触发,用于纪录租赁日期。ins_film当插入电影纪录时触发的触发器。upd_film当更新电影纪录时触发的触发器。del_film当删除电影纪录时触发的触发器。 使用示例

租借DVD

要租借DVD,首先确认给定的库存项目是否有库存,然后向rental租赁表中插入一行纪录。创建rental租赁表后,向payment付出表中插入一行纪录。根据业务规则,还可能必要在处置惩罚租赁之前检查客户是否有未结清的余额。
  1. SELECT inventory_in_stock(10);
  2. INSERT INTO rental(rental_date, inventory_id, customer_id, staff_id)
  3.        VALUES(NOW(), 10, 3, 1);
  4. SET @rentID = LAST_INSERT_ID(),
  5.               @balance = get_customer_balance(3, NOW());
  6. SELECT @rentID, @balance;
  7. INSERT INTO payment (customer_id, staff_id, rental_id, amount,  payment_date)
  8.        VALUES(3, 1, @rentID, @balance, NOW());
复制代码
归还DVD

要归还DVD,更新rental租赁表并设置归还日期。为此,首先根据正在归还的物品的inventory_id确定要更新的rental_id。根据情况,可能必要检查客户余额,并可能通过向payment付出表中插入一行纪录来处置惩罚逾期费用的付款。
  1. SELECT rental_id
  2.        FROM rental
  3.        WHERE inventory_id = 10
  4.        AND customer_id = 3
  5.        AND return_date IS NULL
  6.        INTO @rentID;
  7. UPDATE rental
  8.        SET return_date = NOW()
  9.        WHERE rental_id = @rentID;
  10. SELECT get_customer_balance(3, NOW());
复制代码
查找逾期的DVDs

许多DVD市肆每天制作一份逾期租金清单,以便联系客户并要求退回逾期DVD。
要创建这样的列表,请在rental租赁表中搜索返回日期为NULL的电影,并且租赁日期比film电影表中指定的租赁期限更远。假如是这样,电影逾期了,应该表现电影名称以及客户姓名和电话号码。
  1. mysql> SELECT CONCAT(customer.last_name, ’, ‘, customer.first_name) AS customer,
  2.            address.phone, film.title
  3.            FROM rental INNER JOIN customer ON rental.customer_id = customer.customer_id
  4.            INNER JOIN address ON customer.address_id = address.address_id
  5.            INNER JOIN inventory ON rental.inventory_id = inventory.inventory_id
  6.            INNER JOIN film ON inventory.film_id = film.film_id
  7.            WHERE rental.return_date IS NULL
  8.            AND rental_date + INTERVAL film.rental_duration DAY < CURRENT_DATE()
  9.            ORDER BY title
  10.            LIMIT 5;
  11. +----------------+--------------+------------------+
  12. | customer       | phone        | title            |
  13. +----------------+--------------+------------------+
  14. | OLVERA, DWAYNE | 62127829280  | ACADEMY DINOSAUR |
  15. | HUEY, BRANDON  | 99883471275  | ACE GOLDFINGER   |
  16. | OWENS, CARMEN  | 272234298332 | AFFAIR PREJUDICE |
  17. | HANNON, SETH   | 864392582257 | AFRICAN EGG      |
  18. | COLE, TRACY    | 371490777743 | ALI FOREVER      |
  19. +----------------+--------------+------------------+
  20. 5 rows in set (0.10 sec)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曂沅仴駦

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表