python进阶09 MySQL高级查询
python进阶09 MySQL高级查询
一、筛选条件
# 比较运算符
# 等于:= 不等于:!= 或<> 大于:> 小于:< 大于等于>= 小于等于:<=
#空:IS NULL 非空:IS NOT NULL
# NULL 的查询比较特殊,只有在条件里加上IS NULL 或IS NOT NULL 才能够查询出NULL
#逻辑运算符
#与:AND 或:OR 非:NOT
范围查询
BETWEEN a AND b
SELECT * FROM students WHERE age BETWEEN 17 AND 18;#查询students表中年龄在17和18之间(包括)的列 IN
SELECT * FROM students WHERE age IN (16,19); #查询students表中年龄是16和19的列
模糊查询
LIKE
% #任意多个字符
_ #一个字符 SELECT * FROM students WHERE name LIKE '%八';#查询students表中名字结尾为八的(前面可以是任何字符)的行 SELECT * FROM students WHERE name LIKE '_七';#查询students表中名字结尾为七的(前面只能是一个字符)的行 #% 和 _可以放前面和后面,_可以是任意个
#原则是以“像什么样子样子”去皮费
二、排序与去重
排序
ORDER BY (排序)
SELECT columns FROM students ORDER BY ord_col_1 [asc/desc];#中括号可加可不加 asc #正序(默认)
desc #倒序 SELECT * FROM students ORDER BY age desc,number asc ;#查询students表中按年龄倒序,学号正序的顺序排序的结果;age后不加东西默认表示正序
去重
DISTINCT #去重关键字
SELECT DISTINCT columns FROM tb_name SELECT DISTINCT klass,age FROM students;#将students表中klass列和age列都相同的列去重 如果直接SELECT * ...是不会重复的(因为有主键的存在(唯一+非空)),所以我们要指定列查询
三、分组和聚合
#聚合:为了统计信息,将多个值聚在一起
#分组对于聚合意味着可以分组统计 #常用聚合函数
COUNT(*) #统计个数
MAX(columns) #最大值
MIN(columns) #最小值
SUM(columns)#求和
AVG(columns)#平均数 SELECT COUNT(*) FROM students;#统计这个表中有多少行 SELECT name,age(*) FROM students; #会报错,原因是永乐聚合函数就不能原来的查询方法,用子查询可以解决这个问题
SELECT * FROM students WHERE age =(SELECT MAX(age) FROM students);#这个就可以解决想要实现的聚合函数课原来函数的方法
聚合分组
GROUP BY #分组
SELECT group_columns,aggregations FROM tb_name GROUP BY group_column; SELECT * FROM students GROUP BY klass;#报错,原因是在分组的情况下,只应该出现分组列和聚合列,其他的列没有任何意义 SLEECT klass,COUNT(*) FROM students GROUP BY klass;#按klass分组后,查询这两klass中各组的数量 #分组的时候只应该出现分组列和聚合列 原因是获得的聚合数不属于任何一个原来的数据
#如果不分组,如果有聚合列就只能有聚合列
聚合筛选
#筛选出平均年龄大于17.5的行
SELECT klass,AVG(age) FROM students GROUP BY age HAVING AVG(age)>17.5 HAVING #只有在聚合分组的时候筛选的 #筛选顺序总结:
#ON > WHERE > HAVING
四、限制与分页
#一次性不需要那么多数据,如何第自定义行开始算 #限制结果个数 SELECT columns FROM tb_name LIMIT count; #限制为start个结果 SELECT columns FROM tb_name LIMIT start,count;#从start+1行开始计算,限制count个结果 #分页:必须要在python里面定义变量
SELECT columns FROM tb_name LIMIT (n-1)*m,m sql=(SELECT * FROM students LIMIT %s%s)%((n-1)*m,m)
五、作业
用python实现分页查询(先input函数获取用户想看的页码,再去返回查询)
import pymysql#导入pymysql
db_config = {
'user': 'root',
'password': 'qwe123',
'db': 'python3',
'charset': 'utf8',
}
def get_page(n, m):定义获取n,m函数
try:
cur = conn.cursor()#连接游标
sql='SELECT * FROM students LIMIT %s,%s' % ((n - 1) * m, m)#sql代码:按第n-1页,每m行查询
cur.execute(sql)#执行sql代码
for s in cur.fetchall():遍历结果集
print(s)
except Exception as a:#错误情况
print(a)
conn.rollback()
finally:
cur.close()#关闭游标连接
try:
conn=pymysql.connect(**db_config)#连接
while True:#除非正确,不然不执行
n=int(input('请输入页面号:'))#输入页码
m=int(input('请输入行号:'))#确定行号
get_page(n,m)#执行get_page函数
except Exception as b:#错误情况
print(b)
#这里没有加cur.commit()的原因是没有修改数据库,只有修改了才需要commit
python进阶09 MySQL高级查询的更多相关文章
- MySQL 高级查询操作
目录 MySQL 高级查询操作 一.预告 二.简单查询 三.显示筛选 四.存储过程 五.查询语句 1.作为变量 2.函数调用 3.写入数据表 备注 附表一 附表二 相关文献 博客提示 MySQL 高级 ...
- python进阶10 MySQL补充 编码、别名、视图、数据库修改
python进阶10 MySQL补充 编码.别名.视图.数据库修改 一.编码问题 #MySQL级别编码 #修改位置: /etc/mysql/mysql.conf.d/mysqld.cnf def ...
- python进阶08 MySQL基础补充
python进阶08 MySQL基础补充 本次课程都是基于三张表格的使用 一.子查询 #如何找到‘张三’的成绩 #思路:先找到张三的学号,在拿这个张三的学号到成绩表里面去匹配,得出成绩 #如何用一条查 ...
- python进阶07 MySQL
python进阶07 MySQL 一.MySQL基本结构 1.认识MySQL #MySQL不是数据库,它是数据库管理软件 #MySQL如何组织数据 #如何进入MySQL数据库 #其他注意事项 #以表格 ...
- 第四章 MySQL高级查询(二)
第四章 MySQL高级查询(二) 一.EXISTS子查询 在执行create 或drop语句之前,可以使用exists语句判断该数据库对像是否存在,返回值是true或false.除此之外,exists ...
- 第三章 MySQL高级查询(一)
第三章 MySQL高级查询(一) 一.SQL语言的四个分类 1. DML(Data Manipulation Language)(数据操作语言):用来插入,修改和删除表中的数据,如INSE ...
- MySQL高级查询与编程作业目录 (作业笔记)
MySQL高级查询与编程笔记 • [目录] 第1章 数据库设计原理与实战 >>> 第2章 数据定义和操作 >>> 2.1.4 使用 DDL 语句分别创建仓库表.供应 ...
- MySQL高级查询与编程笔记 • 【目录】
章节 内容 实践练习 MySQL高级查询与编程作业目录(作业笔记) 第1章 MySQL高级查询与编程笔记 • [第1章 数据库设计原理与实战] 第2章 MySQL高级查询与编程笔记 • [第2章 数据 ...
- 2.mysql高级查询
01.SQL高级查询_排序 1.排序语句:order by 排序字段名 asc(默认的-升序) / desc(降序); 2.例如:查询所有服装类商品,将查询结果以价格升序排序: ...
随机推荐
- awk添加文本到指定内容后一行
一下操作会输入到文件末尾,,测试不全面,还不如使用echo解决呢... 1. 要添加的文本内容如下: 文件名:code_list html</>!@$%^^ fdsafds <> ...
- JNDI数据源配置
一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName("数据库驱动类");) ②连接数据库(Connec ...
- Listen81
Nut-Cracking Chimps Demonstrate Cultural Differences One family generally dines on Chinese takeout w ...
- swift的泛型貌似还差点意思
protocol Container { typealias ItemType mutating func append(item: ItemType) mutating func removelas ...
- linux命令学习:echo详解,格式化输出,不换行输出
shell脚本不换行刷新数据 #!/bin/bash ] do a=$(ifconfig eth0 | grep 'RX pac' | awk '{print $2}' | awk -F: '{pri ...
- 简单两步快速实现shiro的配置和使用,包含登录验证、角色验证、权限验证以及shiro登录注销流程(基于spring的方式,使用maven构建)
前言: shiro因为其简单.可靠.实现方便而成为现在最常用的安全框架,那么这篇文章除了会用简洁明了的方式讲一下基于spring的shiro详细配置和登录注销功能使用之外,也会根据惯例在文章最后总结一 ...
- SPOJ CIRU SPOJ VCIRCLE 圆的面积并问题
SPOJ VCIRCLE SPOJ CIRU 两道题都是给出若干圆 就面积并,数据规模和精度要求不同. 求圆面积并有两种常见的方法,一种是Simpson积分,另一种是几何法. 在这里给出几何方法. P ...
- 杂项-QRCode:ZXing
ylbtech-杂项-QRCode:ZXing 1.返回顶部 1. ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口.Zxing可以实现使用 ...
- 异常:Error: Aesthetics must either be length one, or the same length as the dataProblems:AData
今天遇到一个异常,代码如下: set.seed(12345) require(ggplot2) AData <- data.frame(Glabel=LETTERS[1:7], A=rnorm( ...
- javascript getAttribute
var nodes = document.getElementsByTagName("script"); var node = nodes[nodes.length - 1]; v ...