内蒙古科技大学课程设计说明书(论文)
图5-5 使用IN关键字查询
EXISTSA关键字的作用是在WHERE子句中测试子查询返回的数据行是否存在,但子查询不会返回任何数据行,只产生逻辑值“true”或“false”。例如,在【医生表】表中查询科室编号为“120000”的医生的“姓名”,“医生工号”,“职称”和“工资”,SQL语句及执行的结果如图5-6所示。
图5-6 使用EXISTS关键字查询
5.2 数据库是更新
SQL语句中通常使用INSERT语句在数据表中插入新数据,INSERT语句可以一次插入一条或多条记录。例如,当有新的病人入院时,需在【住院表】表中插入新的数据。SQL语句及执行的结果如图5-7所示。
图5-7 插入数据
29
内蒙古科技大学课程设计说明书(论文)
在SQL语句中,对数据的更新用UPDATE语句来实现,它可以实现对某一数据表中一行、或多行以及所有行的更新。当新病人入院时,应给他安排病床,并将【病床表】表中病床的病床表中“病床标志”更新为“false”。SQL语句及执行的结果如图5-8所示。
图5-8 更新数据
随着数据的不断更新和变动,可能会存在一些无用的或者过时的数据,这些数据不仅占用数据库空间,而且对于数据的查询和更新等操作也带来了不必要的麻烦,所有对于这些数据应该及时将其删除。例如,当病人出院时应将【病人表】表与【病床安排】表中的数据删除,SQL语句及执行的结果如图5-9所示。
30
内蒙古科技大学课程设计说明书(论文)
图5-9 数据删除
5.3 存储过程
存储过程是一组为了完成特定功能的SQL语句集合,它经编译后存储在数据库中,用户通过指定存储过程的名称并给出相应的参数就可以对其进行执行。例如,在【处方】表中创建存储,查询某人的处方,SQL语句及执行的结果如图5-10和图5-11所示。
图 5-10 创建存储过程
图 5-11 执行“proc_查询处方”存储过程
31
内蒙古科技大学课程设计说明书(论文)
5.4 触发器
触发器基于一个表创建,但是可以针对多个表进行操作。所以触发器可以用来对表实施复杂的完整性约束,当触发器所保存的数据发生改变时,触发器自动激活,从而防止对数据不正确的修改。例如当在【病床安排】表中插入一个数据,对应的【病床表】表中的该病床的“空床标志”该为“false”,SQL语句及执行的结果如图5-12和图5-13所示。
图5-12 创建触发器
图5-13 插入数据
32
内蒙古科技大学课程设计说明书(论文)
5.5 游标
游标是操作结果集的一种常用方式,通过游标可以进行针对结果集的逐行处理,类似C语言中的指针结构。用户可以通过单独处理每一行逐条收集信息并对数据逐行进行操作,从而降低系统开销和潜在的阻隔情况。用户也可以使用这些数据生成SQL代码并执行或输出。例如,使用游标输出【医生表】表中“医生姓名”与“职称”,SQL语句及执行的结果如图5-14所示。
图5-14 游标的使用
5.6 事务
SQL Server 2005数据库系统是以事务为处理单元,事务是指用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。例如,在【病床安排】表中安排病床,并在【病床表】表中将该病床的空床标志置为“false”。SQL语句及执行的结果如图5-15所示。
33