今日内容:

  1.子查询补充

  2.正则表达式

  3.pymysql

1.子查询补充

  什么是子查询?

    将上一次查询的结果作为下一次查询的条件或原数据

    又称为内查询

    作用:当你的需求,一次查询无法满足的时候(也就是一次select找不到你要的数据)

    注:子查询能实现的效果,多表联查也可以是实现

    实例演示:

准备数据

员工表:
create table emp (id int,name char(10),sex char,age int,dept_id int,job char(10),salary double);
insert into emp values
(1,"刘备","男",26,1,"总监",5800),
(2,"张飞","男",24,1,"员工",3000),
(3,"关羽","男",30,1,"员工",4000),
(4,"孙权","男",25,2,"总监",6000),
(10,"刘备2","男",26,2,"总监",5800),
(5,"周瑜","男",22,2,"员工",5000),
(6,"小乔","女",31,2,"员工",4000),
(7,"曹操","男",19,3,"总监",10000),
(8,"司马懿","男",24,3,"员工",6000); 部门表:
create table dept(id int primary key,name char(10));
insert into dept values(1,"市场"),(2,"行政"),(3,"财务");

  

问1:财务部有哪些人?

  第一步我们需要直到财务部的id

  select id from dept where name ="财务";

  

  第二步我们用查询到的id作为判断条件来查询emp实现效果(用关键字in来实现子查询)

  

问2查询平均年龄大于25的部门名称

  第一步先求出每个部门的平均年龄

  select dept_id from emp group by dept_id having avg(age)>25;

  

  第二步通过得到的部门id去部门表中查询

  

exists关键字子查询

  exists 后跟子查询 子查询有结果为True ,没有结果为False(为True时外层执行,为False外层不执行)

  select *from emp where exists (select *from emp where salary > 1000);

注:子查询的语法特点:一个select  a  中 包含另外一个select  b(b只能位于a的where后面)

2.正则表达式匹配

  正则表达式用于模糊查询,模糊查询已经讲过了

  like 仅支持 % 和 _远没有正则表达式灵活

  当然绝大多数情况下 like足够使用

  语法:select *from table where name regexp "正则表达式";

  实例示范:

  select * from emp where name regexp "^刘";

  

  select * from emp where name regexp "司+";

  

  select * from emp where name regexp "备$";

  

3.pymsql

import pymysql
'''
问题:
如何能在python中去使用数据库存取数据?
使用pymysql模块 如何使用
1.
导入
import pymysql
''' '''
pymysql 使用步骤
核心类Connect连接用 和 Cursor读写用
1.与数据库服务器建立连接
2.获取游标对象(用于发送和接收数据)
3.用游标执行sql语句
4.使用fetch方法来获取执行的结果
5.关闭连接 先关游标 再关连接 游标的常用方法
1.创建游标 conn.cursor(指定查询结果的数据类型)
2.excute 执行sql
3.fetchone (当sql只有一条记录时) many(sql有多条并且需要指定条数) all(多条)
4.scroll 用于修改游标的当前位置 注意:pymysql 默认不提交修改 但是注意(指的是对表中记录的操作不提交)像删库、删表 是无法撤销的 '''
# 创建连接得到一个连接对象
conn = pymysql.Connect(
host ="127.0.0.1", #主机地址
user="root", #用户名
password="123456", #密码
database="mydb", #数据库名称
port=3306, #端口号
charset = "utf8", #编码
)
#获取游标对象 pymysql.cursors.DictCursor 指定 返回的结果类型为字典 默认是元组类型
cursor = conn.cursor(pymysql.cursors.DictCursor) #查询数据
sql = "select *from students" # 执行sql 如果是select 语句返回的是 查询的条数
res = cursor.execute(sql)
#conn.commit()这个是用来提交修改的,因为在pymysql模块中默认是会撤回操作的,如果你的sql语句不提交,就不会被执行
# 注:撤销只针对于记录,若执行的是删库或者删表操作,那是不会被撤销的
conn.commit()
print(res) #关闭连接
cursor.close()
conn.close()

  

day42的更多相关文章

  1. day42——外键的限制和解决方法、外键的三种约束模式、修改表(单表查询)

    day42 外键的限制和解决方法 可以添加外键关联的那个字段可以是 被唯一(unique)约束的字段 或者 主键 限制:+ 由于外键的使用,致使多个表之间产生了联系,当我们对这些表进行更新或删除操作的 ...

  2. Python:Day42 Position

    1 static static 默认值,无定位,不能当作绝对定位的参照物,并且设置标签对象的left.top等值是不起作用的的. 2  position: relative/absolute      ...

  3. python 全栈开发,Day42(Thread类的其他方法,同步锁,死锁与递归锁,信号量,事件,条件,定时器,队列,Python标准模块--concurrent.futures)

    昨日内容回顾 线程什么是线程?线程是cpu调度的最小单位进程是资源分配的最小单位 进程和线程是什么关系? 线程是在进程中的 一个执行单位 多进程 本质上开启的这个进程里就有一个线程 多线程 单纯的在当 ...

  4. day42 事物,数据库锁

    事物是把一些sql语句作为一个原子性操作,就是说我会写好几条sql语句,然后我想把这好几条的sql语句作为一个整体,然后让这个整体一起去运行,不可以拆分开,就像我们用面粉做一个馒头一样,我需要把这些面 ...

  5. day42 字段的增删改查详细操作

    复习 # 1.表的详细操作 create table nt like ot; # 只复制表的结构包括约束 create table nt select * from ot where 1=2; # 复 ...

  6. MySQL 单表查询(Day42)

    阅读目录 一,查询语法 二,简单查询 三,where约束 四,having过滤 五,分组查询 group by 六,关键字的执行优先级 七,查询排列 order by 八,使用聚合函数查询 九,whe ...

  7. day--42 前端基础小结

    前端基础总结 一:前端实现的原理: 小实例: 01:第一步:创建一个socket服务端: import socket server=socket.socket() ip_port=("127 ...

  8. Python9-MySQL数据库安装及基本操作-day42

    MySQL 单机程序(自己DB) 单机程序(共用DB)MySQL:用于管理文件的一个软件 -服务端软件 -socket服务端 -本地文件操作 -解析指令[SQL语句] -客户端软件(各种各样) -so ...

  9. python全栈开发,Day42(Thread类的其他方法,同步锁,死锁与递归锁,信号量,事件,条件,定时器,队列,Python标准模块--concurrent.futures)

    昨日内容回顾 线程 什么是线程? 线程是cpu调度的最小单位 进程是资源分配的最小单位 进程和线程是什么关系? 线程是在进程中的一个执行单位 多进程 本质上开启的这个进程里就有一个线程 多线程 单纯的 ...

随机推荐

  1. H5自适应屏幕分辨率大小

    说明: ①:H5自适应不同分辨率的设备,其实主要就一句 <meta name="viewport" content="width=device-width,init ...

  2. CSS画0.5px的线

    今天遇到一个需求,画0.5px的线,查了以下资料,主要以scale方法为主.代码如下: /*0.5px上边框*/ .half_top_border_before:before{ content: &q ...

  3. Expo大作战(十五)--expo中splash启动页的详细机制

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  4. [iOS] 输入框高度随输入内容变化

    一般,类似聊天软件的输入框默认都是显示一行的,在用户输入过程中根据输入文字的内容来改变输入框的高度,以便显示全部文字.像微信,QQ的输入框就是这样的.那么这个效果应该怎么实现呢? 新博客:wosson ...

  5. 【转】vs2010打开qt的.pro文件时错误解决办法

    注意:qt creator工程中一般都已经存在*.pro文件,里面存放着一些自己配置的包含头文件和lib库文的信息,最好不要再重新使用qmake -project生成,若重新生成,则可能要重新增加配置 ...

  6. UI第二组与数据库对接时遇到的问题记录

    此为组内某一位做UI的同学的随笔. 之前的app由于没有加入数据库,所以每次重新启动里面的东西都会回到初始状态,即不能保存内容.我们的数据库小组已经很棒地基本完成了数据库的工作,于是我就准备加入数据库 ...

  7. .NET、ADO.NET、ASP.NET名称解析及.NET平台架构组成

    转https://blog.csdn.net/xiaouncle/article/details/53265256 名词解释 1.Winform:Windows应用程序.桌面应用程序.C/S应用程序  ...

  8. SQLSERVER群集故障转移笔记

    SQLSERVER群集故障转移笔记 出自<SQLSERVER2012实施与管理实战指南> SQLSERVER故障转移 P41 事实上,从sqlserver2000到sqlserver200 ...

  9. Asp连接Oracle (包含绿色版12.2客户端和ODBC驱动安装)

    我能操作的终端电脑是一台linux系统可以上互联网 ,服务器在部署在独立的私网上,不方便上互联网.服务器是2008R2.安装vs不是很方便.其所linux下作开发不是不可以,java php mono ...

  10. [转]搭建Keepalived+Nginx+Tomcat高可用负载均衡架构

    [原文]https://www.toutiao.com/i6591714650205716996/ 一.概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最 ...