#删除年龄比肖梅大的学生信息DELETEFROM 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 NOTLIKE'%北京%';#查询手机号包含数组9的学生SELECT*FROM student WHERE phone LIKE'%9%';
SELECT*FROM student WHEREEXISTS(SELECT gradeid FROM grade WHERE gradename='s1'OR gradename='s2')
事务
是将多条SQL语句当成一个整体来看,它只能都执行或者都不执行
使用事务之前得先关闭数据库的自动提交功能,否则它每执行一行SQL命令会自动提交
关键字:
begin/start transaction:开启事务
commit:提交事务断你的SQL语句会不会有问题,它只能靠你手动执行,提交或者撤销
事务的四大特性(ACID):
原子性:事务是一个整体,不可分割
一致性 :转账前后的两个账户总金额是保持恒定的
多个事务之间相互独立,互不干预
事务提交成功后结果会保存到数据库当中
当事务没提交之前,它所执行的SQL命令会保存在一个缓冲区,只有提交之后才会在数据库中执行
#模拟银行转账的功能CREATETABLE bank(`name`VARCHAR(20)PRIMARYKEY,
money DOUBLENOTNULL)#添加测试数据INSERTINTO bank VALUES('ww',1000),('wy',200);UPDATE bank SET money=money-100WHERE`name`='wy';#转账BEGIN;UPDATE bank SET money=money-500WHERE`name`='ww';UPDATE bank SET mony=mony+200WHERE`name`='wy';#提交事务COMMIT;#撤销事务ROLLBACK;SHOW VARIABLES;#关闭数据库的自动提交功能SET autocommit=0;SELECT*FROM bank;
目录子查询模糊查询exists事务子查询子查询是在SQL语句中嵌套使用一套select语句它是先将内层的子查询语句执行完之后再执行外层的父查询语句in和=:in是将子查询语句的结果整合到父查询语句中进行一一比较;=是在子查询语句只返回一个数据时可以进行比较#删除年龄比肖梅大的学生信息DELETE FROM student WHERE borndate<(SELECT borndate FROM student WHERE `name`='肖梅');#查询s1的学生信息SELECT