事务和python操作数据库

联合分组

# 数据来源:单标emp

# 联合分组:按多个字段综合结果进行分组

# 按 area与port组合后的结果进行分组,只有组合后的结果还一致,才认为是一组
select group_concat(name),area,port from emp group by area,port;

子查询

insert into 表 select 子查询 # 增
delete from 表 条件是select子查询(表不能与delete表相同) # 删
select 字段 from 表 条件是select子查询 # 查
update 表 set 字段=值 条件是select子查询(表不能与update表相同) # 改

all与any:区间修饰条件

语法规则

where id in (1, 2, 3) -->id是1或2或3
where id not in (1, 2, 3) --> id不是1,2,3
where salary < all(3, 6, 9) --> salary必须小于所有情况(小于最小)
where salary > all(3, 6, 9) --> salary必须大于所有情况(大于最大)
where salary < any(3, 6, 9) --> salary只要小于一种情况(小于最大)
where salary > any(3, 6, 9) --> salary只要大于一种情况(大于最小)

视图

'''
1. 视图是存在内存中的临时表
2. 视图的创建依赖select语句,所以就是select语句操作的结果形成的表
3. 视图支持对数据的增删改查
4. 视图不允许对视图表的字段做修改
5. 视图不仅支持创建,也支持更新与删除
'''

# 语法
# 创建视图
mysql> create view 视图名[(别名们)] as select 语句;

# 创建或替换视图
mysql> create or replace 视图名[(别名们)] as select 语句;
mysql> alter 视图名[(别名们)] as select 语句;

# 删除视图
mysql> drop view 视图名;

视图的增删改

# 视图的增删改操作可以直接映射给真实表(本质就是对真实表进行操作)
# 操作视图,会影响真实表,反之也会影响

视图

# 事务:通常一些业务需要多条sql参与,参与的sql会形成一个执行整体,这个整体就叫做事务。
# 事务 - 就是保护多条执行的sql语句

'''
事务的四大特性
1.原子性:事务是一组不可分割的单位,要么同时成功,要么同时不成功
2.一致性:事务前后的数据完整性应该保持一致(数据库的完整性:如果数据库在某一时间点下,所有的数据都符合所有的约束,则称数据库为完整的状态)
3.隔离性:事务的隔离性是指多个用户并发访问数据时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离
4.持久性:持久性是指一个事务一旦被提交,它对数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任务影响
'''

# 开启事务
begin;

# 提交事务
commit;

# 事务回滚
rollback;

pymysql:python操作mysql

import pymysql

# pymysql连接数据库的必要参数:主机、端口、用户名、密码、数据库
# pymysql不能提供创建数据库的服务,需要提前创建数据库

'''
1.建立数据库连接对象conn
2.通过conn创建操作sql的游标对象
3.编写sql交给cursor执行
4.如果是查询,通过cursor对象获取结果
5.操作完毕,关闭端口操作与连接
'''

索引

# 索引就是键 - key

'''
1.键是添加给数据库表的字段的
2.给表创建键后,该表不仅会形成表结构、表数据,还有键的B+结构图
3.键的结构图是需要维护的,在数据完成增、删、改操作时,只有影响到有键的字段,结构图都要维护一次,所以创建键以后一定会降低增、删、改的效率
4.键可以极大的加快查询速度
5.建立键的方式:主键、外键、唯一键、index
'''
原文地址:https://www.cnblogs.com/yunluo/p/11752995.html