执行以上代码后,回到workbench,,我们可以看到最终的结果为:
image 3.4.2 改
在cutomers表中更改数据用的是"UPDATE"语句 。例如,我们将最后一条 “Sally”的名字改成“Tiny”:
#将Sally改为Tiny sql="UPDATE customers SET name='Tiny' WHERE name ='Sally'" mycursor.execute(sql) con.commit()
执行代码,回到workbench我们可以看到结果为:
3.4.3 删
关于删,我们在上文提到了删除表格,用的是“DROP TABLE ”语句,“IF EXISTS”关键字是用于判断表是否存在,只有在存在的情况才删除当我们要删除一条数据记录时候,用到的语句是“DELETE FROM”语句 。例如:我们想在customers这个表格当中,删除name为Tiny的这一条记录:
#删除名字为Tiny的记录 sql="DELETE FROM customers WHERE name='Tiny'" mycursor.execute(sql) con.commit()
执行代码,回到workbench我们可以看到结果为:
3.4.4 查普通查询
普通查询数据用的是SELECT语句 。例如:我们想查询customers的所有信息,并且进行打印输出:
#查询这里面所有的人: sql="SELECT * FROM customers" mycursor.execute(sql) myresult = mycursor.fetchall() # fetchall() 获取所有记录 for x in myresult: print(x)
得到最终结果为:
值得注意的是:fetchall()表示的是获得所有记录;fetchone()表示只获取一条数据;fetchmany(size=3)表示获取三条记录;
限定条件查找
为了获取指定条件下的查找结果,我们可以使用where语句 。例如:我们想在查询customers的所有信息基础上,输出年龄大于30岁的消费者的信息:
sql="SELECT * FROM customers WHERE age > 30" mycursor.execute(sql) myresult = mycursor.fetchall() # fetchall() 获取所有记录 for x in myresult: print(x)
最终得到的结果为:
通配符查找
有时候为了进行模糊查询,可以匹配通配符,通过“LIKE”来进行查找:
百分号 (%):代表零个、一个或多个数字或字符;
下划线 (_):代表一个单一的数字或字符 。
例如:查出所有名字中含有t的记录:
#%代表零个、一个或者多个数字或字符 #_代表一个单一的数字或者字符 sql = "SELECT * FROM customers WHERE name LIKE '%t%'" mycursor.execute(sql) myresult=mycursor.fetchall() for x in myresult: print(x)
执行代码,我们得到的结果如下:
值得注意的是:但是使用Like查询时,即使我们在代码输入的是“t”,执行过程中也会将含有“T”的记录同样输出,即用LIKE匹配通配符对大小写不敏感 。为了区分大小写,可以用“GLOB”进行查询 。
排序
查询结果排序可以使用 ORDER BY 语句,默认的排序方式为升序,如果要设置降序排序,可以设置关键字 DESC 。例如:我们要按照年龄对customers进行升序排列:
#排序 #按照年龄排序 sql = "SELECT * FROM customers ORDER BY age" mycursor.execute(sql) myresult=mycursor.fetchall() for x in myresult: print(x)
执行代码,得到的结果为:
nzxx m nb
LIMIT
当数据库数量非常大的时候,为了限制查询的数据量,可以采用"LIMIT"语句来指定,比如我们希望在customers表中找出工资最高的三个人:
#找出其中工资最高的3个人 sql = "SELECT * FROM customers ORDER BY sl DESC LIMIT 3" mycursor.execute(sql) myresult=mycursor.fetchall() for x in myresult: print(x)
执行代码,得到结果为:
二次筛选
有时候我们在进行一次筛选后,还需要设定一个筛选条件进行二次筛选,我们就可以采用“HAVING”语句 。例如:我们希望统计在年龄处于20-30(不包括20岁,但是包括30岁)的人当中,选择薪资大于5000的消费者:
#二次过滤 #统计在年龄处于20-30之间的人中,选择薪资大于5000的人 sql = "SELECT * FROM customers WHERE age>20 and age<=30>5000 " mycursor.execute(sql) myresult=mycursor.fetchall() for x in myresult: print(x) con.commit() con.close()
执行代码后,得到的结果如下:
3.5 分组聚合
在数据库中,分组常用的语句为“GROUP BY”语句,聚合函数,通常是配合分组进行使用,在数据库中常用的聚合函数为:
COUNT(*):表示计算总行数,括号可以写*和字段名字
MAX(column):表示求此列的最大值
MIN(column):表示求此列的最小值
SUM(column):表示求此列的和
AVG(column):表示求此列的平均值
从customers表中统计出男女薪资总和
以sex为类别进行GROUP BY 分组,加上WHERE来做条件判断 。
#统计出男女的薪水总数 sql = "SELECT sex,sum(sl) FROM customers GROUP BY sex" mycursor.execute(sql) myresult=mycursor.fetchall() for x in myresult: print(x)
推荐阅读
- 君山银针如何鉴别,教你如何鉴别君山银针的品质
- 黄小茶用什么器具冲泡,教你正确的冲泡方法
- 君山银针的品质特征,教你如何鉴别君山银针的品质
- 8个小窍门教你预防高血压
- 一分钟教你对症挂号!有了这张表看病再也不怕挂错号了
- 黄茶具备什么香气特征,教你品评黄茶
- 手把手教你 3 个 Linux 中快速检测端口的小技巧
- 当服务器被黑客攻击时,教你如何查找溯源
- 简单几个词教你品评黄茶,弄茶小院里
- 10年老司机教你开手动挡,堵车时掌握这3个技巧,比自动挡还爽