MySQL学习记录(导入Excel表到数据库,并筛选条件输出)

喜夏-厌秋 提交于 2020-04-27 20:04:27

附上:重置mysql账号密码方法

ubuntu系统下mysql重置密码和修改密码操作 - skh2015java的博客 - CSDN博客(改完重启,登录mysql要root/sudo权限)

Centos7重置Mysql 8.0.1 root 密码 - 网络蚂蚁 - 博客园
php7访问mysql8.0的配置

学习MySQL,我个人觉得最好的方法就是获得一个稍微大的数据库数据并通过这个数据库来学习基本操作和优化。所以我把平时学校发下来的个人信息xls/xlsx文件拿来用了。

 在这里推荐一个学习的好地方(比W3C和菜鸟教程好)https://www.shiyanlou.com/courses/9 课程以LINUX为基础,其实比Windows爽多了,学得更多

当然如果没有账号,请点这里注册:我正在实验楼撸代码,你也快来!800+编程实战教程,无需搭环境,直接练习!用我的链接注册,你我都能获得3个实验豆!http://www.shiyanlou.com/register?inviter=NTY0MzE5OTkwNjI1

像我这等穷人,可以筛选他免费的课程:https://www.shiyanlou.com/courses/?fee=free

学到上面挑战1部分后再看下面吧

 

首先是注意事项:

 

 

 

 

 然后就安装工具

--图形化工具--》

SQLyog

社区版免费(当然功能没有专业/企业版全):

Downloads · webyog/sqlyog-community Wiki  (GITHUB下载地址)

(为什么不去官网下载?因为被DNS污染)

 

安装语言可选中文

 

附上:

mysql8.0 caching_sha2_password加密方式和5.0之前的区别和解决方案 - 快乐的傻子爱编程 - CSDN博客

【MySQL基础】mysql8.0 Authentication plugin 'caching_sha2_password' cannot be loaded - 东陆之滇CSDN - CSDN博客 

 试着复制别的软件的caching_sha2_password.dll到目录,报了其他的错

既然不支持更安全的加密模式?那可能就不适合我这种追求新特性的人了。Bye~

 

Navicat(推荐)

官网下载:Navicat | 下载 Navicat Premium 14 天免费 Windows、macOS 和 Linux 的试用版

破解方法:Navicat Premium 12.1.16.0安装与激活 - 简书

 

 

建立数据库-右击数据库导入数据,选择excel文件

 (了解一下这个软件的菜单栏: "窗口" "查询")

导入成功后我们稍微修正一下(设计表),然后就点上面的查询

注:以下以表名代替你建立的表的名字

SELECT * FROM `表名`;

查询单个表里的内容:

SELECT * FROM `283班` WHERE 性别= '';
/*
*  table表名(283班)要用反引号`包起来,字符串(女)用单或双引号'  "
*  column键(性别)不能加引号


* 总结: 库表反引,字符串正引,键不引
*/

 

查询多个表的内容

SELECT

 *

FROM

 `表名1`,

 `表名2`,

 `表名2`

WHERE

 性别="女";

从3个表 选择查询(SELECT)  并筛选(WHERE)    性别为女的人的  所有信息(*)

 然后发现报错:1052 大概是说WHERE子句条件不明确(因为我们没告诉系统要筛选哪一张表的性别)MySql: Column 'XXXX' in field list is ambiguous 错误 - 邓晓晖 - 博客园 

所以我们先去掉WHERE子句试试,结果......我这个数据库是整个院系的信息,查询时导致内存爆了.... (当然内存占满对硬件应该是没有破坏力的)

算了,不能作死...

所以我们用UNION

 1 /*当然可以给性别加上表名,如 WHERE 281班.性别='女' ,但我有十多张表,不如下面复制粘贴后修改班级名来得快*/
 2 
 3 SELECT *
 4 FROM `281班`
 5 WHERE 性别=''
 6 
 7 UNION
 8 
 9 SELECT *
10 FROM `282班`
11 WHERE 性别=''
12 
13 UNION
14 
15 
16 SELECT *
17 FROM `283班`
18 WHERE 性别=''
19 
20 UNION
21 
22 SELECT *
23 FROM `284班`
24 WHERE 性别=''
点开我看

报错:> 1222 - The used SELECT statements have a different number of columns           > 时间: 0.002s

然后从这篇得到启发: sql语句之union与join的区别 - 扬空 - 博客园 

看了一下我的数据库几个表,发现EXCEL导入时多了一些NULL的Column,这些字段数量(即列的数量)不一样多,导致UNION无法拼接查询结果,所以删了多余的NULL列,

【切记】 一定要保存后才能查询成功  Navicat并不是修改后查询就会保存的(有没有保存可以查看Navicat窗口菜单栏,里面有星号的表都是没有保存的。)未保存的表没有生效修改,查询只会查到之前的结果

最终查询成功!

返回了所有女生的信息... (我TM才发现Excel表里的性别排序被人动过,除了性别其他都是对的....发表的人一定是故意的....)

                                             (数据库没有错,是导入的Excel文件本来就是假的....................)

 

 

关于Navicat的操作:   

当然,要"注意运行当前语句"与"运行"的区别

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!