MySQL查询+事务
程序员文章站
2022-11-30 16:55:17
目录子查询模糊查询exists事务子查询子查询是在SQL语句中嵌套使用一套select语句它是先将内层的子查询语句执行完之后再执行外层的父查询语句in和=:in是将子查询语句的结果整合到父查询语句中进行一一比较;=是在子查询语句只返回一个数据时可以进行比较#删除年龄比肖梅大的学生信息DELETE FROM student WHERE borndate<(SELECT borndate FROM student WHERE `name`='肖梅');#查询s1的学生信息SELECT...
子查询
- 子查询是在SQL语句中嵌套使用一套select语句
- 它是先将内层的子查询语句执行完之后再执行外层的父查询语句
- in和=:in是将子查询语句的结果整合到父查询语句中进行一一比较;=是在子查询语句只返回一个数据时可以进行比较
#删除年龄比肖梅大的学生信息
DELETE FROM student WHERE borndate<(SELECT borndate FROM student WHERE `name`='肖梅');
#查询s1的学生信息
SELECT * FROM student WHERE gradeid IN(SELECT gradeid FROM grade WHERE gradename='s1');
#查询s1和s2的学生信息
SELECT * FROM student WHERE gradeid IN(SELECT gradeid FROM grade WHERE gradename='s1' OR gradename='s2')
模糊查询
- 模糊查询是在不知道准确内容的情况下按照关键字进行查找:like
- %:指任意长度
- _:指单个字符
- [ ]:在范围内
- [^]:除此之外
#查询姓张的学生信息
SELECT * FROM student WHERE `name` LIKE'张%';
#查询海淀区的学生
SELECT * FROM student WHERE address LIKE '%海淀区%';
#查询除北京以外的学生
SELECT * FROM student WHERE address NOT LIKE '%北京%';
#查询手机号包含数组9的学生
SELECT * FROM student WHERE phone LIKE '%9%';
exists
- exists在创表或删表时以防出现问题,而在子查询中,如果子查询语句有结果则执行前面的SQL语句,没有结果则不执行
SELECT * FROM student WHERE EXISTS(SELECT gradeid FROM grade WHERE gradename='s1' OR gradename='s2')
事务
- 是将多条SQL语句当成一个整体来看,它只能都执行或者都不执行
- 使用事务之前得先关闭数据库的自动提交功能,否则它每执行一行SQL命令会自动提交
- 关键字:
- begin/start transaction:开启事务
- commit:提交事务断你的SQL语句会不会有问题,它只能靠你手动执行,提交或者撤销
- 事务的四大特性(ACID):
- 原子性:事务是一个整体,不可分割
- 一致性 :转账前后的两个账户总金额是保持恒定的
- 多个事务之间相互独立,互不干预
- 事务提交成功后结果会保存到数据库当中
- 当事务没提交之前,它所执行的SQL命令会保存在一个缓冲区,只有提交之后才会在数据库中执行
#模拟银行转账的功能
CREATE TABLE bank(
`name` VARCHAR(20) PRIMARY KEY,
money DOUBLE NOT NULL
)
#添加测试数据
INSERT INTO bank VALUES('ww',1000),('wy',200);
UPDATE bank SET money=money-100 WHERE `name`='wy';
#转账
BEGIN;
UPDATE bank SET money=money-500 WHERE `name`='ww';
UPDATE bank SET mony=mony+200 WHERE `name`='wy';
#提交事务
COMMIT;
#撤销事务
ROLLBACK;
SHOW VARIABLES;
#关闭数据库的自动提交功能
SET autocommit=0;
SELECT * FROM bank;
本文地址:https://blog.csdn.net/qq_45562888/article/details/107320437
上一篇: 有关面试会问的题
下一篇: Pandas爬虫,竟能如此简单!