面试前把mysql的知识回顾一下:
基本SQL语句的使用方式
数据查询:
select
数据操纵:
insert:insert into table (字段1,字段2…)values(值1,值2)
update: update table set 字段名=字段值 where…
delete:delete from where…
数据定义:
create
drop
数据控制:
grant:为用户授予权限
grant <系统权限>|<角色> to <用户名>|<角色>
revoke:收回系统权限
revoke <系统权限>|<角色> from <用户名>|<角色>
内连接,外连接
内连接是保证两个表中的所有行都满足连接条件
inner join
外连接不仅包括符合条件的行,还包括左表(左外连接时),右表(右外连接时)或两个边接表(全外连接中)的所有数据行
left outer join
right outer join
full outer join
索引
目的:加快查询速度
类似于图书后面的索引,能快速定位到需要查询的内容,但需要消耗一定的存储空间
事务
事务是数据库中一个单独的执行单元,要么完成,要么不完成
满足ACID(原子性atomicity,一致性consistency,隔离性isolation,持久性durability)
事务处理语句:
1、begin,rollback,commit
begin;/start transaction; 开始事务
rollback; 回滚事务(撤销所有未提交的事务)
commit; 提交事务**
2、改变mysql的提交模式
set autocommit=0; 禁止自动提交
set autocommit=1; 开启自动提交
3、保存点
savepoint s1; 设置自动保存点s1
rollback to s1; 回滚到s1
注:自动提交事务,就是不需要commit就能提交事务。
存储过程
完成了特定功能的SQL语句集进行编译优化后,存储在数据库服务器中。
create procedure sp_name@[参数名] [类型]
as
begin
…
end
调用存储过程:exec sp_name[参数名]
删除存储过程:drop procedure sp_name
范式
触发器
触发器是一种特殊类型的存储过程,它由事件触发,而不是程序调用或手工启动,当数据库有特殊的操作时,这些操作由数据库中的事件来触发,自动完成这些SQL语句。
触发器中禁止使用commit和rollback语句
不能接受参数输入
DELIMITER $$
create trigger [触发器名]
AFTER [操作名:如update\delete\insert]
ON [表名]
for each row
begin
#要执行的操作
end;
视图
视图是从数据库基本表中选取出来的数据组成的虚表
数据库中只存放视图的定义,而不存放视图包含的数据项
作用:
1)简化数据查询语句
2)可以使用户从多角度看待同一数据
3)提高数据的安全性
4)提供了一定程度的逻辑独立性
union和union all
union在进行表并集操作后会去掉重复的元素
union all则只是简单地将两个结果集合并后就返回结果
select * from table1 union [all] select * from table2