select列相加时候, 默认是将列的值强制转换成double类型后相加, 若强转失败就会报错
使用distinct去重时候, 假如选定了多个列, 只有多个列值都相同时候整体才判断为重复
where:
like: 模糊查询, 依赖通配符. '%'可以表示任意个字符, '_'可以表示一个任意字符.
特点: 对查询字符用的比较多, 查询数字的话用between...and或者比较符会高效的多
用例:
select * from students where name like "_atty%";
使用group by进行聚合查询时候可以使用条件where也可以使用having, 两者的区别是一个是分组前过滤, 一个是分组后过滤
有一张员工表emp,字段:姓名name,性别sex,部门depart,工资salary。查询数据:各部门薪水大于10000的男性员工的平均薪水, 代码应该是
SELECT
depart as '部门',
AVG(salary) as '男性员工平均薪水'
FROM
emp
WHERE
sex = '男' AND
salary > 10000
GROUP BY
depart;
因为AVG需要算的是男的并且salary > 10000的, 需要再group by 前就筛选好参与聚合查询的数据,而非先group by depart 然后再having.
事务的特性
原子性: 将多个SQL打包成一个整体, 全部都完成才commit, 不然就是rollback
一致性: 事务执行前后, 数据要不改变要不不改变, 都能对的上.
持久性: 事务完成后的改动会写入硬盘, 不会随着程序的关闭等丢失
隔离性: 事务之间并发执行时候, 互不干扰互不影响
并发执行事务中可能带来的影响
脏读 \ 不可重复读 \ 幻读
脏读: 在修改信息的时候就读取了信息, 导致读取的临时信息
不可重复读:
幻读:
解决上述不良影响的方法
MySQL提供挂了四个隔离级别, 通过实际需求来选择不同挡位, 在my.ini中设置
1.read uncommitted
2.read committed
3.repeatable read (default)
4.serializable