数据库程序员面试笔试通关宝典
上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参数传出去。