day42
今日内容:
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的更多相关文章
- day42——外键的限制和解决方法、外键的三种约束模式、修改表(单表查询)
day42 外键的限制和解决方法 可以添加外键关联的那个字段可以是 被唯一(unique)约束的字段 或者 主键 限制:+ 由于外键的使用,致使多个表之间产生了联系,当我们对这些表进行更新或删除操作的 ...
- Python:Day42 Position
1 static static 默认值,无定位,不能当作绝对定位的参照物,并且设置标签对象的left.top等值是不起作用的的. 2 position: relative/absolute ...
- python 全栈开发,Day42(Thread类的其他方法,同步锁,死锁与递归锁,信号量,事件,条件,定时器,队列,Python标准模块--concurrent.futures)
昨日内容回顾 线程什么是线程?线程是cpu调度的最小单位进程是资源分配的最小单位 进程和线程是什么关系? 线程是在进程中的 一个执行单位 多进程 本质上开启的这个进程里就有一个线程 多线程 单纯的在当 ...
- day42 事物,数据库锁
事物是把一些sql语句作为一个原子性操作,就是说我会写好几条sql语句,然后我想把这好几条的sql语句作为一个整体,然后让这个整体一起去运行,不可以拆分开,就像我们用面粉做一个馒头一样,我需要把这些面 ...
- day42 字段的增删改查详细操作
复习 # 1.表的详细操作 create table nt like ot; # 只复制表的结构包括约束 create table nt select * from ot where 1=2; # 复 ...
- MySQL 单表查询(Day42)
阅读目录 一,查询语法 二,简单查询 三,where约束 四,having过滤 五,分组查询 group by 六,关键字的执行优先级 七,查询排列 order by 八,使用聚合函数查询 九,whe ...
- day--42 前端基础小结
前端基础总结 一:前端实现的原理: 小实例: 01:第一步:创建一个socket服务端: import socket server=socket.socket() ip_port=("127 ...
- Python9-MySQL数据库安装及基本操作-day42
MySQL 单机程序(自己DB) 单机程序(共用DB)MySQL:用于管理文件的一个软件 -服务端软件 -socket服务端 -本地文件操作 -解析指令[SQL语句] -客户端软件(各种各样) -so ...
- python全栈开发,Day42(Thread类的其他方法,同步锁,死锁与递归锁,信号量,事件,条件,定时器,队列,Python标准模块--concurrent.futures)
昨日内容回顾 线程 什么是线程? 线程是cpu调度的最小单位 进程是资源分配的最小单位 进程和线程是什么关系? 线程是在进程中的一个执行单位 多进程 本质上开启的这个进程里就有一个线程 多线程 单纯的 ...
随机推荐
- @Transactional事务不起作用原因
想必也有人遇到@Transactional事务不起作用,当时我遇到这个问题也很懵逼,明明别人的代码跟自己的一样,为什么别人的@Transactional事务起作用而自己的事务却没有起作用.如下举例子说 ...
- CentOS6.5搭建ldap及pdc的过程
linux centos6.5,,配置的是本地yum,采用光盘自带的rpm包进行安装 安装openldap server 以及client yum install openldap-server ...
- 如何通过REST API登录Portal for ArcGIS
Portal for ArcGIS 提供了两种登录方式:OAuth 2.0和传统的token登录方式. OAuth 2.0的登录原理在之前的一篇文章中已经描述,所以今天就不重复了.下面将介绍对于不支持 ...
- dcloud资源升级方式更新app
var wgtVer = null; plus.runtime.getProperty(plus.runtime.appid, function(inf) { wgtVer = inf.version ...
- 微信小程序开发--宽为百分百,页面仍可左右滑动
这段时间小程序开发时,很多时候,希望内容充满整个屏幕(高度.宽度100%),如下图 但是在设置 .followrecords-container{width:100%;} 后发现 手机在横向上虽然页面 ...
- DevOps之技能面
<教学手册(Teaching Manual)> 教学:人类培养态度.传授知识.训练技能的活动.教学目的:知识与技能的层次:(了解.理解.熟悉.掌握.精通).教学手段:理论与实践的方面:(科 ...
- T-SQL检查停止的复制作业代理,并启动 (转载)
有时候搭建的复制在作业比较多的时候,会因为某些情况导致代理停止或出错,如果分发代理时间停止稍微过长可能导致复制延期,从而需要从新初始化复制,带来问题.因此我写了一个脚本定期检查处于停止状态的分发代理, ...
- h5页面调用摄像头(简易版)
<input type="button" value="OpenVideo" id="btnOpenVideo" /> < ...
- Relinking Oracle Home FAQ ( Frequently Asked Questions) (Doc ID 1467060.1)
In this Document Purpose Questions and Answers 1) What is relinking ? 2) What is relinking ...
- PHP 传值操作和传地址操作
PHP中有两种赋值操作 一种是传值操作 example: $a = 1; $b = $b; 这个就是传值 传地址是: example2: $a = 1; $b = &$a; 这两者有什么区别呢 ...