资源简介 项目一 数据库的建立一、教学目标1.了解创建数据库的概念和作用等概念。2.熟悉创建学生班级管理数据库。3.学会创建学生班级管理数据表。4.掌握数据库、数据表、数据的修改和删除。5.学会数据库的导入与导出、备份与还原。二、课时分配本项目共6个任务,安排8课时。三、教学重点通过本项目的学习,让学生了解SQL Server 2005环境需求,掌握SQL Server 2005系统数据库概念,学习SQL Server 2005管理平台,掌握创建学生班级管理数据库方法;分别使用SQL Server 2005数据库管理系统和SQL语句创建数据库和表,将使用SQL Server 2005数据库管理系统创建Student数据库,并在Student数据库中创建表Student,使你能够掌握使用SQL Server 2005数据库管理系统创建数据库和表的方法;掌握插入记录是将新记录添加在表尾,可以向表中插入多条记录,可以边插入边修改,输入一列的值,按回车键,光标跳到下一行同列的位置,类似于Excel表中的操作。需要提醒的是,若表的某些列不允许为空,则必须要输入值;熟悉使用SQL Server Management Studio(SSMS)创建、修改和删除数据库,使用create database 语句创建数据库,用alter database database_name修改数据库,用drop database database_name删除数据库;在SQL Server 2005中,可以运用SQL Server 导入和导出向导完成数据的导入和导出;学会把实验后的数据恢复到初始状态,当数据库发生故障时,可以迅速恢复丢失的数据。四、教学难点1.掌握创建学生班级管理数据库。2.掌握创建学生班级管理数据库。3.掌握数据库、数据表、数据的修改和删除。五、教学内容任务一 创建学生班级管理数据库一、 SQL Server 2005的简介Microsoft SQL Server是用于电子商务、业务线和数据仓库解决方案的数据库管理和分析系统。Microsoft SQL Server 2005是用于大规模联机事务处理、数据仓库和电子商务应用的数据库平台;也是用于数据集成、分析和报表解决方案的商业智能平台。Microsoft的SQL Server 2005产品系列有Enterprise、Developer、Standard、Workgroup、Compact和Express等版本,从而可以更好地满足各个客户领域的需求。二、 SQL Server 2005环境需求三、 SQL Server 2005系统数据库简介SQL Server 2005有4个系统数据库,分别为Master、Model、Msdb、Tempdb。1.Master数据库2.Model 数据库3.Msdb数据库4.Tempdb四、 SQL Server 2005管理平台SQL Server 2005管理平台(SQL Server Management Studio)包含了SQL Server 2000企业管理器(Enterprise Manager),以及查询分析器(Query Analyzer)等方面的功能。此外,SQL Server 2005管理平台还提供了一种环境,用于管理 Analysis Services(分析服务)、Integration Services(集成服务)、Reporting Services(报表服务)等。1.商业智能开发平台2.SQL Server分析器3.数据库引擎优化顾问4.分析服务5.SQL Server配置管理器6.SQL Server文档和教程五、 SQL Server 2005的安装检查系统的硬件和软件环境是否符合安装SQL Server 2005的要求,在计算机光驱中放入安装盘,或者把安装的镜像iso文件装进虚拟光驱,SQL 2005 Enterprise Edition安装图解如下,运行光盘后,如图1-1所示。从图1-1中可知,当前的版本是Enterprise Edition,选择基于x86的操作系统,自动跳转到如图1-2所示的开始安装界面。在图1-2中可以检查硬件的软件要求,如果系统中没有安装过SQL Server 2005,可以直接选择安装服务器组件、工具、联机丛书和示例,进行全新独立的安装,弹出如图1-3所示的软件许可条款。在图1-3中,勾选上“我接受许可条款和条件”,单击“下一步”按钮。跳转到如图1-4所示的检查系统是否符合安装SQL Server 2005的要求,可以看出SQL Server 2005的安装需要.NET Framework 2.0的支持,如图1-4所示。在图1-4中安装NET Framework 2.0 和语言包,Microsoft SQL Native Client和Microsoft SQL Server 2005安装程序支持文件。单击“安装”按钮,如图1-5所示,进行下一步操作。安装组件结束之后,提示进行下一步操作,如图1-6所示。在图1-6中,单击“下一步”按钮,进行系统配置检查,SQL Server 安装程序对计算机的配置进行扫描,如图1-7所示。在计算机的配置检查后,进入了如图1-8所示的欢迎安装向导界面。在图1-8中,单击“下一步”按钮,安装程序跳转到如图1-9所示的系统配置检查窗口。在图1-9中,检查系统的安装空间大小,硬件需求是否符合最低要求等,检查每一项的状态是否为成功。如果有选项没有通过,需要安装人员进行处理,再重装SQL Server 2005,直到所有的状态都成功,若不影响下一步的,可以继续安装。提示进行下一步操作,如图1-10所示。勾选“SQL Server Database Services”,“工作站组件、联机丛书和开发工具”,其他的可选,点击高级按钮,在不同项目在弹出菜单中选择,同时可以更改安装路径。单击“下一步”按钮,进行实例名的设置,安装程序跳转到如图1-11所示默认实例窗口。在图1-11中,这里要注意了,如果电脑以前没有SQL Server的其他产品,直接点下一步,如果电脑上有2005以前的产品时,选择默认实例时2005的安装盘会升级你的以前产品,如果选择命名实例时,则会安装一个新的实例,以前的产品仍然独立运行。选择默认实例,单击“下一步”按钮,安装程序跳转到如图1-12所示的窗口。在图1-12中,选择“使用内置系统帐户”和“本地系统”。安装结束时启动的服务有AnalysisServices和SQL Browser。单击“下一步”按钮,安装程序跳转到如图1-13所示的窗口。在图1-13身份验证模式中,可以有两种选择: Windows身份验证模式和混合模式,为了便于后期的学习,在这里选择混合模式,并且要两次输入同样的密码。单击“下一步”按钮,安装程序跳转到如图1-14所示的排序规则设置窗口。在图1-14所示的排序规则设置窗口中,按默认的继续下一步。单击“下一步”按钮,安装程序跳转到如图1-15所示窗口。在图1-15错误和使用情况报告设置窗口中,可以不选。单击“下一步”按钮,安装程序跳转到如图1-16所示的准备安装窗口。在图1-14所示的排序规则设置窗口中,按默认的继续下一步。单击“下一步”按钮,安装程序跳转到如图1-15所示窗口。在图1-15错误和使用情况报告设置窗口中,可以不选。单击“下一步”按钮,安装程序跳转到如图1-16所示的准备安装窗口。经过比较复杂的一段时间过后,开始安装所需要的组件,在图1-16中,点击“安装”按钮,程序跳转到如图1-17所示的窗口。程序组件安装开始,所需要的时间较长一些,如图1-18所示。检查每一项的安装状态,直到所有都变为绿色的勾号,表示已经顺利安装相应的组件。如图1-19所示。在图1-19中,单击“下一步”按钮,安装程序跳转到如图1-20所示的完成安装窗口。到此,安装Microsoft SQL Server 2005完毕!在图1-20中点击“完成”按钮。如果要在Windows XP系统下练习和使用数据库的简单功能,可以安装Microsoft SQL Server 2005 Express Edition版本。类似上述的安装过程,不再重复。现截取安装过程中某个图片,如图1-21所示。任务二、创建学生班级管理数据表一、 SQL Server中一些常用的对象1.表2.视图3.存储过程4.触发器二、使用SQL Server 2005数据库管理系统创建数据库和表将使用SQL Server 2005数据库管理系统创建Student数据库,并在Student数据库中创建表Student,使你能够掌握使用SQL Server 2005数据库管理系统创建数据库和表的方法。(1)启动SQL Server 2005。(2)登录数据库服务器。点击“连接到服务器”对话框中的连接按钮,连接到SQL Server 2005数据库服务器,如图2-1所示。(3) 创建数据库student_ssts。在SQL Server 2005数据库管理系统的左边栏“对象资源管理器”中右击数据库对象,在弹出的快捷菜单中单击“新建数据库”命令,如图2-2所示。(4) 在弹出的“新建数据库”对话框右侧的数据库名称中输入数据库名称“student_ssts”,然后单击确定,如图2-3所示。(5) 在student_ssts数据库中新建表:单击SQL Server 2005数据库管理系统的左侧的“对象资源管理器”栏中的刷新按钮,以显示出新建的数据库“student_ssts”。依次展开左侧栏对象资源管理器中的“数据库”→“student_ssts”,并右击student_ssts数据库中的表项目,在弹出的快捷菜单中单击“新建表”命令,如图2-4所示。在右侧在工作区中输入“student_SSMS”表的信息,该表具有如下列,如表2-2所示。建立的表结构如图2-5所示(7)单击文件菜单中的保存命令保存该表,并取名为“student_SSMS”。三、 使用SQL语句创建数据库和表(1) 单击工具栏中的“新建查询”按钮,并在弹出的“连接到服务器”对话框中单击“连接”按钮,新建一个SQL脚本,如图2-6所示。(2) 在右侧的SQL脚本输入框中输入如下SQL代码:create database student_sstsgouse student_sstsgocreate table student_SQL(Sno char(10) primary key,Sname nchar(10)not null,Ssex bit,Sage int,Sdept nchar(15))单击工具栏中的按钮,运行SQL语句,完成数据库与表的创建。任务三、添加数据和设置约束一、 约束的类型1.主键约束(Primary Key)2.外键约束(Foreign Key)3.唯一约束(Unique)4.检查约束(Check)5.非空约束(Not Null)6.默认约束(default)二、 插入记录插入记录是将新记录添加在表尾,可以向表中插入多条记录,可以边插入边修改。输入一列的值,按回车键,光标跳到下一行同列的位置,类似于Excel表中的操作。需要提醒的是,若表的某些列不允许为空,则必须要输入值。显示为表示该字段的值为空,没有输入任何值。插入记录可以用SQL Server Management Studio操作完成,也可以用TSQL语句操作表数据。INSERT语句的基本格式为:INSERT table_nameVALUES(constant1,constant2,…)数据库的信息时常需要改变用户需要添加数据,INSERT 语句提供了此功能。INSERT语句通常有两种形式。一种是插入一条记录,另一种是插入子查询的结果。后者可以一次插入多条记录。INSERT完整的语法格式如下:INSERT [INTO]{ table_name WITH ( […n])|view_name|rowset_function_limited }{[(column_list)]{VALUES ({ DEFAULT|NULL | expression } […n])|derived_table|execute_statement }}|DEFAULT VALUES任务四、数据库、数据表、数据的修改和删除一、 使用TSQL语句修改、删除数据库1. ALTER DATABASE 修改数据库简单语法格式ALTER DATABASE database_name{MODIFY NAME = new_database_name| COLLATE collation_name| | }二、 创建数据表和修改数据表(1) 开始→所有程序→Microsoft SQL Server 2005→SQL Server Management Studio,如图4-1所示。(2) 点击连接得如图4-2所示。(3) 在工具栏中选择点击“新建查询”,如图4-3所示。(4) 在编辑框中编辑代码:① 创建数据表Student:use stu1create table Student(Sno char(10)primary key,Sname char(8) unique,Ssex char(2) check (Ssex=男or Ssex=女),Sage smallint,Sdept char(20))如图4-4所示。② 创建表Course:use stu1create table Course(Cno char(4) primary key,Cname char(20),Cpno char(4),Ccredit smallint,foreign key (Cpno) references Course (Cno))如图4-5所示。③ 创建表SC:use stu1create table SC(Sno char(10),Cno char(4),Grade smallint,primary key (Sno,Cno),foreign key (Sno) references Student (Sno),foreign key (Cno) references Course (Cno))如图4-6所示。(5) 修改表:① 在Student表中增加新列Snation(民族):use stu1alter table Student add Snation char(10)如图4-7所示。② 增加民族必须取唯一值的约束条件:use stu1alter table Student add unique (Snation)如图4-8所示。③ 删除Student表之前要删除SC表:use stu1drop table SC如图4-9所示。④ 删除表Student:use stu1drop table Student如图4-10所示。三、 使用语句添加、修改、删除记录任务五、数据库的导入与导出在SQL Server 2005中,可以运用SQL Server 导入和导出向导完成数据的导入和导出。“SQL Server 导入和导出向导”中有多种数据源和多种数据目标可供选择,例如,Microsoft OLE DB提供的多种访问接口,SQL Server Native Framework数据提供程序、Microsoft Office Excel和Microsoft Access及平面文件源等。开发人员可以把数据库中的数据导出成需要的格式,也能把兼容的格式导入到数据库中。举例说明: 利用导入、导出向导导入Access数据库的步骤如下。打开SQL Server管理平台,展开服务器和数据库,右击该数据库图标,从弹出的快捷菜单中选择“任务→导入数据”选项。启动数据导入向导工具,就会出现欢迎使用向导对话框,对话框中列出了导入向导能够完成的操作,如图5-1所示。单击“下一步”按钮,则出现选择数据源对话框,如图5-2所示。在该对话框中,可以选择数据源类型、文件名、用户名和密码等选项。选择Microsoft Access,选择要导入的access文件,如图5-2所示。单击“下一步”按钮,则出现选择导入的目标数据库类型对话框,如图5-3所示。在目标对话框中选择SQL Native Client,在服务器名称框中输入目标数据库所在的服务器名称STUDENT92。本例使用SQL Server数据库ssts作为目标数据库。设定完成后,单击 “下一步”按钮,则出现指定表复制或查询对话框,如图5-4所示。单击“下一步”按钮,就会出现选择源表和源视图对话框,如图5-5所示。在该对话框中,可以设定需要将源数据库中的哪些表格传送到目标数据库中去。单击表格名称左边的复选框,可以选定或者取消对该表格的复制。如果想编辑数据转换时源表格与目标表格之间列的对应关系,可单击表格名称右边的“编辑…”按钮。在图5-5中单击“下一步”按钮,则会出现“保存并执行包”对话框,如图5-6所示。在该对话框中,可以指定是否希望保存SSIS包,也可以立即执行导入数据操作。单击“下一步”按钮,则出现向导完成确认对话框,如图5-7所示。其中显示了在该向导中进行的设置,如果确认前面的操作正确,单击“完成”按钮后进行数据导入操作,否则,单击“上一步”按钮返回修改。单击“完成”按钮后,如图5-8所示。显示导入成功信息。展开ssts数据库,展开表节点。如图5-9所示,access中的表Texamarrage、Texamctrl等已经全部导入到ssts数据库中。任务六、数据库的备份与还原一、 数据库的备份方式1.备份方式可以分为完整备份和差异备份。完整备份指定的所有数据,包括这些数据的日志。差异备份是在完整备份的基础上,如果数据有修改,可以在很短的时间内对修改的数据进行备份,也就是只备份上次完整备份之后发生变化的数据。2.备份操作角色具有以下角色的成员可以做备份操作:(1)固定的服务器角色系统管理员sysadmin。(2)固定的数据库角色数据库所有者db_owner。(3)固定的数据库角色允许进行数据库备份的用户db_backupoperator。可以通过授权允许其他角色进行数据库备份。SSMS中备份数据库选项说明,如图6-1所示。4.查看备份集中的数据文件和日志文件二、 数据库的还原1.恢复模式和支持的还原操作2.还原模式的使用三、 TSQL数据库的备份与还原1.创建备份设备2.备份BACKUP3.恢复RESTORE项目二 数据库的查询一、教学目标1.掌握学习SQL基本查询。2.辨析排序order by与分组group by。3.学会聚合数据查询与分组统计数据。4.掌握连接查询、组合查询。5.了解插入、更新。二、课时分配本项目共6个任务,安排6课时。三、教学重点通过本项目的学习,让学生了解学习SQL基本查询,掌握通配符“*”的使用,学习多个字段拼接,掌握WHERE子句使用方法;辨析排序order by与分组group by,学习 INTO子句和TOP子句;掌握并学会在数据库information09da2中,利用排序ORDER BY和分组GROUP BY进行SQL查询操作。按学生的姓名拼音排序,显示学生的序号、姓名、性别、户口所在地。分别统计男女在校住宿生人数和住宿生总数。统计户口在同一城市的学生人数,并按统计的人数从少到多排序;学会聚合数据查询以及分组统计数据;学会对学生成绩的聚合数据查询,利用数据库information10da5da6,根据数据表“信息10大5”,对表中的数据进行聚合数据查询;利用数据库information09da2中的数据表“户口和住宿表”,进行分组统计查询;掌握什么是连接查询,分清等值连接与非等值连接、自身连接、外连接、嵌套查询;掌握在SQL Server 2005中,将多个查询的结果放在一起,以一个查询结果的形式显示出来,则可以使用UNION关键字把多个SELECT连接起来。每个SELECT查询语句应当有相同数量的字段,若字段个数不等,可以使用NULL来代替;每个查询语句中相应的字段的类型必须相互兼容,若不兼容,可使用类型转换函数、强制转换字段类型;学会INSERT语句、批量插入数据,将成绩不及格的学生信息批量插入到新建的数据表中。四、教学难点1.掌握SQL基本查询。2.辨析排序order by 与分组group by的区别。3.掌握聚合数据查询与分组统计数据。4.掌握连接查询、组合查询、插入与更新。五、教学内容任务七 SQL基本查询在SQL Server 2005中,master数据库是默认的当前数据库,所以在编写操作SQL语句时,先使用USE语句打开要使用的表所在的数据库,否则就会出现“对象名无效”提示。一、 单表查询1.通配符“*”的使用在SELECT语句中,可以使用通配符“*”来显示所有的字段。【例1】 查询学生信息表中所有学生的信息。USE information09da2SELECT *FROM 学生信息表SELECT 后面列出要查询的字段名,字段之间要用英文逗号“,”隔开。如果要去掉重复的查询结果,要加上DISTINCT。用关键字AS可以命名新列,也可以给现有字段取别名。2.用AS重新指定返回字段的名字【例2】查询学生信息表中所有学生的姓名和性别,其中sname用“姓名”显示,sex用“性别”显示。SELECT sname AS 姓名, sex AS 性别FROM 学生信息表3.多个字段拼接如果需要将多个字段拼接成一个字段,可以使用“+”连接,使用函数rtrim去掉字段右侧的空格。【例3】查询学生信息表中所有学生的姓名和系别,并生成拼接成一个字段。SELECT RTRIM(sname)+ ‘(’+RTRIM(depart)+ ‘)’ AS 姓名和系别FROM 学生信息表运行的结果如: 张三(信息工程系)4.WHERE子句用关键字WHERE子句来说明查询条件,紧跟在FROM子句的后面。条件表达式中有如下条件运算符,关系运算符: =, <, >, <=, >=, < >, !=;逻辑运算符 NOT, AND, OR;其他运算符: IN, NOT IN, BETWEEN, NOT BETWEEN, LIKE, NOT LIKE, IS NULL, IS NOT NULL, EXISTS, ANY, SOME。【例4】查询学生信息表中所有学生的年龄不小于18岁的女生的姓名和性别。SELECT姓名,性别 FROM 学生信息表WHERE 性别=‘女’ AND年龄>=185.查询常用的通配符常用的通配符见表7-1。在sqlsever中nchar,nvarchar使用的是unicode字符集。而char,varchar使用的是ASCII字符集。规定: 当unicode数据(nchar或nvarchar)与like 一起使用时,尾随空格有意义。但对非unicode数据,尾随空格无意义。而ASCII中char字符串后面的空格没有意义,即char和varchar尾部空格无意义。数据库中“姓名”列的数据类型,若数据类型为nchar(8),所以要查询姓“王”且单名的学生例如“王石”情况,则查询语句应该为:SELECT *FROM 学生信息表WHERE 姓名 LIKE 王_——王下划线后面是6个空格,要与nchar的长度一致。任务八、排序order by与分组group by一、 排序ORDER BY在SQL Server 2005中,为了方便查看查询结果,按某种规律排序,可使用ORDER BY子句来排序数据,还可以进行多字段排序。【例1】 从学生表student中按照成绩grade升序排序。SELECT *FROM studentORDER BY grade也就是按照成绩grade升序排序,默认排序方式是升序,功能等于在字段名后加上升序关键字ASC,ORDER BY后的字段名可以不出现在SELECT字段列表中,如果要降序排列,在字段名后加上DESC。例如: ORDER BY grade DESC二、 分组GROUP BY数据分组经常运用在统计汇总中,运用GROUP BY可以进行分组,如果要将满足条件的分组查询出来,还需要使用HAVING子句。需要注意的是,使用GROUP BY时,不要使用SELECT *语句,否则有“列表中的列无效,因为该列没有包含在聚合函数或GROUP BY子句中”错误提示。如果SELECT子句后是字段名列表,而这些字段名又不在聚合函数中,则应当在GROUP BY子句中列出所有这些字段名,这时分组就是这些字段的组合,而并非单个字段分组。【例2】 从学生表student中按照性别sex分组,统计男女生人数。SELECT sex, COUNT(*) As 人数FROM studentGROUP BY sex三、 INTO子句和TOP子句对已经存在的表,运用INTO子句可以创建一张新表,此新表存储在数据库中,不会显示在屏幕上,因此,建立后可以用SELECT显示全部记录。若INTO后的表名前有“#”号,表示该新表为临时表,退出SQL Server后,不保存该新表。【例3】 从学生表student中按照系别,把信息工程系的学生记录单独生成一张新表“信息工程系学生表”。SELECT * INTO信息工程系学生表FROM studentWHERE 系别=‘信息工程系’SELECT *FROM 信息工程系学生表TOP子句可以限定显示前n条记录。【例4】 显示学生表student中前10条记录。SELECT TOP 3 *FROM student任务九、聚合数据查询与分组统计数据一、 聚合数据查询GROUP BY子句可以将查询结果按属性列或属性列组合在行的方向上进行分组,每组在属性列或属性列组合上具有相同的聚合值。常用的聚合函数如表9-1所示。【例1】 查询求学号为001学生的总分和平均分。程序清单如下:SELECT SUM(score) AS总分, AVG(score) AS 平均分FROM SCWHERE sno = 001注意: 函数SUM和AVG只能对数值型字段进行计算。【例2】 查询求信息工程系学生的总数。SELECT COUNT(sno)FROM SWHERE dept=信息工程系【例3】 查询求学校中共有多少个系。程序清单如下:SELECT COUNT(DISTINCT dept) AS 系部个数FROM S注意: 加入关键字DISTINCT后表示消去重复行,可计算字段“dept”不同值的数目。COUNT函数对空值不计算,但对零进行计算。二、 分组统计数据在分组查询中,只要表达式中不包括聚合函数,就可以按该表达式分组。【例4】 查询每位学生的学号及其选课的门数。程序清单如下:SELECT cno,COUNT(*) AS 选课门数FROM SCGROUP BY cnoGROUP BY子句按cno的值分组,所有具有相同cno的元组为一组,对每一组使用函数COUNT进行计算,统计出各位学生选课的门数。GROUP BY子句还可以与WHERE子句配合使用,WHERE子句先于GROUP BY子句执行,将满足条件的记录保留下来,然后,再按照GROUP BY子句分成小组。若在分组后还要按照一定的条件进行筛选,则需要使用HAVING子句。【例5】 在分组查询中使用WHERE条件,查询计算机系的学生学号及平均成绩。程序清单如下:SELECT sno, AVG(score) AS averagescoreFROM SCWHERE sno=(SELECT sno FROM S WHERE dept=’计算机’)GROUP BY snoORDER BY sno【例6】 在分组查询中使用HAVING条件,查询平均成绩大于85分的学生学号及平均成绩。程序清单如下:SELECT sno, AVG(score) AS averagescoreFROM SCGROUP BY snoHAVING AVG(score) >85【例7】 查询选课在三门以上且各门课程均及格的学生的学号及其总成绩,查询结果按总成绩降序列出。程序清单如下:SELECT sno, SUM(score) AS totalscoreFROM SCWHERE score>=60GROUP BY snoHAVING COUNT(*)>=3ORDER BY SUM(score) DESC三、 反转查询结果当查询的结果不是理想的行列显示时,可以使用反转查询转换。可以利用COUNT函数忽略NULL值的规则,借助于CASE END表达式实现。【例8】 查询每系学生的男生和女生人数得到结果如表9-2所示。要想得到如表9-3所示的表格。查询语句如下:SELECTdept, COUNT(CASE WHEN sex=’男’THEN1ELSENULLEND) AS 男生人数,COUNT(CASE WHEN sex=’女’THEN1ELSENULLEND) AS 女生人数FROMstudentGROUP BY dept四、 HAVING子句在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与统计函数一起使用。如果只想要看到分组的统计结果,不需要全部的统计信息。【例9】 查询信息工程系和机电工程系的学生数。SELECT dept, COUNT(*) AS 人数FORM studentGROUP BY deptHAVING dept IN(‘信息工程’,’机电工程’)【例10】 订单表如表9-4所示,有商品编号Id、订单日期OderDate、订单价格OrderPrice和订单的顾客姓名。若希望查找订单总金额少于 2000 的客户。则使用如下 SQL 语句:SELECT Customer,SUM(OrderPrice) FROM OrdersGROUP BY CustomerHAVING SUM(OrderPrice)<2000若希望查找客户 “李其福” 或 “孔平俊” 拥有超过 2500 的订单总金额。则在 SQL 语句中增加了WHERE 子句:SELECT Customer, SUM(OrderPrice) FROM OrdersWHERE Customer=李其福 OR Customer=孔平俊GROUP BY CustomerHAVING SUM(OrderPrice)>2500对于WHERE和HAVING,HAVING子句主要用于筛选组,而WHERE子句用于筛选记录;HAVING子句中可以运用聚合函数,而WHERE子句不能运用聚合函数;HAVING子句不能出现既不被GROUP BY子句包含的字段,又不被聚合函数包含的字段,而WHERE子句中可出现所需的任意字段。通过上例可以知道使用的顺序一般为先WHRER,再GROUP BY分组,最后是HAVING子句分组条件。任务十、连接查询一、 等值连接与非等值连接连接条件的一般格式为:[<表名1>.] <列名1> <比较运算符> [<表名2>.] <列名2>其中,比较运算符主要有: =、>、<、>=、<=、!=。当比较运算符为“=”时,称为等值连接,其他情况为非等值连接。【例1】 现有学生表student和选课表sc,分别如表10-1和表10-2所示。查询每个学生及其选修课程的情况。SELECT student.*, sc.*FROM student, scWHERE student.sno=sc.sno查询结果如表10-3所示。自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,而等值连接并不去掉重复的属性列。【例2】 对上例用自然连接完成查询。SELECT student.sno,sname, ssex, sage, sdept,cno, scoreFROM student,scWHERE student.sno=sc.sno查询结果如表10-4所示。【例3】 查询张亮同学所选修的课程号为2的课程成绩。SELECT student.sno,sname,sc.cno,scoreFROM student,scWHERE (student.sno = sc. sno) AND (student.sname=张亮) AND (sc.cno=2)查询结果为表10-5所示。【例4】 现有学生表student和选课表sc,如表10-1和10-2所示,课程表c如表10-6所示。查询所有选课学生的学号、姓名、选课名称及成绩。SELECT student.sno,sname,cname,scoreFROM student,c,scWHERE student.sno=sc.sno AND sc.cno=c.cno查询结果为表10-7所示。本例涉及三个表,WHERE子句中有两个连接条件。当有两个以上的表进行连接时,称为多表连接。二、 自身连接当一个表与其自已进行连接操作时,称为表的自身连接。要查询的内容均在同一表中,可以将表分别取两个别名,一个是x,一个是y。将x,y中满足查询条件的行连接起来。这实际上是同一表的自身连接。【例5】 现有教师工资表TeacherSalary如表10-8所示,查询所有比教师“李强”工资高的教师姓名、性别、工资和李四的工资。程序清单如下:SELECT x.name AS 姓名,x.salary AS 工资,y.salary AS 李强工资FROM TeacherSalary as x, TeacherSalary as yWHERE x.salary>y.salary AND y.name=李强需要给表起别名以示区别,由于所有属性都是同名属性,因此必须使用别名前缀。查询结要如表10-9所示。三、 外连接普通连接操作只输出满足连接条件的元组;外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一起输出。可以分为左外连接和右外连接,左外连接的结果集包括 LEFT OUTER子句或LEFT OUTER JOIN中指定的左表的所有行,而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。右外连接RIGHT JOIN 或 RIGHT OUTER JOIN将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。【例6】 在学生表10-1中增加两个学生,分别为“刘艳”和“刘希妍”,如表10-10所示。选课表sc如表10-2所示。左外连接查询学生表student各选课表sc。SELECT student.sno, sname, ssex, sage, sdept, cno, scoreFROM student LEFT OUTER JION sc ON (student.sno=sc.sno)执行结果如表10-11所示。四、 嵌套查询一个SELECT FROM WHERE语句称为一个查询块,将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询为嵌套查询。1.带有IN的子查询子查询在上一级查询处理之前求解,子查询的结果用于建立父查询的查找条件。【例7】 运用表10-1和表10-2,查询选修课程号为2的学生名单。SELECT snameFROM studentWHERE sno IN(SELECT snoFROM scWHERE cno=2)【例8】 查询与“陈路”同系的学生名单若用分步完成:(1) 确定“陈路”所在的系名:SELECT sdeptFROM studentWHERE sname=陈路结果为“计算机”(2) 查找所有在“计算机”学生名单:SELECT sno, sname, sdeptFROM studentWHERE sdept=计算机结果如表10-12所示。把前面两步合并在一起的查询为:SELECT sno, sname, sdeptFROM studentWHERE sdept IN(SELECT sdeptFROM studentWHERE sname=陈路)本例的IN可以用“=”代替。2.带有比较运算符的子查询【例9】 查询超出课程平均成绩的学生号和课程号。SELECT sno, cnoFROM SC xWHERE score >= (SELECT avg(score)FROM SC yWHERE y.sno=x.sno)3.带有ANY、SOME或ALL的子查询【例10】 查询其他系中比计算机系所有学生年龄都要小的学生姓名和年龄。SELECT sname, sageFROM studentWHERE sage FROM studentWHERE sdept=计算机)AND sdept< >计算机运用上述的表101,可以查询出两位“张月”和“刘希妍”的符合条件,她们的年龄都比计算机系所有学生的年龄都要小。用聚合函数改写为:SELECT sname, sageFROM studentWHERE sage < ALL (SELECT MIN (sage)FROM studentWHERE sdept=计算机)AND sdept< >计算机4.带EXISTS的子查询不需要返回具体的查询数据,而只关心是否有返回值,即返回True或False。【例11】 运用表10-1和10-2,查询没有选修1号课程的学生姓名。SELECT snameFROM studentWHERE NOT EXISTS (SELECT *FROM scWHERE sno=student.sno AND cno=1)任务十一、组合查询在SQL Server 2005中,将多个查询的结果放在一起,以一个查询结果的形式显示出来,则可以使用UNION关键字把多个SELECT连接起来。每个SELECT查询语句应当有相同数量的字段,若字段个数不等,可以使用NULL来代替;每个查询语句中相应的字段的类型必须相互兼容,若不兼容,可使用类型转换函数强制转换字段类型。UNION 缺省在合并结果集后消除重复项,UNION ALL 指定在合并结果集后保留重复项。UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。【例1】 网络售书情况表InternetInfo如表11-1所示,实体店面售书表StoreInfo如表11-2所示,现在需要查询所有售书的订单日期。SELECT OrderDate FROM InternetInfoUNIONSELECT OrderDate FROM StoreInfo操作结果如表11-3所示。SELECT OrderDate FROM InternetInfoUNION ALLSELECT OrderDate FROM StoreInfo操作结果如表11-4所示。任务十二、插入、更新在SQL Server 2005中,有时为了方便,需要将查询结果保存起来。在SELECT子句的后面,FROM子句的前面加上了一个INTO关键字,关键字的后面紧跟用于保存查询结果的新表的名字。SELECT * (或字段列表)INTO 新表名FROM 表名一、 INSERT语句INSERT语句用于向数据库表或者视图中加入一行数据。INSERT语句的语法形式如下:INSERT [INTO] table_or_view [(column_list)] VALUES(data_values)其中,table_or_view是指要插入新记录的表或视图,column_list是可选项,指定待添加数据的列,VALUES子句指定待添加数据的具体值。列名的排列顺序不一定要和表定义时的顺序一致。但当指定列名表时,VALUES子句值的排列顺序必须和列名表中的列名排列顺序一致,个数相等,数据类型一一对应。在进行数据插入操作时须注意以下2点:(1) 在VALUES子句中,必须用逗号将各个数据分开,字符型数据要用单引号括起来。(2) 有时并不需要向表中插入完整的行,而需要将数据只插入到几个指定的字段内,则在表名后加上字段列表,且VALUES子句中值的排列顺序要和表中各属性列的排列顺序一致。【例1】 将姓名为夏总的相关信息插入到表中。INSERT INTO student(sno, sname, sex, birth, depart)VALUES(0025, 夏总, 男, 1958-10-01, 信息工程系)(3) 将VALUES子句中的值按照INTO子句中指定列名的顺序插入到表中。(4) 对于INTO子句中没有出现的列,则插入的新记录在这些列上将取空值。但在表定义时有NOT NULL约束的属性列不能取空值,例如学号不能为空。二、 UPDATE语句UPDATE语句用于修改数据库表或视图中特定记录或者字段的数据,其语法形式如下:UPDATE table_or_viewSET =[,=>]…[WHERE ]其中: table_or_view是指要修改的表或视图;SET子句给出要修改的列及其修改后的值,其中column为要修改的列名,expression为其修改后的值;WHERE子句指定待修改的记录应当满足的条件,WHERE子句省略时,则修改表中的所有记录。【例2】 带有WHERE条件的修改语句。UPDATE student.addressSET city=SuzhouWHERE student.address =1【例3】 将所有学生年龄增加1岁。UPDATE S SET age=age+1【例4】 把讲授C2课程的教师的工资增加500元。教师基本情况表是T表,其结构为T(tno,tn,sex,age,prof,sal,dept),分别表示教师的编号、姓名、性别、年龄、职称、工资和系别。教师授课表是TC表,其结构为TC(tno,cno)分别表示教师的编号,课程编号。UPDATE TSET sal=sal+500WHERE tno IN(SELECT T.tnoFROM T, TCWHERE T.tno=TC.tno AND TC.cno=C2)【例5】 在ssts数据库中,把课程“数据库”的学生成绩每人增加1分。UPDATE 选课表SET 成绩=成绩+1WHERE 课程号 IN(SELECT 选课表.课程号FROM 选课表,课程表WHERE 选课表.课程号=课程表.课程号 AND 课程表.课程名=数据库)项目三 数据库的安全一、教学目标1.掌握学习SQL Server 2005身份验证模式。2.掌握管理数据库的登录。3.了解注册、启动、停止SQL Server服务器。二、课时分配本项目共3个任务,安排4课时。三、教学重点通过本项目的学习,让学生了解学习安全身份验证中的Windows身份验证和SQL Server身份验证,以及掌握验证模式的设置,学会访问许可确认;管理SQL Server登录账号、用户账号管理、角色管理、;创建服务器组中的服务器注册与连接以及服务器启动、暂停和停止、服务器配置选项设置。四、教学难点1.掌握管理数据库的登录。2.学习SQL Server 2005 身份验证模式。3.了解注册、启动、停止SQL Server服务器。五、教学内容任务十三 SQL Server 2005身份验证模式SQL Server提供了既有效又容易的安全管理模式,这种安全管理模式是建立在安全身份验证和访问许可两者机制上的。一、 安全身份验证安全身份验证用来确认登录SQL Server的用户的登录账号和密码的正确性,由此来验证该用户是否具有连接SQL Server的权限。任何用户在使用SQL Server数据库之前,必须经过系统的安全身份验证。SQL Server 2005提供了两种确认用户对数据库引擎服务的验证模式:1.Windows身份验证SQL Server数据库系统通常运行在Windows服务器上,而Windows作为网络操作系统,本身就具备管理登录、验证用户合法性的能力,因此,Windows验证模式正是利用了这一用户安全性和账号管理的机制,允许SQL Server可以使用Windows的用户名和口令。在这种模式下,用户只需要通过Windows的验证,就可以连接到SQL Server。2.SQL Server身份验证SQL Server身份验证模式允许用户使用SQL Server安全性连接到SQL Server。在该认证模式下,用户在连接SQL Server时必须提供登录名和登录密码,这些登录信息存储在系统表syslogins中,与Windows的登录账号无关。SQL Server自身执行认证处理,如果输入的登录信息与系统表syslogins中的某条记录相匹配,则表明登录成功。二、 验证模式的设置利用SQL Server管理平台可以进行认证模式的设置,步骤如下:(1) 打开Server管理平台,右击要设置认证模式的服务器,从弹出的快捷菜单中选择“属性”选项,则出现SQL Server属性对话框。(2) 在SQL Server属性对话框中选择“安全性”选项页,如图13-1所示。(3) 在“服务器身份验证”选项栏中,可以选择要设置的认证模式,同时在“登录审核”中还可以选择跟踪记录用户登录时的那种信息,例如,登录成功或登录失败的信息等。(4) 在“服务器代理帐户”选项栏中设置当启动并运行SQL Server时,默认的登录者中哪一位用户。三、 访问许可确认通过了认证并不代表用户就能访问SQL Server中的数据,同时他还必须通过许可确认。用户只有在具有访问数据库的权限之后,才能够对服务器上的数据库进行权限许可下的各种操作,这种用户访问数据库权限的设置是通过用户账号来实现的。任务十四、管理数据库的登录在SQL Server 2005中,利用SQL Server管理平台可以创建、管理SQL Server登录账号。一、 管理SQL Server登录账号其具体执行步骤如下:(1) 打开SQL Server管理平台,单击需要登录的服务器左边的“+”号,然后展开安全性文件夹。(2) 右击登录名图标,从弹出的快捷菜单中选择“新建登录名”选项,则出现SQL Server“登录名—新建”对话框,如图14-1所示。(3) 在“名称”文本框中输入登录名,在身份验证选项栏中选择新建的用户账号是Windows 认证模式,或者是SQL Server认证模式。(4) 选择“服务器角色”页框,如图14-2所示。在服务器角色列表框中,列出了系统的固定服务器角色。在这些固定服务器角色的左端有相应的复选框,打勾的复选框表示该登录账号是相应的服务器角色成员。选择“用户映射”页框,如图14-3所示。上面的列表框列出了“映射到此登录名的用户”,单击左边的复选框设定该登录账号可以访问的数据库以及该账号在各个数据库中对应的用户名。下面的列表框列出了相应的“数据库角色成员身份”清单,从中可以指定该账号所属的数据库角色。选择“安全对象”页框,如图14-4所示。安全对象是 SQL Server数据库引擎授权系统控制对其进行访问的资源。点击“添加”按钮,可对不同类型的安全对象进行安全授予或拒绝。设置完成后,单击“确定”按钮即可完成登录账号的创建。二、 用户账号管理在一个数据库中,用户账号唯一标识一个用户,用户对数据库的访问权限以及对数据库对象的所有关系都是通过用户账号来控制的。利用SQL Server管理平台可以授予SQL Server登录访问数据库的许可权限。利用SQL Server管理平台创建一个新数据库用户账号的过程如下:打开SQL Server管理平台,展开要登录的服务器和数据库文件夹,然后展开要创建用户的数据库及安全文件夹,右击用户图标,从快捷菜单中选择“新建用户”选项,则出现“数据库用户—新建”对话框,如图14-5所示。在用户名框内输入数据库用户名称,在登录名选择框内选择已经创建的登录账号,然后在下面的数据库角色成员选择框中为该用户选择数据库角色,最后单击“确定”按钮即可完成数据库用户的创建。同样,在SQL Server 管理平台中,也可以查看或者删除数据库用户,方法是: 展开某一数据库,选中用户图标,则在右面的页框中显示当前的数据库的所有用户,如图14-6所示。要删除数据库用户,则在右面的页框中右击所要删除的数据库用户,从弹出的快捷菜单中选择“删除”选项,则会从当前的数据库中删除该数据库用户。三、 角色管理角色定义了常规的 SQL Server 用户类别。每种角色将该类别的用户与其使用 SQL Server时执行的任务集以及成功完成这些任务所需的知识相关联。利用角色,SQL Server管理者可以将某些用户设置为某一角色,这样只要对角色进行权限设置便可以实现对所有用户权限的设置,大大减少了管理员的工作量。SQL Server提供了用户通常管理工作的预定义服务器角色和数据库角色。用户还可以创建自己的数据库角色,以便表示某一类进行同样操作的用户。当用户需要执行不同的操作时,只需将该用户加入不同的角色中即可,而不必对该用户反复授权许可和收回许可。1.服务器角色服务器角色是指根据SQL Server的管理任务,以及这些任务相对的重要性等级来把具有SQL Server管理职能的用户划分为不同的用户组,每一组所具有的管理SQL Server的权限都是SQL Server内置的。服务器角色存在于各个数据库之中,要想加入用户,该用户必须有登录账号以便加入到角色中。SQL Server 2005提供了八种常用的固定服务器角色,其具体含义如下所示:系统管理员(sysadmin): 拥有SQL Server所有的权限许可。服务器管理员(serveradmin): 管理SQL Server服务器端的设置。磁盘管理员(diskadmin): 管理磁盘文件。进程管理员(processadmin): 管理SQL Server系统进程。安全管理员(securityadmin): 管理和审核SQL Server系统登录。安装管理员(setupadmin): 增加、删除连接服务器,建立数据库复制以及管理扩展存储过程。数据库创建者(dbcreator): 创建数据库,并对数据库进行修改。批量数据输入管理员(bulkadmin): 管理同时输入大量数据的操作。2.数据库角色数据库角色是为某一用户或某一组用户授予不同级别的管理或访问数据库以及数据库对象的权限,这些权限是数据库专有的,并且还可以使一个用户具有属于同一数据库的多个角色。SQL Server提供了两种类型的数据库角色:(1)固定的数据库角色。(2)用户自定义的数据库角色。任务十五、注册、启动、停止SQL Server服务器在SQL Server 2005中,服务器注册方法。一、 创建服务器组在一个网络系统中,可能有多个SQL Server服务器,可以对这些SQL Server服务器进行分组管理。分组的原则往往是依据组织结构原则,如将公司内一个部门的几个SQL Server服务器分为一组。SQL Server分组管理由SQL Server管理平台来进行。1.服务器注册与连接在SQL Server管理平台中注册服务器可以存储服务器连接信息,以供将来连接时使用。有三种方法可以在SQL Server管理平台中注册服务器:(1)在安装管理平台之后首次启动它时,将自动注册 SQL Server 的本地实例。(2)可以随时启动自动注册过程来还原本地服务器实例的注册。(3)可以使用 SQL Server管理平台的“已注册的服务器”工具注册服务器。在注册服务器时必须指定以下选项,如图15-1所示。(1) 服务器的类型。(2) 服务器的名称。(3) 登录到服务器时使用的身份验证的类型,以及登录名和密码(如果需要)。(4) 注册了服务器后要将该服务器加入到其中的组的名称。选择服务器连接属性页框,还可以指定下列连接选项,如图15-2所示。(1) 服务器默认情况下连接到的数据库。(2) 连接到服务器时所使用的网络协议,要使用的网络数据包大小。(3) 连接超时值,执行超时值等。要和已注册的服务器实现“连接”,则需要使用右键单击一个服务器,指向“连接”,然后单击“对象资源管理器”,如图15-3所示。与连接服务器相反的是断开服务器,只要在所要断开的服务器上单击右键,选择“断开”即可。注意断开服务器并不是从计算机中将服务器删除,而只是从SQL Server管理平台中删除了对该服务器的引用。需要再次使用该服务器时,只需在SQL Server管理平台中重新连接即可。2.服务器启动、暂停和停止在SQL Server管理平台中,在所要启动的服务器上单击右键,从弹出的快捷菜单中选择“启动”选项,即可启动服务器。暂停和关闭服务器的方法与启动服务器的方法类似,只需在相应的快捷菜单中选择“暂停(Pause)”或“停止(Stop)”选项即可。二、 服务器配置选项设置使用SQL Server管理平台配置服务器的操作方法为: 在SQL Server管理平台中用右键单击所要进行配置的服务器,从快捷菜单中选择“属性(Properties)”选项,就会出现如图15-4所示的对话框,其中可以进行服务器的属性即配置选项的设置。在如图15-4所示的服务器属性对话框中共有7个选项。这7个选项分别是: 常规选项、内存选项、处理器选项、安全性选项、连接选项、数据库设置选项、高级选项。项目四 数据库的管理一、教学目标1.掌握学习索引、视图的使用方法。2.掌握学习存储过程的使用方法。3.掌握学习触发器的使用方法。二、课时分配本项目共4个任务,安排8课时。三、教学重点通过本项目的学习,让学生了解索引和视图的使用方法,掌握创建、修改索引和视图的方法;掌握存储过程的创建以及如何查看、修改和删除存储过程;学习触发器的创建和应用。四、教学难点1.掌握索引和视图的创建和修改。2.掌握存储过程的创建以及如何查看、修改和删除存储过程。3.了解触发器的创建和应用。五、教学内容任务十六 索引一、 索引索引是根据表中一列或多列的值按照一定的顺序建立的列值与记录之间的对应关系,以表列为基础建立的数据库对象。索引加快检索数据行的速度,当查阅图书的某一章节内容时,为了方便查找,可以选择目录索引,快速找到页码。在“学籍管理”数据库中,为加快查询速度,给经常使用的表创建索引,并设置相关属性。如果列中有几个不同的值,或者表中仅包含几行值,则不推荐为其创建索引。因为,索引在搜索数据所花的时间比在表中逐行搜索话的时间更长。二、 索引的类型(1) 唯一索引: 不允许两行具有相同的索引值。也就是说,对于表中的任何两行记录来说,索引键的值都是各不相同。若创建了唯一约束,将自动创建唯一索引。(2) 主键索引: 为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值都是唯一的,并且不能为空。(3) 聚集索引(Clustered Index): 表中各行的物理顺序与键值的逻辑顺序(索引顺序)相同,每个表只能有一个聚集索引。聚集索引经常创建在表中经常被搜索到的列或按顺序访问的列上,在默认情况下,主键约束自动创建聚集索引。例如汉语字典默认按拼音排序,拼音顺序较后的字对应的页码也较大。(4) 非聚集索引(Non?clustered Index): 表的物理顺序与索引顺序不相同的索引。数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。例如,汉语字典按笔画排序的索引就是非聚集索引,一画的字如“乙”对应的页码却比三画的字如“口”对应的页码大。聚集索引和非聚集索引是从索引数据存储的角度来区分的;而唯一索引和非唯一索引是从索引值来区分的,所以唯一索引和非唯一索引既可以是聚集索引,也可以是非聚集索引,只要列中的数据是唯一的,就可以在一张表中创建一个唯一索引和多个非聚集索引。三、 创建索引使用TSQL语句创建索引的简单语法:CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]INDEXindex_nameON table_name (column_name…)[WITH FILLFACTOR=x]其中UNIQUE表示唯一索引,CLUSTERED、NONCLUSTERED表示聚集索引还是非聚集索引,FILLFACTOR表示填充因子,指定一个0到100之间的值,该值指示索引页填满的空间所占的百分比,都是可选的。FILLFACTOR的作用是当系统新建或重建索引时,在每一个索引页上预先留出一部分空间,使得系统在新增索引信息时能够保持索引内容在索引页上尽量连续。值为 100 时表示页将填满,所留出的存储空间量最小,一般用于表数据不变的情况下。值越小则数据页上的空闲空间越大,这样可以减少在索引增长过程中对数据页进行拆分的需要,但需要更多的存储空间,一般用于表数据容易发生变化的情况下。使用create index方法,可以指定索引类型、唯一性等,可以创建聚集索引,也可以创建非聚集索引,既可以在一个列上创建索引,也可以在两个或两个以上的列上创建索引。四、 修改索引1.索引重命名语法格式: sp_rename OldName, NewName其中: old name 是原索引名称;new name 是新索引名称。sp_rename OldName, NewName [,object_type] 必须在索引前面加上表名前缀2.重新生成索引ALTER INDEX index_name ON table_or_view_name REBUILD3.禁用索引ALTER INDEX index_name ON table_or_view_name DISABLE4.删除索引使用TSQL语句中的DROP INDEX命令可以删除表中的索引,其语法格式如下:DROP INDEX 表名.索引名在删除索引时,要注意不能使用DROP INDEX语句删除由主键约束或唯一性约束创建的索引。要想删除这些索引,必须先删除这些约束。当删除表时,该表全部索引也将被删除。当删除一个聚集索引时,该表的全部非聚集索引重新自动创建。任务十七、视图一、 视图视图是一种数据库对象,是一个虚拟的数据表,该数据表中的数据记录是从一个或多个表中进行查询筛选后的结果。当对视图中的数据进行修改时,相应的基表数据也被修改;若基表的数据被修改,视图中的对应数据也会自动修改。视图可以是一个数据表的一部分,也可以由多个基表的联合;视图也可以由一个或多个其他视图产生。视图上的操作和基表类似,但是 DBMS对视图的更新操作等往往存在一定的限制。视图简化了操作,也提供了数据库的安全机制,可以只允许用户通过视图访问数据,而不允许用户直接访问基础表。简单地说,学生信息的数据库中有多个表,学校各个部分所关注的学生数据内容是不同的,可以根据不同的要求,创建用户所需要的视图。在“学籍管理”数据库中,为简化数据操作,将经常使用的查询定义为视图,并对视图进行相应的编辑。二、 视图操作视图的操作主要包括视图的创建、修改、删除和重命名等,其操作可以通过SQL Server企业管理器和TransactSQL语句来实现。以删除视图为例: ① 在SSMS中删除视图的方法,与修改视图类似,右击需要删除视图名,在弹出的快捷菜单中选择“删除”命令,则在打开的窗口单击“确定”按钮,即可完成删除操作。② 使用TSQL语句删除视图,可以使用DROP VIEW语句来删除视图,其语法格式为: DROP VIEW 视图名【例1】 删除Score_View视图。DROP VIEW Score_View删除一个视图后,虽然它所基于的表和数据不会受到任何影响,但是依赖于该视图的其他对象或查询将会在执行时出现错误。三、 视图的应用通过视图可以完成某些和基础表相同的一些数据操作,如数据的查询、添加、修改和删除。1.通过视图插入表数据使用视图插入数据与在基表中插入数据一样,都可以通过INSERT语句来实现。插入数据的操作是针对视图中的列的插入操作,而不是针对基表中的所有的列的插入操作。使用INSERT语句进行插入操作的视图必须能够在基表中插入数据,否则插入操作会失败。对于由多个基表连接而成的视图来说,一个插入操作只能作用于一个基表上。2.通过视图修改表数据语法格式:UPDATE 视图名SET 列1=列值1列2=列值2……列n=列值nWHERE 逻辑表达式若通过视图修改数据,视图必须定义在一个表上,并且不包括统计函数,SELECT语句中不包括GROUP BY 子句。在视图中更新数据也与在基表中更新数据一样,但是当视图基于多个基表中的数据时,与插入操作一样,每次更新操作只能更新一个基表中的数据。3.通过视图删除表数据通过视图删除数据与通过基表删除数据的方式一样,在视图中删除的数据同时在基表中也被删除。当一个视图连接了两个以上的基表时,对数据的删除操作则是不允许的。任务十八、存储过程一、 存储过程存储过程是使用TSQL语言编写的为完成特定的功能的程序,经编译后存储在数据库中。存储过程也是数据库对象,通过使用存储过程提高数据库的安全性和减少网络通信的数据量。二、 存储过程优点(1) 允许模块化程序设计。(2) 执行效率高。(3) 减少网络通信的数据量。(4) 提高数据库的安全性。三、 存储过程分类(1) 系统存储过程: 一般以“sp_”开头,物理意义上系统存储过程在Resource数据库中,逻辑意义上存储过程出现在系统数据库和用户定义数据库的sys架构中。(2) 扩展存储过程: 一般以“xp_”开头,允许用其他语言创建自己的外部存储过程,以DLL形式存在。(3) 用户自定义存储过程,可以输入参数、向客户端返回结果、消息等。四、 创建存储过程存储过程的创建的简单语法如下:create procedure 过程名[@parameter data_type]/*定义参数的类型*/[VARYING][=default][OUTPUT] /*定义参数的属性等*/AS执行的SQL语句创建存储过程1.创建的简单存储过程(1) 在SQL Server 管理平台中,选择“资源资源管理器”→“服务器”→“数据库(例如ProDB)”→“可编程性”→“存储过程”→“新建存储过程”选项,如图18-1所示。(2) 在文本框中可以输入创建存储过程的TSQL语句,单击“执行”按钮,即可创建该存储过程。(3) 存储过程的执行: exec过程名。五、 查看、修改和删除存储过程1.查看存储过程(1) 在SSMS中查看存储过程,展开指定的服务器和数据库,选择并依次展开“可编程性→存储过程”,然后右击要查看的存储过程名称,从弹出的快捷菜单中,选择“编写存储过程脚本为→CREATE到→新查询编辑器窗口”,则可以看到存储过程的源代码。如图18-2所示。(2) 使用系统存储过程来查看用户创建的存储过程。可供使用的系统存储过程及其语法形式如下:sp_help,用于显示存储过程的参数及其数据类型,其语法为: sp_help name,参数name为要查看的存储过程的名称。sp_helptext,用于显示存储过程的源代码,其语法为: sp_helptext name,参数name为要查看的存储过程的名称。sp_stored_procedures,用于返回当前数据库中的存储过程列表,其语法为: sp_stored_procedures name,其中name用于指定返回目录信息的过程名。2.修改存储过程使用ALTER PROCEDURE语句语法与CREATE PROCEDURE 语句类似。ALTER PROCEDURE procedure_name[WITH ENCRYPTION]ASsql语句3.重命名和删除存储过程(1) 重命名存储过程:修改存储过程的名称可以使用系统存储过程sp_rename,其语法形式如下:sp_rename原存储过程名称,新存储过程名称通过SQL Server管理平台也可以修改存储过程的名称。在SQL Server管理平台中,右击要操作的存储过程名称,从弹出的快捷菜单中选择“重命名”选项,当存储过程名称变成可输入状态时,就可以直接修改该存储过程的名称。(2) 删除存储过程:删除存储过程可以使用DROP命令,DROP命令可以将一个或者多个存储过程或者存储过程组从当前数据库中删除,其语法形式如下:drop procedure sp_namesp_name为存储过程名。利用SQL Server管理平台也可以很方便地删除存储过程。在SQL Server管理平台中,右击要删除的存储过程,从弹出的快捷菜单中选择“删除”选项,则会弹出除去对象对话框,在该对话框中,单击“确定”按钮,即可完成删除操作。单击“显示相关性”按钮,则可以在删除前查看与该存储过程有依赖关系的其他数据库对象名称。任务十九、触发器一、 触发器触发器是一种特殊的存储过程,可以分为DML触发器和DDL触发器两大类。DML触发器在数据库中发生数据操作语言DML事件时将启用,DDL触发器在服务器或数据库中发生数据定义语言DDL事件时将调用这些触发器。DML事件包括在指定表或视图中修改数据的INSERT语句、UPDATE语句或DELETE语句。在表中插入记录﹑更新记录或者删除记录时,DML触发器被自动激活。而DDL触发器是为了响应各种数据定义语言DDL事件。DDL事件主要与以关键字CREATE、ALTER和DROP开始的语句,执行DDL式操作的系统存储过程也可以激发DDL触发器。触发器可以用来实现对表实施复杂的完整性约束。二、 DML触发器的优点(1) DML触发器可通过数据库中的相关表实现级联更改。(2) DML触发器可以防止恶意或错误的INSERT、UPDATE以及DELETE操作。与CHECK约束不同,DML触发器可以引用其他表中的列。三、 DML触发器创建创建触发器时要指定触发器名称、定义触发器的表名;触发器将何时激发;激活触发器的数据修改语句,有效选项为INSERT、UPDATE或DELETE,多个数据修改语句可激活同一个触发器;执行触发操作的编程语句。DML触发器使用deleted和inserted逻辑表。它们在结构上和触发器所在的表的结构相同,SQL Server会自动创建和管理这些表。Deleted表用于存储delete,update语句所影响的行的副本。Inserted表用于存储Insert或update语句所影响的行的副本。触发器可以用TSQL在“新建查询”里创建,也可以在SSMS中先确定当前操作的数据库,再展开表节点,在“触发器”节点点击鼠标右键,再选择“新建触发器”来创建。(1) 使用SQL Server管理平台创建触发器的过程如下:在SQL Server管理平台中,展开指定的服务器和数据库项,然后展开表,选择并展开要在其上创建触发器的表,如图19-1所示。右击触发器选项,从弹出的快捷菜单中选择“新建触发器”选项,则会出现触发器创建窗口,如图19-2所示。最后单击“执行”按钮,即可成功创建触发器。(2) 使用CREATE TRIGGER命令创建DML触发器的简单语法形式如下:CREATE TRIGGER 触发器名称ON 表FOR INSERT、UPDATE 或 DELETEASTSQL 语句① insert 触发器。insert触发器用于在表中增加数据时使用,该触发器会在完成数据变动的基础上做额外的动作,完成业务操作。② update 触发器,当在一个有update触发器的表中修改记录时,表中原来的记录被移动到删除表中,修改过的记录插入到了插入表中,触发器可以参考删除表和插入表以及被修改的表,以确定如何完成数据库操作。③ delete触发器。delete触发器通常用于两种情况,第一种情况是为了防止那些确实需要删除但会引起数据一致性问题的记录的删除;第二种情况是执行可删除主记录的子记录的级联删除操作。四、 DDL触发器的创建和应用DDL 触发器一般用于以下目的:① 防止对数据库架构进行某些更改。② 希望数据库中发生某种情况以响应数据库架构中的更改。③ 要记录数据库架构中的更改或事件。仅在运行触发 DDL 触发器的 DDL 语句后,DDL 触发器才会激发。DDL 触发器无法作为 INSTEAD OF 触发器使用。DDL触发器有两种,一种是作用在当前SQL Server服务器上的,一种是作用在当前数据库中的。这两种DDL触发器在Management Studio中所在的位置是不同的,作用在当前SQL Server服务器上的DDL触发器所在位置是:“对象资源管理器”,选择所在SQL Server服务器,定位到“服务器对象”→“触发器”,在“摘要”对话框里就可以看到所有的作用在当前SQL Server服务器上的DDL触发器,如图19-3所示。作用在当前数据库中的DDL触发器所在位置是:“对象资源管理器”,选择所在SQL Server服务器“数据库”,所在数据库,定位到“可编程性”→“数据库触发器”,在摘要对话框里就可以看到所有的当前数据库中的DDL触发器。右击触发器,在弹出的快捷菜单中选择“编写数据库触发器脚本为”→“CREATE到”→“新查询编辑器对话框”,然后在新打开的“查询编辑器”对话框里可以看到该触发器的内容,如图19-4所示。也可以用TSQL语句创建DDL触发器,创建DDL触发器与创建DML触发器类似,但要注意创建DDL触发器和DML触发器的语句区别。建立DDL触发器的简单语句如下:CREATE TRIGGER 触发器名ON ALL SERVER或DATABASEFOR 或AFTER激活DDL触发器的事件AS要执行的SQL语句其中,ON后面的All Server是将DDL触发器作用到整个当前的服务器上。如果指定了这个参数,在当前服务器上的任何一个数据库都能激活该触发器。ON后面的Database是将DDL触发器作用到当前数据库,只能在这个数据库上激活该触发器。DDL触发器不能指定的instead of触发器。激活DDL触发器的事件包括两种,一种在DDL触发器作用在当前数据库情况下可以使用以下事件如: CREATE_TABLE、ALTER_TABLE、DROP_TABLE、CREATE_ROLE、CREATE_USER等。另一种是在DDL触发器作用在当前服务器情况下,可以使用以下事件如: CREATE_DATABASE、ALTER_DATABASE、DROP_DATABASE、CREATE_LOGIN等。五、 管理触发器管理DDL触发器与管理DML触发器类似,以DDL触发器为例。1.查看触发器除了在SSMS中查看触发器,还可以用系统存储过程查看触发器。系统存储过程sp_help、sp_helptext和sp_depends分别提供有关触发器的不同信息。其具体用途和语法形式如下。(1) help: 用于查看触发器的一般信息,如触发器的名称、属性、类型和创建时间。sp_help‘触发器名称’(2) helptext: 用于查看触发器的正文信息。sp_helptext‘触发器名称’(3)depends: 用于查看指定触发器所引用的表或者指定的表涉及到的所有触发器。sp_depends‘触发器名称’sp_depends‘表名’2.修改DDL触发器在SSMS如果要修改DDL触发器内容,就只能先删除该触发器,再重新建立一个DDL触发器。虽然在Management Studio中没有直接提供修改DDL触发器的对话框,但在“查询编辑器”对话框里依然可以用SQL语句来进行修改,运用语句ALTER TRIGGER修改触发器。3.删除DDL触发器在SSMS中删除触发器,找到对应的触发器,右击鼠标,选择“删除”即可,如图19-5所示。另外运用语句DROP TRIGGER (TransactSQL) 也可删除触发器。4.使用sp_rename命令修改触发器的名称sp_rename命令的语法形式如下:sp_rename oldname, newname六、 inserted 表和deleted 表触发器语句中使用了两种特殊的表: inserted 表和deleted 表,inserted 表放的是本次insert操作插入的数据或本次update操作更新后的数据。deleted 表放的是本次delete操作删除的数据或本次update操作更新前的数据。inserted 表和deleted 表里的记录数,该记录数取决于是批量插入还是单条插入。若是单条插入,每插入一条触发一次insert触发器,每次触发器里只有一条数据。七、 for 触发器和 instead of 触发器For 等同于 after,也就是在insert、delete或update之后,才执行触发器里的语句。instead of 等同于代替insert、delete或update操作。虽然,这时候inserted或deleted两个特殊表里有数据,但是并没有对本表数据进行insert、delete或update操作,还要在触发器里手工进行对本表insert、delete或update的操作。项目五、数据库的开发应用一、教学目标1.掌握应用程序与ODBC结构、ODBC句柄、ODBC 管理器 、执行流程。2.掌握查看系统所安装的ODBC驱动程序。3.了解ODBC环境配置。4.掌握和SQL Server 2005。二、课时分配本项目共3个任务,安排4课时。三、教学重点通过本项目的学习,让学生了解学习应用程序与ODBC结构、ODBC 驱动程序、数据源,以及掌握查看系统所安装的ODBC驱动程序;学会添加ODBC数据源、删除ODBC数据源;学会实例配置ODBC数据源;学会与SQL Server 2005的连接。四、教学难点1.掌握查看系统所安装的ODBC驱动程序方法。2.学会添加ODBC数据源、删除ODBC数据源。3.学习ODBC应用程序与ODBC结构。五、教学内容任务二十 SQL Server 2005开发应用一、 ODBC简介1.ODBC概念开放数据库互连(Open Database Connectivity,ODBC)是微软公司开放服务结构(Windows Open Services Architecture,WOSA)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这种接口提供了独立于任何数据管理系统编写应用程序的能力。OCBC通过ODBC驱动程序提供了对不同的数据库供应商的一组应用程序接口来给特殊的数据库管理系统(DBMS)。用户的应用程序使用这组API来调度ODBC驱动程序。然后驱动程序通过SQL语句同DBMS发生联系。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。2.应用程序与ODBC结构应用程序与ODBC以及数据库的关系如图20-1所示,ODBC通过驱动程序提供数据独立性,不论何种数据库,均可以通过ODBC API进行访问,ODBC驱动程序与具体的数据库有关,但基于ODBC的应用程序对数据库的操作不依赖于任何DBMS,也不直接与DBMS交互,所有的数据库操作由对应数据库服务器的ODBC驱动程序完成。(1) 用户应用程序 (Application): 定义了系统的应用逻辑,负责和用户的交互管理,调用ODBC函数向数据库库服务器提交数据访问请求,获取结果并返回给用户。(2) ODBC 管理器 (ODBC manager),为应用程序加载和调用ODBC驱动程序,负责应用程序和驱动程序的交互控制。但应用程序需要执行ODBC函数时,会根据应用程序提供的连接数据源找到它相应的驱动程序,并将驱动程序中同名的函数和应用程序绑定。(3) ODBC 驱动程序(ODBC Drivers),是一些DLL,提供 ODBC32和数据库之间的接口,应用程序最终调用驱动程序提供的函数操作数据库,要操作不同类型的数据库需要加载不同的ODBC 驱动程序。只要安装新的数据库软件,即同时安装了相应的ODBC驱动程序,就可使用新数据库。驱动程序完成数据库访问请求的提交和结果集接收,应用程序使用驱动程序提供的结果集管理接口操纵执行后的结果数据。(4) 数据源 (Data Sources): 包含数据库的位置和数据库类型等信息。3.ODBC句柄一个句柄是指使用的一个唯一的整数值,即一个四字节长的数值,来标志应用程序中的不同对象和同类对象中的不同的实例,例如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。ODBC句柄包括: ODBC环境句柄、连接句柄和语句句柄等。4.执行流程在ODBC初始化阶段,分配环境句柄、分配连接句柄、建立连接和分配语句句柄;再执行程序主体部分;最后应用程序完成数据库操作,退出运行之前,必须释放语句句柄、断开数据源连接、释放连接句柄和释放环境句柄。二、 查看ODBC驱动(1) 查看系统所安装的ODBC驱动程序:在Windows xp中为,开始→设置→控制面板→管理工具→数据源 (ODBC)→驱动程序。在Windows Server 2003操作系统中为“开始→管理工具→数据源 (ODBC)”,以下遇到ODBC时,都使用以上路径,不再重复。(2) 若系统所安装的ODBC驱动程序中没有你想要的ODBC驱动,如Oracle的ODBC驱动,只需正常的安装ORACLE软件,系统会自动的将ORACLE对应的驱动程序加载到ODBC驱动程序里面。三、 ODBC环境配置1.添加ODBC数据源,开始→设置→控制面板→管理工具→数据源 (ODBC)→添加数据源添加完成后,名称项下的所有项都为已创建好的数据源。用户DSN: ODBC用户数据源存储了如何与指定数据提供者连接的信息。用户数据源只对当前的用户可见,而且只能应用在本机上。系统DSN: ODBC系统数据源存储了如何与指定数据提供者连接的信息。系统数据源对当前机器上的所有用户可见。文件DSN: ODBC文件数据源允许用户连接数据提供者。文件DSN可以由安装了相同驱动程序的用户共享。驱动程序: ODBC驱动程序允许那些支持ODBC的程序通过ODBC数据源获取信息。如果安装新的驱动程序,要使用其安装程序。跟踪: ODBC跟踪允许创建调用ODBC驱动程序的日志,以供技术人员查看;也可以辅助调试应用程序。Visual Studio跟踪启动Microsoft Visual Studio的ODBC跟踪。连接池: 连接池允许应用程序重新打开连接句柄,此操作将往返过程存入服务器。2.删除ODBC数据源开始→设置→控制面板→管理工具→数据源→删除。选择将要删除的数据源,单击“删除”,出现删除确认窗口,选择“是”则成功删除所选择的数据源。3.配置ODBC配置数据源(修改数据源名、说明及所指数据库)开始→设置→控制面板→管理工具→数据源→配置。四、 实例配置ODBC数据源在VB环境开发数据库应用时,与数据库连接和对数据库的数据操作是通过数据源ODBC、数据库引擎Microsoft Jet等实现的。Microsoft Jet主要用于本地数据库,而在C/S结构的应用中一般用ODBC。下面为SQL数据库student.mdf创建ODBC数据源的操作,为后续的SQL Server 2005开发应用做好准备。开始→管理工具→数据源,出现“ODBC数据源管理器”窗口,选择“系统DSN”选项卡,如图20-6所示。单击“添加”按钮,选择SQL驱动程序,单击“完成”,如图20-7所示。出现 “创建到SQL Server 的新数据源” 窗口,输入数据源名称studentdatabase、描述、选择要连接到的SQL Server服务器,单击“下一步”按钮,如图20-8所示。出现“创建到SQL Server的新数据源”窗口,设置完后单击“下一步”按钮,如图20-9所示。若在此处选择“使用用户输入登录ID和密码的SQL Server 验证”。则需要在相应的数据库“安全性”在登录中创建用户ID并且赋予其数据库权限。出现“创建到SQL Server的新数据源”窗口,勾选“更改默认的数据库为”,选择要创建ODBC的SQL数据库studentdatabase,单击“下一步”按钮,如图20-10所示。(6)在打开的窗口中单击“完成”,完成ODBC的设置,如图20-11所示。(7)弹出配置ODBC的详细信息,仔细检查看看是否有错误,如图20-12所示。(8)若没有错误,可以单击“测试数据源(T)”按钮,当测试成功时候会弹出如下对话框,如图20-13所示。单击“确定”,回到ODBC数据源管理器窗口,可以看到系统DSN里多出了刚才添加的SQL Server 数据库的数据源。单击“确定”,完成SQL Server 数据库ODBC的设置。拓展实训一、VB和SQL Server 2005编程开发结合VB6.0和SQL Server 2005,运用编程的方法,在VB中用控件MSHFlexGrid显示数据库“信息0901”中的数据表“学生信息表”中的内容。(1) 在SQL Server 2005中建立数据库“信息0901”。create database信息0901(2) 在数据库“信息0901”中的建立数据表“学生信息表”。其中sno为学号,sname为姓名,sage为年龄。use 信息0901gocreate table 学生信息表(sno smallint,sname nchar(10),sage smallint)(3) 在数据表“学生信息表”中输入学生的具体信息。如表21-1所示。(4) 保存并关闭数据库。结果如图21-1所示。(5) 打开VB6.0,选择“工程”→“引用”,引用“Microsoft ActiveX Database Objects 2.5Library”,单击“确定”按钮,如图21-2所示。选择“工程”→“部件”,选择“Microsoft Hierarchical FlexGrid Control 6.0(OLEDB)”,单击“确定”。该部件用来显示数据表的内容。如图21-3所示。界面设计,在VB的Form1上用鼠标拖画出控件MSHFlexGrid1,如图21-4所示。(8) 在VB的Form1代码编程窗口,输入以下代码:Private Sub Form_Load()Dim conn As ADODB.ConnectionDim rs As ADODB.RecordsetDim constr As StringSet conn = New ADODB.ConnectionSet rs = New ADODB.Recordsetconstr = "Provider=SQLOLEDB?1; Data Source=CHENTEACHER\\SQLEXPRESS; Integrated Security =SSPI;Persist Security Info=false;Initial Catalog=信息0901"conn.Open constrrs.Open "学生信息表", conn,, adCmdTableSet MSHFlexGrid1.DataSource = rsrs.Closeconn.CloseEnd Sub解释: 程序的首先给出conn、rs和constr的定义,再给conn和rs赋予一个新建的对象,设置连接字符串。最后打开学生信息表,并用MSHFlexGrid控件显示学生的信息,再关闭数据库和连接。如图21-5所示。(9) 如果数据库设置正确,程序编程正确,VB与数据库连接正确,则运行VB中的工程,结果如图2-16所示。(10) 保存工程和数据库,退出VB6?0和SQL Server 2005。拓展实训二、和SQL Server 2005结合和SQL Server 2005,在Visual Studio 2005运用编程的方法,在aspx网页中用控件GridData显示数据库“建管学生”中数据表“建管1班”中的内容,并对记录进行修改和删除。在SQL Server 2005中建立数据库“建管学生”。在数据库“建管学生”中的建立数据表“建管1班”。其中字段名分别为: 序号、学号、姓名、大学英语、体育、工程识图、管理学、经济学基础、思想道德与法律基础、建筑材料、土木工程概论、不及格、平均分和总分,如图22-1所示,在表中录入相关数据。启动Microsoft Visual Studio 2005,在菜单上单击“文件”,选择“新建项目”,在弹出的“新建项目”对话框中,项目类型为Visual C#,模板为 Web应用程序,名称为“WebApplication1”,位置可以点击浏览,保存到指定的路径下。单击“确定”按钮,如图22-2所示。(3) 默认建立了一个Default.aspx的文件,点击“设计”选项卡,在左边工具箱中拖动“SqlDataSource”到设计面板中,画出控件,如图22-3所示。(4) 在数据源控件SqlDataSource的右上角,单击三角形,选择“配置数据源”,如图22-4所示。(5) 单击“新建连接”,如图22-5所示。在图22-5的添加连接窗口中,服务器名为“CHENTEACHER\\SQLEXPRESS”,使用Windows身份验证,连接到一个数据库为上述已经建立完成的数据库“建管学生”。单击测试连接,以确定连接成功,单击“确定”按钮,如图22-6所示。(7) 在图22-6中,已经生成到数据库“建管学生”的连接。可以查看连接字符串。单击下一步按钮,如图22-7所示。(8) 可以修改保存的连接关键字。单击“下一步”按钮,如图22-8所示。(9) 在图22-8配置Select语句窗口中,在数据库中查询信息,一种是使用指定SQL语句,另一种是直接重选择查询表,设置查询条件和排序等。例如选择所有列,点击“高级”,单击“下一步”按钮,如图22-9所示。在图22-9中,勾选上“生成INSET、UPDATE和DELETE语句”,再单击“确定”按钮,再点击“下一步”按钮,在测试查询窗口中单击“测试查询”按钮,如图22-10所示。在测试查询窗口,中单击“完成”按钮,通过这种方法,数据源控件就已经配置好了,可以查看数据源控件SqlDataSource1的相关属性。再从工具箱中拖放一个GridView控件,再设置这个网格控件的数据源,如图22-11所示。网格控件GridView的数据源为“SqlDataSource1”,这样网格控件就绑定到了数据源控件上,运行这个项目,如图22-12所示。若弹出修改web.config提示,单击确定。在图22-12中,可以发现通过网页可以查看在数据库中的表文件的内容。数据源控件可以双向绑定,除了上面的查询外,还可以插入和删除。只要网格控件GridView的快捷方式的配置中加以修改,就可以做到,如图22-13所示。再次运行,可以得到如图22-14所示的网页,在每一条记录的前面多了一个“编辑”,点击序号为51的学生,把名字由的原来的“张曼玉”,更改为“张玉”,如图22-14所示。再单击“更新”后,如图22-15所示。同样的方法,如果要删除记录,只要在GridView控件中,启用删除即可,如图22-16所示。再次运行,可以得到如图22-17所示的网页,在每一条记录的前面又多了一个“删除”,点击序号为51的学生前面的删除,即可将记录删除,数据库对应的记录也将被删除。删除序号为51的记录后,网页的效果如图22-18所示。到此,就完成了与SQL Server 2005的连接,并实现了数据的查询、修改和删除的任务。 展开更多...... 收起↑ 资源列表 1 项目一 数据库的建立.docx 2 项目二 数据库的查询.docx 3 项目三 数据库的安全.docx 4 项目四 数据库的管理.docx 5 项目五 数据库的开发应用.docx