Mysql (三) - 视图、字符集、校对集、触发器

来源:互联网 发布:姚劲波的域名 编辑:程序博客网 时间:2024/05/16 14:55

1. 视图

视图 是由查询结果形成的虚拟表

视图的作用:
· 简化查询
· 可以进行权限控制,封闭表权限,开放视图权限
· 用于大数据分表

视图和表的关系
· 视图是表的查询结果,影响了结果
· 视图增删改也可以影响表
· 视图的增删改不一定影响表,视图的数据和表的数据一一对应时,可以修改,视图必须包含所有表中没有默认值的列
· 对于insert 语句注意,视图必须包含表中没有默认值的列

创建视图语法:create view 视图名 as select 语句;
修改视图: alter view 视图名 as select 语句;
删除视图: drop view 视图名;

视图的algorithm

algorithm = merge / temptable / undefined

merge : 当引用视图时,引用视图语句和定义视图语句合并
(merge 是一种规则,查询 where 和 创建视图 where 合并在一起,分析成 select 语句)
temptable : 当引用视图时,根据视图创建一个临时表
undefined : 未定义,让系统决定

create algorithm = temptable view vPersons2 as select * from Car;

2. 字符集

mysql 可以设置以下字符集(未指定,则继承上级):
- 服务器
- 数据库
- 表
- 列

显示所有字符集:SHOW CHARACTER SET;

如何设置字符集?
set character_set_client = gbk;
set character_set_connection = gbk;
set character_set_results= gbk;
简写为 set names gbk;

什么时候出乱码?
1. client 声明 和 事实 不符
2. result 和 client 不符

什么时候会丢失数据?
1、connection 和 服务端 比 client 范围小

3. 校对集

校对集:是排序规则,一个字符集可以有一个或多个排序规则。

显示所有校对集:SHOW COLLATION;

校对集 需和 字符集 对应

4. 触发器

触发器(trigger): 监视某种情况并触发某种操作

触发器创建语法四要素
· 监视地点 table
· 监视事件 insert / update / delete
· 触发时间 before / after
· 触发事件 insert / update / delete

创建语法:
create trigger triggerName
after / before insert /update /delete
on tableName
Begin
sql语句;
End;

删除语法:
drop trigger triggerName ;

注意点:
· 需先设置标示分界符 :delimiter $ (不要加分号)
· 对于insert ,新增的行用 new 表示,行中每一列 用 new. 列名表示
· 对于update ,更新后的行用 new 表示,更新前的行用old表示
· 本表进行修改不需要用 update 表名 直接用 set
(参考:http://www.chenyudong.com/archives/database-trigger-new-old-value-understand.html)
· 对 new 赋值,只能用于 before

before 和 after 区别:
· before : 先完成触发再增删改
· after :先增删改再触发

create trigger tg1before update on Carfor each row beginset new.SaleNum = old.SaleNum  + old.StoreNum - new.StoreNum ;End $

查看触发器: show triggers ;

0 0