sakila mysql样例数据库解析_Sakila MySQL 样例数据库解析

0.前言

Sakila 可以作为数据库设计的参考,也可作为实验数据。本例是用作数据分析学习的实验数据。

The Sakila sample database was developed by Mike Hillyer, a former member of the MySQL AB documentation team, and is intended to provide a standard schema that can be used for examples in books, tutorials, articles, samples, and so forth. Sakila sample database also serves to highlight the latest features of MySQL such as Views, Stored Procedures, and Triggers.

1.实验环境

方法一:安装 MySQL 时选择 FULL 完全安装

安装 MySQL 时选择 FULL 完全安装,默认安装了 Sakila sample database

250d1c208f250e0c62871587ae4d7634.png

方法二:下载后导入

下载地址:

解压后得到三个文件:

sakila-schema.sql 文件包含创建 Sakila 数据库的结构:表、视图、存储过程和触发器

sakila-data.sql 文件包含:使用 INSERT 语句填充数据及在初始数据加载后,必须创建的触发器的定义

sakila.mwb 文件是一个 MySQL Workbench 数据模型,可以在 MySQL 的工作台打开查看数据库结构。

shell> mysql -u root -p

mysql> SOURCE C:/temp/sakila-db/sakila-schema.sql;

mysql> SOURCE C:/temp/sakila-db/sakila-data.sql;

2.数据结构

Sakila 样例数据库包括 16 张表格,7 个视图,3 个 Stored Procedures,3 个 Functions,6 个 Triggers。英文描述点开相应连接即可查看。 总览:

730bc533bbec2563786bc6f802f7c034.png

关系图:

00ccbf3a3379e12e0ff3436e49510123.png

3.视图

actor_info 视图提供了所有演员的列表及所演的电影,电影按 category 分组. actor → film_actor → film → film_category → category

actor_id: 代理主键用于唯一标识表中的每个演员

first_name: 演员的名字

last_name: 演员的姓氏

last_update: 该行已创建或最近更新的时间

6adab85fd8ca2ab238347678b2ddf638.png

客户列表,firstname和lastname连接成fullname,将 address, city, country 集成在一个视图里 customer → address → city → country

stomer_id: 代理主键用于唯一标识表中的每个客户

store_id: 一个外键,确定客户所属的 store。

first_name: 客户的名字

last_name: 客户的姓氏

email: 客户的电子邮件地址

address_id: 使用在地址 表的外键来确定客户的地址

active: 表示客户是否是活跃的客户

create_date: 顾客被添加到系统中的日期。使用 INSERT 触发器自动设置。

last_update: 该行已创建或最近更新的时间

90361383c98850928ec046582e20bfd4.png

每个电影种类的销售额 payment → rental → inventory → film → film_category → category

e8da08a589db848fbee22d4e570bda07.png

每个商店的 manager 及销售额。 payment → rental → inventory → store → staff

store 表列出了系统中的所有商店 。 store 使用外键来标识工作人员和地址;在员工、客户、库存表被作为外键使用。

store_id: 代理主键唯一标识的商店

manager_staff_id: 使用外键来标识这家商店的经理

address_id: 使用外键来确定这家店的地址

last_update: 该行已创建或最近更新的时间

b78490e8ecf358b1f82fc93d571a91ba.png

工作人员的列表

工作人员表列出了所有的工作人员,包括电子邮件地址,登录信息和图片信息 。 工作人员表是指使用外键来标识存储和地址表;在出租、支付和商店表中作为外键。

staff_id: 代理主键唯一标识的工作人员

first_name: 工作人员的名字

last_name: 工作人员的姓氏

address_id: 工作人员的地址在地址表的外键

picture: 工作人员的照片,使用了 BLOB 属性

email: 工作人员的电子邮件地址

store_id: 工作人员所在的商店,用外键标识

active: 是否是活跃的工作人员。

username: 用户名,由工作人员用来访问租赁系统

password: 工作人员访问租赁系统所使用的密码。使用了 SHA1 函数

last_update: 该行已创建或最近更新的时间

active: 是否有效,删除时设置为 False

475e885b9d741da806de8c7b015c53f9.png

4.数据分析

最具有购买潜力的顾客:

从600位顾客中去发现和找出最具有购买潜力的顾客,找出他们的邮箱地址和联系方法,并给他们发送邮件进行感谢,以保持该部分用户的持续购买欲望,增加用户的满意度,以此来保持商品的销售量。

0.数据获取

根据customer、payment两个表进行数据筛选,获得顾客编号:customer.customer_id 顾客编号;计算总消费金额;最后根据顾客消费总金额降序排列。

d621a58b9b115fb69992ea0ab44c4b16.png

具体代码:

SELECT

customer1.customer_id 顾客编号,

CONCAT( customer1.`first_name`, CONCAT( " ", customer1.`last_name` ) ) AS '顾客名',

FORMAT(sum(payment.amount),2) AS '消费金额'

FROM

customer1,

payment

WHERE

customer1.customer_id = payment.customer_id

GROUP BY

CONCAT( customer1.`first_name`, CONCAT( " ", customer1.`last_name` ) )

ORDER BY

FORMAT(sum(payment.amount),2)+0 DESC

1.连接顾客姓名

通过筛选address_id连接customer和address两表得到顾客的编号、地址、电话,然后通过顾客的编号升序排列。

fdf9ae27758445ac674a50015fc13d6d.png

具体代码:

SELECT

CONCAT( customer1.`first_name`, CONCAT( " ", customer1.`last_name` ) ) AS 顾客姓名,

customer1.customer_id 顾客编号,

address.address 顾客地址,

address.phone 顾客电话,

customer1.email

FROM

customer1 ,

address

WHERE

customer1.address_id=address.address_id

GROUP BY

CONCAT( customer1.`first_name`, CONCAT( " ", customer1.`last_name` ) )

ORDER BY

customer1.customer_id+0 ASC

2.结果分析

通过表一得到散点图:

7e156c113d9e02fe862431d2a481c58f.png

根据数据分析我们可以看到顾客KARL SEAL的消费金额221.55是600位顾客中消费总金额最高的一位,他便是最有潜力的顾客,然后我们可以通过表二去得到他的联系信息。 通过散点图我们可以分析到大多数的顾客消费总金额分布在120元上下,所以我们以120元为界,将消费总金额在120元以上顾客列为有购买潜力的顾客,从表二寻找他们的联系方式,批量对他们发送邮件进行感谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值