前面我们已经介绍了在Python3.x中如何连接一个Mysql数据库,以及怎么样对这个数据库创建一个表,增删改查表里的数据。想必大家对Mysql数据库和简单的sql语句有了一定的了解,其实sql语句博大精深,里面的知识点非常的多,估计介绍一个星期也难以介绍全面。今天我们就来通过Mysql这种普遍使用的关系型数据库来深入了解一下sql语句中比较高级的查询部分。

准备工作

首先我们在Mysql里建立三张表,分别是:“学生表”,“学科表”和“学生成绩表”,建表语句如下图所示:

学生表
学科表
学生成绩表

学生的成绩表通过id与学生表和学科表所关联,现在我们往里插入数据,插入数据的方法很简单,这里就不多说了,插入好数据的表如下图所示:

三张表的数据

好了,一切准备就绪了,现在开始数据的查询了。

查询筛选条件

首先,基本的sql查询语句是:“select * from 表 where 条件;”通过这条sql语句可以查询到某张表里的所有字段信息,那么,筛选的运算符有以下几种:

比较运算符:等于(=)不等于(<> 或者 !=)大于(>)大于等于(>=)小于(<)小于等于(<=)IS NULLIS NOT NULL逻辑运算符与(AND)或(OR)非(NOT)

举个例子,假如我们想查学生表中年龄不大于17岁的所有女同学,那么sql语句应该是这样写的:

通过“where”后面“and”将“<=”和“=”两个比较运算符连接在一起,进行组合查询,从而得到所需要的值;

模糊查询

sql语句中提供了一种模糊查询的语句,使用通配符“%”或者“_”可以实现模糊查询,“%”是匹配多个字符,“_”是匹配一个字符,它的写法是这样的:

假如,我们想要查询所有四班的学生信息:

通过“like”和“%”组合,查询到了正确的结果。其中“%”可以只在关键词前面出现,也可以在关键词后面出现,也可以在前面和后面同时出现。分别表示前匹配、后匹配、前后匹配。

排序

排序分为升序排列和降序排列两种,其中,升序用关键词“asc”,降序用“desc”;

例如,我们想将二班的所有同学按照年龄从小到大排列,写法是这样的:

在sql语句里,“order by”表示将某个字段进行排序处理,再加上关键词“asc”或者“desc”就能实现升序和降序的普通排序方法了。

“order by”还可以实现多个字段一起排序,按照字段的先后顺序进行优先级排序,语法是:“select * from 表 order by 字段1 desc(asc) 字段2 desc(asc).......”,这样就实现多个字段一起排序了;

统计与计算

在sql语句里,可以将结果进行统计,关键词有以下几种:

COUNT:统计查询的总数;MAX:统计出最大值;MIN:统计出最小值;SUM:求和;

AVG:求平均值;

它们的写法如上图所示;

分组

在sql语句里,通常使用“group by”来进行分组,“group by”的意思就是将某个字段进行分组,然后再对分组里的内容进行操作,举例如下:

上面的例子中,可以很明显的看出,加了“group by”和不加“group by”,它们的打印结果是完全不一样的。如果我们需要知道每一个学生的成绩总和,那么很明显,下面的结果才是我们所需要的。它将每一个学生的ID进行分组,从而统计出每一个学生的成绩之和。

查询数据分页

在sql中,分页功能使用“limit”来实现,它的格式是:“limit m,n”其中“m”代表查询数据的初始行数,“n”代表偏移量。举例子:

小结

sql语句操作相对比较灵活,组合性也很强,今天我们介绍了sql语句中的查询操作,针对单张表进行操作的一些基本操作功能,接下来我们还会进行多表组合查询等更加复杂的操作,希望大家持续关注我

Python操作Mysql数据库进阶篇——查询操作详解(一)的更多相关文章

  1. mysql数据库分区功能及实例详解

    分区听起来怎么感觉是硬盘呀,对没错除了硬盘可以分区数据库现在也支持分区了,分区可以解决大数据量的处理问题,下面一起来看一个mysql数据库分区功能及实例详解   一,什么是数据库分区 前段时间写过一篇 ...

  2. MySQL数据库使用mysqldump导出数据详解

    mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等.接下来通过本文给大家介绍MySQL数 ...

  3. MySQL数据库的各种存储引擎详解

    原文来自:MySQL数据库的各种存储引擎详解   MySQL有多种存储引擎,每种存储引擎有各自的优缺点,大家可以择优选择使用: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB ...

  4. (转)总结之:CentOS 6.5 MySQL数据库的基础以及深入详解

    总结之:CentOS 6.5 MySQL数据库的基础以及深入详解 原文:http://tanxw.blog.51cto.com/4309543/1395539 前言 早期MySQL AB公司在2009 ...

  5. mysql数据库my.ini配置文件中文详解

    mysql数据库my.ini配置文件中文详解 mysqld程序–目录和文件 basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出 ...

  6. PHP操作mysql数据库:[2]查询数据听语音

    本文主要详细讲解如何使用php语言,对mysql数据库进行查询.添加.删除.更新等操作. 工具/原料   Macromedia Dreamweaver 8 mysql数据库,php语言 一.前言   ...

  7. mysql数据库表的查询操作-总结

    转自:https://www.cnblogs.com/whgk/p/6149009.html 序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VA ...

  8. 最全MySQL数据库表的查询操作

    序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VARCHAR.BLOB,等), 本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对 ...

  9. MySQL数据库my.cnf配置文件注释详解

    我们知道,在MySQL数据库安装完成后,要对my.cnf配置文件进行适当的修改才能充分利用MySQL数据库的功能.但是对于初学者来说,修改my.cnf配置文件似乎是一个比较难的过程.为了解决这个问题, ...

随机推荐

  1. 【XMPP】XMPP协议之原理篇

    XMPP协议简介 XMPP协议(Extensible Messaging and Presence Protocol,可扩展消息处理现场协议)是一种基于XML的协议. 目的是为了解决及时通信标准而提出 ...

  2. rsync安装及部署

    一.服务器端1.yum -y install rsync xinetd 2.vi /etc/xinetd.d/rsync 将yes 修改为no IPV6修改为IPV4 3.vi /etc/rsyncd ...

  3. windows server r2 安装vs2017 更新补丁Windows8.1-KB2919355-x6

    方法一: 点击vs2017安装包后提示需要更新Windows8.1-KB2919355-x64补丁 点击链接进入全部下载后查看官方安装顺序为 注意 必须按照以下顺序安装更新:clearcompress ...

  4. 命令查看linux主机配置

    查看cpu: # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 cat /proc/cp ...

  5. spring mvc中获取请求URL

    String baseUrl=request.getScheme()+"://"+request.getServerName()+":"+request.get ...

  6. CLOS网络

    CLOS网络是指为了降低多级交换网络的成本,长期以来人们一直在寻找一种交叉点数随入.出现数增长较慢的交换网络,其基本思想都是采用多个较小规模的交换单元按照某种连接方式连接起来形成多级交换网络.

  7. windows下更换pip源

    (1)在windows文件管理器中,输入 %APPDATA% (2)会定位到一个新的目录下,在该目录下新建pip文件夹,然后到pip文件夹里面去新建个pip.ini文件 (3)在新建的pip.ini文 ...

  8. python concurrent.futures.Threadpoolexcutor的有界队列和无界队列

    1.默认是无界队列,如果生产任务的速度大大超过消费的速度,则会把生产任务无限添加到无界队列中,这样一来控制不了生产速度,二来是会造成系统内存会被队列中的元素堆积增多而耗尽. 2.改写为有界队列 cla ...

  9. [Algorithm] Asymptotic Growth Rate

    f(n) 的形式 vs 判定形势 但,此题型过于简单,一般不出现在考题中. Extended: link Let's set n = 2^m, so m = log(n) T(n) = 2*T(n^( ...

  10. [原]Jenkins(十三)---jenkins用户权限管理

    * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/5337874.html 两种策略的比较