Mysql基础知识点汇总

2019-01-04 20:53:14王旭

insert into grade values('fasdfdssa')
---替换触 发器:本来需要执行某一个操作,结果不做了,使用触 发器中的代码语句块进行替代

if exists(select * from sysobjects where name='tr_grade_insert')
 drop trigger tr_grade_insert
go
create trigger tr_grade_insert
on grade instead of insert  ---为grade表创建名称为tr_grade_insert的触发器,在执行insert操作之后触发
as
declare @cnt int
set @cnt = (select count(*) from student)
 select * ,@cnt from student
select * from grade
go

insert into grade values('aaaaaaaaaaaa')
go

---触 发器的两个临时表:
--inserted: 操作之后的新表:所有新表与原始的物理表没有关系,只与当前操作的数据有关
--deleted:操作之前的旧表:所有新表与原始的物理表没有关系,只与当前操作的数据有关

if exists(select * from sysobjects where name='tr_grade_insert')
 drop trigger tr_grade_insert
go
create trigger tr_grade_insert
on grade after insert
as
 print '操作之前的表:操作之前,这一条记录还没有插入,所以没有数据'
 select * from deleted
 print '操作之后的表:已经成功插入一条记录,所有新表中有一条记录'
 select * from inserted 
go
--测试:
insert into grade values('aaaaa')

if exists(select * from sysobjects where name='tr_grade_update')
 drop trigger tr_grade_update
go
create trigger tr_grade_update
on grade after update
as
 print '操作之前的表:存储与这个修改操作相关的没有被修改之前的记录'
 select * from deleted
 print '操作之后的表:存储这个操作相关的被修改之后 记录'
 select * from inserted 
go
--测试
update grade set classname=classname+'aa' where  ClassId>15

if exists(select * from sysobjects where name='tr_grade_delete')
 drop trigger tr_grade_delete
go
create trigger tr_grade_delete
on grade after delete
as
 print '操作之前的表:存储与这个修改操作相关的没有被删除之前的记录'
 select * from deleted
 print '操作之后的表:存储这个操作相关的被删除之后 记录--没有记录'
 select * from inserted 
go

--测试
delete from grade where ClassId>15

20.存储过程

存储过程就相当于c#中的方法
参数,返回值,参数默认值,参数:值的方式调用
在调用的时候有三个对应:类型对应,数量对应,顺序对应。

创建语法:

create proc usp_用户自定义名称
对应方法的形参 --(int age, out string name)
as
对应方法体:创建变量,逻辑语句,增加删除修改和查询..return返回值