1. count(*)和count(列名)的区别
count(*):查询所有数据的行数
count(列名):查询该列存在的行数(若该列为null,则不记录该条记录)
2. union和union all的区别
union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
union all :对两个结果集进行并集操作,包括重复行,不进行排序;
3. 批量插入多句
insert into 表名(列名) select 列名 from 表名
4. 创建视图
create view 视图名 as select语句
注意:视图仅仅是用来查看存储在别处的数据的一种设施。不能用来新增、插入和删除。
5.触发器
触发器是MySQL响应delete、insert、update语句而自动执行的一条MySQL语句(或是位于begin和end语句之间的一组语句)。
5.1 创建触发器需要的信息
唯一的触发器名;
触发器关联的表;
触发器应该响应的活动(delete、insert或update);
触发器何时执行(处理之前 或 之后)
5.2创建触发器
触发器一般不用命令行进行创建(其实一般都不使用触发器这个东西,毕竟我工作了许久了,也没用过),以下展示使用navicat创建步骤
6.事务处理
6.1 概念
事务处理(transaction processing)可以用来维护数据库的完整性。它保证成批的MySQL操作要么完全执行,要么完全不执行。
不过并非所有的引擎都支持事务处理。其中MyISAM和InnoDB是两种最常使用的引擎。前者不支持明确的事务管理,而后者支持。
6.2术语
事务(transaction):指一组SQL语句。
回退(rollback):指撤销指定的SQL语句的过程。
提交(commit):指将未存储的SQL语句结果写入数据库表;
保留点(savepoint):指事务处理中设置的临时占位符(placeholder),你可以对他发布回退(与回退整个事务处理不同)。
6.3 事务SQL
-- 查询学校信息
select * from ed_school;
-- 开启一个事务
start transaction;
-- 删除所有的学校信息
delete from ed_school;
-- 查看学校信息
select * from ed_school;
-- rollback则为撤回sql语句,若为commit,则为提交sql数据
rollback;
-- 查看最终结果
select * from ed_school;