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高级查询的更多相关文章

  1. MySQL 高级查询操作

    目录 MySQL 高级查询操作 一.预告 二.简单查询 三.显示筛选 四.存储过程 五.查询语句 1.作为变量 2.函数调用 3.写入数据表 备注 附表一 附表二 相关文献 博客提示 MySQL 高级 ...

  2. python进阶10 MySQL补充 编码、别名、视图、数据库修改

    python进阶10 MySQL补充    编码.别名.视图.数据库修改 一.编码问题 #MySQL级别编码 #修改位置: /etc/mysql/mysql.conf.d/mysqld.cnf def ...

  3. python进阶08 MySQL基础补充

    python进阶08 MySQL基础补充 本次课程都是基于三张表格的使用 一.子查询 #如何找到‘张三’的成绩 #思路:先找到张三的学号,在拿这个张三的学号到成绩表里面去匹配,得出成绩 #如何用一条查 ...

  4. python进阶07 MySQL

    python进阶07 MySQL 一.MySQL基本结构 1.认识MySQL #MySQL不是数据库,它是数据库管理软件 #MySQL如何组织数据 #如何进入MySQL数据库 #其他注意事项 #以表格 ...

  5. 第四章 MySQL高级查询(二)

    第四章 MySQL高级查询(二) 一.EXISTS子查询 在执行create 或drop语句之前,可以使用exists语句判断该数据库对像是否存在,返回值是true或false.除此之外,exists ...

  6. 第三章 MySQL高级查询(一)

    第三章 MySQL高级查询(一) 一.SQL语言的四个分类 1.       DML(Data Manipulation Language)(数据操作语言):用来插入,修改和删除表中的数据,如INSE ...

  7. MySQL高级查询与编程作业目录 (作业笔记)

    MySQL高级查询与编程笔记 • [目录] 第1章 数据库设计原理与实战 >>> 第2章 数据定义和操作 >>> 2.1.4 使用 DDL 语句分别创建仓库表.供应 ...

  8. MySQL高级查询与编程笔记 • 【目录】

    章节 内容 实践练习 MySQL高级查询与编程作业目录(作业笔记) 第1章 MySQL高级查询与编程笔记 • [第1章 数据库设计原理与实战] 第2章 MySQL高级查询与编程笔记 • [第2章 数据 ...

  9. 2.mysql高级查询

    01.SQL高级查询_排序     1.排序语句:order by 排序字段名  asc(默认的-升序) / desc(降序);     2.例如:查询所有服装类商品,将查询结果以价格升序排序:   ...

随机推荐

  1. excel根据数据源变化的动态图表

    http://www.excelhome.net/lesson/article/excel/1798.html 这个链接讲的可以.

  2. 转载h5问题总结

    判断微信浏览器 function isWeixin(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger ...

  3. c++迷宫小游戏

    c++迷宫小游戏 一.总结 一句话总结: 显示:根据map数组输出图像 走动:修改map数组的值,每走一步重新刷新一下图像就好 1.如果走函数用z(),出现输入s会向下走多步的情况,原因是什么? 向下 ...

  4. Jmeter-配置原件-HTTP Cookie管理器

    线程组右键 -- 添加  -- 配置原件 -- HTTP Cookie管理器 如何定位到自己的cookie?以Google  Chrome浏览器为例: 1.打开浏览器,打开开发者工具 2.登录站点 3 ...

  5. Mycat概述

    Mycat是什么?从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的的Server,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用 ...

  6. boost::function 通过boost::bind调用类成员函数

    1. 首先引用boost::function和boost::bind的头文件和库: #include "boost/bind.hpp" #include "boost/f ...

  7. 响应式web设计,html5和css3实战(@author Ben Fraim)

    重定向 //请求重定向简化写法 response.sendRedirect("/day09/adv.html"); 转发 request.getRequestDispatcher( ...

  8. Behave + Selenium(Python)一:

    Behave 介绍:(来自T先生) 最近一个项目用了behave来做测试,因为之前没有接触过,所以写下最近的心得总结. 做自动化的人估计对selenium已经不是很陌生了,但是对于Behave工具,估 ...

  9. 【246】◀▶IEW-Unit11

    Unit 11 Transport 1. Model1题目分析 Some countries attempt to solve the problem of traffic congestion by ...

  10. Auto Layout Guide----(三)-----Anatomy of a Constraint

    Anatomy of a Constraint 剖析约束 The layout of your view hierarchy is defined as a series of linear equa ...