首先从建立以及操作数据库开始,有了数据库之后,我们就要在数据库中建立表,对表的操作我们需要通过编程语句来实现,最后就是要保证数据的安全性,其中包括备份。
为了实现数据库操作的高效以及完整性,引入了视图,存储过程,触发器,事物等一系列的操作,下面就说一下我对视图,存储过程 触发器以及事物的理解
1、视图是一张虚拟的表,字段可以由我们自己定义,视图查询出来的数据只能进行查看,不能增删改
通过视图可以把我们想查询的信息显示在一个表里,为减少数据冗余只存放基本信息,可是当想看更细的信息的时候需要多表之间的联系,为了少写select语句,我们就要在多个表中创建视图。
下面我们敲学生时用到的三张表,分别是学籍表,班级表,年级课程表
创建视图步骤:
1.先联合学籍,班级表:
select a.student_ID,a.student_name,a.class_no,b.grade from 学籍表a,班级表b where a.class_no=b.classno
2.得到的表再联合上年级课程表
select a.student_ID,a.student_name,a.class_no,b.grade,c.course_name from 学籍表a,班级表b,年级课程表c where a.class_no=b.classno and b.grade=c.grade_id
3.创建视图
这样我们就可以得到一个包含学号,姓名,班号,年级,课程的新的表,我们需要为查询到的结果建立一个视图,等再次查看的时候调用这个视图就可以,减少查询量。下面是视图的创建:
create view table_1(
select a.student_ID,a.student_name,a.class_no,b.grade,c.course_name from 学籍表a,班级表b,年级课程表c where a.class_no=b.classno and b.grade=c.grade_id)
1.存储过程相当于自定义函数,可以被调用,存储过程是一系列预先编辑好的,能实现特定操作功能的SQL代码集,他与特定数据库相关联,存储在SQL Server服务器上。
2.优点:
3.应用举例:
定义一个存储过程:从员工信息表和部门信息表中返回员工信息。Create proc p_enployee
@departementid varchar(10),
@zhiwei varchar(20)
As
Select A.员工姓名,A.性别,A.所任职位,A.联系电话,B.部门名称
From 员工信息 A, 部门信息 B
Where A.所在部门编号=B.部门编号 AND B.部门编号=@departmentid AND A.所任 职位=@zhiwei
调用存储过程:
Exec p_employee @departmentid=’10001’,@zhiwei=’主管’
1.触发器是一种特殊类型的存储过程,它在指定的表中的数据发生变化时自动生效。唤醒调用触发器以响应 INSERT、UPDATE 或 DELETE 语句。执行触发器是执行触发器中定义的操作,主动工作。
2.应用举例:
定义一个update的触发器
执行update操作:
Update 姓名,年龄,家庭住址
当执行update操作时,会触发这个触发器,此触发器执行的功能是如果更改姓名和性别,则会显示事物不能被处理,然后回滚此次操作,也就是说教师信息表里的数据除了姓名和性别两列之外,都可以更改,然后会显示数据修改成功。
1.是指一个操作序列,要么都被执行,要么都不被执行,不可分割,事务即使指我们可以预先推测出这个地方可能会发生错误,如果发生错误则把前面执行的操作全部取消,这时就需要定义一个事务处理过程,用来回滚事务,让程序回到没有操作之前的状态。
2.应用举例:
小明要向小红转100块钱,此时银行需要做的事情就是:
一:小红卡里多100块钱
二:小明卡里少100块
这样才算交易成功,但是如果小明卡里多了100,而小红卡里的钱没有少,这是就会产生错误,这时就需要定义一个事务用于回滚到交易之前的状态,即与交易相关的所有数据库信息也成功地更新。但是,如果在这一系列过程中任何一个环节出了差错,例如在更新小明卡里的余额信息时发生异常、这将导致交易失败。一旦交易失败,数据库中所有信息都必须保持交易前的状态不变,比如最后一步在更新小明卡里的余额失败而导致交易失败,那么必须保证这笔失败的交易不影响数据库的状态--库存信息没有被更新、用户也没有付款,订单也没有生成。否则,数据库的信息将会一片混乱。
下面我们定义了一个事务,输入学生信息,如果输入是汉族,则继续执行操作,否则回滚事务,即不添加此学生的信息,使系统信息回到添加此学生信息之前的状态。
commit transaction 继续操作 rollbacktransaction 回滚事务