文章目录

  • Sakila 数据库
  • Employees 数据库
  • world 数据库
  • world_x 数据库
  • menagerie 数据库
  • 总结

大家好!我是只谈技术不剪发的 Tony 老师。今天给大家介绍几个我在 MySQL 学习过程中常用的几个示例数据库。

MySQL 官方网站提供了以下几个示例数据库:Sakila、Employees、world、world_x 以及 menagerie。这些数据库既可以用于日常学习和测试,也可以作为我们设计时数据库的一个参考。本文就来介绍一下这些数据库的模式结构以及如何下载和安装。

Sakila 数据库

Sakila 是一个在线 DVD 出租商店数据库,为各种 MySQL 文档、书籍、教程、文章、示例等提供了一个标准数据库模式;同时,它还可以用于演示 MySQL 的其他功能特性,例如视图、存储过程和触发器。Sakila 数据库的模式结构如下图所示:


Sakila 数据库提供了以下数据表:

  • actor,演员信息表。通过 film_actor 表和 film 表进行关联。
  • film,电影信息表。film 引用了 language 表,同时被 film_category、film_actor 以及 inventory 表引用。
  • film_actor,电影演员表。film 表和 actor 表之间的多对多关系。
  • film_category,电影分类表。film 表和 category 表之间的多对多关系。
  • category,分类表。通过 film_category 表和 film 表进行关联。
  • inventory,电影库存表。每部电影在不同商店里的库存,被 rental 表引用。
  • film_text,电影描述表。包含了 film 表中的 film_id、title 以及 description 三个字段,通过 film 表上的触发器进行数据同步。
  • language,语言信息表。language 表被 film 表引用。
  • address,地址信息表。其中主键字段 address_id 是 customer、staff 以及 store 表上的外键引用字段,同时引用了 city 表。
  • city,城市信息表。引用了 country 表,同时被 address 表引用。
  • country,国家信息表。country 表被 city 表引用。
  • customer,客户信息表。引用了 address 和 store 表,同时被 payment 和 rental 表引用。
  • payment,付款信息表。引用了 customer、staff 以及 rental 表。
  • rental,租赁信息表,每个 DVD 每次被租赁的信息。引用了 inventory、customer 以及 staff 表,同时被 payment 表引用。
  • staff,员工信息表。引用了 store 和 address 表,同时被 rental、payment 以及 store 表引用。
  • store,商店信息表,引用了 staff 和 address 表,同时被 staff、customer 以及 inventory 表引用。

Sakila 数据库提供了以下视图:

  • actor_info,包含了所有的演员,以及他们演出过的电影。
  • customer_list,客户和地址信息列表。
  • film_list,电影信息和参与的演员。
  • nicer_but_slower_film_list,电影信息和参与的演员,演员的姓名调整为首字母大写。
  • sales_by_film_category,按照不同电影分类统计的销售金额,同一个电影可能被分为多个类别。
  • sales_by_store,按照商店统计的销售金额。
  • staff_list,员工列表,包括地址和所属的商店。

Sakila 数据库提供了以下存储过程和函数:

  • film_in_stock,存储过程,获取指定电影在指定商店内未出租的 DVD。
  • film_not_in_stock,存储过程,获取指定电影在指定商店内已出租未归还的 DVD。
  • rewards_report,存储过程,获取上个月的最佳客户列表。
  • get_customer_balance,存储函数,返回指定客户在某个日期之前的欠款。
  • inventory_held_by_customer,存储函数,返回正在租赁某个 DVD 的客户。
  • inventory_in_stock,存储函数,返回某个 DVD 是否可出租。TRUE 表示可以出租,FALSE 表示已出租未归还。

Sakila 数据库包含了以下触发器:

  • customer_create_date,插入数据时将 customer 表的 create_date 字段设置为当前日期和时间。
  • payment_date,插入数据时将 payment 表的 payment_date 字段设置为当前日期和时间。
  • rental_date,插入数据时将 rental 表的 rental_date 字段设置为当前日期和时间。
  • ins_film,将 film 表上插入的相关数据复制一份到 film_text 表。
  • upd_film,将 film 表上更新的相关数据同步到 film_text 表。
  • del_film,删除 film 表数据时同步删除 film_text 表上的相关数据。

Sakila 数据库的创建脚本可以点此下载,然后运行以下命令创建数据库并初始化数据:

shell> mysql -t <  sakila-schema.sql;shell> mysql -t <  sakila-data.sql;

创建成功之后,可以执行以下语句进行验证:

mysql> USE sakila;
Database changedmysql> SHOW FULL TABLES;
+----------------------------+------------+
| Tables_in_sakila           | Table_type |
+----------------------------+------------+
| actor                      | BASE TABLE |
| actor_info                 | VIEW       |
| address                    | BASE TABLE |
| category                   | BASE TABLE |
| city                       | BASE TABLE |
| country                    | BASE TABLE |
| customer                   | BASE TABLE |
| customer_list              | VIEW       |
| film                       | BASE TABLE |
| film_actor                 | BASE TABLE |
| film_category              | BASE TABLE |
| film_list                  | VIEW       |
| film_text                  | BASE TABLE |
| inventory                  | BASE TABLE |
| language                   | BASE TABLE |
| nicer_but_slower_film_list | VIEW       |
| payment                    | BASE TABLE |
| rental                     | BASE TABLE |
| sales_by_film_category     | VIEW       |
| sales_by_store             | VIEW       |
| staff                      | BASE TABLE |
| staff_list                 | VIEW       |
| store                      | BASE TABLE |
+----------------------------+------------+
23 rows in set (0.01 sec)mysql> SELECT COUNT(*) FROM film;
+----------+
| COUNT(*) |
+----------+
|     1000 |
+----------+
1 row in set (0.00 sec)mysql> SELECT COUNT(*) FROM film_text;
+----------+
| COUNT(*) |
+----------+
|     1000 |
+----------+
1 row in set (0.00 sec)

关于 Sakila 数据库的详细介绍和使用可以查看官方文档。

Employees 数据库

Employees 示例数据库包含了 6 个表(dept_emp、dept_manager、titles、salaries、employees 以及 departments),大约 400 万条数据(需要约 160 MB 磁盘空间)。Employees 数据库的模式结构如下图所示:

Employees 数据库支持分区表。另外,它还提供了一个数据测试的脚本,可以用于验证初始数据的完整性。

Employees 数据库的初始化脚本可以点此下载,然后运行以下命令进行解压缩:

shell> unzip test_db-master.zip
shell> cd test_db-master/

Employees 数据库默认使用 InnoDB 存储引擎,如果需要使用其他引擎,可以修改 employees.sql 文件中的以下内容:

/*!50503 set default_storage_engine = InnoDB */;

然后执行以下命令创建数据库并加载数据:

shell> mysql -t < employees.sql

学习 MySQL 必备的几个示例数据库相关推荐

  1. 在mysql中可以粘贴吗_现在我在学习MySQL,问问怎么复制粘贴数据库

    诶?这项技术又是什么玩意(What)? 这项技术为什么会存在?我们已经有那么多解决方案(Method)了,我们为什么要用它(Why)? 如果这项技术那么好且我们正好有场景可以用到这项技术,且能使我们的 ...

  2. 小蚂蚁学习mysql性能优化(8)--数据库结构优化--范式化和反范式化,水平分表,垂直分表...

    2019独角兽企业重金招聘Python工程师标准>>> 范式化和反范式化 范式化是指数据库设计的规范,目前说到范式化一般是指第三设计范式,也就是要求数据表中不存在非关键字段对任意候选 ...

  3. mysql操作窗口如何设置粘贴_现在我在学习MySQL,问问怎么复制粘贴数据库

    master [localhost:45008] ((none)) > create user clone_user@'%' identified by 'sekret'; Query OK, ...

  4. mysql shharding_mysql 技术内幕 的示例数据库

    create_president.sql CREATE TABLE president ( last_name VARCHAR(15) NOT NULL comment '名字', first_nam ...

  5. 这38个小技巧告诉你如何快速学习MySQL数据库

    无论是运维.开发.测试,还是架构师,数据库技术是一个必备加薪神器,那么,一直说学习数据库.学MySQL,到底是要学习它的哪些东西呢?此文为你揭晓,你值得一看!看过别忘记点赞+转发支持哦. 1.如何快速 ...

  6. MySQL 示例数据库 employees 详解

    [引子] IT这一行在我看来是比较要求动手能力的,但是人非生而知之:人们身上的技能除了一些本能之外,大多都是通过学习而得到的. 前一段时间一直在整理素材,写一个关于explain 的系列文章:在一开始 ...

  7. mysql中示例库安装_MySQL 官方示例数据库安装

    虽然MySQL安装包中不像SQL Server和Oracle那样提供示例数据库,但官方也提供示例数据库以供学习使用. 官方示例数据库 下载地址 http://dev.mysql.com/doc/ind ...

  8. 数据库基础:MySQL必备的三个工具

    数据库基础:MySQL必备的三个工具 MySQL是一个客户机-服务器DBMS,因此,为了使用MySQL,需要有一个客户机,即你需要用来与MySQL打交道(给MySQL提供要执行的命令)的一个应用. 有 ...

  9. mysql中employees的意思_MySQL 示例数据库 employees 详解

    [引子] IT这一行在我看来是比较要求动手能力的,但是人非生而知之:人们身上的技能除了一些本能之外,大多都是通过学习而得到的. 前一段时间一直在整理素材,写一个关于explain 的系列文章:在一开始 ...

最新文章

  1. JQUERY打造隐藏在左侧的弹性弹出菜单
  2. ssh客户端避免超时的设置
  3. ue4 无限地图_RPG游戏开发日志13:无限地图的实现
  4. PHP vs Node.js vs Nginx-Lua(转)
  5. 在Android中afinal框架下实现sqlite数据库版本升级的办法
  6. Python yaml处理
  7. 我被产品小姐姐的笔记本深深吸引了....
  8. PC端稳定性测试探索
  9. 天刀服务器维护时间表,3月2日服务器例行维护公告
  10. 自我觉察日志——9.17 (为什么老想买东西?)
  11. 计算机注册表命令,进入注册表的方法和命令(电脑的注册表怎么打开)
  12. html分组标签tfoot,网页布局中 tbody标签与thead和tfoot标签使用
  13. 句子迷,语录,苏引华
  14. 数据库开发技术的课程记录
  15. 微信生成公众号带参数二维码(一)
  16. 学点负面情绪的抗争能力
  17. Linux入门(五)-系统管理
  18. 夏天推荐凉快的地方不嫌多!四明山这里更是集凉爽与好玩一起
  19. 区块链技术培训—从技术小白到年薪百万区块链工程师的进阶之路
  20. ST-Link设备连接。 Could not verify ST device! Abort connection.

热门文章

  1. 什么是特斯拉?他和爱迪生相爱相杀。
  2. 没有伞的孩子必须努力奔跑!
  3. 灰度图像的中值滤波取证
  4. 岭南师范学院计算机证书,2017年岭南师范学院全国计算机等级考试网上报考通知第48次报考程序...
  5. linux安装五笔输入法centos,centos7.2安装五笔输入法的方法(king已测)
  6. iOS App启动+广告思路
  7. 酷雷曼一站式图片直播,助力品牌高效传播
  8. 新闻爬虫及爬取结果查询网站的搭建(一)
  9. 应用跳转(打电话/短信/邮件/浏览器/其他应用)
  10. NLP深入学习——过滤停用词(Filtering stop words)