Sakila 示例数据库  /  Sakila 更改历史记录

11 Sakila 更改历史记录

本节描述了 Sakila 示例数据库每个版本中的更改。

版本 1.5

  • 修复了 MySQL 错误 #112552:address 字段中缺少带重音符号的字符。

版本 1.4

  • 修复了 MySQL 错误 #112131:将 film_text.film_id 字段设为无符号,以匹配其他 film_id 定义。

  • film_list 和 nicer_but_slower_film_list 视图不返回没有演员的电影。

版本 1.3

  • 修复了 MySQL 错误 #106951:citycountry 字段中缺少带重音符号的字符;它们的值已使用 world 数据库更新。此外,也缺少尖音符号本身。

  • 修复了 MySQL 错误 #107158:删除了 payment 表中 rental_id 值为空的五行。

版本 1.2

  • 数据库对象现在使用 utf8mb4 而不是 utf8。此更改导致 MySQL 5.6 中 film.title 列出现 指定的键过长;最大键长度为 767 个字节 错误,该列声明为 VARCHAR(255)。实际的最大标题长度为 27 个字符,因此该列被重新声明为 VARCHAR(128),以避免超过最大键长度。

  • sakila-schema.sqlsakila-data.sql 包含 SET NAMES utf8mb4 语句。

  • sakila-data.sql 已从 DOS (CRLF) 行结尾转换为 Unix (LF) 行结尾。

  • address.location 列是一个 GEOMETRY 列,它有一个 SPATIAL 索引。从 MySQL 8.0.3 开始,除非索引空间列具有 SRID 属性,否则将忽略 SPATIAL 索引。location 列已更改为包含 SRID 0 属性,适用于 MySQL 8.0.3 及更高版本。

  • staff.password 列声明为 VARCHAR(40) BINARY。这是在字符列声明中使用 BINARY 作为指定 _bin 排序规则的简写,从 MySQL 8.0.17 开始已弃用。该列被重新声明为 BINARY 的简写形式,即 VARCHAR(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin

  • rewards_report() 存储过程中,min_dollar_amount_purchased 参数声明为 DECIMAL(10,2) UNSIGNED。从 MySQL 8.0.17 开始,不建议将 UNSIGNEDDECIMAL 一起使用。该参数在重新声明时未包含 UNSIGNED

  • film_in_stock()film_not_in_stock() 存储过程使用了 FOUND_ROWS() 函数,该函数从 MySQL 8.0.17 开始已弃用。在每个过程中,FOUND_ROWS() 查询都被替换为使用 COUNT(*) 的查询,该查询与其关联查询使用相同的 FROMWHERE 子句。这比使用 FOUND_ROWS() 更昂贵,但产生相同的结果。

  • 在 MySQL 5.6.10 之前的版本中,film_text 表使用 MyISAM 而不是 InnoDB,以避免在旧版本中创建表失败。(但是,我们仍然建议升级到 MySQL 5.6.10 或更高版本。)

  • MySQL Workbench 的 sakila.mwb 文件已根据上述更改进行了更新。

版本 1.1

  • 删除了所有 MyISAM 引用。film_text 表及其 FULLTEXT 定义现在使用 InnoDB。如果您使用的是较旧的 MySQL 服务器版本(5.6.10 及更低版本),我们建议升级 MySQL。如果无法升级,请在 sakila-schema.sql SQL 文件中将 film_text 表的 ENGINE 值更改为 MyISAM

版本 1.0

  • 通过使用 MySQL 特定于版本的注释,将 sakila-schema.sqlsakila-spatial-schema.sql 合并到一个文件中。

    从 MySQL 服务器 5.7.5(向 InnoDB 添加了空间索引支持时)开始,空间数据(例如 address.location)将插入到 sakila 数据库中。此外,从 MySQL 服务器 5.6.10 开始使用 InnoDB 全文搜索,在此之前使用的是 MyISAM

版本 0.9

  • 添加了 Sakila 示例数据库的另一个副本,其中包含使用几何数据类型的空间数据。这可以作为单独的下载获得,并且需要 MySQL 服务器 5.7.5 或更高版本。要使用此数据库,请加载 sakila-spatial-schema.sql 文件而不是 sakila-schema.sql 文件。

  • 修改了 nicer_but_slower_film_listfilm_list 视图定义的 GROUP BY 子句,以使其与 ONLY_FULL_GROUP_BY SQL 模式兼容,该模式从 MySQL 5.7.5 开始默认启用。

版本 0.8

  • 更正了 upd_film 触发器定义,以包含对 film_id 值的更改。

  • 添加了 actor_info 视图。

  • 更改了 inventory_held_by_customer 函数的错误处理程序。函数现在有一个针对 NOT FOUND 的退出处理程序,而不是更隐晦的 1329

  • 将新 BSD 许可证的模板添加到架构和数据文件中。

  • 在适用的情况下,将 READS SQL DATA 添加到存储过程和函数中,以支持在 MySQL 5.1 上加载。

  • 修复了 rewards_report 过程中日期范围问题(感谢 Goplat)。

版本 0.7

  • 修复了 sales_by_store 视图中的一个错误,该错误导致每个商店都列出了相同的经理。

  • 修复了 inventory_held_by_customer 函数中的一个错误,该错误导致函数返回多行。

  • rental_date 触发器移动到 sakila-data.sql 文件中,以防止它干扰数据加载。

版本 0.6

  • 添加了 film_in_stock 存储过程。

  • 添加了 film_not_in_stock 存储过程。

  • 添加了 inventory_help_by_customer 存储函数。

  • 添加了 inventory__in_stock 存储函数。

  • 优化了用于加载的数据文件(多行 INSERT 语句、事务)。(感谢 Giuseppe)

  • 修复了 payment 表加载脚本中的一个错误,该错误导致付款金额无限增加。

版本 0.5

  • 添加了 sales_by_storesales_by_film_category 视图,由 Jay Pipes 提交。

  • 添加了 rewards_report 存储过程,由 Jay Pipes 提交。

  • 添加了 get_customer_balance 存储过程。

  • 添加了 sakila-data.sql 文件,用于将数据加载到示例数据库中。

版本 0.4

  • staff 表添加了 password 列(VARCHAR(40) BINARY DEFAULT NULL)。

版本 0.3

  • address.district 更改为 VARCHAR(20)

  • customer.first_name 更改为 VARCHAR(45)

  • customer.last_name 更改为 VARCHAR(45)

  • customer.email 更改为 VARCHAR(50)

  • 添加了 payment.rental_id 列(一个 INT NULL 列)。

  • payment.rental_idrental.rental_id 添加了外键。

  • 添加了 rental.rental_idINT Auto_Increment,使其成为代理主键,旧主键更改为 UNIQUE 键。

版本 0.2

  • 所有表都有一个具有传统行为(DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)的 last_update TIMESTAMP 列。

  • actor_id 现在是 SMALLINT

  • address_id 现在是 SMALLINT

  • category_id 现在是 TINYINT

  • city_id 现在是 SMALLINT

  • country_id 现在是 SMALLINT

  • customer_id 现在是 SMALLINT

  • customer 表中的 first_namelast_name 现在是 CHAR 而不是 VARCHAR

  • customer 表现在有 email CHAR(50)

  • customer 表上的 create_date 现在是 DATETIME(以适应 last_update TIMESTAMP)。

  • customer 表有一个新的 ON INSERT 触发器,用于强制将 create_date 列设置为 NOW()

  • film_id 现在是 SMALLINT

  • film.description 现在有 DEFAULT NULL

  • 添加了类型为 YEARfilm.release_year

  • 添加了 film.language_idfilm.original_language_id 以及 language 表。对于可能已添加字幕的外国电影,original_language_id 可以是 NULLlanguage_idNOT NULL

  • film.length 现在是 SMALLINT

  • 删除了 film.category_id 列。

  • 新表:film_category;允许每部电影有多个类别。

  • 删除了 film_text.category_id 列。

  • inventory_id 现在是 MEDIUMINT

  • payment_id 现在是 SMALLINT

  • payment.payment_date 现在是 DATETIME

  • payment 表添加了触发器,以强制在 INSERT 时将 payment_date 设置为 NOW()

  • rental.rent_date 现在是 rental.rental_date,并且现在是 DATETIME

  • rental 表中添加了触发器,以确保在 INSERT 操作时将 rental_date 设置为 NOW()

  • staff_id 现在是 TINYINT 类型。

  • 添加了 staff.email 列(VARCHAR(50))。

  • 添加了 staff.username 列(VARCHAR(16))。

  • store_id 现在是 TINYINT 类型。

  • 更新了 film_list 视图以处理新的 film_category 表。

  • 更新了 nicer_but_slower_film_list 视图以处理新的 film_category 表。