今日内容:

  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. 撩课-Web大前端每天5道面试题-Day1

    1. var的变量提升的底层原理是什么? JS引擎的工作方式是: 1) 先解析代码,获取所有被声明的变量: 2)然后在运行.也就是说分为预处理和执行两个阶段. 变量提升:所有变量的声明语句都会被提升到 ...

  2. PDO中的预处理

    PDO中的基本的原理和步骤和MySQL中的预处理都是一样的,只不过就是把MySQL中的预处理所有命令行的语法封装成了PDO对象的几个公开的方法而已! 1.发送预处理语句 此时,我们需要调用pdo对象的 ...

  3. Unexpected directive 'XXX' imported by the module 'AppMoode'

    做angular demo报错: Uncaught Error: Unexpected directive 'ScrollSpyDirective' imported by the module 'A ...

  4. 反射和动态加载bean 完成 通用servie

    最近我们部门有个小项目,用来管理这个公司所有项目用到的代码表,例如国家代码.行政区划代码等.这个项目的功能其实很少,就是简单的修改.查询.新增和逻辑删除.但是为每张表都写一套增删改查的页面和一套ser ...

  5. AngularJS学习之 登录表单 清爽验证(边学边更新)

    注册过程的确好多需要验证的,但是注册成功之后的登录就简单多了, 只要用户 输入 用户名和密码, ajax向后台提交登录请求, 根据返回的结果确定用户名或者密码是否正确即可登录. 所以这个登录表单的验证 ...

  6. SQLServer 学习笔记之超详细基础SQL语句 Part 12(The End)

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 11------------------- 现在,我们希望从 " ...

  7. 微信小程序开发--背景图显示

    这两天开发微信小程序,在设置背景图片时,发现在wxss里面设置 background-image:(url) 属性,不管是开发工具还是线上都无法显示.经过查资料发现,background-image ...

  8. 【Python】定时调度

    from datetime import datetime from apscheduler.schedulers.blocking import BlockingScheduler def tick ...

  9. SQL Server 2014 新特性——内存数据库(转载)

    目录 SQL Server 2014 新特性——内存数据库 简介: 设计目的和原因: 专业名词 In-Memory OLTP不同之处 内存优化表 内存优化表的索引 并发能力的提升 和竞争对手相比几点 ...

  10. 纯Css实现Div高度根据自适应宽度(百分比)调整

    在如今响应式布局的要求下,很多能自动调整尺寸的元素能够做到高宽自适应,如img,通过{width:50%;height:auto;}实现图片高度跟随宽度比例调整. 然而,用的最多的标签一哥Div却不能 ...