LINUX数据库----关于数据清洗
一、修改数据库编码
1.先登录数据库
mysql -uroot -proot
[外链图片转存失败(img-zvMV99Js-1567242114658)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565865982234.png)]
2.查看数据库编码
发现数据库和数据库服务对应的编码是latin1,需要修改数据库的编码为UTF8
show VARIABLES like 'character%';
[外链图片转存失败(img-2f0W9tcF-1567242114658)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565866081245.png)]
3. 退出数据库,编辑/etc/my.cnf文件
exit
vi /etc/my.cnf
[外链图片转存失败(img-VqqrF66C-1567242114659)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565866261309.png)]
[外链图片转存失败(img-5NJQ79Rc-1567242114659)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565854311898.png)]
[外链图片转存失败(img-jZVOUEAB-1567242114659)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565854030530.png)]
4.修改配置文件
在配置文件中添加,写完以后:wq保存退出
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_unicode_ci
[外链图片转存失败(img-0FIzoveJ-1567242114659)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565866533479.png)]
5.重启数据库服务
systemctl restart mysql.service
[外链图片转存失败(img-LIauUqox-1567242114659)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565866734612.png)]
6.再次进入数据库并查看数据库编码
mysql -uroot -proot
show VARIABLES like 'character%';
[外链图片转存失败(img-AWgRdCUK-1567242114660)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565866976038.png)]
二、在LINUX中创建数据库及表
创建数据库
1.创建数据库
create database kb02;
[外链图片转存失败(img-cavZkkxe-1567242114660)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565867218386.png)]
2.创建表
use kb02
create table userinfos(userid int(20) primary key not null auto_increment,username varchar(20),birthday date);
[外链图片转存失败(img-0mOpSEXT-1567242114660)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565867956922.png)]
3.查看新建的数据库和表
showdatabases;
show tables
[外链图片转存失败(img-MvBR9FC7-1567242114660)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565868105580.png)]
4.热备份导出
[外链图片转存失败(img-UyOs31nB-1567242114661)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565868734900.png)]
退出数据库,使用mysqldump导出数据库
exit
mysqldump -uroot -proot kb02 >/opt/mysql/mysql.sql
[外链图片转存失败(img-v1pxi2M7-1567242114661)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565868631572.png)]
5.导入文件
把之前创建的sql文件,导入进来,这里是先把已经建好的表删除了,再导入
[外链图片转存失败(img-7PilKo9Q-1567242114661)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565869043983.png)]
操作数据库
1.将本地建好的数据,导入到数据库中
2.清洗数据
将不符合要求的过滤,并将查询的结果写到新的表中:username、birthday为空都过滤,名字相同的保留最大的userid的信息
create table cp_user as select max(userid) uid ,username ,max(birthday) birth from
(SELECT *
from userinfos
WHERE username !='' and birthday !='') newuserinfos
GROUP BY username
ORDER BY uid;
[外链图片转存失败(img-HvdlMsvY-1567242114662)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565876785081.png)]
exist()
[外链图片转存失败(img-UufAvvl2-1567242114662)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565862339211.png)]
[外链图片转存失败(img-RWSGEsre-1567242114662)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565862515443.png)]
3.查询姓名(张,李)
模糊查询:
3.1 查询 l 开头的名字(不区分大小写)
[外链图片转存失败(img-W3ccez9w-1567242114662)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565876405830.png)]
3.2 查询L 开头的名字(分大小写)
[外链图片转存失败(img-qzEtKRFN-1567242114662)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565877032505.png)]
3.3 查询L,W 开头的名字(不分大小写)
[外链图片转存失败(img-v3DJRJpj-1567242114663)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565877401711.png)]
4.查询出生人数(某一年)
4.1 查询1995年出生的人
三种方法:
4.1.1 模糊查询
[外链图片转存失败(img-LcW6N1B1-1567242114663)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565877775245.png)]
4.1.1 模糊查询
5.查询姓名出生人数(某一年张 李出生人数)
5.1查询姓l 或者姓w 并且出生在1901-1903的人
4.查询出生人数(某一年)
4.1 查询1995年出生的人
三种方法:
4.1.1 模糊查询
[外链图片转存中…(img-LcW6N1B1-1567242114663)]
4.1.1 模糊查询
5.查询姓名出生人数(某一年张 李出生人数)
5.1查询姓l 或者姓w 并且出生在1901-1903的人
[外链图片转存失败(img-PLCI6ukz-1567242114663)(C:\Users\WSC\AppData\Roaming\Typora\typora-user-images\1565920389228.png)]