当前位置: 移动技术网 > IT编程>数据库>Mysql > MySQL查询+事务

MySQL查询+事务

2020年07月14日  | 移动技术网IT编程  | 我要评论

子查询

  • 子查询是在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命令会自动提交
  • 关键字:
  1. begin/start transaction:开启事务
  2. commit:提交事务断你的SQL语句会不会有问题,它只能靠你手动执行,提交或者撤销
  • 事务的四大特性(ACID):
  1. 原子性:事务是一个整体,不可分割
  2. 一致性 :转账前后的两个账户总金额是保持恒定的
  3. 多个事务之间相互独立,互不干预
  4. 事务提交成功后结果会保存到数据库当中
  • 当事务没提交之前,它所执行的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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网