上QQ阅读APP看书,第一时间看更新
2.4 数据库对象
数据库对象是数据库的组成部分,常见的对象有表、索引、视图、图表、默认值、规则、触发器、存储过程、用户和序列等。
2.4.1 视图
视图是一张虚拟的表,字段可以自己定义,视图查询出来的数据只能进行查看,不能添加、修改和删除。
视图的作用:通过视图可以把想要查询的信息显示在一个表中,为了减少数据冗余,所以只存放基本信息,但当要查看详细信息时需要建立多表之间的联系,为了减少书写的SELECT语句,需要在多个表中创建视图。这时就可以看到比较详细的信息了,然而有一些不想让别人看到的信息别人通过视图是看不到的。
2.4.2 触发器
触发器是一种特殊类型的存储过程,当指定表中的数据发生变化时它会自动生效,唤醒调用触发器以响应INSERT、UPDATE或DELETE语句。触发器是当执行触发器中定义的操作时,主动工作。
1.定义一个UPDATE触发器
CREAT TRIGGER t_UPDATE ON 教师信息 for update as If(update(姓名) or update(性别)) begin print '事务不能被处理,基本数据不能修改!' ROLLBAK TRANSACTION end else print '数据修改成功1'
2.执行UPDATE操作
当执行UPDATE操作时会触发触发器,此时触发器执行的功能是如果更改姓名和性别,则会显示事物不能被处理,然后回滚此次操作。也就是说教师信息表里的数据除了姓名和性别两列之外,其他都可以更改,然后会显示“数据修改成功”的消息提示。
2.4.3 存储过程
存储过程相当于自定义函数,可以被调用。存储过程是一系列预先编辑好的,能实现特定操作功能的SQL代码集,它与特定数据库相关联,存储在SQL Server服务器上。
1.存储过程的作用
(1)提高效率(存储过程本身执行速度非常快,调用存储过程大大减少了数据库的交互次数)。
(2)提高代码重用性(可以用更简短的代码实现多次相同的操作,减少冗余)。
2.如何使用存储过程
存储过程大致可分为无参存储过程和带参存储过程。
(1)无参存储过程。
create procedure pro4() begin select 语句; end tips://写存储过程时也要记得修改命令停止标识符
(2)带参存储过程(分为带in、out、inout三种参数)。
create procedure pro2( in n int) begin select StudentName from studentinfo where GradeID=n; end mysql> create procedure pro_2(in cid int(11),out cnum int(11)) -> begin -> select c_num into cnum from commodity where c_id = cid; -> end$ Query OK,0 rows affected (0.00 sec)
in参数可以当作条件中的某个参数;
into参数可以将查询到的数据通过c_num参数传出去。