暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

教你从Excel入门MySQL

程序媛的新被窝 2021-10-31
346


MySQL简介



数据库是干什么的?

数据库主要用于互联网后台系统存储数据。比如淘宝系统,在页面上展示的金额,颜色等信息都是存储在数据库中的。


通俗来说就是有一块磁盘空间,然后数据库语言定义了一些规范,我们调用数据库命令的时候,这些命令会进行词法和语法解析,然后把数据存储在磁盘空间里面。


数据库有哪些类型?

数据库有2种类型:关系型数据库和非关系型数据库。


其中关系型数据库,是指采用了关系模型来组织数据的数据库,以行和列的形式存储数据,便于用户理解。关系型数据库的一系列行和列被称为表(和excel的一个sheet类似,有行和列),一组表就组成了数据库(类似excel的多个sheet)


非关系型数据库,区别于关系型数据库,表示不是用规则的行列进行存储。主要包括键值存储数据库、列存储数据库、文档型数据库、图形数据库等。类似于word文档,PPT这种,就是里面的内容不像excel一样一行一列标标准准的,你自己想怎么放,随便整。


MySQL数据库是一种关系型数据库。可以看一下下图的数据表存储结构,是不是和excel一毛一样。


MySql数据表


互联网数据的存储过程


首先,我们解释一下互联网数据是怎么存储到数据库中的。


以账号注册为例,当我们在输入框中输入账号和密码信息的时候,输入的数据会被作为参数,通过页面路由传递(网络信息传输)到后端服务(java、C++、PHP或者是GO语言写的服务)。然后后端服务会经过一些逻辑处理后(平时学习的基础语法就是用来写这个的),调用数据库API, 然后这个API会执行数据库语句,把我们的数据写入磁盘。这样就完成了一次存储。


注:API接口的意思是,数据库有自己的插入语句,比如说是insert into table A (列名) values (信息); 然后java后台服务为了方便写入,就写了一个API接口,如果叫做 insertA ,然后底层的实现语句就是 insert into table A (列名) values (信息)。那么InsertA 就叫做API接口。其实也就是一种功能封装。这样的话大家都可以复用,而不是每个人都把原生的数据库语句写在后端服务代码里面。


类似于打1008611话费查询,你不用打了10086之后按步骤去自己选择是否人工呼叫之类的,而是直接打1008611就表示你要查询套餐,运行商就直接给你发短信了。API接口是对一系列功能的封装,而对外只提供一个最简单的方法,使用这个方法就可以实现这些功能。


MySQL的生命周期


上面讲了数据从后端服务传输到数据库并且存储的过程。这部分要介绍的就是当后端服务把自己的参数传递到MySQL数据库服务的时候,MySQL数据库做了哪些操作,把数据写进磁盘空间的。这个过程被称为MySQL的生命周期。


如下图,其中应用程序/客户端表示后端服务(我们在软件上操作,其实就是在操作后端服务的接口,我们输入的文字或者图片,就是给这个接口的传参)或者是客户端软件(例如navicat等),可以通过账号、密码、端口与MySQL数据库系统建立网络连接。连接建立完毕之后,我们执行的命令到达MySQL数据库系统,系统会对我们执行的命令进行解析查询、检查权限、优化查询、然后通过存储引擎执行查询,得到查询结果后,通过网络传输返回给应用程序或者客户端。


注:MySQL数据库需要把数据存储在磁盘中,但是这些数据如果随便乱放的话,查询效率就会变慢。也就是我们所学的什么O(n)、O(nlog)等的那些查询时间复杂度。那应该怎么办,就是用空间换时间。所以才有了什么哈希表,二叉树。而存储引擎,就是做这个事的,MySQL说我想把数据存在磁盘里,然后不是MySQL自己去做的这个事,而是它连接了存储引擎(也有一大批专门做存储引擎的公司),存储引擎根据一定的结构,比如说是树状的,对数据进行存储。然后在读取的时候,查找这个数据,时间复杂度就会低很多(更详细的原理,可以到存储引擎部分介绍)。


到这里,我们就介绍完了在系统页面上的数据是怎么存储到MySQL数据库的。


MySQL生命周期图


MySQL简单查询


上面提到MySQL和excel基本是类似的,那接下来我们就类比excel的操作介绍MySQL的原生语句有哪些。因为除了原生语句,还可以通过API接口对MySQL数据库进行操作(我们通过后端服务写入数据库,其实使用的就是API调用)


和我们登录一个网站类似,首先要有网址,然后输入用户名和密码进行连接,此外API接口连接数据库也是封装了这条命令。同样,也可以通过MySQL客户端链接MySQL数据库系统。


数据库连接语句:


mysql -uroot -p


执行完这条语句的时候,数据库就会连接完毕。我们类比查看一个excel文件(包含多个sheet)来操作数据库。


首先,查看机器上一共有多少个数据库(一个文件夹里面有几个excel文件):


show databases;


然后,查看指定数据库有几张表(某个excel包含几个sheet)


show tables;


接下来,查看某个指定的表的内容(查看某个指定的sheet的内容):MySQL常见的数据库操作有:增,删,改,查。


1、【查找】其中的一条记录(类比excel 的一行记录)


select * from 表名 where 列名 = "列的名字";


2、【更新】发现第8行的某个字段写错了,需要更新一下(类比excel手动改某个单元格的内容)


update 表名  set 列名 = "更新后的名字"  where  行名 = 8; 


3、【删除】如果第10行的记录是没有用的,那么就删了这条记录(类比excel删除一行记录)


delete from 表名 where 行名 = 10;


4、【新增】发现没有小明的信息,那需要插入一条信息(类比excel添加一行记录,所以这个记录对应的每个列的内容都是要填充进去的)


insert into 表名 ("列名1","列名2") values ("第一列内容", "第二列内容") 


更多专业命令,可自行搜索“MySQL查询命令有哪些”


MySQL聚合查询


聚合查询的意思是我想知道一共有多少行,或者我想一次性查出多少行。概括来说,就是要做信息统计。


比如,查询一共有多少行数据记录(类比excel 每页下面显示的总行数)


select count(*) from 表名; 或者

select count(id) from 表名;


此外,MySQL的聚合查询还有一些函数操作(类比excel 的求和,平均等算术计算)。例如我想知道,某一列,比如这一列是年龄,就跟excel筛选年龄最大的记录类似:


select max("列名") from 表名;


更多专业命令,可自行搜索“MySQL聚合查询命令有哪些”



触类旁通

拒绝盲目


MySQL记录变更语句


上面我们介绍了简单查询语句,但是在实际情况下,我们需要做一些数据库或者是表字段的变更。


和上面的操作类似,当我们没有数据库的时候需要新建数据库(类比文件夹里面没有文件,要新建excel文件)


create database <数据库名>;


后来发现名字写错了,要删除数据库(类比删除文件夹里面的某个excel文件)


drop database <数据库名>;


有了数据库,里面没有表,要新建表(类比excel里面新建sheet, 当然我们新建了excel文件的时候是默认带有一个sheet的)


create table 表名 (列名 列类型);


发现这张表有点多余,想删掉表(类比excel里面删除sheet)


drop table 表名;


然后,需要在表里面加一列(在excel里面加一列)


alter table 表名 add column 列名 数据类型  约束;


在表里面删除一列(在excel里面删除一列)


alter table 表名 drop 列名;


变更一个列名(在excel改一列的名称)


alter table 表名 change  原列名 新列名 数据类型  约束;


更多专业命令,可自行搜索“MySQL表结构变更命令有哪些”


MySQL可视化工具


上面说到的MySQL客户端工具就是MySQL可视化工具。


和操作系统类似,linux是没有图形界面的,windows和mac的操作系统才有。并不是说没有图形界面就不能做事情了。就像我们最初学的cp 复制命令,在linux用cp, 在windows直接鼠标复制就可以。同样,我们上面介绍的MySql命令,在linux系统上可以直接使用原生命令,但是得到的结果,大家都知道,是文本展示的。而使用可视化工具的话,展示出来就跟excel每次筛选之后得到的结果一样,可以在可视化工具中展示出来。


MySQL可视化工具有navicat , sequel Pro 等,可以自行百度一下,个人比较喜欢navicat。下面提供了一个下载破解版的地址,如果下载失败,可以后台私信领取。这个地址大家可以收藏一下,各种破解版软件,巨好用。


下载地址:https://www.macbl.com/app/new


更多数据库可视化工具使用方法,可自行搜索“navicat如何使用”


navicat 连接示意图


结束语


至此,大家已经基本入门MySQL啦,起码达到了会用的目的。就可以上手练习原生MySQL命令,或者用自己的项目连接数据库进行操作啦。其中更详细的原理和知识点可以在使用过程中慢慢查阅资料或者学习官方文档。


当然,π酱也会在后面对常用原理进行整理和分析。下一篇文章预告,MySQL索引和性能调优。



END


π酱留言栏:π酱还是坚持不做知识搬运工的原则。对于简单入门的知识不做抄送,只做内在逻辑的介绍和分析,帮助非专业的朋友理解互联网开发的组成部分和交互使用逻辑,涉及内容知识点请自行搜索。对于比较深的模块会做技术分析和知识点的整理分享。一起向“收藏即学到”说不。


文章转载自程序媛的新被窝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论