学习MySQL必备的⼏个⽰例数据库
⽂章⽬录
⼤家好!我是只谈技术不剪发的 Tony ⽼师。今天给⼤家介绍⼏个我在 MySQL 学习过程中常⽤的⼏个⽰例数据库。
MySQL 提供了以下⼏个⽰例数据库:Sakila、Employees、world、world_x 以及 menagerie。这些数据库既可以⽤于⽇常学习和测试,也可以作为我们设计时数据库的⼀个参考。本⽂就来介绍⼀下这些数据库的模式结构以及如何下载和安装。
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 changed
mysql>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|
+----------------------------+------------+
23rows in set(0.01 sec)
mysql>SELECT COUNT(*)FROM film;
+----------+
|COUNT(*)|
+----------+
|1000|
+----------+
1row in set(0.00 sec)
mysql>SELECT COUNT(*)FROM film_text;
+----------+
|COUNT(*)|
+----------+
|1000|
+----------+
1row in set(0.00 sec)
关于 Sakila 数据库的详细介绍和使⽤可以查看。
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/
mysql查看所有存储过程Employees 数据库默认使⽤ InnoDB 存储引擎,如果需要使⽤其他引擎,可以修改 employees.sql ⽂件中的以下内容:/*!50503 set default_storage_engine = InnoDB */;
然后执⾏以下命令创建数据库并加载数据:
shell> mysql -t < employees.sql
binary search tree如果想要使⽤分区表,可以执⾏ employees_partitioned.sql ⽂件。
Employees 数据库提供了 md5 和 sha 两种验证数据的⽅法:
shell>time mysql -t < test_employees_sha.sql
+----------------------+
| INFO                |
+----------------------+
| TESTING INSTALLATION |
+----------------------+
+--------------+------------------+------------------------------------------+
| table_name  | expected_records | expected_crc                            |
+--------------+------------------+------------------------------------------+
| employees    |          300024 | 4d4aa689914d8fd41db7e45c2168e7dcb9697359 |
| departments  |                9 | 4b315afa0e35ca6649df897b958345bcb3d2b764 |
| dept_manager |              24 | 9687a7d6f93ca8847388a42a6d8d93982a841c6c |
| dept_emp    |          331603 | f16f6ce609d032d6b1b34748421e9195c5083da8 |
| titles      |          443308 | d12d5f746b88f07e69b9e36675b6067abb01b60e |
| salaries    |          2844047 | b5a1785c27d75e33a4173aaa22ccf41ebd7d4a9f |
+--------------+------------------+------------------------------------------+
+--------------+------------------+------------------------------------------+
| table_name  | found_records    | found_crc                                |
手机征信安全控件下载安装
+--------------+------------------+------------------------------------------+
| employees    |          300024 | 4d4aa689914d8fd41db7e45c2168e7dcb9697359 |
24c02c时序图| departments  |                9 | 4b315afa0e35ca6649df897b958345bcb3d2b764 |
| dept_manager |              24 | 9687a7d6f93ca8847388a42a6d8d93982a841c6c |
| dept_emp    |          331603 | f16f6ce609d032d6b1b34748421e9195c5083da8 |
| titles      |          443308 | d12d5f746b88f07e69b9e36675b6067abb01b60e |
| salaries    |          2844047 | b5a1785c27d75e33a4173aaa22ccf41ebd7d4a9f |
+--------------+------------------+------------------------------------------+
+--------------+---------------+-----------+
| table_name  | records_match | crc_match |
+--------------+---------------+-----------+
| employees    | OK            | ok        |
| departments  | OK            | ok        |
| dept_manager | OK            | ok        |
| dept_emp    | OK            | ok        |肉质植物>echarts甘特图
| titles      | OK            | ok        |
| salaries    | OK            | ok        |
+--------------+---------------+-----------+
real 0m37.067s
user 0m0.007s
sys 0m0.009s
shell>time mysql -t < test_employees_md5.sql
+----------------------+
| INFO                |
+----------------------+
| TESTING INSTALLATION |
+----------------------+
+--------------+------------------+----------------------------------+
| table_name  | expected_records | expected_crc                    |
+--------------+------------------+----------------------------------+
| employees    |          300024 | 4ec56ab5ba37218d187cf6ab09ce1aa1 |
| departments  |                9 | d1af5e170d2d1591d776d5638d71fc5f |
| departments  |                9 | d1af5e170d2d1591d776d5638d71fc5f |
| dept_manager |              24 | 8720e2f0853ac9096b689c14664f847e | | dept_emp    |          331603 | c2c4fc7f0506e50959a6c67ad55cac31 | | titles      |          443308 | bfa016c472df68e70a03facafa1bc0a8 |
| salaries    |          2844047 | fd220654e95aea1b169624ffe3fca934 |
+--------------+------------------+----------------------------------+
+--------------+------------------+----------------------------------+
| table_name  | found_records    | found_crc                        |
+--------------+------------------+----------------------------------+
| employees    |          300024 | 4ec56ab5ba37218d187cf6ab09ce1aa1 | | departments  |                9 | d1af5e170d2d1591d776d5638d71fc5f |
| dept_manager |              24 | 8720e2f0853ac9096b689c14664f847e | | dept_emp    |          331603 | c2c4fc7f0506e50959a6c67ad55cac31 | | titles      |          443308 | bfa016c472df68e70a03facafa1bc0a8 |
| salaries    |          2844047 | fd220654e95aea1b169624ffe3fca934 |
+--------------+------------------+----------------------------------+
+--------------+---------------+-----------+
| table_name  | records_match | crc_match |
+--------------+---------------+-----------+
| employees    | OK            | ok        |
| departments  | OK            | ok        |
| dept_manager | OK            | ok        |
| dept_emp    | OK            | ok        |
| titles      | OK            | ok        |
| salaries    | OK            | ok        |
+--------------+---------------+-----------+
real 0m33.453s
user 0m0.007s
sys 0m0.009s
world 数据库
数据库包含了 country、countrylanguage 以及 city 表。
world 是⼀个⼩型的简单数据库,主要⽤于基础查询测试。world 数据库的初始化脚本可以,然后执⾏以下命令进⾏安装:
shell> unzip world.sql.zip
shell> mysql -t < world.sql
执⾏以下命令验证数据库的安装:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。