前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安全的数据库图形管理工具(3):SQL语句(1)

安全的数据库图形管理工具(3):SQL语句(1)

作者头像
不可言诉的深渊
发布2019-07-26 17:01:51
6840
发布2019-07-26 17:01:51
举报

数据库分为两种,关系型数据库和非关系型数据库。操作关系型数据库就是编写SQL(Structured Query Language)语句。SQL语句有很多,但是我这个项目是针对菜鸟用的(我相信大佬应该都不用图形管理工具,都是直接命令走起的),所以我就只讲解一下简单的SQL语句。SQL语句主要分为两类,读取数据库和写入数据库。今天就来讲解一下读取数据库要用到的SQL语句。

SHOW DATABASES

当我们需要查看已经有哪些数据库,可以执行SQL语句——SHOW DATABASES;来实现,如图所示。

这个SQL语句没有可变参数,到时候直接封装成方法即可。有些人就会问了,难道还有可变参数?还真有,当你要显示一个数据库的所有表时,我们就需要先告诉系统要使用哪个数据库。

USE (数据库名)

我们要切换当前使用的数据库,没有必要在应用程序中关闭连接再重新连接。我们可以直接通过执行SQL语句——USE (数据库名)来切换数据库。为了验证是否真的切换成功,我们不在这里验证,而是选择在操作下面一个SQL语句时验证。

SHOW TABLES

一个数据库里面要么没有表,要么只有一个表,要么有很多个表,我们要查看当前数据库有哪些表可以通过执行SQL语句——SHOW TABLES来查看,在执行该语句之前一定要选择要使用的数据库,如图所示。

我首先是选择一个名字叫food的数据库,然后显示了这个叫food的数据库有哪些表,可以发现,这里面就一个表——名叫food。然后我切换数据库,切换成一个名字叫uml的数据库,然后显示了这个数据库的所有表,和上面的结果不一样可以说明数据库切换成功,同时也意味着SHOW TABLES这个SQL语句执行正确。

我们可以发现切换数据库需要提供一个参数——这个参数就是数据库名,到时候封装成方法也需要提供这个参数,方便在调用时传入参数。显示数据库的所有表就不需要任何参数了,直接封装即可。

SHOW COLUMNS FROM (表名)

一个数据表无非就只有两个玩意——字段名和字段值,有些时候我们需要数据表的字段名,我们可以通过执行SQL语句——SHOW COLUMNS FROM (表名)来查看,如图所示。

这个SQL语句有一个可变参数——表名。到时候依旧是封装成方法,方法提供一个参数即可。

SELECT语句

前面讲完了查看数据库和数据表相关信息之后,现在已经到了重点部分了——查询数据。

查看一个表的所有数据

查看一个表的所有数据其实很简单,我们可以通过执行SQL语句——SELECT * FROM (表名)来实现,如图所示。

只查看一个表的某几列数据

很多时候我们并不需要像上面那样显示所有数据,而是只需要某几列的数据,我们依旧还是执行SELECT语句,只不过这次和上面的不一样了。SQL语句以及执行结果如图所示。

看到了吗?这一点也不难直接通过给SQL语句列名就可以只查找这几列的数据。有些人就会奇怪了,为什么列名需要用反引号引起来?这是因为key是一个SQL关键字,为了进行区分就需要这么做,实际上表名也需要引起来,在这里config虽然不是关键字,但到以后封装的时候还是要用反引号引起的,反正任何变量都需要用反引号引起来以避免和SQL关键字冲突。

只查看一个表中符合某个条件的数据

有些时候我们并不需要像这样把所有行都显示出来,我们要查看一些符合条件的数据,比如在一个食品数据表中我们要查看卡路里小于等于100并且纤维素大于等于10的所有食品的所有信息,如图所示。

WHERE后面接的就是条件,这样就只会查出来符合这个条件的数据,并不会返回所有数据。

有些时候,我们并不仅仅是直接通过条件限制查询,我们可能还需要对结果按某个关键字排序,也有可能只需要前10条记录。

将查询结果排序

排序分为两种,升序和降序。升序就是从小到大排序,降序就是从大到小排序,MySQL默认为升序排序,如果要降序排序我们需要加上关键字DESC,如图所示。

有些时候,我们不仅仅只有一个排序字段,而是有多个字段需要排序,比如在学生成绩管理系统数据库中,要排个名次,我们一定是先按照分数排,分数一样按照学号排,这个时候学号就是一个次关键字。当然还可以定更多个次关键字,下面我直接给出多个字段排序的关键语句,不会一个个截图了。

代码语言:javascript
复制
  ORDER BY score, number  /*先按照score升序排序,如果score相同,就按照number升序排序*/
  ORDER BY score, number DESC  /*先按照score升序排序,如果score相同,就按照number降序排序*/
  ORDER BY score DESC, number  /*先按照score降序排序,如果score相同,就按照number升序排序*/
  ORDER BY score DESC, number DESC  /*先按照score降序排序,如果score相同,就按照number降序排序*/

限制结果数量

有些时候,当满足条件的结果太多,我们需要进行结果数量限制,比如游戏排行榜数据库中,我们需要获取前10名的玩家信息,如图所示。

LIMIT后面接的就是数量,写LIMIT 10就是只返回前10个结果,有些人就会问了,如果LIMIT后面的数大于符合条件的结果数会不会越界?实际上完全不会,结果会全部显示出来。

封装SELECT语句

对SELECT语句的封装比较复杂,但是我们可以发现,它有一个必选参数——表名。然后就是需要哪几列的数据,这个时候我们给一个默认参数,参数类型是一个元组,元组中的元素全是列名,参数默认值为空元组,我们可以通过修改它来对查询的列进行约束。我们可能还需要一个条件,这个条件默认值为空字符串,当需要给系统一个条件时,我们直接修改默认值。有可能还需要对结果进行排序,我们可以把这个参数定义成一个元组列表,一个元组中有两个元素,第一个元素是列名,第二个元素是bool值(True:升序,False:降序),这个参数默认为None(这里的默认参数绝对不可以是空列表,因为空列表是列表,是可变对象,一旦变化就再也修不回来了,除非重新运行程序)。最后,我们可能需要限制结果数量,这个时候我们还是定义一个默认参数,默认值为None,也就是没有限制,如果需要限制结果数我们直接修改这个默认参数即可。

关于读取数据库的SQL语句还有很多,在这里我就只给出最简单的读取数据库的SQL语句,因为我这个玩意就是给菜鸟用的。下次我讲一下写入数据库相关的SQL语句。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python机器学习算法说书人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SHOW DATABASES
  • USE (数据库名)
  • SHOW TABLES
  • SHOW COLUMNS FROM (表名)
  • SELECT语句
    • 查看一个表的所有数据
      • 只查看一个表的某几列数据
        • 只查看一个表中符合某个条件的数据
          • 将查询结果排序
            • 限制结果数量
              • 封装SELECT语句
              相关产品与服务
              数据库
              云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档