前面我们已经介绍了在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. Asp.Net AutoMapper用法

    1.AutoMapper简介 用于两个对象映射,例如把Model的属性值赋值给View Model.传统写法会一个一个属性的映射很麻烦,使用AutoMapper两句代码搞定. 2.AutoMapper ...

  2. default listener is not configured in grid infrastructure home

    Oracle Restart enable database creation requries Default listener configured and running in Grid Inf ...

  3. Nginx配置WebService、MySQL、SQL Server、ORACLE等代理

    首先介绍一下Nginx的基本使用: 注意不要直接双击nginx.exe,这样会导致修改配置后重启.停止nginx无效,需要手动关闭任务管理器内的所有nginx进程 在nginx.exe目录,打开命令行 ...

  4. hive表增量抽取到mysql(关系数据库)的通用程序(三)

    hive表增量抽取到oracle数据库的通用程序(一) hive表增量抽取到oracle数据库的通用程序(二) 这几天又用到了该功能了,所以又改进了一版,增加了全量抽取和批量抽取两个参数.并且可以设置 ...

  5. 阿里云 FTP 无法读取目录问题

    安全组除了添加制定 FTP端口外 需要加入再添加1024/65535端口 放行策略,ftp被动模式需要随机开一个此范围端口进行传输 添加安全组规则参考文档:https://help.aliyun.co ...

  6. linux下Ftp服务安装

    安装vsftp 使用yum命令安装vsftp #yum install vsftpd -y 如果yum安装不成功,可以到 http://pkgs.org/centos-6/centos-x86_64/ ...

  7. Centos7 防火墙常用配置及说明

    一. Centos7和Centos6 防火墙的区别: 使用的工具不一样了.Centos6 使用的是iptables ,Centos7 使用的是filewall iptables 用于过滤数据包,属于网 ...

  8. nohup 和 &的含义

    https://www.cnblogs.com/jinxiao-pu/p/9131057.html

  9. [Object Tracking] Overview of Object Tracking

    From: 目标跟踪方法的发展概述 From: 目标跟踪领域进展报告 通用目标的跟踪 经典目标跟踪方法 2010 年以前,目标跟踪领域大部分采用一些经典的跟踪方法,比如 Meanshift.Parti ...

  10. [Bayes] openBUGS: this is not the annoying bugs in programming

    Bayesian inference Using Gibbs Sampling 允许用户指定复杂的多层模型,并可使用MCMC算法来估计模型中的未知参数. We use DAGs to specify ...