Mysql进阶操作(视图,索引,存储过程,触发器)

Mysql进阶操作

创建视图,创建存储过程,创建触发器,创建用户,备份数据库

(1)创建视图
视图可以简单理解成虚拟表,它和数据库中真实存在数据表不同,视图中的数据是基于真实表查询得到的。视图和真实表一样具备相似的结构。真实表的更新,查询,删除等操作,视图也支持。那么为什么需要视图呢?

a、提升真实表的安全性:视图是虚拟的,可以只授予用户视图的权限而不授予真实表的权限,起到保护真实表的作用。
b、定制化展示数据:基于同样的实际表,可以通过不同的视图来向不同需求的用户定制化展示数据。
c、简化数据操作:适用于查询语句比较复杂使用频率较高的场景,可以通过视图来实现。

视图的创建: create view <视图名称>  as <select语句>;
视图的修改:alter  view <视图名称>  as <select语句>;
删除视图 :  drop view <视图名称>
更新  :   	UPDATE
#更新视图数据相当于更新实际表,不适用基于多表创建的视图

在这里插入图片描述
先看一下表结构,我们用xscj做测试,有4个表,分别cj,kc,text和xs,我们来创建视图cj表的
在这里插入图片描述
然后调用,就是 select * from 视图名称
在这里插入图片描述
同时我如果修改cj_view表数据,那cj表数据也会变的
在这里插入图片描述
这里我们修改了视图,将最后数据从课程号6666改成了7777,cj中数据也变了

(2)创建索引

索引可以大大提升 MySQL 的检索速度。适合大量数据中查询
mysql的索引分为,全文索引,主键索引,唯一索引,普通索引和组合索引。
组合索引:一个组合索引包含两个或两个以上的列,

命令 CREATE <索引名> ON <表名> (<列名> [<长度>] [ ASC | DESC])

创建普通索引:CREATE INDEX 索引名 ON 表名(段名);

创建唯一索引:CREATE UNIQUE INDEX 索引名 ON 表名(段名);

创建主键索引:ALTER TABLE 表名 ADD PRIMARY KEY (段名);

删除索引 :		DROP INDEX 索引的名字 ON 索引的表;

有时候需要在长文本字段上建立索引,但这种索引会增加索引的存储空间以及降低索引的效率,这时就可以用到length,我们叫做前缀索引,前缀索引是选择字段数据的前n个字符作为索引,这样可以大大节约索引空间,从而提高索引效率。
ASC指定索引按照升序来排列,DESC指定索引按照降序来排列,默认为ASC

引用于图片引用于百度文库。

(3)创建存储过程
存储过程是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。

记得先改一下结束符,Delimiter $$,因为存储过程需要分号来结束

命令:CREATE PROCEDURE 存储器名字 (参数) 
			[存储过程限制]  
			begin
			--------
			end;
			$$
调用: call 存储过程名称

1.参数列表,可选,格式:[IN | OUT | INOUT] param_name type
IN:输入参数
OUT:输出参数
INOUT:既可以输入也可以输出
type:参数类型,MySQL中的任意类型,如varchar等
2.存储过程限制
CONTAINS SQL:说明子程序包含SQL语句,但是不包含写数据语句
NO SQL:说明子程序不包含SQL语句
READS SQL DATA:说明子程序包含读数据读数据语句
MODIFIES SQL DATA:说明子程序包含写数据语句

例如:create procedure proc_sno_cj(in sno char(12)) reads sql data
创建一个存储过程,名字为proc_sno_cj ,输入参数是 sno,char类型,字节20, 只读

例如: 创建一个存储过程,用学号查询该同学的成绩平均分

在这里插入图片描述
在这里插入图片描述
我们用110这个同学
在这里插入图片描述
删除存储过程: drop procedure <存储过程名字>;

(4)触发器
触发器是与 MySQL 数据表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。
CREATE <触发器名> < BEFORE | AFTER >
<INSERT | UPDATE | DELETE >
ON <表名> FOR EACH Row<触发器主体>

1.触发器名
触发器的名称,触发器在当前数据库中必须具有唯一的名称。如果要在某个特定数据库中创建,名称前面应该加上数据库的名称。
2. INSERT | UPDATE | DELETE
触发事件,用于指定激活触发器的语句的种类。

例如:在成绩表上创建一个触发器,当向成绩表插入数据时,检查分数是否在0 ~100 之间,如果不在此范围,则不能插入
在这里插入图片描述
触发器名字为Trig11,在插入之后,new表示新插入的数据。让我们插入一条新数据

在这里插入图片描述
插入一个学号为2013010220,成绩为102的,插入不进去,成绩为10的可以,这就是触发了条件
删除同样,drop trigger <触发器名字>

(5)外键

外键可以看我的另外一篇文章
https://blog.csdn.net/u011710631/article/details/105168512

文章都写得比较浅显,如果想更深一步学习,请看其他博主的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值