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. Contiki 2.7 Makefile 文件(二)

    二.Makefile.include 1.第一部分 (1) ifndef CONTIKI ${error CONTIKI not defined! You must specify where Con ...

  2. nginx 部署thinkphp 做的东西, 配置 Pathinfo 模式,终于配好了

    用thinkphp做了一个网站,部署到ubuntu上的时候需要,服务器用的是nginx,本身不支持pathinfo模式,需要修改配置文件,使其能够用pathinfo. 我用的是虚拟主机的方式.之前配置 ...

  3. 使用 HTML5 的 IndexedDB API

    1. [代码]判断是否支持 IndexedDB     var indexedDB = window.indexedDB || window.webkitIndexedDB || window.moz ...

  4. linux应用之开机自启动方法总结

    1.把启动程序的命令添加到/etc/rc.d/rc.local文件中 CentOS系统下管理开机自启动的配置文件是/etc/rc.d/rc.local,所以只需编辑这个文件,在里面加入相应的启动命令即 ...

  5. openfire开发环境(3.9.1)

    1.解压源码 2.把build/eclipse中的文件cp到源码跟目录,并修改文件名,前面增加"."号,变成eclipse工程. 3.导入eclipse, 把build/lib/, ...

  6. mac快速正确的安装 Ruby, Rails 运行环境

    Mac OS X 任意 Linux 发行版本(Ubuntu,CentOS, Redhat, ArchLinux ...) 强烈新手使用 Ubuntu 省掉不必要的麻烦! 以下代码区域,带有 $ 打头的 ...

  7. win装wamp

    前传: 刚换了工作环境,从原来的全mac转到全windows,很不适应,简单的wamp鼓捣了半天 环境: win 7 旗舰版 ,wamp ,下载地址: http://pan.baidu.com/s/1 ...

  8. MySQL与EXCEL sum sumif sumifs 函数结合_品牌汇总_20161101

    计算一些数不难,整体来说还是要培养自我的逻辑意识,逻辑清楚,代码自然而然就知道,总体上训练自己的逻辑,一个是从用户角度,一个是从产品角度. 用户角度需要考虑的是用户的活跃度,具体又可以细分为用户的注册 ...

  9. HP SiteScope安装

    下载地址以及安装方法见 http://www.jianshu.com/p/fce30e333578 数据库连接URL:jdbc:mysql://mysql_ip:mysql_port/database ...

  10. hdu 5730 Shell Necklace —— 分治FFT

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5730 DP式:\( f[i] = \sum\limits_{j=1}^{i} f[i-j] * a[j] ...