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

方法二:下载后导入

下载地址:

解压后得到三个文件:

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。英文描述点开相应连接即可查看。 总览:

关系图:

3.视图

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

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

first_name: 演员的名字

last_name: 演员的姓氏

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

客户列表,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: 该行已创建或最近更新的时间

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

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

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

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

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

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

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

工作人员的列表

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

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

first_name: 工作人员的名字

last_name: 工作人员的姓氏

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

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

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

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

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

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

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

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

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

4.数据分析

最具有购买潜力的顾客:

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

0.数据获取

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

具体代码:

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两表得到顾客的编号、地址、电话,然后通过顾客的编号升序排列。

具体代码:

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.结果分析

通过表一得到散点图:

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

sakila mysql样例数据库解析_Sakila MySQL 样例数据库解析相关推荐

  1. 【QT 数据库专辑】【02】WIN7下搭建本地MYSQL数据库02 - 建立数据库的驱动程序-QT为例-完备版

    前言: 前一段时间项目紧张的,调一个数据库,总是连不上MySQL,于是用QT自己的SQLlite,好像也是可以的.直到,朴树把猎户星座的专辑自己给推翻了,重新在11-15日又发行了一把,暗暗佩服!今天 ...

  2. 修改mysql数据库默认字符集_MySQL数据库之修改mysql默认字符集的两种方法详细解析...

    本文主要向大家介绍了MySQL数据库之修改mysql默认字符集的两种方法详细解析 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. (1) 最简单的修改方法,就是修改mysql的m ...

  3. Java分析MySQL的数据结构_Java面试解析总结:Java+Redis+数据库+算法与数据结构+分布式...

    金九银十即将到来,给大家整理了今年来最经典的面试真题1000+道,每个题目都有详细的解答,收集了java基础.RabbitMQ,微服务.MySQL数据库.Java并发.JVM,Redis.设计模式,S ...

  4. mysql数据库sql注入原理_SQL注入原理解析以及举例1

    sql注入是指web应用程序对用户输入数据的合法性没有判断,导致攻击者可以构造不同的sql语句来实现对数据库的操作. sql注入漏洞产生满足条件: 1:用户能够控制数据的输入. 2:原本需要执行的代码 ...

  5. 跟沐风晓月一起玩转数据库之MySQL数据库表操作技巧与实用方法解析

    前言 今天我们开始探讨数据库表的操作,包含了表的增删改查,但不包含数据的增删改查,想要了解更多关于数据库表中对表中数据进行增删改查的方法,参见下篇文章. 可以关注我的云原生社区:云原生社区 也可以关注 ...

  6. webmin安装mysql_细化解析:MySQL+Webmin轻松创建数据库_MySQL

    有多少次你在考虑怎样设置数据库时感到为难?其实,如果你在Linux上使用MySQL,就不会有这种情况了.在Linux上使用Webmin图形界面来创建MySQL数据库将变得十分的简单. 在这篇文章中,我 ...

  7. php spry文本域_《PHP和MySQL Web 开发》第8章 设计Web数据库

    封面人物 刘承羽 前言 这是我学习<PHP和MySQL Web 开发>的读书笔记,一些重要的知识点我会记录下来,当然只会写我觉得重要的. 如果有幸有人看到这个学习笔记了,你要结合着书看,不 ...

  8. AnalyticDB for MySQL:PB级云数仓核心技术和场景解析

    2019阿里云峰会·上海开发者大会于7月24日盛大开幕,本次峰会与未来世界的开发者们分享开源大数据.IT基础设施云化.数据库.云原生.物联网等领域的技术干货,共同探讨前沿科技趋势.本文整理自数据库专场 ...

  9. “我的代码正在被千百万人使用”,MySQL 之父等六大国际数据库掌门人谈如何做数据库

    作者 | 屠敏 出品 | CSDN(ID:CSDNnews) 都说互联网是有记忆的,殊不知强大的记忆力的背后是一个名为数据库的东西在默记,将散是满天星.亦或纷纷残叶满阶头的凌乱信息以各种形态永留存在互 ...

最新文章

  1. Redis客户端JetCache的单机版和集群版的配置
  2. Android TextView 初步学习
  3. 数据结构-记忆化搜索讲解
  4. 个人图书管理系统c语言代码,c语言源代码---------------个人图书管理系统
  5. IOI1999 花店橱窗布置
  6. java-HashSet源码学习
  7. python3 os模块相关方法
  8. linux服务器开发板,linuxnfs服务器的建立,虚拟机、开发板间的通信
  9. OPPO Reno6系列将推Bobbi Brown联名版
  10. BAT程序员必备技能调研,你中了几招?
  11. Mysql解决存入表情报错的问题,调整编码为utf8mb4
  12. c运算符优先级_C运算符
  13. SLAM_四元数取逆-Quaternion Inverse - 已验证
  14. IPC-610E(电子组件的可接受性)
  15. 光线cms,如何增加像百度一样的智能提示
  16. 神经网络与深度学习(邱锡鹏)
  17. 猿来你也在这里,北京上海无聊猿线下见面会成功举办
  18. latex如何更改某一段落的字体_LaTeX 设置字体
  19. S3C2440 温度传感器ds18b20的焊接测试
  20. 将Excel上千条数据写入到数据库中

热门文章

  1. selenium篇之滑动验证码
  2. CSS实现父元素半透明,子元素不透明
  3. 【数据福利】三种冰川编目数据
  4. 2021年中国医疗卫生机构数量达103.1万个,诊疗人次达85.3亿次[图]
  5. ZOJ3944 People Counting ZOJ3939 The Lucky Week (模拟)
  6. Android---仿QQ空间动态九宫格图片预览(一)
  7. linux 内核代码分析1 TI am335x
  8. 奇数位于偶数之前:调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。 如数组:[1,2,3,4,5,6] 调整后可能是:[1, 5, 3, 4, 2, 6]
  9. 【PostgreSQL】PG中日期格式化与Java中的区别
  10. 外源赤霉素保护高粱幼苗免受精异丙甲草胺药害的机制研究