为了更好的学习MySQL,实战是巩固和学习的最好途径,所以我们需要构建一个MySQL练习数据库。从网络上下载了美国某电商数据集,其包含以下信息:
- 引用表。共三个引用表,其中两张表包含人口统计信息(美国人口统计局2000年的统计数据),另一张表包含关于日期的日历信息。
- Subscribers数据集,用于描述移动电话公司的客户子集。
- Purchases数据集,用于描述客户购买模式的数据集。
这些数据集的实体-关系图表(ER图)如下:
下面我们就开始构建MySQL练习数据库吧。
1. 创建数据库
打开Navicat,连接本地MySQL,新建数据库。填写数据库名,选择字符集和排序规则。如下图所示:
- 字符集一般选择 utf-8或者gbk。
- 排序规则的选择需要注意的是,utf8_general_ci、utf8_general_cs、utf8_bin的区别,ci全称为case insensitive,意思是大小写不敏感,cs区分大小写,bin是以二进制数据存储,且区分大小写。如果要求数据库不区分大小写,则需要选择ci结尾的。
2. 创建数据表
因为下载的数据集均为txt文档,故需要将这些数据集导入数据库中。
在创建好的数据库下。右键点击表,选择导入向导…,进入导入向导界面:
1)选择相应的文件格式,点击下一步。
2)选择数据源和编码格式,点击下一步。
3)选择字段分隔符,点击下一步。
4)自定义选项,如数据是从第几行开始,到第几行结束,日期的格式等等。点击下一步。
5)预览数据字段,对数据类型进行更改。点击下一步。
6)选择导入模式。点击下一步。
7)点击开始即可完成数据的导入工作。
上面七个步骤即为使用Navicat导入txt文档的过程,当然除了txt文档还有其他类型的文档(如csv、excel、json等)可导入数据表中,其步骤也大同小异。
剩余的8个txt文档同样可通过Navicat进行导入。
当然,除了使用Navicat导入外,还可以使用以下sql语句案例进行导入。
-- 使用sqltest数据库
USE sqltest;
-- 如果数据表Campaigns存在,则先删除
DROP TABLE IF EXISTS Campaigns;
-- 创建Campaigns数据表
CREATE TABLE Campaigns (
CampaignId int NOT NULL PRIMARY KEY,
CampaignName varchar(50) NOT NULL,
Channel varchar(50) NOT NULL,
Discount int NOT NULL,
FreeShppingFlag char(1) NOT NULL
) ;
-- 本地导入txt文档
LOAD DATA LOCAL INFILE 'E:\\Folder\\SQLTest\\testdata\\campaigns.txt' IGNORE INTO TABLE Campaigns
-- FIELDS TERMINATED BY表示字段分隔符
FIELDS TERMINATED BY ' '
-- LINES TERMINATED BY 表示行分隔符
LINES TERMINATED BY '\n'
-- IGNORE 1 LINES表示忽略第一行进行导入
IGNORE 1 LINES ;
至此,所有的数据集已导入到MySQL中,接下来,我们就可以使用这些数据集来进行实战了。