sql索引、触发器的简单创建、使用

索引的创建与使用

表名为region,字段名为Name,索引名为rn
– alter方式创建索引

alter table region add index rn(Name);

表名为region,字段名为Pid,索引名为prn
– create方式创建索引

CREATE index prn on region(Pid);

– 查看表中的索引

show index FROM region;

SELECT * FROM region where Name='青岛市';

虽然创建了索引,但是执行sql语句的时候还是使用字段名,底层的效率已经发生了变化,使用explain命令查看执行计划
– 查看sql语句的执行计划

EXPLAIN SELECT * FROM region where Name='青岛市';
EXPLAIN SELECT * FROM region where id=1;
EXPLAIN SELECT * FROM region where Pid=1;
EXPLAIN SELECT * from region WHERE Pid=2;

表名为region,索引名为rn
– 删除索引

alter TABLE region DROP index rn;

触发器的创建与使用

– 创建触发器
– BEFORE类型

CREATE TRIGGER CHECKSUM
before INSERT ON salary
for EACH ROW
set @sum=@sum+NEW.Salary    -- 触发器执行的主体
 SET @sum=0;
 INSERT INTO salary(Name,Salary) VALUES('张三',1000),('李四',500);
 SELECT @sum;

– 查看数据库中的触发器

 SHOW TRIGGERS;

– 查看表的定义

 DESC salary;

– 创建触发器,为表salary插入数据时,表salary2插入相同的数据,并计算新插入的数据的Salary字段的和
– AFTER类型
– 主体含有多条语句,使用begin end进行包裹

CREATE TRIGGER SomeTable
AFTER INSERT on salary
for EACH ROW
BEGIN
INSERT INTO salary2(Name,Salary) VALUES(NEW.Name,NEW.Salary);
set @sum2=@sum2+NEW.Salary;
END
SET @sum2=0;
INSERT INTO salary(Name,Salary) VALUES('王十一',200),('田十二',300);
SELECT @sum2;

– 删除触发器

drop TRIGGER SomeTable

– 禁用触发器

alter table 表名 disable trigger 触发器的名字

– 启用触发器

alter table 表名 enable trigger 触发器的名字

– 另一种创建触发器的方式

create trigger 触发器名字 on 表名
for delete(还可以是updateINSERT)
as 
begin
	declare @cnum char(4)
	select @cnum=deleted.cnum from deleted
	if exists(select cno from cj where cno=@cnum)
	begin
		print '待删除的课程在sc 表中存在对应的选课记录,停止操作!'
		rollback tran
	end
end

–测试触发器

delete from course where cnum='c001'
drop trigger delete_course
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值