Python操作Mysql数据库进阶篇——查询操作详解(一)
前面我们已经介绍了在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数据库进阶篇——查询操作详解(一)的更多相关文章
- mysql数据库分区功能及实例详解
分区听起来怎么感觉是硬盘呀,对没错除了硬盘可以分区数据库现在也支持分区了,分区可以解决大数据量的处理问题,下面一起来看一个mysql数据库分区功能及实例详解 一,什么是数据库分区 前段时间写过一篇 ...
- MySQL数据库使用mysqldump导出数据详解
mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等.接下来通过本文给大家介绍MySQL数 ...
- MySQL数据库的各种存储引擎详解
原文来自:MySQL数据库的各种存储引擎详解 MySQL有多种存储引擎,每种存储引擎有各自的优缺点,大家可以择优选择使用: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB ...
- (转)总结之:CentOS 6.5 MySQL数据库的基础以及深入详解
总结之:CentOS 6.5 MySQL数据库的基础以及深入详解 原文:http://tanxw.blog.51cto.com/4309543/1395539 前言 早期MySQL AB公司在2009 ...
- mysql数据库my.ini配置文件中文详解
mysql数据库my.ini配置文件中文详解 mysqld程序–目录和文件 basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出 ...
- PHP操作mysql数据库:[2]查询数据听语音
本文主要详细讲解如何使用php语言,对mysql数据库进行查询.添加.删除.更新等操作. 工具/原料 Macromedia Dreamweaver 8 mysql数据库,php语言 一.前言 ...
- mysql数据库表的查询操作-总结
转自:https://www.cnblogs.com/whgk/p/6149009.html 序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VA ...
- 最全MySQL数据库表的查询操作
序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VARCHAR.BLOB,等), 本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对 ...
- MySQL数据库my.cnf配置文件注释详解
我们知道,在MySQL数据库安装完成后,要对my.cnf配置文件进行适当的修改才能充分利用MySQL数据库的功能.但是对于初学者来说,修改my.cnf配置文件似乎是一个比较难的过程.为了解决这个问题, ...
随机推荐
- (转)解决类似 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 的问题
转自:https://itbilu.com/linux/management/NymXRUieg.html 源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/l ...
- “RESOURCE MONITOR“CPU占用特别高
背景: SQL Server 2008 R2 10.50.1600 没有设置页面文件,内存为64G,数据库分配50G cpu使用占了50%以上,平时只有10-20%,某台服务器“RESOURCE MO ...
- 如何取消Visual Studio Browser Link
VS2013.2015新建MVC网站并浏览后,页面默认自动启用Browser Link功能 解决方法,只需要在web.config中添加配置节点即可 <appSettings> <a ...
- MyBatis源码分析-基础支持层反射模块Reflector/ReflectorFactory
本文主要介绍MyBatis的反射模块是如何实现的. MyBatis 反射的核心类Reflector,下面我先说明它的构造函数和成员变量.具体方法下面详解. org.apache.ibatis.refl ...
- 为什么watch机制不是银弹?
几乎所有构建系统都选择使用watch机制来解决开发过程中需要反复生成构建后文件的问题,但在watch机制下,长期以来我们必须忍受修改完代码,保存完代码必须喝口茶才能刷新看看效果的问题.在这里我们尝试探 ...
- 导出表结构sql语句
-- C:/dba必需是已经存在的目录 -- create or replace directory UTL_DIR as 'C:\dba'; --用sys用户登录给要访问的用户指定访问目录的权限gr ...
- (原)测试 Java中Synchronized锁定对象的用法
今天再android_serial_port中看到了关键字 synchronized;因为刚好在学java和android,所以就查了一下它的用法: 于是把代码中的一小段代码拿了出来,做了一下修改,测 ...
- [Tensorflow] **Android Meets TensorFlow
TensorFlow Dev Summit 2017 From: Android Meets TensorFlow: How to Accelerate Your App with AI (Googl ...
- Win10系统安装过程小记
1.网上下载ghost系统http://win10.jysmac.cn/win1064.html 2.使用系统自带的激活工具激活 3.到windows官网下载更新工具更新系统,重新安装https:// ...
- TIScript Graphics
$(#main_frame).paintContent = function(gfx) { gfx.pushLayer(#background-area); gfx.translate(0.5,0.5 ...