学习 MySQL 必备的几个示例数据库
2021/6/19 19:29:56
本文主要是介绍学习 MySQL 必备的几个示例数据库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
-
- 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 数据库的创建脚本可以点此下载,然后运行以下命令创建数据库并初始化数据:
1 shell> mysql -t < sakila-schema.sql; 2 3 shell> mysql -t < sakila-data.sql;
创建成功之后,可以执行以下语句进行验证:
1 mysql> USE sakila; 2 Database changed 3 4 mysql> SHOW FULL TABLES; 5 +----------------------------+------------+ 6 | Tables_in_sakila | Table_type | 7 +----------------------------+------------+ 8 | actor | BASE TABLE | 9 | actor_info | VIEW | 10 | address | BASE TABLE | 11 | category | BASE TABLE | 12 | city | BASE TABLE | 13 | country | BASE TABLE | 14 | customer | BASE TABLE | 15 | customer_list | VIEW | 16 | film | BASE TABLE | 17 | film_actor | BASE TABLE | 18 | film_category | BASE TABLE | 19 | film_list | VIEW | 20 | film_text | BASE TABLE | 21 | inventory | BASE TABLE | 22 | language | BASE TABLE | 23 | nicer_but_slower_film_list | VIEW | 24 | payment | BASE TABLE | 25 | rental | BASE TABLE | 26 | sales_by_film_category | VIEW | 27 | sales_by_store | VIEW | 28 | staff | BASE TABLE | 29 | staff_list | VIEW | 30 | store | BASE TABLE | 31 +----------------------------+------------+ 32 23 rows in set (0.01 sec) 33 34 mysql> SELECT COUNT(*) FROM film; 35 +----------+ 36 | COUNT(*) | 37 +----------+ 38 | 1000 | 39 +----------+ 40 1 row in set (0.00 sec) 41 42 mysql> SELECT COUNT(*) FROM film_text; 43 +----------+ 44 | COUNT(*) | 45 +----------+ 46 | 1000 | 47 +----------+ 48 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 数据库的初始化脚本可以点此下载,然后运行以下命令进行解压缩:
1 shell> unzip test_db-master.zip 2 shell> cd test_db-master/
Employees 数据库默认使用 InnoDB 存储引擎,如果需要使用其他引擎,可以修改 employees.sql 文件中的以下内容:
1 /*!50503 set default_storage_engine = InnoDB */;
然后执行以下命令创建数据库并加载数据:
1 shell> mysql -t < employees.sql
这篇关于学习 MySQL 必备的几个示例数据库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-25MySQL报错Duplicate entry '0' for key 'PRIMARY'
- 2024-05-29阿里 Canal 实时同步 MySQL 增量数据至 ClickHouse 数据库
- 2024-05-24在Linux下管理MySQL的大小写敏感性
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享