LINUX数据库----关于数据清洗

一、修改数据库编码

1.先登录数据库

mysql  -uroot -proot

LINUX数据库----关于数据清洗_第1张图片

2.查看数据库编码

发现数据库和数据库服务对应的编码是latin1,需要修改数据库的编码为UTF8

show VARIABLES like 'character%';

LINUX数据库----关于数据清洗_第2张图片

3. 退出数据库,编辑/etc/my.cnf文件

exit
vi /etc/my.cnf

LINUX数据库----关于数据清洗_第3张图片

LINUX数据库----关于数据清洗_第4张图片

LINUX数据库----关于数据清洗_第5张图片

4.修改配置文件

在配置文件中添加,写完以后:wq保存退出

[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_unicode_ci

LINUX数据库----关于数据清洗_第6张图片

5.重启数据库服务

systemctl restart mysql.service

1565866734612

6.再次进入数据库并查看数据库编码

mysql -uroot -proot
show VARIABLES like 'character%';

LINUX数据库----关于数据清洗_第7张图片

二、在LINUX中创建数据库及表

创建数据库

1.创建数据库

create database kb02;

1565867218386

2.创建表

use kb02
create table userinfos(userid int(20) primary key not null auto_increment,username varchar(20),birthday date);

1565867956922

3.查看新建的数据库和表

showdatabases;
show tables

LINUX数据库----关于数据清洗_第8张图片

4.热备份导出

1565868734900

退出数据库,使用mysqldump导出数据库

exit
mysqldump -uroot -proot kb02 >/opt/mysql/mysql.sql

LINUX数据库----关于数据清洗_第9张图片

5.导入文件

把之前创建的sql文件,导入进来,这里是先把已经建好的表删除了,再导入

LINUX数据库----关于数据清洗_第10张图片

操作数据库

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;

LINUX数据库----关于数据清洗_第11张图片

exist()

LINUX数据库----关于数据清洗_第12张图片

LINUX数据库----关于数据清洗_第13张图片

3.查询姓名(张,李)

模糊查询:

3.1 查询 l 开头的名字(不区分大小写)

LINUX数据库----关于数据清洗_第14张图片

3.2 查询L 开头的名字(分大小写)

LINUX数据库----关于数据清洗_第15张图片

3.3 查询L,W 开头的名字(不分大小写)

LINUX数据库----关于数据清洗_第16张图片

4.查询出生人数(某一年)

4.1 查询1995年出生的人

三种方法:

4.1.1 模糊查询

LINUX数据库----关于数据清洗_第17张图片

4.1.1 模糊查询

5.查询姓名出生人数(某一年张 李出生人数)

5.1查询姓l 或者姓w 并且出生在1901-1903的人

LINUX数据库----关于数据清洗_第18张图片