SQLServer数据库应用技术实例教程

上传人:cn****1 文档编号:570107208 上传时间:2024-08-02 格式:PPT 页数:522 大小:5.21MB
返回 下载 相关 举报
SQLServer数据库应用技术实例教程_第1页
第1页 / 共522页
SQLServer数据库应用技术实例教程_第2页
第2页 / 共522页
SQLServer数据库应用技术实例教程_第3页
第3页 / 共522页
SQLServer数据库应用技术实例教程_第4页
第4页 / 共522页
SQLServer数据库应用技术实例教程_第5页
第5页 / 共522页
点击查看更多>>
资源描述

《SQLServer数据库应用技术实例教程》由会员分享,可在线阅读,更多相关《SQLServer数据库应用技术实例教程(522页珍藏版)》请在金锄头文库上搜索。

1、钒摘壕揭秽倪株傻粗纸启汀抗秽整畦箔肯盼卡烘贪杰航涝糖医司砾烃边评SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务一 认识认识SQL Server 20051.1 数据库技术基础1.2 设计数据库1.3 认识SQL Server 20051.4 知识进阶任务任务:了解数据库技术的基础理论,安装SQLServer2005,认识T-SQL语言,完成数据库应用系统“高职院校教学管理系统”需求分析及逻辑结构设计。磋蕊拉溯敷表蹲淑坐骨函予璃操闻辟赌藏鄙蛹咬过后叼稽哎腊锄茵坷博与SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程学习目标学习目

2、标了解数据库技术的发展历程及特点了解三种数据模型及其特点了解关系数据库的概念及其特点掌握数据库应用系统的设计流程了解SQL Server 2005的安装流程熟悉SQL Server Management Studio的简单操作了解T-SQL语言的特点认识SQLServer2005SQLServer2005蚊雄晤腆骨买徽辜报知温备病右捶掸息撩蝴休琢上肛挖淹乍报非颊晴粘锡SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1.1.1 数据库1.1.2 数据模型1.1.3 关系数据库1.1 1.1 数据库技术基础数据库技术基础任务:任务:奠定数据库技术的理论基础,了解数据

3、库技术的发展历程,数据库系统的概念,掌握三种数据模型的概念及关系数据库的特点。认识SQLServer2005咽孰脓淘锄挪增恼斩茧傀服华筒敝归飞俄沽即核痔若柄斤里惟里恨蒙揭难SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1 1数据数据现实世界中的客观事物在人脑中经过抽象形成的概念,称为信息。2 2数据管理数据管理通过计算机将数据转换成信息的过程。数据处理信息。数据处理的矛盾焦点集中在数据管理上,数据管理包括数据的收集、整理、组织、存储、查询、维护和传递等。 3 3数据管理的发展数据管理的发展 (1)人工管理时期 (2)文件系统时期 (3)数据库系统时期 4 4数

4、据库系统数据库系统一个完整的数据库系统(DBS)由硬件、软件、数据库(DB)和用户构成,如图1-2所示。5 5数据库应用系统数据库应用系统数据库应用系统是SQL Server管理技术在具体问题中的应用,是一个实际可运行的数据库系统。 1.1.1 数据库数据库认识SQLServer2005纠肩乓晕陇憾讶焚才确描珍窿型陋构居累姐郧穴琵逼游樟赋藩韶控颊淌傲SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1.1.2 1.1.2 数据模型数据模型 数据模型是对客观事物及其联系的数据化描述,是数据库技术的核心。在DBS中,通过数据模型实现对现实世界中数据和信息的抽象、描述和

5、处理,所有的DBMS都基于某种数据模型。 数据模型包含三个基本要素:数据结构、数据操纵数据结构、数据操纵和数数据完整性约束条件据完整性约束条件,用来精确描述系统的静态特性、动态特性和完整性条件。1概念模型相关概念:相关概念:实体(Entity); 属性(Attribute); 域(Domain); 键(Key); 联系(Relationship)。 实体集间的联系实体集间的联系 : : 一对一联系(1:1);一对多联系(1:n);多对多联系(m:n)。认识SQLServer2005淆揖罢郝麓壳果衰忱沫豫掣灶圭棵似脖袱呢门仇厅痰旧院履泽铃咱啦窖肢SQLServer数据库应用技术实例教程SQLSe

6、rver数据库应用技术实例教程 :用矩形表示实体(集),在矩形内注明实体的名称。两个实体集间的三种联系 1.1.2 1.1.2 数据模型数据模型2概念模型的表示方法 :用椭圆表示实体的属性,椭圆内注明属性名称,并用直线将各椭圆与对应的矩形连起来。 :用菱形表示实体间的联系,菱形内注明联系名称,并用直线将菱形与相关联的实体连起来,连线上标明联系类型。认识SQLServer2005说民谤讼姨蜡豌喳芬惯羌阔俏吝沼瞩莉畸条桶闺峻槛张潭鳞台杜信阂膜凭SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3数据模型数据模型按计算机系统的观点进行数据建模,要求用有严格语法和语义的语

7、言对数据进行严格的形式化定义、限制和规定,使模型转化为计算机可以理解的格式。数据库系统支持的数据模型有层次模型(Hierarchical Model)、网状模型(Network Model)、关系模型(Relation Model)三种。它们之间的根本区别在于用以表示实体之间的联系的方式不同。按照三类数据模型进行数据库设计和实现,数据库系统分别称为层次数据库系统、网状数据库系统和关系数据库系统。1.1.2 1.1.2 数据模型数据模型认识SQLServer2005宁溅屋男耶宝姜裴码循钥贸屯吊芳仓于裸壹斯旺拈雅漓蹭逃曙烦漠交嫩街SQLServer数据库应用技术实例教程SQLServer数据库应用

8、技术实例教程关系模型关系模型 数据库系统中最重要的模型,使用关系即二维表来描述实体之间的联系。表中的行(记录)表示实体,表中的列(字段或数据项)表示实体的属性,列值称为属性值,取值范围称为值域。1.1.2 1.1.2 数据模型数据模型学号姓名性别民族出生日期班级学籍家庭住址邮编入学日期J07051129王浩男汉族1988-9-23J070511在读济南市长清区2503582007-9-1J08010212杜薇女回族1990-3-16J080102休学济南市燕子路2500142008-9-1属性(列)属性(列)属性名(列名)属性名(列名)关系模式记录(行)学生实体的关系(表)实例,关系名(表名)

9、为学生实体的关系(表)实例,关系名(表名)为student_info 认识SQLServer2005惩朵绅斜簇葵秀纠部烟蒲豫篮峰峙同腮肆羔抖釉哩练侩晓覆像自乾荒嫂镐SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程关系模型要求关系必须是规范化的,最基本的条件是,关系的每一个分量必须是不可分的数据项,即不允许表中还有表。学号姓名性别民族出生日期班级成绩(学分)专业英语SQLSerrvASP.NETJ07051129王浩男汉族1988-9-23J070511232J08010212杜薇女回族1990-3-16J080102322不规范的关系不规范的关系1.1.2 1.

10、1.2 数据模型数据模型大表中包含一张小表认识SQLServer2005压津阿茨囤疲愁缺悠整墩借斋惟侩庆戒共砸翔语北稽苗默梅蹈呕灾怎梗琢SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程关系模式(Relation Schema):二维表的表头一行。每一个关系模式都由一些属性组成,且必须命名。关系(Relation):对应于关系模式的二维表,又称表。记录(Record):关系中的每一行称为一条记录或一行,同一个关系中的记录保持唯一。属性(Attribute):关系中的每一列称为一个属性,又称为列或字段,在同一关系模式中字段名互不相同。主键(Primary Key):

11、在一个关系模式中,能够唯一标识每一条记录的属性或属性组称为主键。如在学生关系模式中,(学号)可作为该关系模式的主键。外键(Foreign Key):若关系模式R1中的属性A是关系模式R2的主键,则属性A称为关系模式R1的外键。1.1.2 1.1.2 数据模型数据模型认识SQLServer2005拌嗣乔宦炔忱虐曼娶乒涣狮耳嚎润鸟堰队画东旬鳃反午殆欢洛侧弛奋爹顽SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1 1关系数据库关系数据库基于关系模型的一种数据库,是一些相关的表和其他数据库对象的集合。在关系数据库中,信息存放在二维表格结构的表(table)中,一个关系数

12、据库中包含多个表,每一个表由多个行(记录)和多个列(字段)组成。表与表之间通过主键和外键建立联系。 主键(Primary Key,PK):在一个数据库的一个表中,有且仅有一个主键,不允许为空值且值必须保持唯一性。外键(Foreign Key,FK):当表A中的主键同时出现在表B中,该列称为表B的外键,外键值不要求唯一。公共键(Common Key):关系数据库中,若两个表中具有相同的列或列组,则这个列或列组称为这两个表的公共键。 1.1.3 1.1.3 关系数据库关系数据库认识SQLServer2005醚万砾航夕漓郧相钮浙沉房条稻纱蚀功碾定珠之堰事虑秦咨筹府缴兑轩首SQLServer数据库应用

13、技术实例教程SQLServer数据库应用技术实例教程2关系数据库的特点操作方便:通过应用程序和后台连接,方便了用户对数据的操作,特别是没有编程基础的用户。易于维护:丰富的完整性,大大降低了数据的冗余和数据不一致的概率。便于访问数据:提供了诸如视图、存储过程、触发器、索引等数据库对象。更安全和快捷:应用程序可以通过多级安全检查来限制对数据库中数据的访问。 1.1.3 1.1.3 关系数据库关系数据库认识SQLServer2005看岂轧乃潮旺难柿梨胎复雌衙骆帐郑鹿核汹馁吃亏彻阮雾揣港静朝坝盆能SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1.2 设计数据库设计数据

14、库 1.2.1需求分析1.2.2概念结构设计1.2.3逻辑结构设计1.2.4物理结构设计1.2.5数据库应用程序开发任务:了解数据库设计的一般步骤,掌握数据库逻辑结构、物理结构设计及数据库实施的基本方法。设计“高职院校教学管理系统”数据库JXGL。认识SQLServer2005烷滋吾截垣砒卞厩碴掖镀蔼笨浦洋义帐宛釉忿庙赞莆幸哗菊式究熙氯甸亭SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 从软件工程的角度讨论,数据库设计可分为几个阶段:用户需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库应用程序开发 。 需求分析阶段的主要任务是通过详细调查客观世界中要

15、处理的信息对象,充分了解其工作原理和各工作对象之间的关系,明确用户的功能、性能需求,确定数据库应用系统的功能和性能。 1.2.1 1.2.1 需求分析需求分析认识SQLServer2005镐霉捍澎宫诌殉贾蛙撰锦旭莹据躯簿版棠下普航雪抒爵阉霄锨季攒颈氧腹SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程高职院校教学管理过程中主要面对:学生及其所在班级基本信息,任课教师及所在系部基本信息,课程及其所用教材、教室基本信息。对以上数据进行处理,产生如下新数据:按班级排课,产生排课信息;学生选择课程,产生学生成绩、班级成绩。系统应能完成如下基本功能:存储、查询、管理、维护学

16、生、班级、教师、系部、课程、教材、教室基本信息,及班级排课、学生成绩信息等,以报表形式输出各班的学期课程表、各班的期末成绩单及其他信息管理结果。1.2.1 1.2.1 需求分析需求分析认识SQLServer2005厕扫螟夏睬眩蹭凡掏檄懂炮疗炉酌堂匙啊埠亏嗜衙坪共敛聊穿厨矗瑟萝苦SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 图概念结构设计阶段的主要任务是描述数据库的组织结构并生成关系模式。 分析实体及实体间的联系,得到局部E-R图1.2.2 1.2.2 概念结构设计概念结构设计考核成绩已获学分课程性质学期学号姓名性别学籍邮编班级民族学生课程名考核成绩总学时周学

17、时课程号学分成绩课程mn出生日期家庭住址入学日期认识SQLServer2005送瘴坛此丑络集舶岛屉樟湖猫鹰杉陇鞍施借梅楚欢衫甥治殖再吐跟佰姬殃SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1m1nn班级管理教师系管理教材教室开设学生成绩排课课程1nmnn1n使用 初步E-R图可能存在数据冗余和关系冗余,利用数据库的规范化理论消除各种冗余,对初步E-R图进行重构,最后形成系统的E-R图。 高职院校教学管理系统高职院校教学管理系统E-RE-R图图1.2.2 1.2.2 概念结构设计概念结构设计认识SQLServer2005寥彤名雅衔铁堡井瞒钞焦等辆颐悟铡堆写任谩烧

18、廊雨急邱杜纵涟唤贪程肾SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 选择合适的数据模型将概念设计的结果即E-R图转化为数据库逻辑结构,并以具体的数据模型工具加以描述。 1.2.3 1.2.3 逻辑结构设计逻辑结构设计 将E-R图转化为关系模型时要遵循的原则:(1)每个实体集转化为一个关系模式。 (2)两个实体集是一对一(1:1)联系,其中一个关系模式的主键可以添加到另一个关系模式并充当外键。(3)两个实体集是一对多(1:n)联系,n端关系模式的主键要添加到1端关系模式中,并充当外键。 (4)两个或多个实体集是多对多(n:m)联系,联系本身产生出新的属性,且该

19、属性在当前应用系统中是必需的,则该联系转化为一个关系模式。n端和m端实体集的主键及关系本身的属性转化为关系模式的列,各实体集的主键组合为关系模式的主键。 。 认识SQLServer2005沏弦拱劈璃藐忆泡扳硝逃拔耻约峡员障野半丈汲主忿贾围镀随福思霖垢帆SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2“高职院校教学管理系统”数据库的关系模式student_info(在校学生信息表)(stud_id, stud_name, gender, nation, birthday, class_id, school_roll, home_addr, zipcode, en

20、ter_date) 主键:stud_idcourse_info(学期课程信息表)(course_id, course_name, book_id, week_period, total_period,credit) 主键:course_id teacher _info(教师信息表)(teac_id, teac_name, dep _id, gender, profession, telephone, thome_addr, identity_card, tzipcode) 主键:teac_idclass_info(班级信息表)(class _id, monitor, dep_id, stud_

21、num ) 主键:class _idbook_info(选用教材信息表)(book_id, book_name, pub_company, author, book_price,dep_id) 主键:book_iddepartment_info(系部信息表)(dep_id, dep_name, dep_header, dep_num) 主键:dep_idclassroom_info(排课教室信息表)(croom_id, croom_name) 主键:croom _idstudent_grade(学生成绩表)(course_id, stud_id, grade, stud_credit, ter

22、m, form) 主键:course_id + stud_idteacher_class_course(排课信息表)(teac_id, class_id, course_id, classroom_id, term, weeks) 主键:teac_id + course_id + class_id 1.2.3 1.2.3 逻辑结构设计逻辑结构设计认识SQLServer2005毒衣遗傻温茄仟簧悸陪兑贸伙裸玖阀嘴误喧棠六衫夺霖阿呼涛周修并曾移SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程数据库的物理结构依赖于具体的DBMS和硬件系统。物理设计包括以下几方面:(1)

23、确定数据的存储结构。(2)确定数据的存放位置。(3)设计数据的存取路径。(4)确定系统配置。(5)评价物理结构的合理性。(6)数据完整性设计。根据选用的DBMS,设计出完整性方案,保证放入数据库中数据的完整性、一致性和准确性。(7)实施设计方案。 1.2.4 1.2.4 物理结构设计物理结构设计认识SQLServer2005堆腻饺让砂坏影辟矿汤辰狙迎悲逾孪撤遁朵鹤旷乖稿芜韧桑敢简丁殉就鸣SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 对数据库的物理结构进行实施后,基本解决了数据的存取、更新和删除等问题。但直接对数据库进行操作需要专业的数据库知识。因此,对于一般

24、用户来说,提供一个友好的人机界面完成对数据库的操作是更好的解决方案。这需要开发者利用某些应用程序开发语言和数据库访问技术编写应用程序,帮助用户完成相应的数据库操作业务。1.2.5 1.2.5 数据库应用程序开发数据库应用程序开发认识SQLServer2005岁弟啄拎痊毡岔及颗徘彩辉约冒缨各澜胰谦实柄廓钱欣诉旋乍夜呢蹄院险SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1.3.1 SQL Server 2005概述1.3.2 SQL Server 2005的安装1.3.3 SQL Server 2005的简单操作1.3.4 关于T-SQL语言任务:任务:了解SQL

25、Server2005的功能特点、安装过程,SQLServerManagementServices的基本操作,了解T-SQL语言的特点及基本语法。1.3 认识认识SQL Server 2005认识SQLServer2005轨渍仔囊浅塘昧旁牛荤木草城猖抽腻丑犁玫喷丘滞恰讶仅营摸镍卫秘卵另SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程Microsoft SQL Server 2005 是一个关系数据库管理系统,包括数据管理、数据库开发和商业智能三大功能。1SQL Server 2005的新增功能2SQL Server 2005的体系结构1.3.1 SQL Serve

26、r 20051.3.1 SQL Server 2005概述概述企业数据管理数据库开发商业智能第三方应用程序MicrosoftSQLServer2005管理工具报表功能集成功能通知功能分析功能复制功能关系数据库管理Microsoft SQL Server由四大组件组成:协议(Protocol)、关系引擎(Relational Engine,或Query Processor 查询处理器)、存储引擎(Storage Engine)和SQLOS(SQL Operation System)。任何客户端应用程序提交给SQL Server的每一个批处理(Batch)都必须与这四个组件进行交互。认识SQLSe

27、rver2005寓舞拄呛炭楷北珠茂碌憾桌霖轧窥艰恶分喀宽秤黑绥箍声哥凶会鼻矫肿议SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3SQL Server 2005的系统数据库和样本数据库 master数据库。记录SQL Server所有系统级信息,包括磁盘空间、文件分配和使用、系统配置参数、登录账户信息、初始化信息等。禁止用户直接访问该数据库。 model数据库。当前SQL Server 实例上创建的所有数据库的模板,包括所有用户数据库和tempdb数据库的模板。 msdb数据库。SQL Server 代理服务使用的数据库,为警报、作业、任务调度和记录操作员的操作

28、信息提供存储空间。 tempdb数据库。是一个中间结果集,为所有的临时表、临时存储过程及其他的临时操作提供空间。 1.3.1 SQL Server 20051.3.1 SQL Server 2005概述概述认识SQLServer2005摆直酌可屋翠帜枢矩舅驼重葡琵廷研氏颧膝椒齐庄伦剔洼澳溉彼拭上亚髓SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1.3.2 SQL Server 20051.3.2 SQL Server 20051.3.2 SQL Server 20051.3.2 SQL Server 2005的安装的安装的安装的安装1.3.3 SQL Serv

29、er 20051.3.3 SQL Server 20051.3.3 SQL Server 20051.3.3 SQL Server 2005的简单操作的简单操作的简单操作的简单操作安装步骤省略安装步骤省略认识SQLServer2005SQLServer2005汹餐呜泳含赠顷迭昔龚巴桓炉郎溜慨吹攫鸥影吾穿莫芋罐望囤涂检佰肥尤SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程SQL(Structure Query Language,结构化查询语言)是一种关系数据库标准语言,在关系数据库中完成定义、查询、操纵和控制数据的操作,应用程序通过调用SQL语句访问数据库。T-S

30、QL(Transact Structure Query Language,事务化SQL语言)是对标准SQL语言功能的扩充。很多大型关系型数据库都在标准SQL基础上,结合自身特点推出可进行高级编程的、结构化的SQL语言,如SQL Server 2005的T-SQL。 1.3.4 1.3.4 关于关于T-SQLT-SQL语言语言认识SQLServer2005丸崖兰裂皑伎境吐阂搁瓷滋陇匿购捉锈剧貉馒复蜘忌脂厕睫公冀下优五绘SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1.3.4 1.3.4 关于关于T-SQLT-SQL语言语言1SQL语言的特点(1)语法简单,功能强

31、大。(2)实现数据完整性和数据库安全管理。(3)是一种面向集合的语言,用户只提出“做什么”,而“怎么做”由DBMS来解决。(4)不是一种程序开发语言,只提供对数据库的操作能力,不具有屏幕控制、报表生成、菜单管理等功能。(5)是一种交互式语言,既可作为独立语言使用,也可以嵌入到其他开发语言中使用。(6)实现分布式数据处理,实现数据仓库。认识SQLServer2005号埠瘩抱嚎磁陶碧夯溯姬般绚测骏屉冗革奶凝硫箱蛛髓墨棉墨顺久璃欣硕SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2SQL语言的分类SQL语言分为四类:数据定义语言(DDL)、数据查询语言(DQL)、数据

32、操纵语言(DML)和数据控制语言(DCL)。数据定义语言(DDL):创建、修改、删除数据库中的各类对象。基本语句包括:CREATEDATABASE,CREATE/ALTER/DROPTABLE,CREATE/DROPVIEW,CREATE/DROPINDEX。数据查询语言(DQL):按照指定的条件表达式或排序要求查询、统计数据库中的数据。基本语句:SELECTFROMWHERE。数据操纵语言(DML):对数据库输入、删除、修改数据的操作。基本语句:INSERT、UPDATE、DELETE。数据控制语言(DCL):授予或收回访问数据库的某种权限、控制事务的发生时间及效果,对数据库进行监控。基本语

33、句:GRANT、REVOKE、COMMIT、ROLLBACK。1.3.4 1.3.4 关于关于T-SQLT-SQL语言语言认识SQLServer2005楚霓妖宠埠契麦筏睬韶钥翅喀嘱颧段斩准跃哗谱躯迫氧恶矫斥虚灶宏安叠SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3批(batch)一个SQL语句集,作为一个组一起提交、执行,结束符为GO。4脚本一系列顺序提交的批。5流程控制语句用来控制SQL语句执行的顺序包括:(1)IFELSE语句:条件结构。(2)CASE语句:多条件分支结构。(3)GOTO语句:无条件转移。(4)WHILE语句:循环结构。(5)BEGINEN

34、D:将一组SQL语句作为一整个语句块,必须一次执行完,除非遇到转移语句。(6)RETURN语句:无条件返回。(7)PRINT语句:屏幕打印。(8)RAISERROR语句:向屏幕显示错误信息。(9)WAITFOR语句:使脚本暂停执行,等待某一时刻的到来。6注释(1)/*/:用来注释多行语句。(2)-:只能注释当前一行语句。1.3.4 1.3.4 关于关于T-SQLT-SQL语言语言认识SQLServer2005川指芋垫翟崩同蝶龚烷挽婪蓝卡毙趁霖淹磷凹套褂释彪私气撩咕隋艳氓疼SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1.4 1.4 1.4 1.4 知识进阶知识

35、进阶知识进阶知识进阶认识SQLServer2005SQLServer20051.4.1SQLServer20051.4.1SQLServer2005的数据库对象的数据库对象1.4.2SSMS1.4.2SSMS的选项的选项1.4.31.4.3查询编辑器查询编辑器任务:任务:任务:任务:了解了解SQLServer2005SQLServer2005的数据库对象,的数据库对象,熟悉熟悉SQLServer2005SQLServer2005操作界面。操作界面。她嘿侦簿靡哆阶波戚杀尤龚疚桩铁户腊腺头迷易塞疡前磺办液蘸筒顾絮窃SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程表:

36、存放用户数据,是具有关联列的数据行的集合。数据类型:用来定义列或变量允许的数据值。索引:为加速查询并强制实施数据完整性的一种存储结构。视图:一种查看一个或多个表或视图中的数据的方法。约束:标准的强制实施数据完整性的方法。默认值:在不输入值时,系统自动指定的由用户预先存储在该列的值。规则:由用户定义并可以捆绑到一个或多个列,包含指定存储在列里的有效值或数据类型。存储过程:一组预先编译好的完成特定功能的SQL语句组。触发器: 特殊存储过程,操作表或视图中的数据时自动被激活。自定义数据类型:由用户创建、完成特定数据存储的数据类型。自定义函数:用来封装经常执行的逻辑,返回标量数值或表。键:或者唯一标识

37、每个实体(主键),或者定义表之间的关系(外键)的列或列组。 1.4.1 SQL Server 20051.4.1 SQL Server 2005的数据库对象的数据库对象认识SQLServer2005逻赢哼妮菜卑乞蛆焚挎织渊接箱吐朽于楚囚蘑霄引建雾吊麦甥式晚绣与鱼SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程注意:注意:SQL Server 2005数据库对象的完整名字被称为数据库对象的全限定名称,包括四个元素:服务器名、数据库名、数据库所有者名和数据库对象名。基本语法如下: server.database.owner.objectserver.database

38、.owner.object(数据库服务器名(数据库服务器名. .数据库名数据库名. .数据库所有者名数据库所有者名. .数据库对象名)数据库对象名)使用某一个数据库对象时,可以不必使用全限定名称,而只在相应位置用“.”代替,但数据库对象名不能缺省。 1.4.1 SQL Server 20051.4.1 SQL Server 2005的数据库对象的数据库对象认识SQLServer2005擅机献窘衬榨圾凸宵岂峪摈臻鸿畴叠鞍禁徐爸暖瞎败绊灿瞩弗袖矫阿截讣SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1.4.2 SSMS1.4.2 SSMS的选项的选项1.4.3 1.

39、4.3 查询编辑器查询编辑器认识SQLServer2005国爆顷曼帧兼甸泳问嗽讯嘻聚墒息国招哀囚富滁值艇钦骡贵余垄阀吸耽幅SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程项目实训项目实训1 1实训题目实训题目 对“销售合同管理系统”进行需求分析和数据库逻辑结构设计。2 2实训目的实训目的(1)了解SQL Server 2005的体系结构、安装过程。(2)熟悉SQL Server 2005的可视化管理工具SSMS的基本操作。 (3)掌握数据库应用系统的设计步骤。(4)进行“销售合同管理系统”数据库的需求分析、逻辑结构设计 以及物理结构设计。3 3实训内容实训内容

40、设计“销售合同管理系统”数据库逻辑结构。认识SQLServer2005躬罕纤娇丢技谢盒宇揖韵樊挂以驻忘爪湾侨撅测砷周绿甄泣盎孺袁蘸庆将SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程瓤膝匠朱镶飞航庭浇泛痞恍祝庐鄙帆分窜拜量夺翼愿咋扰托肚试埠步挽温SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务二 为数据管理创建数据库环境 创建和管理SQL Server数据库任务任务: :在SSMS中创建数据库JXGL,并对JXGL进行简单管理;使用CREATE DATABASE语句创建数据库JXGL,使用T-SQL语句对JXGL进行简单管理。

41、 2.1认识SQLServer数据库2.2创建SQLServer数据库2.3管理SQLServer数据库2.4知识进阶 项目实训抹衡帆扁荫大诽清城跑酸珠哉擎片锹匝活椎倚荆山魂咀肆缚涵曙次陷沤电SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程学习目标了解SQLServer数据库的存储结构建立事务日志的概念使用SSMS创建数据库使用CREATEDATABASE语句创建数据库使用SSMS管理数据库使用T-SQL语言管理数据库鸿粥惰万牛秽策卢贰钡怨酬姨绦恋爪郁庇嗅励壤细引咸班烈忽瑶瞬秀驳量SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2

42、.1 2.1 认识认识SQL ServerSQL Server数据库数据库 任务:了解SQL Server数据库的存储结构,建立事务日志的概念。创建和管理创建和管理SQL Server数据库数据库2.1.1SQLServer数据库的存储结构2.1.2事务日志倍伟渗佳乾亲蔑蒸烁描纤旋菠臆意忧运杠岗雪绝窄脊酿壶膘袜曝狸簇策婶SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2.1.1 SQL Server2.1.1 SQL Server数据库的存储结构数据库的存储结构 SQL Server数据库的存储结构分为逻辑存储结构和物理存储结构。逻辑存储结构指的是数据库是由各种

43、数据库对象组成的;物理存储结构是讨论数据库文件如何在磁盘上存储的。事务日志是 SQL Server数据库的一个亮点,它对数据库恢复起着至关重要的作用。 从逻辑存储结构角度看,SQL Server数据库是由表、视图、索引、存储过程等各种数据库对象组成的,它们被数据库管理系统管理。 从物理存储结构角度看,数据库实际上是一个文件的集合,在磁盘上以文件为单位存储。数据库的物理存储结构是用来讨论数据库文件如何在磁盘上存储的。创建和管理创建和管理SQL Server数据库数据库共胜杉甩榔筐泥穗泞岿失硕淤溉酶般互蝇峭耕裹坷汇虫纯播烩副乃担彻瓢SQLServer数据库应用技术实例教程SQLServer数据库应

44、用技术实例教程数据的逻辑结构和物理结构数据的逻辑结构和物理结构 物理存储结构(数据页)物理存储结构(数据页)数据区学号学号姓名姓名性别性别出生日期出生日期民族民族J07051129王浩男1988-9-23汉族J08010212杜薇女1990-3-16回族槽2槽1槽0页头(96字节)行偏移数组逻辑存储结构(数据表)逻辑存储结构(数据表)2.1.1 SQL Server2.1.1 SQL Server2.1.1 SQL Server2.1.1 SQL Server数据库的存储结构数据库的存储结构数据库的存储结构数据库的存储结构创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Se

45、rver数据库数据库数据库数据库踞铺险甫星蒜肆粘耐急伏雷雁拳讲誉赖重帝赵逮贵把冒您内张制积嫂炸哇SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1 1数据库的物理文件数据库的物理文件 数据库是存储数据的容器,数据以文件形式存储在磁盘上,称为数据库的物理文件或操作系统文件。 每个SQL Server 2005数据库包含两类物理文件:数据文件和日志文件。 数据文件存储数据和数据库对象。第一个数据文件称为主数据文件,文件名后缀为.mdf(Primary Data File);日志文件用来存储恢复数据库中所有事务所需的信息,文件名后缀为.ldf(Log Data Fil

46、e)。每个SQL Server数据库至少包含一个主数据文件和一个日志文件。当数据库存储的数据量巨大,或需要将重要数据与次要数据分开存储时,用户可自行创建次数据文件,辅助主数据文件存储数据,文件名后缀为.ndf(Secondary Data File)。 一个SQL Server 2005数据库只包含一个主数据文件,必须至少包含一个日志文件,可以不包含或包含多个次数据文件。 2.1.1 SQL Server2.1.1 SQL Server2.1.1 SQL Server2.1.1 SQL Server数据库的存储结构数据库的存储结构数据库的存储结构数据库的存储结构创建和管理创建和管理创建和管理创

47、建和管理SQL ServerSQL Server数据库数据库数据库数据库陪惶苛馋盆渤鸵蔷甘膳撕雹拐集嘴趣痕炯梗席淤巢疥淑谰倚亮展屎割滨葬SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2 2数据库文件的名称数据库文件的名称每个SQL Server 2005数据库文件有两个文件名:逻辑文件名和操作系统文件名。(1)逻辑文件名。在T-SQL语句中引用数据库文件时使用的名称。其命名必须符合SQL Server标识符规则,且在同一数据库中必须唯一。(2)操作系统文件名。包含存储目录路径的数据库文件名称。其命名必须符合操作系统文件命名规则,且在同一数据库中必须唯一。2.1

48、.1 SQL Server2.1.1 SQL Server2.1.1 SQL Server2.1.1 SQL Server数据库的存储结构数据库的存储结构数据库的存储结构数据库的存储结构创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库盯元坊吵释猫否颂又袜砖区施甥宣逮似本抑偏贯尹殷察氰胀斗抬窿俩诗库SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3 3数据库文件的存储数据库文件的存储 (1 1)数据页)数据页 数据文件的基本存储单位为8KB(8192B)的连续空间,称为一个页(Page)。SQL Server

49、 2005中包含数据页、索引页、文本/图像页等8种类型的页。页由以下三部分组成: 1 1)页头)页头。页首的96KB用来存储页的系统管理信息,如页类型、页的可用空间、页码及拥有该页的数据库对象的分配单元ID值等信息。 2 2)数据区。)数据区。以槽(Slot)为单位的空间,用来存储数据。数据记录(行)就存储在槽中,紧接着页头按顺序放置。 3 3)行偏移数组。)行偏移数组。映射槽的相对位置,通过查询行偏移数组中某个槽的偏移量,就可以准确定位槽在数据区的位置。 一个页只能存储一个数据库对象,如表、索引。一个页只能存储一个数据库对象,如表、索引。 2.1.1 SQL Server2.1.1 SQL

50、Server数据库的存储结构数据库的存储结构创建和管理创建和管理SQL Server数据库数据库较快涯瓤踪良冠踌鳖骏鞭咽他域滴卢化陕煤殖蒂卵星许攒诧土殊戍打面费SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程(2 2)盘区)盘区 SQL Server 2005将8个物理上连续的页作为一个单元为数据库对象分配存储空间,这个单元称为盘区(Extent),容量为64KB。以盘区为分配单位,就不会因分配存储空间的操作十分繁忙而影响数据库性能,提高了空间分配效率。分配盘区的基本策略是:容量不满8个页的数据库对象尽量从已经存在的混合盘区中挑选一个进行后续分配;为容量满8个页

51、的数据库对象分配统一盘区。这样大大提高了空间利用率。 创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.1.1 SQL Server2.1.1 SQL Server2.1.1 SQL Server2.1.1 SQL Server数据库的存储结构数据库的存储结构数据库的存储结构数据库的存储结构毒皑揍艰巡由房珊掸窒累窥镍擞丢糖历较梨巡冀籽炼睦硷蜕镶丛豫钎遍如SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2.1.1 SQL Server2.1.1 SQL Server2.1.1 SQL Server2.1.1

52、 SQL Server数据库的存储结构数据库的存储结构数据库的存储结构数据库的存储结构数据库(表,索引)(数据)数据(文件).mdf或.ndf日志(文件).ldf.页(8KB,每行最大容量8060B)盘区(64KB,8个物理上连续的页)数据库的物理存储结构数据库的物理存储结构创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.1.1 SQL Server2.1.1 SQL Server2.1.1 SQL Server2.1.1 SQL Server数据库的存储结构数据库的存储结构数据库的存储结构数据库的存储结构孟倍桩移归帆绅暮缆箍竞茹译坡

53、蛾涤谭产芳井挚涪凝渊沤舌呕敬涌静切故SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程4数据文件组为便于分配数据和管理文件,可以将数据文件组织到不同的文件组中。SQL Server 2005包含两种类型的文件组:主文件组(Primary)和用户定义文件组。主文件组包含主数据文件和未放入其他文件组的所有次数据文件。每个数据库只有一个主文件组,也是数据库的默认文件组,系统表的所有页均分配在主文件组中。数据库包含多个数据文件时,用户也可以自定义文件组,将次文件放到自定义文件组中。提示:提示:文件组是命名的文件集合,只包含数据文件,日志文件不包括在任何文件组内。2.1.1

54、 SQL Server2.1.1 SQL Server数据库的存储结构数据库的存储结构创建和管理创建和管理SQL Server数据库数据库2.1.1 SQL Server2.1.1 SQL Server数据库的存储结构数据库的存储结构容榔握超癌茎操夫游叙锻叭因搀园铺宠框茄箭寡适钥祷敌吉伺化升捧贸革SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程事务(Transaction)是需要一次完成的操作集合。事务作为SQL Server的单个逻辑工作单元,必须彻底执行完或根本不执行。事务日志用来记录所有事务和每个事务对数据库所做的更新操作,以日志文件形式存储在磁盘中。1

55、1事务日志的作用事务日志的作用(1)单独恢复个别事务。(2)保证数据库的完整。(3)将恢复的数据库、文件、文件组或页回滚到某一故障点。 2 2事务日志的特点事务日志的特点(1)作为单独的文件实现,可以根据需要定义文件为自动增长。(2)日志文件与数据文件分开存放,减少了冲突。(3)事务日志可以单独备份、恢复,不必遵守数据页的存储格式。(4)日志的截断机制速度快,对事务的容量影响小。(5)记录了数据页的分配和释放信息。2.1.2 2.1.2 2.1.2 2.1.2 事务日志事务日志事务日志事务日志创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据

56、库捧志房幻凤容姓挠碗稳姨吴赂关着茫硷裕卷踌根则无建摸垛陵爪倒漾斥块SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2.2 2.2 创建创建创建创建SQL ServerSQL Server数据库数据库数据库数据库任务:任务:任务:任务:创建创建JXGLJXGL数据库。创建数据库前,必须首数据库。创建数据库前,必须首先明确数据库名称、数据库所有者、初始容量、先明确数据库名称、数据库所有者、初始容量、最大容量、数据库文件的存储路径及增长方式最大容量、数据库文件的存储路径及增长方式等等。创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据

57、库数据库数据库数据库2.2.1使用SSMS创建数据库2.2.2使用T-SQL创建数据库截近赏恩贴各捧皂盈逮闺且茵荧汁萄漂挪侥立蟹淄铅亩饯铲桥挠办措铅肿SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程【例2-1】创建未指定文件的数据库shili01。代码如下:IFDB_ID(shili01)ISNOTNULL-判断当前服务中是否已有名称为shili01的数据库DROPDATABASEshili01GO-若已有名称为shili01的数据库,则删除它CREATEDATABASEshili01GO 分析:本示例没有 语句项。主数据库文件的大小为 model 数据库主文件

58、的大小1MB,事务日志文件为下列值中较大者:512 KB 或主数据文件大小的 25%。因为没有指定MAXSIZE,文件可以增大到填满全部可用的磁盘空间为止。2.2.1 2.2.1 2.2.1 2.2.1 使用使用使用使用SSMSSSMSSSMSSSMS创建数据库创建数据库创建数据库创建数据库创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库光九炬醚泰贰楔针竭硒抽员升费狠凌蝗呼汰屹朴剐敢网揖脉唬奶媳闻汽骇SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程创建用户数据库的过程就是为数据库确定名称、大小和数据库文件名

59、称及存放位置的过程。新建数据库的信息存放在系统数据库master中,属于系统级信息。创建SQL Server数据库主要有两种方法:使用视图化管理工具SQL Server Management Studio(SSMS)和在代码编辑器中使用T-SQL语言中的CREATE DATABASE语句。 创建示例数据库JXGL的操作步骤 :2.2.1 2.2.1 2.2.1 2.2.1 使用使用使用使用SSMSSSMSSSMSSSMS创建数据库创建数据库创建数据库创建数据库创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库扇膛笑巢邪驹牌肢垢竖兑潞造匆客必

60、化译新挫富船墅漳篙到冀蝇帐隆罩欣SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1CREATEDATABASE的基本语法使用CREATEDATABASE语句创建数据库。基本语法如下:CREATEDATABASEdatabase_nameONPRIMARY,n,nLOGON,n其中::=(NAME=logical_file_name,FILENAME=os_file_name,SIZE=sizeMB,MAXSIZE=max_sizeMB,FILEGROWTH=growth_incrementMB|%),n其中::=FILEGROUPfilegroup_nameDE

61、FAULT2.2.2 2.2.2 2.2.2 2.2.2 使用使用使用使用T-SQLT-SQLT-SQLT-SQL创建数据库创建数据库创建数据库创建数据库创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库搓号疟货雕王亮塞渔兼芥积烘涯营肄妈绑嗽绚痉端啤速蜒荡骇茁煤奠谨挨SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程【例【例2-12-1】创建未指定文件的数据库】创建未指定文件的数据库shili01shili01。代码如下:。代码如下:IF DB_ID (shili01) IS NOT NULLIF DB_ID

62、(shili01) IS NOT NULL - - 判断当前服务中是否已有名称为判断当前服务中是否已有名称为shili01shili01的数据库的数据库DROP DATABASE shili01DROP DATABASE shili01GO GO - - 若已有名称为若已有名称为shili01shili01的数据库,则删除它的数据库,则删除它CREATE DATABASE shili01CREATE DATABASE shili01CREATE DATABASE shili01CREATE DATABASE shili01GOGOGOGO 分析:本示例没有分析:本示例没有 语句项。主数据库语句

63、项。主数据库文件的大小为文件的大小为 model model 数据库主文件的大小数据库主文件的大小1MB1MB,事,事务日志文件为下列值中较大者:务日志文件为下列值中较大者:512 KB 512 KB 或主数据文或主数据文件大小的件大小的 25% 25%。因为没有指定。因为没有指定MAXSIZEMAXSIZE,文件可以增,文件可以增大到填满全部可用的磁盘空间为止。大到填满全部可用的磁盘空间为止。创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.2.2 2.2.2 2.2.2 2.2.2 使用使用使用使用T-SQLT-SQLT-SQLT-

64、SQL创建数据库创建数据库创建数据库创建数据库拽肋芥豪院咯秋栏狈泼州榔污咳溃躺弓滦牵酣红箭琐修殷惟据猜剩愉撅泽SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程【例2-2】创建指定数据文件和日志文件的数据库shili02。代码如下:CREATEDATABASEshili02ON(NAME=shili02_data,FILENAME=D:shilishili02_data.mdf,SIZE=10,MAXSIZE=50,FILEGROWTH=5)LOGON(NAME=shili02_log,FILENAME=D:shilishili02_log.ldf,SIZE=5M

65、B,MAXSIZE=25MB,FILEGROWTH=5MB)GO 分析:本示例分析:本示例没有使用关键字没有使用关键字PRIMARYPRIMARY,第一个,第一个文件文件shili02_datashili02_data将将成为主文件。在成为主文件。在shili02_data.mdshili02_data.mdf f文件的文件的 SIZE SIZE 参参数中没有指定单数中没有指定单位,将使用位,将使用MBMB并并按按 MB MB 分配空间。分配空间。创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.2.2 2.2.2 2.2.2 2.2.

66、2 使用使用使用使用T-SQLT-SQLT-SQLT-SQL创建数据库创建数据库创建数据库创建数据库弃宜旷剩痔窗饺恬绣朴悔藏勃颜翟倘由梨绷蝴峰歹孽案激攒荒曲庸考铂由SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程【例2-3】创建指定多个数据和事务日志文件的数据库shili03。代码:CREATEDATABASEshili03ONPRIMARY(NAME=shili03_data,FILENAME=D:shilishili03_data.mdf,SIZE=2,MAXSIZE=200,FILEGROWTH=2),(NAME=shili03_data302,FILEN

67、AME=D:shilishili03_data302.ndf,SIZE=5,MAXSIZE=500,FILEGROWTH=5%)2.2.2 2.2.2 2.2.2 2.2.2 使用使用使用使用T-SQLT-SQLT-SQLT-SQL创建数据库创建数据库创建数据库创建数据库创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库外货褒型仑皆冒舶池憨嫂敌烟谊贮莹砚额痊箍干夺宝落返竿异限崎灿担南SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程LOGON(NAME=shili03_log301,FILENAME=D:shi

68、lishili03_log301.ldf,SIZE=10,MAXSIZE=200,FILEGROWTH=10%),(NAME=shili03_log302,FILENAME=D:shilishili03_log302.ldf,SIZE=5,MAXSIZE=1024,FILEGROWTH=2)GO 分析:本示例要创建的数据库分析:本示例要创建的数据库shili03shili03具有两具有两个数据文件和两个日志文件。主数据文件使用个数据文件和两个日志文件。主数据文件使用 PRIMARY PRIMARY 关键字显式指定,日志文件在关键字显式指定,日志文件在LOG ONLOG ON关关键字后指定。键字

69、后指定。 创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.2.2 2.2.2 2.2.2 2.2.2 使用使用使用使用T-SQLT-SQLT-SQLT-SQL创建数据库创建数据库创建数据库创建数据库斯天案弃进掖运藐爱晴稳袱韵猴层烦锗族竭贴使跌兆瞳换毗凌秃编友板攒SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程【例【例2-42-4】创建具有文件组的数据库】创建具有文件组的数据库shili04shili04。代码如下:。代码如下:CREATEDATABASEshili04CREATEDATABASEshil

70、i04ONPRIMARYONPRIMARY(NAME=shili04_data,(NAME=shili04_data,FILENAME=d:shilishili04_data.mdf,FILENAME=d:shilishili04_data.mdf,SIZE=10,SIZE=10,MAXSIZE=50,MAXSIZE=50,FILEGROWTH=15%),FILEGROWTH=15%),(NAME=shili04_data402,(NAME=shili04_data402,FILENAME=d:shilishili04_data402.ndf,FILENAME=d:shilishili04_d

71、ata402.ndf,SIZE=10,SIZE=10,MAXSIZE=50,MAXSIZE=50,FILEGROWTH=15%),FILEGROWTH=15%),创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.2.2 2.2.2 2.2.2 2.2.2 使用使用使用使用T-SQLT-SQLT-SQLT-SQL创建数据库创建数据库创建数据库创建数据库袜环骡亮赁诚换蠢苇砰反伪珍袜尾狰鞠饭幌寿巡齐史卒普悟番掠垣兼骤歉SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程FILEGROUPshiligroup1(NA

72、ME=shili04_data403,FILENAME=d:shilishili04_data403.ndf,SIZE=10,MAXSIZE=50,FILEGROWTH=5),(NAME=shili04_data404,FILENAME=d:shilishili04_data404.ndf,SIZE=10,MAXSIZE=50,FILEGROWTH=5)2.2.2 2.2.2 2.2.2 2.2.2 使用使用使用使用T-SQLT-SQLT-SQLT-SQL创建数据库创建数据库创建数据库创建数据库创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数

73、据库贪惦仇惫鸣政甥拟忘炒璃投边讲扶扫冉残闯叔南扛诽欲勤剥拭休丽腿鸟仓SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程LOGON(NAME=shili04_log,FILENAME=d:shilishili04_log.ldf,SIZE=5MB,MAXSIZE=25MB,FILEGROWTH=5MB)GO 分析:本示例创建的数据库分析:本示例创建的数据库shili04shili04包含以下两个文件包含以下两个文件组:组:包含文件包含文件shili04_datashili04_data和和shili04_data402 shili04_data402 的主文的主文件

74、组件组PRIMARYPRIMARY;名为名为shiligroup1shiligroup1的文件组,包含数据文的文件组,包含数据文件件 shili04_data403 shili04_data403和和 shili04_data404 shili04_data404。创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.2.2 2.2.2 2.2.2 2.2.2 使用使用使用使用T-SQLT-SQLT-SQLT-SQL创建数据库创建数据库创建数据库创建数据库拣苛印怯幻锁讼弊夏秦攒婪蒙吵凉惯另樟秤池巴思梭主影森和枢廉宜云偿SQLServer数据

75、库应用技术实例教程SQLServer数据库应用技术实例教程4创建“高职院校教学管理系统”数据库JXGL【例2-5】创建本教材实例数据库JXGL。该数据库具有两个文件组:包含主数据文件JXGL_data的主文件组,文件初始容量为4MB,递增率为5MB,最大容量为500MB;filegroup1文件组,包含数据文件JXGL_data02,文件初始容量为2MB,递增率为10%,最大容量为500MB。包含两个日志文件JXGL_log和JXGL_log02,文件初始容量为5MB,递增率为5%和5MB,最大容量为1GB和500MB。代码如下:创建和管理创建和管理创建和管理创建和管理SQL ServerSQ

76、L Server数据库数据库数据库数据库2.2.2 2.2.2 2.2.2 2.2.2 使用使用使用使用T-SQLT-SQLT-SQLT-SQL创建数据库创建数据库创建数据库创建数据库担捏漆姆箕迫宅期冒蓟醛窥倒曾僳售哭掇卡境势鸦苑途欠昼稠隶稍探巫凄SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程CREATEDATABASEJXGLONPRIMARY(NAME=JXGL_data,FILENAME=D:JXGLJXGL_data.mdf,SIZE=4,MAXSIZE=500,FILEGROWTH=5),FILEGROUPfilegroup1(NAME=JXGL_d

77、ata02,FILENAME=D:JXGLJXGL_data02.ndf,SIZE=2,MAXSIZE=500,FILEGROWTH=10%)2.2.2 2.2.2 2.2.2 2.2.2 使用使用使用使用T-SQLT-SQLT-SQLT-SQL创建数据库创建数据库创建数据库创建数据库创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库贱奔嘱骨鞋榷韩宾呢臼树胖躬邦茎括寻蛀杆具罢怔烦弦捻媳斧捌客豺忧茶SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程LOGON(NAME=JXGL_log,FILENAME=D:JX

78、GLJXGL_log.ldf,SIZE=5,MAXSIZE=1024,FILEGROWTH=5%),(NAME=JXGL_log02,FILENAME=D:JXGLJXGL_log02.ldf,SIZE=5,MAXSIZE=500,FILEGROWTH=5)GO创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.2.2 2.2.2 2.2.2 2.2.2 使用使用使用使用T-SQLT-SQLT-SQLT-SQL创建数据库创建数据库创建数据库创建数据库逃咯定抬贯俩字浚枷加悍义嫡棋课腺谋馆锈旧村找锁漓长婆骋奶宿肇狞髓SQLServer数据库应

79、用技术实例教程SQLServer数据库应用技术实例教程创建用户数据库时要注意以下几点:(1)默认情况下,只有系统管理员可以创建数据库。(2)当新的用户数据库创建后,master数据库的系统表sysdatabases立即被更新,因此创建数据库后应及时备份master数据库。(3)所有用户数据库都是model数据库的副本,数据库的系统表包含在主文件中。model数据库的数据文件为1MB,日志文件也是1MB。这意味着用户数据库的最小容量为2MB。(4)在一个数据库实例上,最多可创建32767个数据库。一个数据库最多可包含32767个数据文件和32767个日志文件。(5)创建完成新数据库后,想在“对象

80、资源管理器”的数据库列表中看到刚创建的数据库,需要刷新“数据库”节点。 创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.2.2 2.2.2 2.2.2 2.2.2 使用使用使用使用T-SQLT-SQLT-SQLT-SQL创建数据库创建数据库创建数据库创建数据库燥庆惧岗掉酪祭驳佃陕张凝书职侮原脖瑞桔谅样撼袋读儒妈娇幸稼底违伊SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 2.3 管理管理SQL Server数据库数据库任务:任务:使用SSMS及T-SQL语言两种方法对数据库JXGL进行简单管理。创建和管

81、理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.3.1使用SSMS管理数据库2.3.2使用T-SQL管理数据库缀铆檀友己宁唇逾熔脾疆襄京腻民顷橱疙模善淫璃蓄愧褪之蔑帮溺乌水疤SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1查看数据库属性2修改数据库3删除数据库提提示示:对数据库执行删除命令,不但数据库将被删除,数据库文件也将从磁盘中被删除。删除数据库将更新master数据库中的系统表。若master需要还原,则从上次备份master之后删除的所有数据库仍然在系统表中被引用,因而可能导致出错。4数据库更名数据库

82、被创建后一般不要更改名称,否则所有与该数据库的连接都将出错。5生成创建数据库脚本2.3.1 2.3.1 2.3.1 2.3.1 使用使用使用使用SSMSSSMSSSMSSSMS管理数据库管理数据库管理数据库管理数据库创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库随源厂坟桩杜啼找诵哎犹桓幽肩海啼渣咖粘赃姑独塑店蟹员迭频赁间问禁SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1查看数据库属性使用系统存储过程sp_helpdb查看指定数据库或当前所有数据库信息。基本语法如下:sp_helpdb database

83、_name database_name缺省时,查看当前所有数据库信息。【例2-6】查看数据库实例下所有数据库信息,查看JXGL数据库信息。代码如下:(1) sp_helpdb -查看数据库实例下所有数据库信息(2) sp_helpdb JXGL -查看JXGL数据库信息 运行结果见图2-9 ,2-10 2.3.2 2.3.2 2.3.2 2.3.2 使用使用使用使用T-SQLT-SQL管理数据库管理数据库管理数据库管理数据库创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库了缅今认橇幸贱坪挂铡秤蛆辣群哟造背远镀蔓缮请顶韵长露睦阴矣籍箍饶SQ

84、LServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2修改数据库修改数据库通过ALTERDATABASE语句可以添加、删除数据库文件、文件组;可以更改文件或文件组的属性,如名称、容量等;还可以更改数据库名称;但不能移动数据库的存储位置。基本语法如下:ALTERDATABASEADDFILE|ADDFILE|REMOVEFILE|ADDFILEGROUP|REMOVEFILE|MODIFYFILE|MODIFYNAME|MODIFYFILEGROUP|SET创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.3.2

85、2.3.2 2.3.2 2.3.2 使用使用使用使用T-SQLT-SQL管理数据库管理数据库管理数据库管理数据库窿毛擦答阐距贞蚊含佛瓦烩健沮辰叹卸桨澎铃遮对植吱晰蝇佃砷屉膝孜舞SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程【例2-7】使用ALTERDATABASE语句对数据库JXGL进行以下修改。添加一个次数据文件JXGL_data03,初始大小为5MB,最大容量为200MB,增长率为2%。代码如下:USEJXGLGOALTERDATABASEJXGLADDFILE(NAME=JXGL_data03,FILENAME=D:JXGLJXGL_data03.ndf

86、,SIZE=5,MAXSIZE=200,FILEGROWTH=2%)GO创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.3.2 2.3.2 2.3.2 2.3.2 使用使用使用使用T-SQLT-SQL管理数据库管理数据库管理数据库管理数据库攻忆临刑颂袁逆铜焙循蕾乏侵络芭腿哑荐椒砂等吝研狐草般受杰异打掸录SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程【例2-8】使用ALTERDATABASE语句对数据库JXGL进行以下修改:将日志文件JXGL_log02的初始容量由5MB改为10MB,删除数据文件JXG

87、L_data03。代码如下:USEJXGLGOALTERDATABASEJXGLMODIFYFILE(NAME=JXGL_log02,SIZE=10MB)GOALTERDATABASEJXGLREMOVEFILEJXGL_data03GO创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.3.2 2.3.2 2.3.2 2.3.2 使用使用使用使用T-SQLT-SQL管理数据库管理数据库管理数据库管理数据库绦华另徐舍啊堆俯枷嗣郡蔚侧庇搓唉之樟赴鸥汛滁衫侣牵妻卡葬挺辩魏损SQLServer数据库应用技术实例教程SQLServer数据库应用技

88、术实例教程3移动数据库位置移动数据库位置通过ALTERDATABASE语句的FILENAME子句指定数据库文件的新位置,可以移动系统数据库文件和用户数据库文件。【例2-9】使用ALTERDATABASE语句将数据库shili02移动到D:shiliyidong。(1)移动数据文件位置,代码如下:ALTERDATABASEshili02MODIFYFILE(NAME=shili02_data,FILENAME=D:shiliyidongshili_data02.mdf)GOALTERDATABASEshili02MODIFYFILE(NAME=shili02_log,FILENAME=D:shi

89、liyidongshili_log02.ldf)GO创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.3.2 2.3.2 2.3.2 2.3.2 使用使用使用使用T-SQLT-SQL管理数据库管理数据库管理数据库管理数据库戍雹乞噎丈谋贞清糕诈该唆垢劝措米姆坚凰襄渡贴棋望驴浓截冉函慰恒隘SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 提示:提示:移动数据库文件,需要知道数据库文件的逻辑名。可以通过查询sys.master_files目录视图中的name列获取。不能移动或重命名资源数据库文件,若该文件已重命

90、名或移动,SQLServer将不启动。(2)验证数据文件位置已更改,代码如下:SELECTname,physical_nameFROMsys.master_filesWHEREdatabase_id=DB_id(shili02)GO创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.3.2 2.3.2 2.3.2 2.3.2 使用使用使用使用T-SQLT-SQL管理数据库管理数据库管理数据库管理数据库柱抒脉羚源针舒窖妮遂浩壶娶喇颂滤涝鬃菠弥与东暑梢泄雄暗哉隋乘眉乘SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例

91、教程4删除数据库删除数据库使用DROPDATABASE语句删除数据库。基本语法如下:DROPDATABASE【例2-10】删除不再需要的数据库shili01。代码如下:DROPDATABASEshili01执行代码后,刷新“数据库”节点,观察发现,数据库shili01已不在数据库列表中。创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.3.2 2.3.2 2.3.2 2.3.2 使用使用使用使用T-SQLT-SQL管理数据库管理数据库管理数据库管理数据库臀开弯镣惮蕴弓红爵既神脸缮粤证池蹄勘掠溪欣迈际颊禄池综恤脖戮歇墨SQLServer数

92、据库应用技术实例教程SQLServer数据库应用技术实例教程5数据库更名数据库更名使用系统存储过程sp_renamedb可以对数据库进行重命名。基本语法如下:sp_renamedb,如将数据库shili04改名为shili。代码如下:sp_renamedbshili04,shili创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.3.2 2.3.2 2.3.2 2.3.2 使用使用使用使用T-SQLT-SQL管理数据库管理数据库管理数据库管理数据库本鸵惟筋创冉坑哟疵俞障圈酉岛程笺崖隐岁厦展瞄毙醚桓肥割对酸珊支娃SQLServer数据库应

93、用技术实例教程SQLServer数据库应用技术实例教程2.4 2.4 知识进阶知识进阶任务:任务:对数据库容量进行理论估算,对数据库实施收缩,节省存储空间。创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.4.1数据库空间的估算2.4.2增加和收缩数据库容量增盲术睦埔歪梆捌鬃纂厚谩肪虎兑礼念耶碧涯婉意澄篷识宦出骏劳蚜认伐SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程许多因素影响数据库的最终容量许多因素影响数据库的最终容量: :记录的大小。列的大小决定了记录的大小。记录的数量。一般情况下,应该按数据表所代

94、表的实体或关系的实际数据量估算该表要存储的记录数,而不是凭空想象。表的数量。按关系模型特点和数据库设计规范化原则确定。索引的大小。索引的大小取决于索引关键列的大小、索引中包含的数据量(记录数)和索引填充因子。填充因子的值越小,索引页上的空闲空间越大。索引的数量。每个表中都至少包含一个索引。事务日志的大小。修改数据频率越高,存放日志需要更多空间其他数据库对象的大小和数量。除数据表外,数据库还包含如索引、视图、存储过程等数据库对象。数据库的计划增长率。预先对数据库存储需求估算得高些。 创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.4.1

95、 2.4.1 数据库空间的估算数据库空间的估算呆恫罪疽污城诅这鲜谨攻羡马陶认畏祟遣搅译溢撬宣槽女票陡效从捅俄怨SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程SQL Server采用预先指定、分配存储空间的方法来创建数据库。当数据库的数据增长到要超过定义的使用空间时,必须加大数据库容量,增加数据库容量即为数据库提供额外的存储空间。 反之,当分配的空间没有被充分利用时,会造成空间浪费。收缩数据库功能允许对数据库中的每个文件进行收缩,删除已经分配但没有使用的页。不能将整个数据库收缩到比其初始容量还小 。收缩数据库的动作在后台执行,不影响数据库内的用户活动,但不能在备

96、份数据库时收缩数据库,也不在收缩数据库时创建或备份数据库。创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.4.2 2.4.2 增加和收缩数据库容量增加和收缩数据库容量增加和收缩数据库容量增加和收缩数据库容量荫桶告臼圃蚕吕形为巴肇成毙酬肉丧芽曲辊离潍融肪乳透捆仙焦渭点守洋SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1使用T-SQL语言手工收缩数据库语法如下:DBCCSHRINKDATABASE|SHRINKFILE(database_name|file_name,target_percent,TRUN

97、CATEONLY|NOTRUNCATE)其中:target_percent:数据库收缩后,数据库文件中剩余的可用空间的百分比值。TRUNCATEONLY:将数据库文件中所有分配的未使用空间释放给操作系统。文件空间默认被释放给操作系统。NOTRUNCATE:将DBCC压缩释放的空间保留给数据库文件,文件的物理空间不更改。【例2-11】假设数据库JXGL的当前可用空间为数据库大小的75%,则收缩JXGL,使其可用空间为40%。代码如下: DBCC SHRINKDATABASE (JXGL, 40)2.4.2 2.4.2 增加和收缩数据库容量增加和收缩数据库容量增加和收缩数据库容量增加和收缩数据库容

98、量创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库寓森婉柜硕填姿轰泳猜蛔谷拙幅吴挡诲贪释斌爸局托杭比辛盼强味灯式楚SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2使用使用SSMS手工收缩数据库手工收缩数据库3自动收缩数据库自动收缩数据库有以下两种方法:(1)应用ALTERDATABASE语句可以将数据库设计为自动收缩。基本语法如下:ALTERDATABASESETAUTO_SHRINKon/off其中,on表示将数据库设置为自动收缩。(2)使用SSMS设置数据库为自动收缩。选择要收缩的数据库,打开“数据库

99、属性”对话框。在“选择页”列表中单击“选项”选项卡,展开“其他选项”区的“自动”下拉列表,将“自动收缩”选项的值设置为true。创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.4.2 2.4.2 增加和收缩数据库容量增加和收缩数据库容量增加和收缩数据库容量增加和收缩数据库容量逞殴惟比罕俱膏讼掺岳与呻的渴捷搞履么帧批九裁掉穿泡介跨醇溢蹬速耻SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程提示:提示:文件收缩操作始终从文件末端开始反向进行。例如,要将一个5GB的文件收缩至4GB,系统将从文件的最后一个1GB

100、开始释放尽可能多的空间。文件中被释放的部分若含有使用过的页,则将这些页重新定位到保留的区域(即文件的开始位置,也即重新组织文件)。只能将数据库收缩到没有剩余的可用空间为止。如5GB的数据库已有4GB数据(可用空间只有20%),若指定数据库收缩到2GB(数据库的40%),则实际上只会释放1GB空间。创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库2.4.2 2.4.2 增加和收缩数据库容量增加和收缩数据库容量增加和收缩数据库容量增加和收缩数据库容量洲癸肺钮菌窒袒矢航遭际间撼酱迎洪际牢苫应椿朗馅谱丑灯四佳窖掐悼抖SQLServer数据库应用技

101、术实例教程SQLServer数据库应用技术实例教程创建和管理创建和管理创建和管理创建和管理SQL ServerSQL Server数据库数据库数据库数据库项目实训项目实训项目实训项目实训 1实训题目实训题目创建“销售合同管理系统”数据库CONTRACTDB。2实训目的实训目的(1)掌握SQLServer数据库的存储结构。(2)掌握通过SSMS和T-SQL创建数据库的方法。(3)掌握通过SSMS和T-SQL管理数据库的方法。3实训内容实训内容(1)分析“销售合同管理系统”数据库空间需求,估算数据库初始容量,分析每张表所占的记录。(2)使用SSMS创建“销售合同管理系统”数据库CONTRACTDB

102、,并删除数据库。(3)使用CREATEDATABASE语句创建“销售合同管理系统”数据库CONTRACTDB。(4)在SSMS中查看“销售合同管理系统”数据库CONTRACTDB的当前可用空间,若为数据库大小的80%,则收缩数据库,使其可用空间为40%。顺痘颖赛礼牵瘪辙设础膀铲呆淡条噪窗呜粱眺化嘴霞挛泅九赴诡刀洱蓖盒SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程侦则戳噶渤宛叶额擂彭乓蛆狰麓翠屿酉札抠慷耍健僚瞩陈颇帐智更瞻印沽SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务任务:了解SQLServer2005支持的数据类型,创

103、建自定义数据类型。设计JXGL数据库表结构,应用SSMS和T-SQL语言两种方法,创建、修改JXGL数据库中的表,向表中输入数据,对表中数据进行简单管理。3.1T-SQL语言的数据类型3.2设计“高职院校教学管理系统”中表的结构3.3创建表3.4管理表3.5操作表中的数据3.6知识进阶任务三任务三 向数据库输入数据向数据库输入数据创建和管理SQLServer2005数据库表槛漳急另痪葱分迷滓电迪铀南纹实踞淆搜磷泅早蹿继篙媚房游奉毕翌坤郸SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程了解T-SQL语言支持的基本数据类型创建用户自定义数据类型使用SSMS创建、修改

104、JXGL数据库表使用CREATE TABLE语句创建数据库表,使用ALTER TABLE语句修改数据库表使用SSMS向JXGL数据库输入新数据,删除、更新已有数据使用T-SQL语言向JXGL数据库输入新数据,删除、更新已有数据本章学习目标本章学习目标创建和管理创建和管理SQL Server 2005数据库表数据库表稚檀狱辞状哑亢郸滑约保屑向蛮惕尿扦婶威涡洪睫伸陵倦呕瘩冰缮愧陌说SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程创建和管理创建和管理创建和管理创建和管理SQL Server 2005SQL Server 2005数据库表数据库表数据库表数据库表3.1

105、T-SQL3.1 T-SQL语言的数据类型语言的数据类型语言的数据类型语言的数据类型任务:任务:任务:任务:了解了解T-SQLT-SQL语言支持的基本数据类语言支持的基本数据类型,掌握用户自定义数据类型的方法。型,掌握用户自定义数据类型的方法。厅下确蓟救惫睡绳玲趋苟捂般壕晴砖抄锗哀东酶糟殃和仙祁氰滋甫仅座疼SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3.1 T-SQL3.1 T-SQL语言的数据类型语言的数据类型SQL语言提供了25种系统数据类型,还支持用户根据需要创建基于系统数据类型的自定义数据类型,这些数据类型T-SQL可用。1系统数据类型SQLServ

106、er2005中的系统数据类型归纳为下列类别:精确数值、近似数值、日期时间、货币、字符串、Unicode字符串、二进制字符串和其他数据类型,如教材表3-1“SQLServer2005系统数据类型”所示。创建和管理创建和管理SQL Server 2005数据库表数据库表励对更琢耐笼讥远码暖侗目凳满谈滴偶祸肉轨链猾肌繁冬鲁抡粮鲤狸膜苫SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2使用系统数据类型应注意的问题精确整数型数据bit型数据当列为8bit或更少时,以1个字节存储;为916bit时,以2个字节存储。货币型数据money型以2个4字节存储,精确到万分之一。sm

107、allmoney型数据以2个2字节存储,精确到万分之一。精确小数型数据decimal和numeric在表示数据精度方面没有区别,但只有numeric数据类型才可作为主键列。近似数值型数据该类型用于存储小数点不固定的数值,一般不用于存储货币。3.1 T-SQL3.1 T-SQL语言的数据类型语言的数据类型创建和管理创建和管理SQL Server 2005数据库表数据库表晋立牺辱佩厅悠爱夯馅嚣饼绚描惶黄脾厦瓢蜡勉叔淹荆压姆工闷运朵鸟搂SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程日期/时间型数据datetime型以8字节存储,精确到百分之三秒或3.33毫秒;sma

108、lldatetime型使用4字节存储,精确到分钟。字符型数据char型字符串在输入长度大于定义长度时,会被截断;而小于定义长度时,会以空格填充。varchar和text型的存储空间会根据实际字符串长度而变化。Unicode字符型数据Unicode统一字符编码标准用于支持英语语种的字符数据。用两个字节存储一个字符。输入该类型数据时需在字符前加前导标识符N,但表中不会存储该标识符。二进制型数据SQLServer2005采用十六进制存储二进制数据。3.1 T-SQL3.1 T-SQL语言的数据类型语言的数据类型创建和管理创建和管理SQL Server 2005数据库表数据库表两礼溶仟逸川患的侍裕榨兑

109、拍联走奢棺挥惭来松抠涨篡茧宝丈灯掉椒肺疮SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3使用SSMS创建用户自定义数据类型 (操作步骤省略)4使用T-SQL创建用户自定义数据类型(1)使用系统存储过程sp_droptype 可以删除用户自定义的数据类型。代码如下: USE JXGL GO sp_droptype postcode GO3.1 T-SQL3.1 T-SQL语言的数据类型语言的数据类型执行该代码,将把用户自定义数据类型postcode从“用户定义数据类型”列表中删除 创建和管理创建和管理SQL Server 2005数据库表数据库表资砚百集蹭狙收乾

110、侯铣守天留勘钒背嫉忍迫蠕敏暗驰拓淮琢琐那韦弓腑煮SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程(2)使用系统存储过程sp_addtype可以创建用户自定义数据类型。基本语法如下:sp_addtypetyp_ename=type,phystype=system_data_type,nulltype=null_type【例3-1】使用sp_addtype在JXGL中创建一个名为code的自定义数据类型。USEJXGLGOsp_addtypecode,char(6),NULLGO3.1 T-SQL3.1 T-SQL语言的数据类型语言的数据类型其中: type_nam

111、e:用户定义数据类型的名称。 phystype:用户定义数据类型所基于的系统数据类型名称,包括其长度、精度、小数位数。 nulltype:是否允许为空值。值为NULL或NOT NULL,默认值为NOT NULL。 提示:提示:只能删除还没有被用户绑定的用户定义数据类型。或者说,不能删除正在被表或其他数据库对象使用的用户定义数据类型。创建和管理创建和管理SQL Server 2005数据库表数据库表睡匪窄骑抚惕窍惋鹅育愤那坛桃段穆袁砒粱莎僧钝锋泄既着过刷申顽沥叔SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务:规范存储数据的数据库环境,设计JXGL数据库中表的

112、结构。创建和管理创建和管理SQL Server 2005数据库表数据库表3.2 设计设计“高职院校教学管理系统高职院校教学管理系统”中表的结构中表的结构坡烟蛛莉跺饯聂庚渴歌莫殆姥惠契藤蒙诧勇佳矮貉赊蔫歧峻氧杆乎彼蔫几SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程创建用户数据库后,还无法将数据保存在数据库中,即此时的数据库是一个空库。必须在数据库中创建用来存放数据的“容器”,这个“容器”就是表。表是数据库中最重要的对象,是用来存储和操纵数据的逻辑结构。开发一个数据库系统需要经过一个“两次抽象”的过程,在第一次抽象过程中,要分析所开发的数据库系统包含哪些实体,分析

113、每个实体应该至少包含的属性,以及实体之间的联系,并使用E-R图将抽象结果表示出来;第二次抽象过程,需要将E-R图转换为数据模型即数据库表,每个属性就是表中的每个列或字段。在设计表的过程中,最重要的任务之一,是为表确定主键。按以上原则及“高职院校教学管理系统”数据库逻辑设计结果,确定系统数据库表的逻辑结构如教材中的表3-2至3-10所示。3.2 3.2 设计设计“高职院校教学管理系统高职院校教学管理系统”中表的结中表的结构构创建和管理创建和管理SQL Server 2005数据库表数据库表扮屁心尝碘推沿奸耙踌配巫岗恰拣案稀聂成詹事噎额冗呛笼诵图作业熄袒SQLServer数据库应用技术实例教程SQ

114、LServer数据库应用技术实例教程任务:使用SSMS及T-SQL的CREATETABLE语句创建JXGL数据库表。3.3 3.3 创建表创建表创建和管理创建和管理SQL Server 2005数据库表数据库表3.3.1使用SSMS创建表3.3.2使用T-SQL语句创建表讼丘成首囚当逸疗左昆愧萍旱袁棋控勺吝歌钳球侩驹晾磐蛤蔬余越乞脑膀SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程依据不同的分类标准,SQLServer2005中的表有以下分类。按照表中数据存储的时间分为永久表和临时表。永久表一旦创建,除非人工删除,否则一直存在;临时表中的数据只在数据库运行期间临

115、时存在,退出连接数据库后,表也将从内存中删除。按照表的用途分为系统表和用户表。系统表用来维护SQLServer服务器工作,存储系统级信息;用户表一般为永久表,由用户创建,用于开发数据库应用系统。使用SSMS创建数据库JXGL中的student_info表:,步骤如教材所述。 3.3.1 3.3.1 使用使用SSMS创建表创建表创建和管理创建和管理SQL Server 2005数据库表数据库表谜藕歌斗焦烈砷斟献签囊正髓枉枫丧乙检隘店键牌嘎悲攫躇著钧稍鞘案曹SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程创建表的T-SQL语句是CREATETABLE,基本语法如下:

116、CREATETABLEtable_name(column_namedata_typecolumn_constraint,column_namedata_typecolumn_constraint,)3.3.2 3.3.2 使用使用T-SQLT-SQL语句创建表语句创建表其中: table_nametable_name:表名称。表名必须符合标识符规则,最多包含 128 个字符,在数据库中必须唯一。 column_name:列的名称,列名称必须符合标识符规则,在表中必须唯一。 data_type data_type:指定列的数据类型。 column _constraintcolumn _const

117、raint:列级约束。对应列采取的限制措施,如非空性、默认值、唯一性、完整性等(关于约束的概念将在任务四中介绍)。 table_constrainttable_constraint:表级约束。当完整性约束涉及该表的多个属性列时,必须定义在表级上。这些定义连同对应的列约束被存储在系统中。当对数据库进行相关操作时,系统自动检查操作的合法性。创建和管理创建和管理SQL Server 2005数据库表数据库表绕霜颅疼岭嫌仔瘟特评茹橱独吠氢违贼雾竖朔堤冒淀知戏躺蹄镑艰原辗辩SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1【例3-2】使用CREATETABLE语句创建表t

118、eacher_info。USEJXGLGOCREATETABLEteacher_info(teac_idchar(8)PRIMARYkey,-将teac_id设置为表的主键teac_namenvarchar(20)NOTNULL,dep_idchar(2)NOTNULLDEFAULT(J),-该列设置非空和默认值genderbitNOTNULLDEFAULT(1),professionnvarchar(20)DEFAULT(N副教授),telephonevarchar(14),thome_addrnvarchar(50)NOTNULLDEFAULT(N不详),tzipcodecode)GO3.

119、3.2 3.3.2 使用使用T-SQL语句创建表语句创建表 提示:提示:选择表teacher_info,右击,在快捷菜单中选择“编写表脚本为”“CREATE到”“新建查询窗口”或“文件”或“剪贴板”命令,可以在不同的位置产生创建该表的SQL脚本。创建和管理创建和管理SQL Server 2005数据库表数据库表辨泉晰书跃矾个温鲸肆挚酱玉镊痹祸梨登蛤斤弃排鸟唐子悟沏香壳个羚吐SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务:任务:使用使用SSMSSSMS及及T-SQLT-SQL的的ALTERALTERTABLETABLE语句、语句、DROPTABLEDROPT

120、ABLE语句修改语句修改表结构或删除用户表。表结构或删除用户表。3.4 3.4 3.4 3.4 管理表管理表管理表管理表 创建和管理创建和管理创建和管理创建和管理SQL Server 2005SQL Server 2005数据库表数据库表数据库表数据库表3.4.13.4.1使用使用SSMSSSMS管理表管理表3.4.23.4.2使用使用T-SQLT-SQL管理表管理表凹吞厦断婉危销耍氮仗先句稚半缮宽副镜锤熔拦粹甄允坛瘟鸦瀑闸穆韭揖SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1查看表在“对象资源管理器”中查看该表的常规、权限和扩展属性。2修改表(1)在“对象资

121、源管理器”中选择某个表,在该窗口中对表进行修改,如添加、删除列,更改列名、数据类型、列宽度。(2)在“对象资源管理器”中选择某个表,打开“表属性”对话框,修改表的权限属性值。3删除表在“对象资源管理器”中选择某个表,打开“删除对象”对话框,确认被删除对象后,单击“确定”按钮。4重命名表在“对象资源管理器”中选择某个表,在表名位置上直接输入新的表名即可重命名该表。3.4.1 3.4.1 使用使用SSMS管理表管理表 提示:提示:修改表结构时,一是尽量在没有数据操作的情况下进行,二是修改包含数据的表结构时要保证修改前后数据类型的兼容性,否则会造成数据丢失。创建和管理创建和管理SQL Server

122、2005数据库表数据库表蔓雄峭怎镁毖嫁洗淖呈圣左乳华秃害理裹占曳或已攻换辜验呵扇拄绊讽洞SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1查看表使用系统存储过程sp_helptable_name可以查看指定表的所有属性信息。2修改表 使用ALTER TABLE语句可以修改表结构,包括添加新列及其约束,删除原有的列及其约束,更改数据类型、列宽度等。基本语法如下:ALTERTABLEALTERCOLUMNADDcolumn_constraintDROPcolumn_constraint_name|column_name3.4.2 3.4.2 使用使用T-SQL管理表

123、管理表其中:其中:ALTERCOLUMN子句:修改列名及数据类型、列宽度,一个ALTERTABLE语句中只包含一个ALTERCOLUMN子句。ADD子句:添加新列及其约束,一个ALTERTABLE语句中只包含一个ADD子句。DROP子句:删除列或列约束,删除列时在DROP后加关键字COLUMN。一个ALTERTABLE语句中只包含一个DROP子句。创建和管理创建和管理SQL Server 2005数据库表数据库表饼聪理憾甜鹅吠酥隆宜料晓俄抓护蓖剔酶枕胰摆踩猴剐干讲肘显脯稼械蔗SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程(1)修改列。【例3-3】修改表book

124、_info中的列book_name,数据类型改为nvarchar型,列宽度为20。代码如下:ALTERTABLEbook_infoALTERCOLUMNbook_namenvarchar(20)GO(2)删除列及其约束。当列包含约束时,不能直接进行修改或删除,必须首先删除约束。【例3-4】修改表book_info中的列book_id,数据类型改为int型。代码如下:ALTERTABLEbook_infoALTERCOLUMNbook_idintGO3.4.2 3.4.2 使用使用T-SQLT-SQL管理表管理表执行该代码,提示修改主键列数据类型出错,则需要执行如下代码,先删除该列中的约束:AL

125、TERTABLEbook_infoDROPPK_book_infoGO创建和管理创建和管理SQL Server 2005数据库表数据库表相秤浊蛇凳令谅涂窍疡笋泞银表酶褥拭勺吴年厢毖蝴答傀熬咯佐锭师款孵SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程【例3-5】删除表book_info中的列book_id。代码如下:USEJXGLGOALTERTABLEbook_infoDROPPK_book_infoGOALTERTABLEbook_infoDROPCOLUMNbook_idGO3.4.2 3.4.2 使用使用T-SQLT-SQL管理表管理表创建和管理创建和管理

126、SQL Server 2005数据库表数据库表眼掸童囚爪病孝亡殉料够霖踞拎笔奎漠瘦校炊拉骄饼喘借共酷试氛胎条以SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程(3)添加新列及其约束。【例3-6】向表book_info中添加一个新列price,数据类型为numeric型,精度为5,小数位数为2,设置非空属性,默认值为100。代码如下:USEJXGLGOALTERTABLEbook_infoADDpricenumeric(5,2)NOTNULLDEFAULT(100.00)GO3.4.2 3.4.2 使用使用T-SQLT-SQL管理表管理表创建和管理创建和管理SQL

127、 Server 2005数据库表数据库表施倪将畴炒博脂婆萍竞复穷矛粮溅难宏声盟系适巢茸迁熬蒙刨教泥返署拢SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程(4)添加约束。【例3-7】修改课程信息表course_info,将列course_id设置为表的主键。代码如下:USEJXGLGOALTERTABLEcourse_infoADDCONSTRAINTpk_course_infoPRIMARYKEY(course_id)GO3.4.2 3.4.2 使用使用T-SQLT-SQL管理表管理表 提示:提示:一个ALTERTABLE语句只能修改一列,但可以添加或删除多个列

128、,只需在各列名之间用逗号“,”隔开。默认情况下删除的是约束,要修改或删除带约束的列,必须首先删除约束。创建和管理创建和管理SQL Server 2005数据库表数据库表淘驯蜜营铆乳磁铬拿耿千诌帘另褐旗爪忙腿桥滥涨子浆录私人萝前探珐痒SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3删除表使用DROPTABLE语句删除表。【例3-8】使用DROPTABLE语句,删除数据库JXGL中的表classroom_info。代码如下:USEJXGLGODROPTABLEclassroom_infoGO3.4.2 3.4.2 使用使用T-SQLT-SQL管理表管理表 提示:提

129、示:表一旦被删除,表的结构定义、数据、全文索引、约束和索引都将从数据库中永久删除,原来存放表及其索引的存储空间被释放给其他数据库对象。创建和管理创建和管理SQL Server 2005数据库表数据库表庆夕园丢务浅嫡唆呀近痈敢蕊米碳房拧驯位附蒂喷夜芒蔑卖万崩群篓酥刻SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3.5 操作表中的数据操作表中的数据 任务:任务:使用SSMS及T-SQL的INSERTINTO语句向表中输入数据,使用SSMS及T-SQL的DELETE、UPDATE语句删除、更新表中的数据。创建和管理创建和管理SQL Server 2005数据库表数据

130、库表3.5.1使用SSMS操作表中的数据3.5.2使用T-SQL操作表中的数据屎虱托凑触鸦趟柿教打呀沁窒切熏戎抚匙让积亡镶遍僧仟投掠擅她斗在忘SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 提示:对标识列、允许为空的列、有默认值的列、计算列、能自动取值的列,可以不输入具体的值,系统会为这些列自动赋值。除以上几列外,其余的必须输入数据,否则系统会提示错误。 表的某些列可能会带有某种约束条件,输入、修改数据时,必须符合这些设置的条件。如果不小心输入了不符合要求的数据,系统会弹出提示信息框提示用户输入的数据非法。如图3-6所示。 对设置默认值的列在输入非法数据时会以

131、默认值自动取代。 输入货币型数据的格式为“$12.22”。3.5.1 3.5.1 使用使用SSMSSSMS操作表中的数据操作表中的数据创建和管理创建和管理SQL Server 2005数据库表数据库表凉曹卡忘冬调聂刹疑藻颗催龄盂伐搏缝宏恕窝捐擦裤鸯君肯烃扦肚忿番维SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1使用INSERT语句输入数据使用T-SQL的INSERTINTO语句,可以向表中输入数据。基本语法如下:INSERTINTOcolumnlistVALUES(valueslist|selectstatement)3.5.2 使用使用T-SQL操作表中的数

132、据操作表中的数据其中:其中:columnlist:要输入数据的列的清单。valueslist:要向表中输入的数据的清单。selectstatement:通过查询向当前表中输入数据的查询语句。使用创建和管理创建和管理SQL Server 2005数据库表数据库表INSERT语句输入数据时应注意以下问题:当向表中所有列输入数据时,columnlist子句可以缺省。若缺省该子句,数据清单中数据的顺序一定与表中列的顺序一致。当要输入数据的表中包含有标识列、允许为空的列、设置默认值的列时,可以不输入该列的值。当向字符型、日期型列输入数据时,要以单引号引起来。并弯蕊民逝聚借哄营旱收啦付杉蝎椒左荒脂费靡芽生

133、似低烯艺滦日门赋灿SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程(1)向表中输入一行数据。【例3-9】向表teacher_info插入一条合法记录。代码如下:USEJXGLGOINSERTINTOteacher_info(teac_id,teac_name,depart_id,gender,profession,telephone,thome_addr,tzipcode)VALUES(TD009,N董卫刚,TD,1,N讲师,13005313391,N济南市燕子山路号,250014)图3-7向表中插入一行数据GO3.5.2 使用使用T-SQL操作表中的数据操作表

134、中的数据l注意:注意:columnlist子句缺省时,数据清单中数据的顺序和数目一定与表中列的顺序和数目一致。代码如下:INSERTINTOteacher_infoVALUES(TG0013,N汪虹,TG,1,N副教授,15095313098,N济南市解放路,250014)GO创建和管理创建和管理SQL Server 2005数据库表数据库表铂汕敏午枣坍泰殴欧独椒可麻吻呻技陆貉蓟苑蹋东丫弦岸饮变割痛浙戳船SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程(2)输入一行中的部分列。当表中包含设置了默认值及允许为null值的列时,可不输入数据,但列名清单不能缺省。【例

135、3-10】向表teacher_info插入一条合法记录。代码如下:USEJXGLGOINSERTINTOteacher_info(teac_id,teac_name,dep_id,gender,profession)-列名清单只列出需要输入数据的列VALUES(TJ0110,N姜艳,J,0,N教授)-输入清单中列出的部分列的数据GO3.5.2 使用使用T-SQL操作表中的数据操作表中的数据创建和管理创建和管理SQL Server 2005数据库表数据库表辽嗜眩崭谨冉埠钱追壳章圭呈汐酱疵豫似赡她悔涩初翁褥万这法拂寂猴袁SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教

136、程(3)输入多行数据。使用INSERTSELECT语句可以一次向表中插入多行数据,其中SELECT语句可以从其他表中查询出多行数据。【例3-11】将表table_3(请用户自行创建该表)中的所有数据插入到表book_info中去。代码如下:USEJXGLGOINSERTbook_infoSELECT*-“*”表示查询出表table_3中的所有列FROMtable_3GO3.5.2 使用使用T-SQL操作表中的数据操作表中的数据l 提示:提示:使用SELECT语句查询出的数据,与将插入数据的列的数目、数据类型、顺序和宽度要一致。创建和管理创建和管理SQL Server 2005数据库表数据库表细

137、竣浅馁魄悼态食司靡酶赖亿镐步褪搜金溺尤棘加乞晶涵跳脚捎驯饵祖聘SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程(3)输入多行数据。使用INSERTSELECT语句可以一次向表中插入多行数据,其中SELECT语句可以从其他表中查询出多行数据。【例3-11】将表table_3(请用户自行创建该表)中的所有数据插入到表book_info中去。代码如下:USEJXGLGOINSERTbook_infoSELECT*-“*”表示查询出表table_3中的所有列FROMtable_3GO3.5.2 使用使用T-SQL操作表中的数据操作表中的数据l 提示:提示:使用SELEC

138、T语句查询出的数据,与将插入数据的列的数目、数据类型、顺序和宽度要一致。创建和管理创建和管理SQL Server 2005数据库表数据库表蒜沙享锁璃孤蒸绳巩瞒庆尘与袄泅烈僻因拱凰陵没都腮暖田架审染件辛揭SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2使用DELETE语句删除表中的数据行表中没有意义的数据,使用DELETE语句以行为单位删除。基本语法如下:DELETEFROMtable_name|view_nameWHEREsearch_condition【例3-12】删除表book_info中书价(book_price)高于30元钱的书的信息。代码如下:DEL

139、ETEFROMbook_infoWHEREbook_price=30GO3.5.2 使用使用T-SQL操作表中的数据操作表中的数据l 其中:其中:参数search_condition是一个逻辑表达式,用来描述被删除的数据应该满足的条件。当该子句缺省时,表(或视图)中的数据都将被删除,但表结构(视图定义)仍然存在于数据库中。创建和管理创建和管理SQL Server 2005数据库表数据库表 提示:提示:使用DELETE语句一次最少删除一行数据,而不是删除表中指定的部分列的数据。删除行时,系统不会提供确认信息,所以用户使用该语句要谨慎。 提示:提示:当缺少WHERE子句时,删除整张表。【例3-13

140、】删除表book_info中所有书的信息。代码如下:USEJXGLGODELETEbook_infoGO赦向标唯摇妙豁敦阀惺焚根傈瑚壹色咙侍溺早垒准讹请朵绣捧剑蔑力娘钢SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3使用UPDATE语句更新表中的数据使用UPDATE语句可以更新表的一行、一行中的某些列,也可以更新表中所有行或所有行的某些列。基本语法如下:UPDATEtable_nameSETcolumn_name=express|NULL|DEFAULT,nWHERElogical_express3.5.2 使用使用T-SQL操作表中的数据操作表中的数据创建和

141、管理创建和管理SQL Server 2005数据库表数据库表其中:其中:SET子句:指定要被更新的列及其新的值。WHERE子句:指定修改条件,只有满足条件的那些行的列值才被修改为SET子句指定的数据。express:新数据可以是常量或表达式。久究垛成锭痹甚县客苇明窃绍诌拣怪狼株鹿商赡铺谊抠拆圣博呈项艘腿稻SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程(1)更新表中所有行的某一列。【例3-14】将表student_grade中所有同学的成绩提高5分。USEJXGLGOUPDATEstudent_gradeSETgrade=grade+5GO3.5.2 使用使用T

142、-SQL操作表中的数据操作表中的数据l其中:“grade=grade+5”表示将grade列的值在原来值的基础上增加5。创建和管理创建和管理SQL Server 2005数据库表数据库表烟档铡淡呀毛浆蓑姑忍凡目佳踪仟偷构膳杀圣逃搁屈尺淀幻羞递朱由靶沛SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程(2)更新表中某些行的某一列。【例3-15】将表student_grade中学号为J07072141的同学所有课程的成绩提高5分(该同学选修了4门课程)。代码如下:USEJXGLGOUPDATEstudent_gradeSETgrade=grade+5WHEREstud

143、_id=J07072141GO3.5.2 使用使用T-SQL操作表中的数据操作表中的数据创建和管理创建和管理SQL Server 2005数据库表数据库表苹舀媒甫讨洼租土览瞄忻雷谍溜欢贝资方储讹嵌史晕识舱班瓣沾踊招遗衔SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程(3)更新表中多个行的多个列。【例3-16】将表student_grade中成绩为70分以下的同学的成绩提高5分,学分提高警惕0.2分。代码如下:USEJXGLGOUPDATEstudent_gradeSETgrade=grade+5,stud_credit=stud_credit+0.2WHEREg

144、rade=70GO3.5.2 使用使用T-SQL操作表中的数据操作表中的数据创建和管理创建和管理SQL Server 2005数据库表数据库表挠裳派蛊哆纷贪瘦汲武改傅琵令策执涟膛询溯稼牧锹娩山粪颧寒缴终啄较SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务:任务:理解第一范式、第二范式、第三范式的含义及作用,在表中应用标识列、计算列的方法。 创建和管理创建和管理SQL Server 2005数据库表数据库表3.6.1范式3.6.2关于标识列和计算列3.6 知识进阶知识进阶厅翟凉邪默口荫炔娩烽禄悄幼睬翻慎海邵根幻茫缎兽煌嘘不钢叭胯蜀钙琢SQLServer数据库应

145、用技术实例教程SQLServer数据库应用技术实例教程构造关系型数据库必须遵循一定的规则,在关系型数据库中这种规则称为范式。关系型数据库中关系(表)必须满足一定的要求,即满足不同的范式。目前关系型数据库有6种范式:第一范式(简称1NF)、第二范式(简称2NF)、第三范式(简称3NF)、第四范式(简称4NF)、第五范式(简称5NF)和第六范式(简称6NF)。满足最低要求的范式是第一范式,在第一范式的基础上进一步满足更多要求的称为第二范式,其余范式依此类推。一般说来,关系型数据库只需满足第三范式即可。3.6.1 3.6.1 范式范式创建和管理创建和管理SQL Server 2005数据库表数据库表

146、峦斤羹终令核揣谭蛔瞧陈蹄岸固蝗丢膘辈妓侯行遗恢伎鼻栖胸猾污瑶涡孩SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1第一范式在任何一个关系型数据库中,第一范式是对关系模式的基本要求。反之,不满足第一范式的数据库不是关系数据库。第一范式指表的每一列都是不可分割的基本数据项,同一列中不能有多个值。即实体集(表)中的某个属性有多个值或者重复的属性。如果出现重复的属性就可能需要定义一个新的实体集,新的实体集由重复的属性构成。新实体集与原来实体集之间为一对多关系。简而言之,第一范式就是关系模式中无重复的列。3.6.1 范式范式创建和管理创建和管理SQL Server 200

147、5数据库表数据库表时谰币燥艰侵目郎怎荔延凰镊菱群步癸同二灰面讥颁壬盖豺衬冬欲协车甫SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2第二范式 第二范式是在第一范式基础上建立起来的,即满足第二范式必须先满足第一范式。 第二范式要求表中的每行必须可以被唯一区分,为实现区分,通常需要为表加上一个列以存储各个行的唯一标识,通常就是主键,实体的其他属性完全依赖于主键。 简而言之,第二范式就是非主键属性不能部分依赖(必须完全依赖)于主键。 3.6.1 范式范式创建和管理创建和管理SQL Server 2005数据库表数据库表撕洁燃壶弱开阜陵件么烦格寿勾矾凉鸥惧盔痒淡钩爪暂模

148、歇汀蚁餐剥拨屯SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3第三范式满足第三范式必须先满足第二范式。第三范式要求一个数据库表中不能包含已经在其他表中包含的非主键,或者说只能包含另一个表中的主键。例如,存在一个系信息表(department_info),其中每个系有系编号、系名称、系主任、该系的教师人数等信息。那么在教师信息表中列出系编号后就不能再将系名称、系主任、该系的教师人数等与系有关的信息加入教师信息表(teacher_info)中。如果不存在系信息表,则根据第三范式也应该构建它,否则会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其他表的非主键。

149、3.6.1 范式范式创建和管理创建和管理SQL Server 2005数据库表数据库表颅屈鱼磕吨钵郑屹素税娇乓框索燥药块婉螟雾墒瞻针扭惹继控诞钎脾蓖戮SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1标识列(IDENTITY列)标识列是这样的列:给定一个初始值,称为种子;给定一个递增值,称为步长;则每一个列值总是由前一行该列的值加上步长得来。定义标识列要注意以下问题:(1)一个表只能定义一个标识列。(2)标识列的数据类型只能是decimal、numeric、int、smallint或tinyint型。(3)需要指定标识的种子和步长值,若不指定,二者默认值均为1。

150、(4)标识列的值不能人工输入,由系统按种子和步长值自动产生,标识列的值不能被更新。(5)标识列不允许空值,也不能指定默认值。(6)标识列可以定义为表的主键。3.6.2 关于标识列和计算列关于标识列和计算列创建和管理创建和管理SQL Server 2005数据库表数据库表厅顺虎磋序鹏久勤捷佳排屉蓉菏捐席踪蔓蠢拓挥尚补畏蔓伺儿暇呼沏梧捆SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2计算列计算列指其值由同一表中的其他列的值或值的表达式计算得来。计算列的值不能人工输入,也不能人工更新。除非用户指定,否则计算列是没有存储在表中的虚拟列。当在查询中引用计算列时,都将重新

151、计算该列的值。如果计算列涉及的列的值发生变化,将自动更新计算列的值。创建表时,在“表设计器”窗口的“列编辑”区中指定某列,在“列属性编辑区”中展开“计算机所得的列规范”列表,在“公式”栏中输入计算公式。使用CREATETABLE语句创建包含计算列的表。代码如下CREATETABLEtable_1(a1intNOTNULL,b1intNOTNULL,c1asa1+b1)/*a1、b1是列名称,代表两个列中的数据*/GO3.6.2 关于标识列和计算列关于标识列和计算列创建和管理创建和管理SQL Server 2005数据库表数据库表衬渔咱宁藻羹痛兔孝制称爪旬痰危眼地拎荆斤锣蒙剃痞荡渔獭纵匡隅栈贵S

152、QLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3NULL值(空值)的作用在创建表时,某些列定义为NULL或NOTNULL,这两种定义指明了是否在该列中输入数据。如果一个列中有NULL值(允许空值),意味着绝对没有任何信息输入到该列中,即该列中可以没有数据。具有NULL值的列是一种特殊的数据状态,它既不是数值,也不是字符,而意味着一种未知状态。例如,在student_info表中的home_addr列设置为NULL值,意味着当不明确某一学生的家庭住址时,可以暂时处于空的状态(相当于输入“地址不详”)。一个表中的所有列不能都指定为NULL值,即表中的主键不能为NUL

153、L值。3.6.2 关于标识列和计算列关于标识列和计算列创建和管理创建和管理SQL Server 2005数据库表数据库表迂爷围半水掌哉溅禽舱旦袁如灰底员临怒郧花釜舱藏晤娘坊膏挽舒疲瓮湿SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程项目实训项目实训 1实训题目实训题目创建“销售合同管理系统”数据库的表。2实训目的实训目的(1)掌握T-SQL语言的数据类型及使用。(2)掌握项目数据库中表的设计,使用SSMS和T-SQL进行表的创建、修改和删除。(3)掌握通过SSMS和T-SQL进行数据的插入、更新和删除的方法。3实训内容实训内容(1)使用SSMS创建部门信息(DE

154、PARTMENT)表,并删除。(2)使用CREATETABLE语句创建“销售合同管理系统”数据库中的表。创建和管理创建和管理SQL Server 2005数据库表数据库表硅志俺蛋峻兢泵并资奔累珠益卤腋煎龙骄墒辖刷源笺谓擞苯聊速喜禄望极SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程塑醛辨坑输桥惕庐庄镁浮沪轰潘孜擎添泥脆胡堆射辖寓炭颊漫俞皆丫给漂SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程雕唆龟苯杂垛空基醒瓦涪轰责秸漾偷滞趋娶销弧束汛茧呼冕隔汁屈制廖满SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教

155、程任务四任务四 保证数据的准确性、一致性和完备性保证数据的准确性、一致性和完备性 在在SQL Server 2005SQL Server 2005中实施数据完整性中实施数据完整性任务:任务:用约束、规则、默认值、触发器等方法强制实施数据完整性,保证输入到数据库中的数据的准确性、一致性和完备性。4.1了解数据完整性4.2应用约束4.3创建和管理关系图4.4应用默认值4.5应用规则4.6应用触发器4.7知识进阶项目实训嚣亡桌届完砍玖鱼庞畸娄哀氖捷迸撵陪刁缕绪漆稚溺戏彻姻沸缅者坑班瘟SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程了解数据完整性的概念SQL Serve

156、r 2005中的数据完整性机制创建、应用约束实施数据完整性,管理约束使用关系图工具创建数据库关系图实施数据完整性创建、应用默认值实施数据完整性,管理默认值创建、应用规则实施数据完整性,管理规则创建、应用触发器实施数据完整性,管理触发器学习目标学习目标在SQLServer2005中实施数据完整性表蛔瘦浮巩兔块醋畦施崎咆去盖侦肮泽咱而喘报般俄村陕篡吟逮嗅仲领菜低SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程4.1 4.1 了解数据完整性了解数据完整性任务:建立数据完整性的概念,了解SQL Server 2005中的数据完整性机制。在SQLServer2005中实施

157、数据完整性表4.1.1什么是数据完整性4.1.2“高职院校教学管理系统”的数据完整性需求分析卵椅淋视参晤岭障巫四魁西型窒朔爸柒咀耶胀掷逸哈罕戍蔽舞澄硒他拾秧SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程4.1.1什么是数据完整性1什么是数据完整性什么是数据完整性数据完整性指存储在数据库中的数据在逻辑上是一致的、准确的、完备的,这是现代数据库的一个典型特征。2数据完整性的分类数据完整性的分类域完整性。即列完整性,产生在表中的一列或多列上,指定某个列的输入是否合法,以及确定该列是否允许空值。实体完整性。即行完整性,指定表中所有行的唯一性。它要求表中所有的行有一个唯

158、一的标识符,即为主键。参照完整性。即引用完整性,产生在表和表之间,要求在主键(被参照表)和外键之间的参照关系中得到维护,即参照表中的外键值必须始终参照被参照表中的主键值。用户自定义完整性。用户自定义的一组规则,不属于以上三种完整性的任一种。在SQLServer2005中实施数据完整性表虏烘撩熔实昆船隧戈谚敢徐闰续曼须氓顶脱图计延饯据厚汪绩腮渴底赔夺SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程4.1.2“高职院校教学管理系统”的数据完整性需求分析1 1“高职院校教学管理系统高职院校教学管理系统”中的域完整性中的域完整性(1)表student_info中的列zi

159、pcode和teacher_info中的列tzipcode拥有自定义数据类型code。(2)表student_grade中的列grade和credit使用检查约束指定取值范围分别为0=grade=100和0=credit=6。(3)表student_info和表teacher_info中的列gender指定为bit型,取值只能是1(男)或0(女)。(4)多个列拥有DEFAULT约束,如列profession的默认值为“副教授”,gender的默认值为1。2 2“高职院校教学管理系统高职院校教学管理系统”中的实体完整性中的实体完整性(1)共包含九个表,每个表具有唯一一个主键(2)表teacher

160、_info的列identity_card指定UNIQUE约束,避免身份证号码重复。 在SQLServer2005中实施数据完整性表累僻蛰斥苍另毯轮牟粟滚虑炼始刊污巩典眉粟膝验呻公滓猜霸滦懂射祖荐SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3 3“高职院校教学管理系统高职院校教学管理系统”中的参照完整性中的参照完整性student_grade(stud_id+course_id)teacher_class_course(teac_id+ class_id+course_id)student_info(stud_id)teacher_info(teac_id)d

161、epartment_info(dep_id)class_info(class_id)book_info(book_id)course_info(course_id)classroom_info(croom_id)“高职院校教学管理系统”中的参照完整性4.1.2“高职院校教学管理系统”的数据完整性需求分析在SQLServer2005中实施数据完整性表享普垫车莽驯斥屋霸硷称肉僳评庶伞枉钻高址吗淫袒捞君倘峦衅敷已疯埔SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程4.2应用约束任务:任务:了解SQLServer2005中的约束类型及作用。创建、应用NOTNULL、PR

162、IMARYKEY、UNIQUE、CHECK、DEFAULT、FOREIGNKEY约束强制数据完整性,对约束进行简单管理。在SQLServer2005中实施数据完整性表4.2.1约束的类型4.2.2使用SSMS创建约束4.2.3使用T-SQL创建约束令涟贴晾千痉培智釜粥捍藕粗闪纤测焕悯腋蜕颇亚匙已蕴绩硝悍化伯绩怒SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 约约束束(CONSTRAINT)是强制数据完整性非常有效的方法,属于声明型数据完整性。对数据库来说,约束分为列约束和表约束。列约束作为列定义的一部分只作用于该列。表约束作为表定义的一部分,作用于表的多列。4

163、.2.1约束的类型在SQLServer2005中实施数据完整性表总殖法汽居大粳芬太晾二耘补肉坟赐唁郎冗筋粤谈吓野仔敛纱住巫调埋舞SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程SQLServer2005包含六种基本约束:(1)PRIMARYKEY约束:实施实体完整性。(2)UNIQUE约束:实施实体完整性。(3)DEFAULT约束:实施域完整性。(4)CHECK约束:实施域完整性。(5)NOTNULL约束:实施域完整性。(6)FOREIGNKEY约束:实施参照完整性。4.2.1约束的类型在SQLServer2005中实施数据完整性表垒鞭嚏预馅领恨柔可剔跌演推胜湃

164、茎曲循径露惹溃伟瞳质扭但韧信跃臭寐SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程如下代码中既包含列约束,又有表约束。CREATETABLEcourse_info4(course_idchar(10)NOTNULL,-列约束,列定义的一部分course_namenvarchar(40)NOTNULL,-列约束,book_idchar(10)NOTNULL,-列约束,列定义的一部分week_periodtinyintNULLDEFAULT(4),-列约束,列定义的一部分total_periodtinyintNULLDEFAULT(60),-列约束,列定义的一部分c

165、redittinyinNOTNULLCHECK(0=creditANDcredit=0ANDgrade=100GOsp_bindrulerule_grade,student_grade.gradeGOsp_unbindrulestudent_grade.gradeGODROPRULErule_gradeGO应用规则在SQLServer2005中实施数据完整性表瓤第敖庇城响俐让副盐衫妆泛迸傻雅楔夫役厄祖窿益踏莫沏取液钧梨很则SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程在创建、绑定、解除绑定规则的过程中应注意以下问题:(1)将规则绑定到某个列时,这个规则将首先检

166、查该列中现有的数据。(2)规则可以是值的范围、单值或值的清单,或者是由like子句定义的掩码。(3)当将多个规则绑定到同一列时,只有最后被绑定的规则起作用。(4)要想删除一个规则对象,必须先解除它与所有对象的绑定。应用规则在SQLServer2005中实施数据完整性表婆捉墟觅包灭育妓毗右虱戊辊啮盖锹幼镣纹搁鳃宿蘑棵甥泛湍干炔橱缸口SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 任务:了解触发器的作用、特点及类型,使用T-SQL的CREATETRIGGER语句创建触发器,对“高职院校教学管理系统”数据库JXGL实施数据完整性及其他特殊业务。 在SQLServer

167、2005中实施数据完整性表4.6.1触发器的类型4.6.2触发器中的inserted表和deleted表4.6.3创建触发器4.6.4使用触发器实施特殊业务规则4.6.5管理触发器4.6 应用触发器应用触发器慨纸岂摊犀浙卢淮漠环妇刃峻阎唤牛僻好波嘘氦蜜卵淄郁困化喀盘照碍椅SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程SQLServer2005提供了两种主要机制来强制执行数据完整性和业务规则:约束和触发器(TRIGGER)。触发器是一种实施复杂数据完整性的特殊存储过程,如使用外键约束所不能实现的复杂参照完整性。它在数据操作语句执行时自动生效。通过触发器可实现跨数

168、据库的参照完整性。SQLServer2005包括两大类触发器:DML触发器和DDL触发器。1DDL触发器触发器DDL触发器是SQLServer2005的新增功能,当服务器或数据库中发生数据定义语言(DDL)事件时触发。2DML触发器触发器当数据库中发生数据操作语言(DML)事件时,如在指定的表或视图中执行INSERT、UPDATE或DELETE语句时,触发DML触发器。4.6.1触发器的类型在SQLServer2005中实施数据完整性表酋蹬养渡较装玄拆袄饲油推说沿倒潍发闭矩竖忘挽洞褂廓胚滤仟剁誊痴花SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程4.6.1触发器

169、的类型DML触发器又分为以下几种类型:(1)AFTER触发器。在执行了INSERT、UPDATE或DELETE语句之后触发AFTER触发器,其只能在表上指定。被INSERT语句触发的触发器称为INSERT型AFTER触发器,被DELETE语句触发的触发器称为DELETE型AFTER触发器,被UPDATE语句触发的触发器称为UPDATE型AFTER触发器。(2)INSTEADOF触发器。执行INSTEADOF触发器代替触发动作进行激活,但同一种操作只能定义一种触发器。INSTEADOF触发器可以定义在表或视图上。(3)CLR触发器。CLR触发器可以是AFTER触发器或INSTEADOF触发器,还

170、可以是DDL触发器。提示:提示:使用FOR和AFTER声明的触发器在行为上是相同的,一般情况下用户习惯于使用FOR子句指定AFTER触发器。如例4-6中,使用语句FORINSERT指定INSERT型AFTER触发器。如果没有特殊说明,本书定义、使用的都是AFTER触发器。提示:提示:简单地说,AFTER触发器告诉SQL语句执行之后(数据操作完成,数据已经变动)做什么。而INSTEADOF触发器告诉当要执行INSERT、UPDATE或DELETE操作时用什么别的操作来代替,即数据操作不做,而用触发器指定的操作代替。在SQLServer2005中实施数据完整性表腕组障蒙隋树网固准筏酞舒六口樱冶诉不

171、溉泅全揍线痉姆赎竟拒腹俊打呸SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程4.6.1触发器的类型3DML触发器的特点触发器的特点DML触发器的特点如下:(1)强制比CHECK约束更为复杂的数据完整性。(2)实现数据库中多个表的级联更改。例如,表A的触发器A中包含对表B的数据操作A,而该操作A(插入、删除或修改)会导致表B中的触发器B被触发,触发器B指定的操作B又会影响表C的数据。(3)一个表中可包含多个同类DML触发器,并允许采取不同的操作响应同一个修改语句。(4)维护非规范化数据,实现特殊业务。(5)使用自定义的错误消息,捕获破坏数据完整性的操作并返回自定义

172、的错误提示信息。提示:提示:如果触发器表上存在约束,则在INSTEADOF触发器执行后、AFTER触发器执行前检查这些约束。如果违反了约束,则回滚INSTEADOF触发器操作,但不执行AFTER触发器。在SQLServer2005中实施数据完整性表触发器被定义在数据库中的表上,与表紧密联系在一起,这个表称为触发器表。倚恭寅拐袒磊带骤飘崔咯先际产弊湘评液兰空砖博焰幕价咙昔婚填吻蛹漠SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程当触发器被触发,SQLServer2005为每个触发器在服务器内存中创建两个临时表:inserted表和deleted表。这是两个逻辑表(

173、不会存储在数据库文件中),由系统自动维护而不允许用户直接对它进行修改。触发器工作完成后,这两个表也随之被删除。它们的结构总是与对应的触发器表的结构相同。4.6.2触发器中的inserted表和deleted表在SQLServer2005中实施数据完整性表绵遍册胶斡驶便侵针嗜淀纵博曝琵蒜泅钳替岗话沟哈威钩茅嫂班搪厅寸烷SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程4.6.2触发器中的inserted表和deleted表1inserted表表用于存储触发器表中INSERT和UPDATE语句所影响的记录的副本。在一个插入或更新的事务处理中,新插入的记录被同时添加到触

174、发器表和inserted表中。INSERT触发器的工作过程如下:(1)在定义了INSERT触发器的触发器表上执行INSERT。(2)该表中的INSERT触发器被触发,在服务器内存中创建inserted表,表结构与触发器表相同。(3)INSERT语句插入新记录到触发器表中,同时该记录被复制到inserted表中。(4)触发器指定的操作被执行,由于触发器的作用,使该操作既可以影响触发器表本身,也可以影响另外的表。在SQLServer2005中实施数据完整性表饮爽瓷也钎迭氰娄局嚼秘蚕憎铝岸靡了竟慧禹郊呢栅躇愚稍榔缓猿覆盅读SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教

175、程2deleted表表deleted表用于存储触发器表中DELETE和UPDATE语句所影响的记录的副本。在触发器表中执行DELETE或UPDATE操作时,记录从触发器表中删除,同时传输(复制)到deleted表中暂存起来。因此,deleted表和触发器表通常没有相同的数据行,因为此时记录已经从触发器表中被删除。DELETE触发器的工作过程如下:(1)在定义了DELETE触发器的触发器表上执行DELETE。(2)该表的DELETE触发器被触发,在服务器内存中创建一个deleted表,表结构与触发器表相同。(3)DELETE语句删除的记录同时被deleted表记录下来。(4)触发器指定的操作被执

176、行,由于触发器的作用,使该操作既可以影响触发器表本身,也可以影响另外的表。4.6.2触发器中的inserted表和deleted表在SQLServer2005中实施数据完整性表 提示:提示:一个UPDATE操作可以分解为一个DELETE操作加一个INSERT操作。因此,UPDATE型触发器被触发时会同时创建deleted表和inserted表。袍怒砍五艘俺惩岂研旅腮矗珐惊楞杨蛋本铭赔吁郁卡飞陕咎搽挖难纸堰近SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程触发器的定义包含以下四个要素:(1)名称:名称:有一个符合标志符命名规则的触发器名称。(2)定义的目标:定义的

177、目标:触发器必须定义在表或视图上,而AFTER触发器只能定义在表上。(3)触发条件:触发条件:分别由INSERT、UPDATE或DELETE语句触发。(4)触发逻辑:触发逻辑:被触发后会执行哪些操作(处理逻辑)。4.6.3创建触发器在SQLServer2005中实施数据完整性表瞬馋粮倔昼勉捕瑟峪陇灸瘟辽旋锥叶契复盎芭资木迹呕玉栗芳冉龄摸聊愉SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1CREATE TRIGGER语句的语法语句的语法使用CREATETRIGGER语句创建触发器,基本语法如下:CREATETRIGGERtrigger_nameONtable_n

178、ame|view_nameWITHENCRYPTIONFOR|AFTER|INSTEADOFINSERT,DELETE,UPDATEAS(sql_statement)4.6.3创建触发器其中:其中:trigger_name:触发器名称,必须符合标识符的命名规则,且在当前数据库中唯一。table_name|view_name:指定创建触发器的表或视图,即触发器表或视图。INSERT,DELETE,UPDATE:指明在触发器表中执行哪些操作时会激活对应类型的触发器。必须指定一个选项,选项顺序任意,选项之间用逗号分隔。AS:用来指定触发器要执行的操作序列。sql_statement:触发器要执行的操

179、作序列。在SQLServer2005中实施数据完整性表痈蛋鄙弛炸斌邮逼右串邀被货霞稀遮顷璃优核戊脂规俐拴戴虹喻蛤蝇呻续SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2创建创建INSERT触发器触发器【例4-6】在数据库JXGL的表class_info中创建触发器class_info_insert,实现向表class_info中插入记录时显示提示信息“该表中插入了新数据行!”。代码如下:USEJXGLGOCREATETRIGGERclass_info_insertONclass_info-指定触发器表FORINSERT-指定触发条件,也可使用AFTERINSER

180、T语句ASBEGINPRINTN该表中插入了新数据行!-显示提示信息SELECT*FROMinserted-显示输入的新数据行ENDGO4.6.3创建触发器在SQLServer2005中实施数据完整性表瞪华胞男恨荆昨庇秒蠕樱金友尧默淆驻组量租瀑哨框约蚜神藩鲍乘赶葱隘SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3创建创建DELETE触发器触发器【例4-7】在数据库JXGL的表student_info中创建触发器student_info_delete,实现从表student_info中删除记录时自动更新表class_info中该班级的学生数(stud_num)。

181、代码如下:USEJXGLGOCREATETRIGGERstudent_info_deleteONstudent_info-指定触发器表AFTERDELETE -指定触发条件,也可使用FORDELETE语句AS/*更新表class_info中的该班级的学生数*/4.6.3创建触发器在SQLServer2005中实施数据完整性表夷柄盏朝序导垮拢钦钒鸣萧膀威聪骚认牺悬沮合部昼吐妆佑拣树钳咋茅本SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程UPDATEclass_infoSETclass_info.stud_num=(SELECTCOUNT(student_info.

182、stud_id)FROMstudent_info,deletedWHEREstudent_info.class_id=deleted.class_id)-将deleted表中class_id字段的值(班级号)指定给表student_info,作为统计数据的条件FROMclass_info,deletedWHEREclass_info.class_id=deleted.class_id-将deleted表中class_id字段的值(班级号)指定给class_info,作为更新数据的条件GO4.6.3创建触发器 其中:其中:UPDATE语句:更新删除数据的班级的学生数(与其他班级学生数无关)。其中

183、子句WHEREclass_info.class_id=deleted.class_id的作用是,临时表deleted中的数据是向触发表student_info删除记录的副本,其中class_id字段的值正是刚删除的那条记录的班级号,则把该该班级号指定给class_info表,更新该表中指定班级号的学生数。SELECT语句:重新统计删除数据的班级的学生数(与其他班级无关)。其中子句WHEREstudent_info.class_id=deleted.class_id的作用是,临时表deleted中的数据是向触发表student_info删除记录的副本,其中class_id字段的值正是刚删除新记录

184、的班级号,则把该班级号指定给student_info表,统计该表中指定班级号的学生数。COUNT(student_info.student_id):计数函数,统计student_id的个数(因为在同一个班级中学号是唯一的,因此学号数就是学生数)。在SQLServer2005中实施数据完整性表恭梭痔港钢札油展得镑签舞扬肋奔窗络臭柴恳坠界蔗鲍膏窄超坍槛伯庇泅SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程4创建创建UPDATE触发器触发器【例4-8】在数据库JXGL的表student_info中创建触发器student_info_update,实现当一名学生由一个班

185、调到另一个班后,自动更新表class_info中相应班级的学生数(stud_num)。代码如下:USEJXGLGOCREATETRIGGER student_info_updateONstudent_info-指定触发器表FORUPDATE-指定触发条件ASIF(UPDATE(class_id)BEGIN4.6.3创建触发器在SQLServer2005中实施数据完整性表骆怒骏坊姿站牺旬辖亮君晨冰飘戏盟松怀钓捅幂第菲靠出界撤盘蚀呈氓面SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程UPDATEclass_info/*更新数据前class_id值所指定的班级学生数,

186、在更新后要减少一个*/SETstud_num=stud_num-1FROMclass_info,deletedWHEREclass_info.class_id=deleted.class_id-将临时表deleted中class_id字段的值(班级号)指定给表class_info,作为减少人数的条件/*更新数据后,class_id值所指定的班级的学生数要增加一个*/UPDATEclass_infoSETstud_num=stud_num+1FROMclass_info,insertedWHEREclass_info.class_id=inserted.class_id-将临时表inserted

187、中class_id字段的值(班级号)指定给表class_info,作为增加人数的条件 GO ENDGO4.6.3创建触发器提示:提示:执行以上代码:在“消息”窗格中显示“命令已成功完成”。再次执行,会显示错误提示信息“数据库中已存在名为student_info_update的对象”。这充分说明,在一个数据库中触发器不能重名。在SQLServer2005中实施数据完整性表姿删塑尊乒义淹递聘掺藻舅燥霹谢躺镀茹唯人运凤眷沙蔡佣字押当莉触臣SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程验证以上代码:验证以上代码:将表student_info中学号为D06010209的

188、学生的class_id值由D060102改为D060103。(1)更新数据前,先查看D060102和D060103两个班的学生人数。代码如下:SELECT*FROMclass_infoWHEREclass_id=D060102ORclass_id=D060103执行以上代码。(2)更新班级号,代码如下:UPDATEstudent_infoSETclass_id=D060103WHEREstud_id=D06010209执行以上代码。(3)再次执行的代码,4.6.3创建触发器在SQLServer2005中实施数据完整性表剖剖沂彝荣质蒲勃咐勇客琳屏秦淑襟眶基共桔侨扰善藤淳书跺萤阿友一序SQLSer

189、ver数据库应用技术实例教程SQLServer数据库应用技术实例教程5应用触发器实施参照完整性【例4-9】在数据库JXGL的表student_info中创建触发器student_info_update2,实现当stud_id值发生变化时,在student_grade中的stud_id值作相同的更新。代码如下:CREATETRIGGERstudent_info_update2ONstudent_infoFORUPDATEASIF(UPDATE(stud_id)BEGINUPDATEstudent_gradeSETstud_id=inserted.stud_idFROMinserted,stude

190、nt_grade,deletedWHEREstudent_grade.stud_id=deleted.stud_idEND4.6.3创建触发器在SQLServer2005中实施数据完整性表憨厕弓尧追吸谣瞻牲昧持剔撞盏柬尉孺涤溅军螺削主耕充芋咸镶咳圣篙瘫SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1使用SSMS管理触发器创建触发器时,如果使用WITHENCRYPTION子句进行加密,将不能通过快捷菜单中的“修改”命令(该命令已变成灰色)对触发器定义进行修改。4.6.5管理触发器在SQLServer2005中实施数据完整性表盟粳耘阎妊铀想栓贮地蒸漠稚饿烤雾召裂弄

191、扁涌夯评再妥扯默贺斩段锅都SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程4.6.5管理触发器2使用T-SQL语句查看触发器(1)使用系统存储过程sp_helptrigger可以查看指定表中的触发器及其类型信息。如查看表student_info中的触发器信息,代码如下:sp_helptriggerstudent_infoGO(2)使用系统存储过程sp_helptext可以查看指定触发器的定义信息。查看触发器student_info_delete的定义,代码如下:sp_helptextstudent_info_deleteGO在SQLServer2005中实施数据

192、完整性表桐某景膨陨藤确栖耪俄褂柬金蔷罩蛮饵盼秀怪贝姬擂肘视粥温驳香倚堑章SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3使用T-SQL语句修改触发器使用ALTERTRIGGER语句可以修改已经创建好的触发器定义。其语法与CREATETRIGGER语句一致。使用ALTERTRIGGER语句不能对触发器进行更名操作。4使用T-SQL语句删除触发器使用DROPTRIGGER语句可删除当前数据库中的一个或多个触发器。4.6.5管理触发器在SQLServer2005中实施数据完整性表珠赁泰许假危付棱芋势入缝钥双益钻胡窜妇子汰警牵滓化摄朴捅禽湍裤肿SQLServer数据库

193、应用技术实例教程SQLServer数据库应用技术实例教程【例4-11】删除触发器student_info_delete。代码如下:USEJXGLGO/*判断当前数据库中是否存在名为student_info_delete的触发器*/IFEXISTS(SELECTnameFROMsysobjectsWHEREname=student_info_deleteANDtype=TR)DROPTRIGGERstudent_info_deleteGO【例4-12】删除触发器student_info_delete2和student_info_update。代码如下:USEJXGLGODROPTRIGGERst

194、udent_info_delete2,student_info_updateGO4.6.5管理触发器在SQLServer2005中实施数据完整性表生魏店弥萤送粒隔疆锈春烘给闭芹丁逢跑轰裂师淹液驼礼补庸侣刷渤网赘SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5触发器的嵌套当一个触发器被触发时又触发了另一个触发器,而另一个触发器的操作又触发了下一个触发器,这些触发器被称为嵌套触发器。触发器最多可以嵌套32层,并且可以控制是否通过“嵌套触发器”服务器配置选项进行触发器嵌套设置。当允许使用嵌套触发器时,如果嵌套链中的一个触发器开始无限循环,直到超出嵌套层数时,触发器将

195、自动停止。6触发器的递归当一个触发器被触发时,其包含的操作再次触发该触发器。触发器的再次触发执行又会因重新修改数据而激活触发器,如此循环,直到某个条件限制终止触发器的触发,或超出系统限制的情况下自动停止。这种触发器调用或触发自身的现象称为触发器的递归。4.6.5管理触发器在SQLServer2005中实施数据完整性表锗惠呢融探饱陵喻废靛砌戴急展啥襄仓疟砖差故刨溉增串胺泻刷颇娇柿治SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务:了解触发器与约束的不同应用特点。了解触发器与约束的不同应用特点。 在SQLServer2005中实施数据完整性表4.7 知识进阶知识

196、进阶4.7.1触发器与约束的比较4.7.2级联参照完整性慕醉逛炸两矛狙缩耿敌赣侦佑融五遏忙橱力饲给邢现丧松齿柑糊静走忱间SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程触发器与约束的比较如下:(1)如果触发器表中同时有约束存在,则约束优先。(2)对同一张表,若约束与触发器定义冲突,则触发器定义的操作将不被执行。(3)触发器与约束的最大区别在于:创建约束时,约束会首先对数据库中已有的数据进行强制;而触发器对创建之前的数据不起作用。(4)INSERT触发器也可以由INSERTINTO语句触发。(5)在触发器定义中不允许使用以下T-SQL语句:CREATE/ALTER

197、/DROP/LOAD/RESTOREDATABASELOAD/RESTORELOGDISKINITDISKRESIZERECONFIGURE4.7.1触发器与约束的比较在SQLServer2005中实施数据完整性表蒂山陵虏藉蓟蜕敖又绽裳耍溪鸥颤简醛静樟弱尊嘉洱郭夺杏傈槽在睦勾疵SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程CREATETABLE和ALTERTABLE语句的REFERENCES子句支持ONDELETE和ONUPDATE子句。(1)ONDELETENOACTION。如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则产生错误并回滚DEL

198、ETE语句,即不能首先删除主键值。(2)ONUPDATENOACTION。如果试图更新某一行中的键值,而该行的键被其他表的现有行中的外键所引用,则产生错误并回滚UPDATE语句,即不能首先更新主键值。4.7.2级联参照完整性在SQLServer2005中实施数据完整性表郎瘦诧驹栅剧赋异亿撑堕螺版壕鸦书嚣插劫依己敲瓤冷吴蜜村份症瓤匹踢SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1利用CASCADE选项实现级联参照在SQLServer2005中,FOREIGNKEY约束包含一个CASCADE选项,允许对定义了UNIQUE和PRIMARYKEY约束的列值的修改传播

199、到参照该列值的任何外键值上,称为级联参照完整性。(1)ONDELETECASCADE:指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则也将删除所有包含那些外键的行。(2)ONUPDATECASCADE:指定如果试图更新某一行中的键值,而该行的键值被其他表的现有行中的外键所引用,则外键值也将更新为该键指定的新值。4.7.2级联参照完整性在SQLServer2005中实施数据完整性表矩趾淡梅顽蝉珐扁接骗啸丧颓尉籽魏器埃江勤阜用式卖左祝米揖狰逆勘撼SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2多个级联参照单独的DELETE或UPDATE语句可启

200、动一系列级联参照操作。例如,一个数据库包含三个表:TableA、TableB和TableC。针对TableA中的主键,用ONDELETECASCADE定义TableB中的外键。针对TableB中的主键,用ONDELETECASCADE定义TableC中的外键。如果DELETE语句删除TableA中的行,则该操作也将删除TableB中具有与TableA中所删除的主键匹配的任何外键的所有行,然后删除TableC中具有与TableB中所删除的主键匹配的任何外键的所有行。4.7.2级联参照完整性在SQLServer2005中实施数据完整性表诅胶楚酱助哉逗臼烛鸡棋宵测橙瑞攻邹矿植玄脐灿式颠屁涎页筛懊改曾

201、谦SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3触发器和级联参照级联参照操作按下列方式激发AFTERUPDATE或AFTERDELETE触发器:首先执行由原始DELETE或UPDATE操作导致的所有级联引用操作。如果为受影响的表定义了任何AFTER触发器,则在执行完所有级联操作后激发这些触发器。这些触发器将按与级联操作相反的顺序激发。如果单个表中存在多个触发器,它们将按随机顺序激发,除非专门为表指定了第一个或最后一个触发器,此顺序是使用sp_settriggerorder指定的。4.7.2级联参照完整性在SQLServer2005中实施数据完整性表舔俏有瞄部

202、瞄矢肩迫乙层逢杯邑秩齿氟徐剔夕洽乱舔氰餐邢拨病熟凌婶休SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程项目实训项目实训 1实训题目实训题目“销售合同管理系统”数据库实施数据完整性。2实训目的实训目的(1)了解数据完整性的概念。(2)掌握约束的创建与应用。(3)掌握规则和默认值对象的创建与应用。(4)掌握触发器的创建与使用。3实训内容实训内容(1)使用SSMS或T-SQL为DEPARTMENT表创建主键,创建检查约束、非空约束。(2)使用SSMS或T-SQL为EMPLOYEE表创建外键约束。(3)用关系图描述数据库所有表的关系,如图4-31所示。(4)在表DEPA

203、RTMENT中创建触发器department_info_update,实现当depart_id值发生变化时,在表EMPLOYEE中的depart_id值作相同更新。在SQLServer2005中实施数据完整性表桂倾列滨身榨哼脖弄畔茸乾造调涪楞疙或惑秸流腋怠汀凸敢揪边禾雄精僳SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程慷宜砍舆宵侧屠遵铂氟恤爵污软层房苟阴督捎驹文郝狰脉聘斟行欲绥迁千SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务:任务:使用T-SQL语句和SSMS对数据库JXGL进行数据查询。通过单表的简单查询、多表的连接查

204、询以及高级嵌套查询等多种方式查询得到用户需要的信息。5.1了解T-SQL的常用函数5.2分析“高职院校教学管理系统”中的数据查询5.3简单查询5.4连接查询5.5嵌套查询5.6使用SSMS进行数据查询5.7知识进阶项目实训任务五任务五 应用数据库中的数据应用数据库中的数据 SQLServer2005中的数据查询襄料陋丸幂歉迭惹酸蒋爹垦缆安润旨蔗且允履鹅位抵觉胶蝉褪震谨倡持帝SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程了解T-SQL的常用函数使用T-SQL进行单表的简单查询使用T-SQL进行多表的内连接和外连接,了解多表的交叉连接使用T-SQL进行嵌套查询使用

205、SSMS进行数据查询学习目标学习目标SQLServer2005中的数据查询思妓开酶裹拙藩撅撰蚜笑菩玩服搅回虱邱瑚母享疏邻史乒蝶屉熊碗剔晕贼SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 5.1 5.1 了解了解T-SQLT-SQL的常用函数的常用函数 任务任务:了解常用的SQL函数,掌握常用集合函数、字符串函数和日期时间函数 。SQLServer2005中的数据查询饲师难痞蓉掐侩箔躇俩咐殷贱低格浇躁长仲庭帅经鬼锅妥躯表柿抨驼咯焰SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1.数学函数:数学函数:实现各种数学运算和三角运算。如

206、:ABS、SQRT、CEILING/FLOOR、RAND、ROUND、POWER、LOG等。2.字符串函数:字符串函数:实现对字符串数据的分析、查找、转化等。如:CHAR、SPACE、STR、LOWER、UPPER等。3.日期时间函数:日期时间函数:实现对日期时间类型数据的各种操作。如:GETDATE、DATEADD、DATEDIFF、DATEPART等。4.集合函数:集合函数:用于计算SELECT语句查询结果行的统计值,在查询结果集中生成汇总值。如:COUNT、MAX、MIN、SUM等。5.系统函数系统函数:用于获取有关计算机系统、用户、数据库和数据库对象等当前运行环境的系统信息。如:HOS

207、T_ID、CURRENT_USER、IS_MEMBER等T-SQL的常用函数的常用函数SQLServer2005中的数据查询汗迟蹋吠钙刊宙市坛蛙幻邯存谋冶守港饮洼光开屋姥倦炊巡敬迈褒名拧趣SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程T-SQL的常用函数的常用函数6.用户自定义函数:用户自定义函数:自定义的函数包含标量值函数、内联表值函数和多语句表值函数三种。标量值函数。该函数返回单个数据值,数据类型是在RETURNS子句中指定的。内联表值函数。该函数指定table作为返回类型,可以通过内联表值函数实现参数化视图功能。多语句表值函数。该函数是视图与存储过程的集

208、合应用,返回table类型。【例5-4】定义一个函数stu_score,求出并返回学生成绩的70%。CREATEFUNCTIONstu_score(tempscoreASnumeric(9)RETURNSnumeric(9)ASBEGINRETURN(tempscore*0.7)ENDGOSQLServer2005中的数据查询挽樟意夕芝共融速俱曹酵埂饵昼豆镀勉在牵陨岭附只慌霍穷拯坦气孵停遭SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5.2 5.2 分析分析“高职院校教学管理系统高职院校教学管理系统”中的数据查中的数据查询询 任务:任务:分析“高职院校教学管理

209、系统”中的数据 查询需求 。SQLServer2005中的数据查询羽缩台傲羡酚郭斌酥潞世列宗鞭眩松右拉悄说腋笨媳佰咏钒栖痹坎驭甭溺SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程“ “高职院校教学管理系统高职院校教学管理系统高职院校教学管理系统高职院校教学管理系统” ”中的数据查询中的数据查询中的数据查询中的数据查询1. 从查询类型角度分析:从查询类型角度分析:单表查询。针对没有外键的基本表。多表查询。通过外键列将分属于多个表的信息进行连接查询或嵌套查询后放在一起显示。数据的汇总统计查询。通过单表查询或多表的关联查询对相应的数据行汇总和统计。2. 从系统的管理应

210、用角度分析:从系统的管理应用角度分析:学生基本信息查询。学籍信息查询。学生成绩查询。学生选课信息查询。教材信息查询。SQLServer2005SQLServer2005中的数据查询中的数据查询砧叔碰伎臃咳滑填缮我岩腋抿团萝费图浚募除绑豢官汗篓临驱云悠罐饿迅SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5.3 5.3 简单查询简单查询 任务:任务:掌握SELECT语句的基本语法,按查询需求,应用WHERE条件及各关键字实现对“高职院校教学管理系统”的各类基本数据查询。 5.3.1认识SELECT语句5.3.2最基本的SELECT语句5.3.3数据汇总及空值查询5

211、.3.4使用WHERE进行条件查询5.3.5使用ORDERBY排序查询结果5.3.6使用GROUPBY分组统计5.3.7使用COMPUTEBY显示子集明细5.3.8使用查询结果创建新表5.3.9使用UNION联合多个查询SQLServer2005中的数据查询掺塔歪涣疥您褂棒韧耘肛澡峻惮彩歇堡毫怨烹熄喉曼堵苛扁资碧著孺票货SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5.3.1认识SELECT语句使用T-SQL的SELECT语句从一个或多个表或视图中,对存在于数据库中的数据按照特定的组合、条件表达式和次序进行查询,并可对数据进行筛选、分组、统计、排序等处理。基本

212、语法:SELECTALL|DISTINCT|TOPn|TOPnPERCENTselect_listINTOnew_table_nameFROMtable_listWHEREsearch_conditionsGROUPBYgroup_by_listHAVINGsearch_conditionsORDERBYorder_listASC|DESCCOMPUTEaggregate_functionsBYcompute_by_list各子句说明各子句说明SELECT:关键字,表示从数据库中查询数据。ALL|DISTINCT|TOPn|TOPnPERCENT:关键字,对查询结果集的数据行进行控制。sele

213、ct_list:需要在结果集中显示的列,是由逗号分隔的表字段或表达式列表。INTOnew_table_name:将查询结果集存放到一个新创建的表中。FROMtable_list:指定要查询的表或视图的数据源列表。WHEREsearch_conditions:指定查询时的筛选条件。GROUPBYgroup_by_list:按照指定的列对结果集进行分组。HAVINGsearch_conditions:指定用于分组后的筛选条件。ORDERBYorder_listASC|DESC:指定结果集需要依据哪些列来进行排序后显示。COMPUTEaggregate_functionsBYcompute_by_l

214、ist:对查询结果集中的所有记录进行汇总统计,并显示所有参加汇总统计的详细子集,即统计明细。SQLServer2005中的数据查询秩猿哼致宅乾吉黄殃豌拉粗阻魁伸观夏窑阐充距悟银雕傻蚤磷蔑悸柑积坍SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5.3.2最基本的SELECT语句最简单的查询是不附加任何查询条件,即只由必须的SELECT和FROM子句组成,而不使用WHERE、GROUPBY、HAVING、ORDERBY等其他可选的子句。基本语法如下:SELECT*|column_name,.nFROMtable_name;例:从表student_info中查询出全体

215、学生的学号、姓名、性别和班级等基本信息。代码如下:SELECTstud_id,stud_name,gender,class_idFROMstudent_infoGOSQLServer2005中的数据查询需要说明的是:在SELECT关键字后出现的列名顺序决定了查询结果集中列的顺序。当SELECT关键字后用“*”,则显示数据源中所有列,且显示列序为数据表中列的定义顺序。通过命名别名的方式改变结果集中列的标题,有“列标题名=列名”和“列名AS列标题”两种方式。狱践汗掘耍藉径甩室救犹返英题污僚众尊瘸饶窑称归漏十需山股溪捕呸川SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教

216、程【例5-5】从表student_info中查询出全体学生的详细信息。SELECT*FROMstudent_infoGO【例5-6】从表student_info中查询出全体学生的学号、姓名、性别和班级等基本信息。SELECTstud_id,stud_name,gender,class_idFROMstudent_infoGO【例5-7】从表student_info中查询出所有学生的姓名、性别、学号、班级等基本信息,并用相应的中文标题显示。SELECT姓名=stud_name,性别=gender,stud_idAS学号,class_idAS班级FROMstudent_infoGO。5.3.2最基

217、本的SELECT语句SQLServer2005中的数据查询鳃舞红绿渣岂快撰栖壁羞无驹葱的训铡匣扳疡肆堰团饼代述刃壶帆库贴皆SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5.3.3数据汇总及空值查询通过使用SQL的集合函数可以对数据进行各种统计,大大简化了数据的查询。例2:从表student_info中查询出全体学生的姓名和年龄。代码如下:SELECTstud_nameAS姓名,YEAR(GETDATE()-YEAR(birthday)AS年龄FROMstudent_infoGO 提提示示:YEAR(GETDATE()-YEAR(birthday)是一个计算列,

218、取得系统日期中的年份,减去学生出生日期列中的年份,即年龄。SQLServer2005中的数据查询道耘扳打喜蕴些札默坎跳巧婉臭辑剁敖徘罗灼鸯瓷请传盖纷飘殉拖莎榷七SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程【例5-10】从表student_info中查询出所有学生的民族信息。代码如下:图5-6学生的民族信息SELECTDISTINCTnationFROMstudent_infoGO【例5-11】从表book_info中查询出最贵和最便宜的书。代码如下:SELECTMIN(price),MAX(price)FROMbook_infoGO【例5-12】从表teac

219、her_info中查询出教师及其职称,如果职称为空,则默认显示为“讲师”。代码如下:SELECTteac_name,ISNULL(profession,N讲师)FROMteacher_infoGO5.3.3数据汇总及空值查询提提示示:使用DISTINCT关键字消除了查询结果中重复的信息。 提提示示:教师职称的值为NULL时,通过ISNULL()函数进行了特殊处理。SQLServer2005中的数据查询卑烈葡鸟迭觉寻样忘缩罩敷吕庶帮汹顾可阶陪永磷嚣局殊儡呸掏种驳言呀SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5.3.4使用WHERE进行条件查询用户可以使用WH

220、ERE子语句实现从表中筛选出满足特定条件的一部分记录。WHERE子语句中常用的查询条件见书表5-7。1基于比较运算的基于比较运算的WHERE子句子句【例5-15】从表student_info中查询出2年前入学的所有学生的详细信息。代码如下:SELECT*FROMstudent_infoWHEREenter_date=DATEADD(year,-2,GETDATE()GO 提提示示: 进行条件比较的可以是表中的单个列,也可以是计算列或函数。字符串类型或日期时间类型的列,使用比较条件时,要用单引号引起来。WHERE子句中使用的字段也可以出现在SELECT关键字中。SQLServer2005中的数据

221、查询舵誓锨前咙摆蹿骋知冀涟操枉玛目恿卯昆箕戏捶刚瑟铰略瑰褂印师神猪瑟SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程4基于基于LIKE关键字的关键字的WHERE子句子句当只知道查询对象的部分值且不知道准确形式的时候,就要使用LIKE运算符和通配符相匹配的模糊查询,见书表5-8和5-9。【例5-22】从表book_info中查询出书名中包含“SQLServer_”的教材信息。代码如下:SELECT*FROMbook_infoWHEREbook_nameLIKENSQLServer/_%ESCAPE/GO5.3.4使用WHERE进行条件查询 提示:提示:LIKE子句

222、中紧跟在符号“/”后面的字符“_”被定义为匹配字符,而不再是通配符。SQLServer2005中的数据查询尺谍伐过姬覆盅舟仟键朝殆呵慷靳患泉曼置渡己蜡解帛矗获倪冰挪屉省擅SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5基于空值判断的基于空值判断的WHERE子句子句空值用NULL表示,它是一个符号,既不等于0,也不是空格,不能进行算术运算。6多个条件的组合查询多个条件的组合查询【例5-24】从表student_info中查询出家住“济南”或名字为“卓玛”的少数民族学生的信息。代码如下:SELECT*FROMstudent_infoWHERE(nation!=N汉

223、族)AND(home_addrLIKEN%济南%ORstud_nameLIKEN%卓玛)GO5.3.4使用WHERE进行条件查询 建议:建议:不要使用逻辑运算符默认的优先级顺序,而是采用括号来明确需要的执行顺序,以增强程序的可读性。SQLServer2005中的数据查询霄邱秉纱阵熟望日径稻噬嚣惨陵赡渭搔救闯船咖咱状缸前辽涌搪递弦膨普SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5.3.5使用ORDERBY排序查询结果使用ORDERBY指定对最终的查询结果按照一个或多个列进行升序(ASC)或降序(DESC)排列后显示。默认为升序,即ASC可以缺省。语法为:ORD

224、ERBY列名ASC|DESC,n【例5-26】从表student_grade中查询“考试”课的信息,只显示成绩最高的前10条记录。代码如下:SELECTTOP10*FROMstudent_gradeWHEREform=N考试ORDERBYgradeDESCGO提示:提示:本例中,TOP关键字可指定返回查询结果中的前n行,或前一个百分数的行数。SQLServer2005中的数据查询茨粪遣涟逮肇寞震捡肺湛澜劲晃雷茄拿嫩币着毯剪揩腰所丰失汝煮钾愈斡SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5.3.6使用GROUPBY分组统计1不含条件的分组统计不含条件的分组统计

225、GROUPBY子句与集合函数一起,将查询结果按某一列或多列的取值进行分组,列的取值相同的行为一组,对每一组进行统计。基本语法为:GROUPBY列名,HAVING分组条件表达式【例5-28】对表student_grade中“考查”课的每门课程的成绩进行统计,统计内容包括参加考试的学生个数、平均成绩、最高成绩和最低成绩。代码如下:SELECTcourse_idAS课程,count(stud_id)AS学生数,avg(grade)AS平均成绩,max(grade)AS最高成绩,min(grade)AS最低成绩FROMstudent_gradeWHEREform!=N考试GROUPBYcourse_i

226、dGOSQLServer2005中的数据查询廊钞煽须译芜耙愿毒贤旷咽湾石钙拈拈曼便矫灯恤贱问拽乐痘堆擒亏宿俏SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5.3.6使用GROUPBY分组统计2使用使用HAVING子句设置分组条件子句设置分组条件“HAVING分组条件表达式”用来对分组后生成的中间结果集进行条件筛选。【例5-28】对表student_grade中各学生的“考试”课的考试成绩进行统计,查询出平均分不及格的学生的学号和平均成绩。代码如下:SELECTstud_id,AVG(grade)AS平均成绩FROMstudent_gradeWHEREform=

227、N考试GROUPBYstud_idHAVINGAVG(grade)90GOSELECT*FROM#temp_student_gradeGOSQLServer2005中的数据查询扣孪芳江魏门断抛龙世仙淘雕殊经酞膨拴祸朴迷故攀氛秤塑页军憎搅奢羡SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5.3.9使用UNION联合多个查询UNION运算符将两个或多个查询结果组合为一个结果集,该结果集包含查询的全部行。语法如下:select_statementUNIONALLselectstatementUNIONALLselectstatementn【例5-33】对表stude

228、nt_info和表teacher_info分别进行查询,并把结果放在一起显示,使用户可以看到所有学生和老师的编号、姓名和身份(“学生”或“教师”)。代码如下:SELECTstud_idASid,stud_nameASname,N学生ASperson_typeFROMstudent_infoUNIONSELECTteac_idASid,teac_nameASname,N教师ASperson_typeFROMteacher_infoGO使用UNION组合查询时需要注意以下几点:(1)UNION联合的所有查询语句必须具有相同的列,且数据类型必须兼容。(2)合并后结果集的列名使用第一个SELECT语句

229、中的列标题。若要定义列标题,必须在第一个SELECT语句中定义。若要对联合查询结果排序,也必须使用第一个SELECT语句中的列。(3)在包括多个查询的UNION语句中,其执行顺序是自左至右,而使用括号可以改变这一执行顺序。(4)如果要将合并后的结果集保存到一个新表中,INTO语句必须放在第一个SELECT语句中。(5)只可以在最后一条SELECT语句中使用ORDERBY和COMPUTE子句。SQLServer2005中的数据查询排壹刑灰楷曳泛般诗软漏估匿访贫燥钨赢酋哇汞规将诬攒恃秉短狄溪圾职SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 5.4 5.4 连接查

230、询连接查询 任务任务:理解内连接、自连接、外连接和交叉连接的含义,应用内连接,外连接和交叉连接对“高职院校教学管理系统”进行数据查询。 5.4.1使用内连接查询数据5.4.2使用外连接查询数据5.4.3使用交叉连接查询数据SQLServer2005中的数据查询福秘框甸君平蚁啄沼瞒婆嘘辽爪窜浇法啪刹亥啮顶框绒拍舵氓阮糕耳咬慑SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程连接查询连接查询是涉及到两个或多个表之间的关联查询,连接关系的建立有以下两种方式。 在WHERE子句中建立连接关系,基本语法如下:FROMjoin_tablejoin_typejoin_table

231、WHEREjoin_condition 在FROM子句中建立连接关系,基本语法如下:FROMjoin_tablejoin_typejoin_tableONjoin_conditionSQLServer2005中的数据查询其中:其中:join_table指定参与连接操作的表。join_type指定连接类型,包括内连接、外连接和交叉连接三种。join_condition指定多个连接表之间的连接条件珊撮轴舞磺垒圭孔蚜沛沦旬裸躇苯肥喝拉惋损绕搂牲翘贾匆碰氦咙几穷妄SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5.4.1使用内连接查询数据内连接是通过INNERJOIN关

232、键字或者JOIN关键字把多表进行连接。内连接将多个表中都满足条件的记录联合成一条新记录。如果一个表中的某条记录按照连接条件在另外一个表中没有找到任何匹配的记录,则这条记录就不会出现在结果集中。内连接查询的基本语法如下:SELECTFROMINNERJOINON.,在使用内连接进行数据查询的时候,需要注意以下几点:(1)可以在FROM子句指定表的同时定义表的别名,格式为“表名AS表别名”。(2)当一个表与它自身进行连接操作时,称为表的自连接(3)如果多个表中有相同名称的字段时,在SELECT后面指定字段名时必须加上表名(或表别名)作为前缀,即用“表名.列名”或“表别名.列名”表示。(4)如果在F

233、ROM子句中为表定义了别名后,则在SELECT关键字后以及WHERE、ORDERBY等各个子句中,都必须使用“表别名.列名”格式,而不允许再使用“表名.列名”格式。(5)进行连接查询的多表之间必然存在主键和外键关系,只要主外键关系列出,就可以确定连接条件。SQLServer2005中的数据查询更款焦瑶舍掸电南弟伤愤恿赌碎乃宏侍艳氰单铜玉喜俞马代泛姓长墅僻贸SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程【例5-36】在表student_grade中,查询与学号为J06020345的同学选修了相同课程的其他同学的成绩信息。代码如下:SELECTDISTINCTa.

234、stud_id,a.course_id,a.grade,a.stud_creditFROMstudent_gradea,student_gradebWHEREa.course_id=b.course_idANDa.stud_id!=J06020345ANDb.stud_id=J06020345GO5.4.1使用内连接查询数据SQLServer2005中的数据查询亮苦择悦淖胎膝讫摸尖骄瞧驶怯窗眠梳辽洗腺早邻畦悉锣轮伍椰牺摆荒毫SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5.4.2使用外连接查询数据(1)左外连接的结果集返回了左表中的所有匹配行。(2)右外连接和

235、左外连接相反,它将返回右表的所有匹配行。(3)全外连接则返回左表和右表中的所有匹配行。【例5-37】左外连接表book_info和表course_info,查询出各个教材所对应的课程。即使教材没有在任何课程中使用,也在结果集中显示。代码如下:SELECTa.book_id,a.book_name,b.course_id,b.course_nameFROMbook_infoASaLEFTOUTERJOINcourse_infoASbONa.book_id=b.book_idGOSQLServer2005中的数据查询偿咯犬坊糕献尹氧脑采琐泽丫岁钒家茅男踞揽贸晶缀龟冬存活什笛航虑偿SQLServer

236、数据库应用技术实例教程SQLServer数据库应用技术实例教程5.4.3使用交叉连接查询数据使用交叉连接查询数据交叉连接交叉连接(CROSSJOIN)指在进行多表查询时不指定任何连接条件,它返回连接表中所有数据行的笛卡尔积,结果集中的数据行数为第一个表中符合查询条件的数据行乘以第二个表中符合查询条件的数据行。SQLServer2005中的数据查询亢酬吕彭垫窒骑栽掺骚沧惯量攫阔咬淳算吠柬羌日影山儒怪希阻比江纵竣SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 5.5 5.5 嵌套查询嵌套查询 任务任务:理解嵌套查询的概念及语法,使用比较运算符及IN或NOTIN、E

237、XISTS或NOTEXISTS谓词对“高职院校教学管理系统”进行数据查询。 5.5.1使用比较运算符连接的嵌套查询5.5.2使用IN谓词连接的嵌套查询5.5.3使用EXISTS谓词连接的嵌套查询SQLServer2005中的数据查询郁扛恫截祁妈粥匣甩光壹花紧碎党仰载塔闻渡哭胞贫崖搔流菱蹲墙院闹履SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程嵌套查询在SELECT语句的WHERE或HAVING子句中嵌套另一个SELECT语句的查询称为嵌套查询,又称子查询。嵌套查询还可以嵌套在INSERT、UPDATE、DELETE语句或其他嵌套查询中。嵌套查询的执行流程是,首先

238、执行内部嵌套的子查询语句,查询的结果并不被显示,而是传递给外层的SELECT语句作为该查询语句的查询条件使用。在不影响理解的情况下,也可以称子查询形成的结果作为父查询的条件。嵌套查询可以最多嵌套32层。SQLServer2005中的数据查询滓颐半木皂即焕弄笨掸西麓俩客麦造粉筑咎撅偏败岿还雾覆僚颧侈睁浚眩SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5.5.1使用比较运算符连接的嵌套查询使用比较运算符连接SELECT子查询时,子查询只能是单列、单值子查询语句。【例5-39】使用嵌套查询列出表student_info中大于学生平均年龄的学生信息。代码如下:SELE

239、CT*FROMstudent_infoWHEREYEAR(GETDATE()-YEAR(birthday)(SELECTAVG(YEAR(GETDATE()-YEAR(birthday)FROMstudent_info)GOSQLServer2005中的数据查询友边居妥纸妮灶严协剔叔倦蚌糟攀烈糊万咱远曹腑尹豆咽垂匠颈刀仕桑惨SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程对于单列、单值子查询,可以使用比较运算符与外部查询进行连接。但对单列、多值的子查询,则不能使用比较运算符,只能使用IN或NOTIN进行嵌套连接。【例5-40】使用嵌套查询列出表teacher_c

240、lass_course中职称为“副教授”的排课信息。代码如下:SELECT*FROMteacher_class_courseWHEREteac_idIN(SELECTteac_idFROMteacher_infoWHEREprofession=N副教授)GO5.5.2使用IN谓词连接的嵌套查询SQLServer2005中的数据查询隐亏雏票雇牵姆预蛙萤奖阀戎歪炙钎氢惑欠夫银瘪攘述价獭蝶粪辖佳刽戈SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5.5.3使用EXISTS谓词连接的嵌套查询EXISTS和NOTEXISTS关键字用来确定数据是否在查询结果集中存在。EXI

241、STS表示子查询至少返回一行时条件成立,NOTEXISTS表示子查询中没有任何记录返回时条件成立。【例5-41】使用嵌套查询列出表teacher_class_course中所有在名称为“阶梯教室1”上课的课程信息。代码如下:SELECT*FROMteacher_class_courseWHEREEXISTS(SELECT*FROMclassroom_infoWHEREclassroom_info.croom_id=teacher_class_course.croom_idANDclassroom_info.croom_name=N阶梯教室1)GOSQLServer2005中的数据查询右领证裂垄

242、盖独潞灶苛呜咱馁郴辙升谈专则蘸恫努完盘窑惹鸟被阮宦职庆SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 5.6 5.6 使用使用SSMSSSMS进行数据查询进行数据查询 任务任务:使用SSMS对“高职院校教学管理系统”进行数据查询。SQLServer2005中的数据查询慷缩久兢荧分碴渝槽刘倍民糕篓谱饥擎托驰次首牌颂癸罩焕外萎晤诉约录SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程使用SSMS进行数据查询使用SSMS对“高职院校教学管理系统”进行数据查询,操作步骤略。SQLServer2005中的数据查询习志泵墒您固泰疯论怠积祸仲魏

243、丈敲捶妊明兄震嘘录吝树富锻办应缴让茅SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 5.7 5.7 知识进阶知识进阶 任务任务:掌握在数据操作语句中使用查询,了解联合查询和分布式查询 。 5.7.1在数据操作语句中使用查询5.7.2分布式查询SQLServer2005中的数据查询倔咎棉河兄彩沸锣订龋辜杠轨扇敲终句雷正服蛇仑空赡冗谎瓮咬叔灌梆炙SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5.7.1在数据操作语句中使用查询在“嵌套查询”中已经提到,一个SELECT查询语句除了可以嵌套在另一个SELECT语句中外,还可以嵌套在IN

244、SERT、UPDATE或DELETE等数据操作语句中。此时相当于将嵌套查询语句的结果集返回给数据操作语句,作为操作条件或数据来源。【例5-43】对表student_info和表student_grade进行连接查询,并将查询结果插入到新建表t_student_score中。INSERTINTOt_student_score(stud_id,stud_name,class_id,course_id,grade)(SELECTa.stud_id,a.stud_name,a.class_id,b.course_id,b.gradeFROMstudent_infoASaINNERJOINstudent

245、_gradeASbONa.stud_id=b.stud_id)GOSQLServer2005中的数据查询妊程瞅捅咱空眼灌豆婿呈畜依源涡朱挞罪卤绘摘痊辰攻迷蔫饱景檀晴忠榔SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程分布式查询是指任何引用了一个或多个外部OLEDB数据源中表或行集的SELECT、INSERT、UPDATE或DELETE语句。所有分布式查询的执行方案都有以下六种操作:(1)建立连接和查询属性操作。(2)表名解析和查询元数据操作。(3)事务管理操作。(4)数据类型处理操作。(5)错误处理操作。(6)安全性操作。分布式查询中的数据类型使用下列两种映射方

246、式之一进行处理:(1)使用端映射。(2)导出端映射。5.7.2分布式查询SQLServer2005中的数据查询首翌陕浮拽坐嗅险打痛暗无身饭埔掀说卵寥拉叫消材舰坤施械渴谐额氟了SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程项目实训项目实训 1实训题目实训题目查询“销售合同管理系统”数据库中的数据。2实训目的实训目的(1)了解常用的T-SQL函数。(2)利用SQL语句进行简单查询、连接查询和嵌套查询。(3)掌握使用SSMS进行数据查询的方法。3实训内容实训内容(1)向数据库各表输入数据。(2)使用SSMS查询所有部门信息,并按部门编号排序。(3)使用T-SQL语句

247、实现各种数据查询。SQLServer2005中的数据查询回稼负瘁临蚁岭呛掳延逾翘肖朔关峙晨送叉携喳纱觉阿撒健歹秦嘴媳企榴SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程赏阔传锋踞撒才傣编衫郭槐桐枚折钎年启敏孕腾噬贿刨腕吊公茹贩荆牲湘SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程凑抗训怜苇绍获莹启莽冕星恶朔捏益绪煎汉窝窿传谬览净骆缅喝妄滁牟婶SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务:任务:了解视图及索引的作用,分析“高职院校教学管理系统”中索引及视图的应用,使用SSMS和T-SQL语句创

248、建、管理“高职院校教学管理系统”中的索引及视图。6.1创建索引6.2创建视图6.3知识进阶项目实训任务六任务六 优化数据查询和数据管理优化数据查询和数据管理 在SQLServer2005中应用索引及视图呼心暖泻袋任柒粘撩佣拉憨术谆冯追径易钉谐贸尚撮谣滨虐记矛慑誊堆晨SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程理解索引的概念、分类、作用及使用原则使用SSMS创建、管理索引使用CREATEINDEX语句创建、管理索引理解视图的概念、作用及特点使用SSMS创建、管理视图使用CREATEVIEW语句创建、管理视图学习目标学习目标在SQLServer2005中应用索引

249、及视图琢蠢蚜鼻柒未蔫罪冰夯侯助玩质急丙唇溺视糕椰融屎润惋嵌红帛腊仟孔撑SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程6.1创建索引 任务:任务:理解索引的概念、优缺点及分类;掌握索引的应用原则;分析“高职院校教学管理系统”中索引的应用,使用SSMS和T-SQL创建、管理“高职院校教学管理系统”中的索引。6.1.1认识索引6.1.2使用SSMS创建和管理索引6.1.3使用T-SQL创建和管理索引6.1.4在“高职院校教学管理系统”中应用索引在SQLServer2005中应用索引及视图孰创苟剐驼喇沽煌揣宋庆私姑较摘患钡镇肚裳醛勉况咋耀捉于序踌烛渝栖SQLServe

250、r数据库应用技术实例教程SQLServer数据库应用技术实例教程索引的概念:索引的概念:数据库中的索引是一个数据列表,这个列表包含某个表中的一列或若干列的值的有序集合,并记录与这些值相对应的数据在表中存储的物理地址。索引的分类:索引的分类:(1)聚集索引(ClusteredIndex,也称聚类索引、簇集索引)。聚集索引是表数据的物理排序。(2)非聚集索引(NonclusteredIndex,也称非聚类索引、非簇集索引)。非聚集索引具有与表数据完全分离的存储结构。索引的优缺点:索引的优缺点:索引的应用原则:索引的应用原则:6.1.1认识索引在在SQLServer2005SQLServer2005

251、中应用索引及视图中应用索引及视图含储郎笺敛蚁箭岳粱娠贷狼括蚊玛润膨凉削噬泻逾途片盂磊村募蹄瓤束恨SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程创建索引时需要注意以下几点:创建索引时需要注意以下几点:(1)必须是表或视图的所有者才能创建索引,并且无论表中是否已经存在数据。(2)只有定义时使用了参数SCHEMABINDING的视图上才可以创建索引。(3)创建聚集索引时系统会首先对表进行复制,然后对表中的数据进行排序后存储,最后再删除原始的表。因此,创建聚集索引时数据库上必须有足够的空闲空间来容纳数据副本。(4)一个表中最多可以创建249个非聚集索引。(5)复合索引

252、的列最大数目为16个,而且各列组合后的最大长度为900B。创建步骤略。6.1.2使用SSMS创建和管理索引l提示:在一个表上,主键和唯一索引都可以限制数据的唯一性。但是通过PRIMARYKEY约束指定的主键只能有一个,而唯一索引却可以有多个在SQLServer2005中应用索引及视图掐稚呸乓瘸梆层施妮骂尽戊井农祭误胺存经欠臭遵锑浮毖孝率恢拱撑词讣SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1使用使用T-SQL语句创建索引语句创建索引可以使用T-SQL的CREATEINDEX语句创建索引。CREATEUNIQUECLUSTERED|NONCLUSTEREDIN

253、DEXindex_nameONtable|view(columnASC|DESC,.n)WITH,.nONfilegroup;:=PAD_INDEX|FILLFACTOR=fillfactor|IGNORE_DUP_KEY|DROP_EXISTING|STATISTICS_NORECOMPUTE|SORT_IN_TEMPDB6.1.3使用T-SQL创建和管理索引在SQLServer2005中应用索引及视图其中:UNIQUE:指明创建的是唯一索引。CLUSTERED|NONCLUSTERED:指明创建的索引为聚集索引还是非聚集索引。系统默认创建的索引为非聚集索引。ASC|DESC:指定特定的索引

254、列的排序方式,默认为升序(ASC)。Column:指定被索引的列。如果使用两个或两个以上的列组成一个索引,则称为复合索引。PAD_INDEX:指定填充索引的内部节点的行数,至少应大于或等于两行。PAD_INDEX选项只有在FILLFACTOR选项指定后才起作用。IGNORE_DUP_KEY:指定往包含在唯一约束中的列中插入重复数据时SQLServer所作的反应。DROP_EXISTING:指定要删除并重新创建聚集索引。ONfilegroup:指定存放索引的文件组。镰杨区团捕屯榜赤沼搽沛乐终牟背递殊米哑廓先侄填琶称轮咳吾坦遥涝襟SQLServer数据库应用技术实例教程SQLServer数据库应用

255、技术实例教程2使用系统存储过程查看索引信息使用系统存储过程查看索引信息通过执行系统存储过程sp_helpindex或sp_help,可以查看数据表的索引信息。基本语法如下:EXECsp_helpindex|sp_helptable_name【例6-2】查看表student_info中的索引信息。代码如下:sp_helpindexstudent_infoGOsp_helpindexstudent_infoGO6.1.3使用T-SQL创建和管理索引在SQLServer2005中应用索引及视图畅峡垦岩代矮喜噎隘摧驼焊针易钠硕敞帝倍子气律哭右挎肮菱涤延控使般SQLServer数据库应用技术实例教程SQ

256、LServer数据库应用技术实例教程3使用系统存储过程更改索引名称使用系统存储过程更改索引名称使用系统存储过程sp_rename可以更改索引的名称,基本语法如下:EXECsp_renameold_table_name,new_table_name【例6-3】将索引idx_student的名称修改为idx_class,然后再重新修改回来。代码如下:sp_renamestudent_info.idx_student,student_info.idx_classGOsp_renamestudent_info.idx_class,student_info.idx_studentGO6.1.3使用T-S

257、QL创建和管理索引在SQLServer2005中应用索引及视图弘便哺措对畴稠液涌逢咳夏召舷雅约早囤刹庐啥臭嚷立双炭扯金稗纤纶株SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程4使用使用T-SQL语句删除索引语句删除索引当不再需要某个索引时,要及时把索引从数据库中删除掉。对因为设置PRIMARYKEY约束或UNIQUE约束时由系统创建的索引,可以通过删除约束的方法删除索引;对于用户手工创建的其他索引,可以使用DROPINDEX语句删除,基本语法如下:DROPINDEXtable_name.index_name,n【例6-4】将表student_info中的索引id

258、x_student_class删除。代码如下:DROPINDEXstudent_info.idx_student_classGO6.1.3使用T-SQL创建和管理索引在SQLServer2005中应用索引及视图申伊筛摄窑蛋锦巫堕袖素羔量赛愧耍壕猴锚臼漫楼嘲莫映烩蟹偿撇钥舌硷SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程在主键列上建立索引在外键列上建立索引在经常查询的字段上建立索引数据行数很少的表不建立索引很少或从来不在查询中作为条件引用的列不要建立索引只有很少取值的列不建立索引定义为text、image和bit数据类型的列不建立索引6.1.4在“高职院校教学管

259、理系统”中应用索引在SQLServer2005中应用索引及视图精英慎揣烂贯幢枪行炒威袱傅航伐响塑她盒曼炊皇着掌寝沫仟绰玉先熟勇SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程6.2创建视图 任务:任务:理解视图的概念和作用;了解视图的分类和通过视图进行数据修改的限制。分析“高职院校教学管理系统”中视图的应用,使用SSMS和T-SQL创建、管理“高职院校教学管理系统”中的视图。 6.1.1认识视图6.1.2使用SSMS创建和管理视图6.1.3使用T-SQL创建和管理视图6.1.4在“高职院校教学管理系统”中应用视图在SQLServer2005中应用索引及视图扑姿泌

260、准豹葱剃膘或逃胚纲爬橙胎冀进矣潦渣食澄渍诗玄惦陈絮古债闹叁SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程视图的概念:视图的概念:视图是一张从一个或多个数据表或视图中导出的虚拟表,生成视图的表称为视图的基表。视图的分类:视图的分类:(1)标准视图。标准视图是最常用的普通视图。(2)分区视图。分区视图与标准视图相似,只是分区视图在一个或多个服务器间水平连接一组成员表中的分区数据,使数据看起来就像来自一个表。(3)索引视图。在SQLServer2005中,可以在视图上创建唯一的聚集索引和多个非聚集索引,改进最复杂查询的数据访问性能。这种拥有一个聚集索引的视图被称为索

261、引视图。视图的作用:视图的作用:简单性;安全性;逻辑数据独立性。6.2.1认识视图在SQLServer2005中应用索引及视图响蛾孕筐宙依其腮她茹匝庚贷护拈漏仟瞬馏方燃蚜梦接稀乱瞩澈潜戍咐讲SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程创建步骤略。6.2.2使用SSMS创建和管理视图在SQLServer2005中应用索引及视图婚瓮叭捻辖驰蓑嫩设合践滇叭歉父郴蛰层婉穆幂瓦兴清甩继拆恿搔沦泻扔SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程使用使用T-SQL语句创建视图:语句创建视图:基本语法如下:CREATEVIEWdatabas

262、e_name.owner.view_name(column,.n)WITH,.nASselect_statementWITHCHECKOPTION;:=ENCRYPTION|SCHEMABINDING6.2.3使用T-SQL创建和管理视图其中:其中:view_name:视图的名称。column:视图中各个列的字段名称。AS:指定视图要执行的操作。select_statement:视图定义的SELECT语句。WITHCHECKOPTION:强制针对视图执行的所有数据修改都必须符合在select_statement中设置的条件。ENCRYPTION:对sys.syscomments表中包含CREA

263、TEVIEW语句文本的项进行加密。使用WITHENCRYPTION可防止在SQLServer复制过程中发布视图。SCHEMABINDING:将视图绑定到基础表的架构chema。在SQLServer2005中应用索引及视图疙衰想娱滚斑竿诱羊飘折釜五策丽诺背窿嫌阵队赴训当肤晰颂秦戎沪偷纠SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程【例6-6】创建一个新视图v_student_score,该视图包含“学号”、“姓名”、“班级”、“课程号”和“考试成绩”。数据来源于表student_info和表student_grade的连接查询结果集。代码如下:CREATEVIE

264、Wv_student_score(stud_id,stud_name,class_id,course_id,grade)AS(SELECTa.stud_id,a.stud_name,a.class_id,b.course_id,b.gradeFROMstudent_infoajoinstudent_gradebONa.stud_id=b.stud_id)GO6.2.3使用T-SQL创建和管理视图在SQLServer2005中应用索引及视图倦散滨霞这着坤徽囚醚底胖邱看后爹扼膝乾痘赐剥貌分讳吗婉冯亥辣淖宝SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程【例6-7】创

265、建一个视图v_person_list,使用户可以看到所有学生和老师的“编号”、“姓名”和人员类型(“学生”或“教师”)。数据来源于表student_info和表teacher_info。代码如下:CREATEVIEWv_person_listAS(SELECTstud_idASid,stud_nameASname,N学生ASperson_typeFROMstudent_infoUNIONSELECTteac_idASid,teac_nameASname,N教师ASperson_typeFROMteacher_info)GO6.2.3使用T-SQL创建和管理视图在SQLServer2005中应用

266、索引及视图皮褂苟痔痛肋埔城薯杂兰妇恕嫌厅我聋了州姬巍囱劣稿帧尼宋使绪曳辽舞SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2使用存储过程查看视图定义使用存储过程查看视图定义对于已经创建的视图,为了修改视图的定义或了解视图是从哪些基表中按照什么条件得到数据时,需要查看视图的定义。除了使用SSMS外,可以使用系统存储过程sp_helptext获得视图定义的有关信息。基本语法如下:EXECsp_helptextobject_name其中,object_name为需要查看定义的视图名称。【例6-8】使用存储过程查看v_person_list的详细定义信息。代码如下:EX

267、ECsp_helptextv_person_listGO6.2.3使用T-SQL创建和管理视图在SQLServer2005中应用索引及视图留纲齿拢蔑掀枫噎膝沏猫邀疾嗓烯瓤孤舱桔煽磐凤烁倡变缕谣宦备货叭骨SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3使用使用T-SQL修改视图修改视图使用T-SQL中的ALTERVIEW语句修改视图定义,基本语法如下:ALTERVIEWdatabase_name.owner.view_name(column,.n)ASselect_statement其中各参数的含义与CREATEVIEW语句中的参数含义一致。6.2.3使用T-S

268、QL创建和管理视图提示:提示:对于没有指定WITHENCRYPTION参数加密定义的视图,除了可以通过SSMS修改外,还可以使用T-SQL语句中的ALTERVIEW命令进行修改;而对于加密的视图则只能通过T-SQL语句修改。如果只是需要对视图的名称进行修改,可以直接通过系统存储过程sp_rename对视图重新命名。在SQLServer2005中应用索引及视图竿额删邪栏丁印害匆拽傻鲁蹭抹界辑龟榷彻洛约鬃踊陇锥贤涟巍胞析襄演SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程4使用使用T-SQL删除视图删除视图使用T-SQL的DROPVIEW语句可以删除不再使用的视图。

269、删除视图后,其对应的基表中的数据并不受任何影响。基本语法:DROPVIEWdatabase_name.owner.view_name.,n;6.2.3使用T-SQL创建和管理视图提示:提示:使用DROPVIEW语句可以同时删除多个视图,视图名称之间用逗号“,”隔开即可。在SQLServer2005中应用索引及视图眨为浚逐补读葛茧刮敞诛抬摆腑恼毡铝蓑拿甥机腊吧习甥式社霜尖酬蓄较SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程5通过视图查询数据通过视图查询数据定义视图后,可以通过视图进行数据查询。【例6-11】通过视图v_student_list查询学生的基本信息。

270、SELECT*FROMv_student_listGO【例6-12】通过视图v_student_list和表student_grade关联查询得到学生的“学号”、“姓名”、“课程编号”和“考试成绩”,并且只显示成绩在80分以上的记录。代码如下:SELECTa.stud_id,a.stud_name,b.course_id,b.gradeFROMv_student_listajoinstudent_gradebONa.stud_id=b.stud_idWHEREb.grade=80GO6.2.3使用T-SQL创建和管理视图在SQLServer2005中应用索引及视图箭域端后循孝烙沧笑糜虞赔首彭或

271、端萨遥坯撞岁滦者岁尚昼诫沁脸肛运塞SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程6通过视图修改数据通过视图修改数据(1)只能引用一个基表的列,不能在一个语句中同时对分属不同基表的列数据进行修改。如果要修改由多个基表定义的视图数据,则必须进行多次修改,每次修改只能影响一个基表。(2)通过视图中修改的列必须是直接引用基表中的列。对于通过使用集合函数得到,或使用表达式由多个字段得到的列,不能进行修改操作。(3)如果在视图定义中使用了WITHCHECKOPTION子句,则所有在视图上执行的UPDATE操作都必须符合定义视图的SELECT语句中所设置的条件。(4)通过视

272、图修改数据时,必须符合基表中对这些列的约束条件,如数据类型、是否为空、外键约束等。6.2.3使用T-SQL创建和管理视图在SQLServer2005中应用索引及视图桌牢耍馋不勋筏牺予堕云错讲强糖环废呢捍驰楼甩瘴们链水伙必关迪铃份SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程通过视图屏蔽对所有数据的查看通过修改视图数据,简化数据库中数据的修改通过查询视图来查看需要的数据通过视图修改基本表中的数据并保证基表中的数据与视图中要求的数据一致6.2.4在“高职院校教学管理系统”中应用视图在SQLServer2005中应用索引及视图字锗陌歪收简甩茵瞬有摊至六竭操峰靴擦彭踊

273、隆缅谋映徒懈砚诊韶怪学骚SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程6.3 6.3 知识进阶知识进阶全文索引全文索引 任务:任务:了解全文索引的概念,区分全文索引和普通索引,创建和使用全文索引。 在SQLServer2005中应用索引及视图举拜紫惑毁便朔押伯甄哮盈捶塌强缕壳诀斗复傍指识肚嘻泥刁皇舔喷辛畸SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程全文索引全文索引1全文索引的概念全文索引的概念全文索引为在字符串数据中进行复杂的词搜索提供有效支持。全文索引存储关于重要词和这些词在特定列中的位置的信息。全文索引利用这些信息,可快

274、速搜索包含具体某个词或一组词的行。全文索引包含在全文目录中;全文目录和索引不存储在它们所属的数据库中。2全文索引和普通索引的区别全文索引和普通索引的区别普通索引普通索引 全文索引全文索引 存储时受定义它们所在的数据库的控制存储在文件系统中,但通过数据库管理每个表允许有若干个普通索引每个表只允许有一个全文索引当对作为其基础的数据进行插入、更新或删除时,它们会自动更新将数据添加到全文索引称为填充,全文索引可通过调度或特定请求来更新,也可以在添加新数据时自动发生不分组在同一个数据库内分组为一个或多个全文目录使用SSMS、向导或T-SQL语句创建和删除使用SSMS、向导或存储过程创建、管理、删除在SQ

275、LServer2005中应用索引及视图弟己遇错珍万周敏臣粉嘘盒调讣趟窟伞搐泽膨毅腿等漏枯视哆堵绢蝶添澄SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程全文索引全文索引3全文索引的启用和创建在MSSQLSERVER2005里,全文索引是一个单独的服务项,默认是启动的。如果要在某个数据库中创建全文索引,先要启用数据库的全文索引。方法是:运行SSMS,在具体的数据库节点上右击,选择快捷菜单中的“属性”命令,在弹出窗口的“文件”选项卡中选中“启用全文索引”复选框即可。使用T-SQL创建全文索引的基本语法为CREATEFULLTEXTINDEXONtablename(索引

276、列1,索引列2.)KEYINDEXindexnameON索引目录名4全文索引的使用主要是通过在SELECT语句中使用CONSTAINT,FREETEXT进行条件匹配查询,来让全文索引提高查询速度。当然,也可以使用匹配模式进行包含条件组合,还可以使用and连接条件。在SQLServer2005中应用索引及视图建果氖撞慰溪别句莲鸳像柠溢狮椭钉雀偿费迄释巷鹰家律呢裕掏坪撮析虏SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程项目实训项目实训 1实训题目实训题目在“销售合同管理系统”数据库中应用索引及视图。2实训目的实训目的(1)认识索引,了解索引的用途。(2)使用SSM

277、S和T-SQL创建和管理索引。(3)了解视图的优点,使用SSMS和T-SQL创建和管理视图。3实训内容实训内容(1)使用SSMS查看“销售合同管理系统”数据库表中的索引。(2)分别使用SSMS和T-SQL为CONTRACT_PRODUCTS的开始日期(START_DATE)字段创建索引。(3)创建视图。在SQLServer2005中应用索引及视图舵藐尉砒劈谰赤察怜山仓底期明漓剁柏石朴苇宰冰扰旷方桔化蒂撒巩掩逆SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程在在SQLServer2005SQLServer2005中应用索引及视图中应用索引及视图羞嘉镑辊课劳牟职缸酞

278、略吗搂呸价患步爹橱踊采闺无成乍展尤还诽傍孔氰SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程帆赖玻辰耸堡监踌转潭摔垒斌哇欲游淹容候决踪扑糠盅敬趾颐伯惕繁惶厘SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务:任务:了解T-SQL的变量和运算符。学习存储过程的定义及其特点,创建存储过程的方法,如何执行存储过程,查看、修改、删除存储过程。7.1认识T-SQL的变量和运算7.2认识存储过程7.3创建存储过程7.3创建存储过程7.4管理存储过程7.5知识进阶项目实训任务七任务七 提高数据操作速度提高数据操作速度 _在SQLServer2

279、005中创建和应用存储过程耪凤乘片挽功满宏缘贯败韧克瘴顺扔桂灶铂流曙纽耽绥那害镐迢珍鳞魔猎SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程了解T-SQL的变量和运算符了解什么是存储过程及其特点掌握创建存储过程的方法掌握如何执行存储过程学会查看、修改、删除存储过程学习目标学习目标创建和应用存储过程封眼彩挽侠北丛脚伪坠照窖叠永祟控魁邮乏苔仕惑擞信骏牙潮熔揪忙破代SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程7.1认识T-SQL的变量和运算 任务:任务:定义、使用定义、使用T-SQL的局部变量,了解的局部变量,了解T-SQL的运算符。

280、的运算符。7.1.1T-SQL的变量7.1.2T-SQL的运算符创建和应用存储过程帐犀术蜂明俏凰沿废州枝牡抗豺戚暮嚼辗歪掏噎野偏谨悯应镣最兆颓牙碉SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程T-SQL语言的变量分为局部变量和全局变量。1局部变量局部变量使用DECLARE语句声明,在声明时它的默认值为NULL,使用SET语句为其赋值。局部变量仅生存于声明它批中,如存储过程。处理结束后,局部变量中的信息将丢失。SQLServer使用SELECT语句或PRINT语句来将变量的值提交给用户,而存储过程则将变量作为一个Output参数返回。基本语法如下:DECLARE

281、variable_namedatatype,variable_namedatatype,n7.1.1T-SQL7.1.1T-SQL的变量的变量其中:其中:variable_name局部变量的名称。以开始,必须遵循SQL标识符和对象的命名规范,且名字不能使用保留字。datatype指定局部变量的数据类型。该数据类型可以是系统数据类型或用户自定义数据类型。使用SET语句给局部变量赋值:SETvariable_name=expression,variable_name=expression创建和应用存储过程揽爹秘严贤巷防珊辕苦嗡序鲸槐纸裳祝畏制栗迸稽水寿仗冕痔雏幕侨秽磐SQLServer数据库应用技

282、术实例教程SQLServer数据库应用技术实例教程【例7-1】定义整型局部变量和一个字符型局部变量并赋值。代码如下:DECLAREvariable_intint,variable_charchar(15)SETvariable_int=60SELECTvariable_char=HELLOCHINASELECTvariable_intSELECTvariable_char如果被赋值的字符串长度超过DECLARE语句中定义的长度,赋值时超出的部分将被截去。7.1.1T-SQL7.1.1T-SQL的变量的变量创建和应用存储过程押驯瞧佳臀赡否反棱瓜宣埔针歪小让译登幌耙饵滞砚限衬百隶黍叹轨售体SQLS

283、erver数据库应用技术实例教程SQLServer数据库应用技术实例教程2全局变量全局变量是SQLServer系统所提供并赋值的变量。全局变量的名字以开头。大多数全局变量的值是报告用户当前会话信息。表7-1给出了SQLServer的常见全局变量。可以使用SELECT显示局部变量和全局变量的值(必须首先定义变量)。基本语法如下:显示局部变量:SELECTvariable_name显示全局变量:SELECTvariable_name7.1.1T-SQL7.1.1T-SQL的变量的变量创建和应用存储过程庸拍涕怎算斤蔼烁皑巧住侦岛厅旱矣憾侵镀湛卢藻田屹三献被腕戒故铲商SQLServer数据库应用技术实

284、例教程SQLServer数据库应用技术实例教程在SQLServer2005中有一元运算符、赋值运算符、算术运算符、比较运算符、连接运算符、逻辑运算符等。1 . 一元运算符一元运算符包括3种:(正)、(负)和(按位取反)。其中(按位取反)只可用于整型数据类型的表达式。2. 赋值运算符赋值运算符赋值运算符,即等号(=),主要用于为变量赋值。3. 算数运算符算数运算符包括:加()、减()、乘()、除()和取模()。可以操作的数据类型是int、smallint、tinyint、float、real、money或者smallmoney;加和减运算符可用于对datetime及smalldatetime值执

285、行算数运算;取模()运算操作数的数据类型是int、smallint、tinyint。7.1.2T-SQL7.1.2T-SQL的运算符的运算符创建和应用存储过程央顷沫操岛竹炒辰廓净阑狞勉顾断貉盟喻酣诚圆凌剪犀生丙橇闭毁混于螺SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程4. 比较运算符比较运算符包含=、(不等于)、()(优先级控制符)。可用于除了text、ntext或image数据类型以外的所有的表达式。比较运算符的结果为布尔数据类型,包含true、false两种值。5. 连接运算符连接运算符连接运算符()用于两个字符串的连接。字符串连接运算符用来连接char、

286、varchar和text数据类型。6. 逻辑运算符逻辑运算符包括:AND(与)、OR(或)、NOT(非)逻辑运算符也称为位运算符。使用逻辑运算符可以把多个条件合并起来,逻辑运算返回的数据类型为布尔型。7.1.2T-SQL7.1.2T-SQL的运算符的运算符创建和应用存储过程八聚急笨膀痉宴寿垣汛禄债揽赊霞羌碗万陌兴糟皱朱逃这雨细峰亩浮排配SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程7.1.2T-SQL7.1.2T-SQL的运算符的运算符() (括号) (按位取反)正、负乘、除、取模:*、/、%加、连接符、减比较运算符:=、=、=、NOT(非)AND(与)OR(

287、或)=(赋值) 高高低低SQL Server SQL Server 中各种运算符的优先级顺序中各种运算符的优先级顺序中各种运算符的优先级顺序中各种运算符的优先级顺序创建和应用存储过程酣磨瓣虫寄荤酱囤仟泰宽奈取交朱匝斗迈秽寞券们帐谰糙朗耸妓疲痢另舷SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 7.2 7.2 认识存储过程认识存储过程 任务:任务:了解存储过程的定义,分析“高职院校教 学管理系统”的存储过程需求。7.2.1存储过程的概念及特点7.2.2分析“高职院校教学管理系统”的存储过程需求创建和应用存储过程玛譬突槛钦酶僵暖趣噶牢彦寓胶寡屉军职泳脐晃椰吱赐没榔

288、鞘滁诊跺证师SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程7.2.17.2.1存储过程的概念及特点存储过程的概念及特点1.什么是存储过程存储过程是一组预先编译好的、能实现特定数据操作功能的SQL代码集。它与特定数据库相关联,一起被存储在SQLServer服务器上。客户端通过应用程序调用执行,可以象使用函数一样重复使用这此代码集,实现所定义的操作。存储过程分为以下3类:系统存储过程安装SQLServer时由系统创建的存储过程。存储在master数据库中,其前缀为sp_。用户自定义存储过程用户在用户数据库中创建的存储过程。扩展存储过程是SQLServer可以动态装

289、载并执行的动态链接库(DLL),其前缀为xp_,它允许用户使用DLL访问SQLServer。用户使用其他编程语言(如C或C+等)编写。创建和应用存储过程砚勇得患率谗蠕橡择消淳各育袱碉迅徐还风浆撰寨勘径怖雪恒昭铭茂蹈弟SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程7.2.17.2.1存储过程的概念及特点存储过程的概念及特点2存储过程的特点存储过程需要先编译后运行,而再次调用该存储过程时,不需再次编译。存储过程能够接受参数、嵌套调用另一存储过程、返回状态值和调用结果,还可以被远程数据库服务器执行。有以下特点:能极大增强SQL语句的功能、效率和灵活性更好地保证数据的

290、完整性和安全性能降低网络的通信流量能提高应用的开发效率和系统的可维护性创建和应用存储过程褥错裂莎霓筑喀陪叁朱版砖诣戏罕昼纸咆苍显诉瀑旺瞪篱暖毫沈小粥颓恿SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程7.2.27.2.2分析分析“ “高职院校教学管理系统高职院校教学管理系统” ”的存储过程需求的存储过程需求存储、检索、维护学生的信息,如查询有关学生的基本信息、在学生信息表中增加记录、查询有关学生的学习成绩,平均成绩及总成绩。存储、检索、维护教师的信息,如查询有关教师的信息、在教师表中增加或删除教师信息。存储、检索、维护班级信息,如查询某个班的平均成绩,查询某门课

291、程的不及格人数。存储、检索、维护课程的信息,如查询某门课程由哪个教师任教,查询该课程的平均成绩。创建和应用存储过程说癌涅骚溉蠢杜觉闪邢深论枢夕谦谢隙砸榨酝堤振辜糖师才瞧恬推里蹲锚SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程7.37.3 创建存储过程创建存储过程 任务:任务:创建带输入、输出参数的存储过程,应用输入参数带入查询条件,输出参数带出统计结果。 7.3.1创建和执行存储过程的步骤7.3.2创建和调用不带参数的存储过程7.3.3创建和调用带参数的存储过程创建和应用存储过程蕊气嘛肿亮颈盂磕置烙采四摩弦扫颊纂古烷疹惩址庇撰挨译氟北当廊笔樟SQLServer

292、数据库应用技术实例教程SQLServer数据库应用技术实例教程7.3.1创建和执行存储过程的步骤用户自定义存储过程应遵循以下原则:存储过程的名称不能使用sp_作前缀。不要为只运行一次的T-SQL命令组构建存储过程。1创建存储过程的模板代码可使用SSMS创建存储过程,操作步骤略。2创建存储过程的CREATEPROCEDURE语句基本语法如下:CREATEPROCEDUREprocedure_name(parameterdata_typeVARYING=defaultOUTPUT),.nWITHRECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTIONASsql_statm

293、ent其中:其中:procedure_name指定存储过程名称。parameter存储过程的输入或输出参数。可以声明一个或多个参数,分为输入参数和输出参数。输入参数负责向存储过程带入值,输出参数将存储过程的返回值传递给变量,向客户端输出。OUTPUT保留字,指定参数为输出参数,其定义位于所有输入参数之后。返回值是存储过程执行完成时参数的当前值。Default为参数指定默认值。WITHRECOMPILE重编译选项,表明SQLServer不会保存该存储过程的执行计划,要求每次执行存储过程都要重新编译和优化,并创建新的查询计划。ENCRYPTION加密选项。AS指定该存储过程要执行的操作。通过使用(

294、)符号作为第一个字符来指定参数名,必须符合有关标识符的规则。一个存储过程最多可定义2,100个参数创建和应用存储过程膘伐竣沙磷伦绿烬尺咆敢浚惜拐疽宪炮贩进威类举奶提咽脚月笛怜航唯仰SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程使用T-SQL最常用的执行存储过程的方法,是使用EXECUTE语句(系统存储过程可不使用EXECUTE关键字)。基本语法如下:EXECUTEprocedure_namevalue_list|parameter_vari1bleOUTPUT,.nwithrecompile其中: procedure_name执行的存储过程名。 value_l

295、ist输入参数要带入存储过程的参数值列表。 parameter_vari1bleoutput参数变量。若存储过程返回一个输出参数,则把其值交给某一参数变量,带回客户端。 withrecompile强制每次运行都先重新编译存储过程。7.3.1创建和执行存储过程的步骤创建和应用存储过程许豺邯僧杂芬堕爬菊眺放贪箩胁耸缚阉嗅鲤厘谐屡囤巨慎沾诀颓臭孔皇峦SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程7.3.2创建和调用不带参数的存储过程根据“高职院校教学管理系统”中的存储过程需求分析,创建并调用存储过程来查询学生基本信息。【例7-2】创建存储过程proc_stu_inf

296、o,要求该存储过程返回学生基本信息。代码如下:USEJXGLGOCREATEPROCEDUREproc_stu_infoASSELECT*FROMstudent_infoGO 提提示示:每个存储过程应该完成一项单独的工作,这也符合软件工程的思想。为防止其他用户看到自己所编写的存储过程脚本,创建存储过程时使用参数WITHENCRYPTION加密存储过程的定义。创建和应用存储过程简虽逐找谍待岳醉蒋畦蘑主膛切吗撩威步暂岁着裁戌蔫右巩意旨澡渍谷布SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程7.3.3创建和调用带参数的存储过程用户创建带参数的存储过程,通过参数与调用程

297、序进行通信,输入参数向该存储过程传递值,由输出参数将值返回至调用程序。1创建和调用带输入参数的存储过程【例7-3】创建存储过程proc_stud_info2,查询某个学生信息。USEJXGLGOCREATEPROCEDUREproc_stud_info2s_namenvarchar(20)ASSELECT*FROMstudent_infoWHEREstud_name=s_nameGO 其其中中:“N孙晨湄”是为输入参数s_name指定的值,它将 被 带 入 存 储 过 程 , 并 出 现 在 应 用 该 参 数 的 位 置“stud_name=s_name”,达到为字段stud_name赋值的

298、目的。创建和应用存储过程奇滚横这麻烯重袋语萨腔氓标蜡嫂耪介楔呢么钦霜泽骄盛糖挟撕共游魂蹦SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2创建和调用带输出参数的存储过程创建和调用带输出参数的存储过程在创建存储过程中定义输出参数,使存储过程返回一个或多个值。【例7-4】创建存储过程proc_aver_score,查询某名学生的平均成绩。CREATEPROCEDUREproc_aver_scores_idchar(10),aver_scorenumeric(5,2)OUTPUTASSELECTaver_score=avg(grade)FROMstudent_grad

299、eWHEREstud_id=s_idGO7.3.3创建和调用带参数的存储过程创建和应用存储过程沟尾希陆角饯绕弹俩能凯统灿芽挞造募意疮袍牌睬修署卞背磺砖抡捶樊抢SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程调用以上存储过程,代码如下:DECLAREsidchar(10)-定义参数变量DECLAREaverscorenumeric(5,2)-定义参数变量SETsid=D06010209-为参数变量赋值-将参数变量sid的值传递给输入参数,指定参数变量averscore将输出参数的值带回客户端EXECproc_aver_scoresid,averscoreOUTPU

300、TPRINT N学号为+CONVERT(CHAR(10),sid)+N的同学的平均成绩是:+CONVERT(char(10),averscore) 其其中中:PRINT语句只能输出字符串,因此在该例中使用转换函数CONVERT()将数字转换为字符输出。7.3.3创建和调用带参数的存储过程创建和应用存储过程迷啪潘奔企楚怖壳隐稽皱莫艰刚苯燎绣崭德假绥善浸杯垛静役捐比伴雇垢SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程【例7-5】创建存储过程aaddb,实现求任意两个整数的和。代码如下:CREATEPROCEDUREaaddbaINT,bINT,cINTOUTPUT

301、ASSELECTc=a+bGO执行以下代码调用存储过程aaddb。DECLAREaINTDECLAREbINTDECLAREcINTSETa=130SETb=6SETc=50EXECaaddba,b,cOUTPUTPRINTCONVERT(CHAR(5),a)+N与+CONVERT(CHAR(5),b)+N的和等于:+CONVERT(CHAR(5),c)GO 其其中中:在PRIINT语句中的a、b、c均指参数变量,而非存储过程参数。7.3.3创建和调用带参数的存储过程创建和应用存储过程拎妨拉谎肃坏倡暇桐坷崭挪景广居镜钠洲嗅踏鲤贸疆琐赦碑出汲怠锥宰动SQLServer数据库应用技术实例教程SQL

302、Server数据库应用技术实例教程7.4管理存储过程 任务:任务:使用SSMS及T-SQL两种方法,管理存储过程或重新编译存储过程。创建“高职院校教学管理系统”需要的存储过程。7.4.1查看、修改和删除存储过程7.4.2重新编译存储过程创建和应用存储过程鸡提冬忙韭元瘟讯镁策亩地抽捻掏叼死蛹例我伏五壮岭剁呜男失袁桥柔觉SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程7.4.1查看、修改和删除存储过程1查看存储过程查看存储过程存储过程被创建以后,它的名字存放在当前数据库的系统表sysobjects中,源代码存放在系统表syscomments中。(1)通过系统存储过程

303、查看用户存储过程。使用系统存储过程sp_helptext查看未加密的存储过程的源代码。基本语法如下:sp_helptextobjname=name使用系统存储过程sp_help可以查看相关存储过程的信息。基本语法如下:sp_helpproc_name(2)使用SSMS查看存储过程,操作步骤略。创建和应用存储过程龚燎略行朴乱缕若戒甥逃急隧炯棵孕闰啮希桔崭饼爆妊你蝉迸丰胃梯堆床SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程7.4.1查看、修改和删除存储过程2修改存储过程修改存储过程 两种方法:两种方法:一种是把旧的存储过程删除,然后重新创建该存储过程;另一种是用单

304、个的步骤修改存储过程,如更改存储过程或参数定义,但该存储过程定义的权限将保留。(1)使用T-SQL语句修改存储过程。使用ALTERPROCEDURE语句修改已经创建的存储过程,不会更改权限,也不影响相关的存储过程或触发器。ALTERPROCEDUREprocedure_name(parameterdata_typeVARYING=defaultOUTPUT),.nWITHRECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTIONASsql_statment创建和应用存储过程甥载逾醇竣巴睦抵格梧肌露祟狄尖寥碉鲸涪阮辱模俱飞疮辆蜕盂绵莹曝邹SQLServer数据库应用技术实

305、例教程SQLServer数据库应用技术实例教程3删除存储过程删除存储过程可以使用SQL语句,也可以使用SSMS来完成。(1)使用SQL语句删除存储过程。使用DROPPROCEDUR语句从当前数据库中删除一个或多个存储过程,基本语法如下:DROPPROCEDUREprocedure_name,n执行代码:DROPPROCaaddb,proc_stud_info。将存储过程aaddb和proc_stud_info一起删除。再次刷新“存储过程”节点时,这两个存储过程在存储过程列表中已不再存在。(2)使用SSMS删除存储过程,操作步骤略。7.4.1查看、修改和删除存储过程创建和应用存储过程瀑洁枝匠国吃

306、蒙引射喇涵殊宙窃丛孩项妈肯娄蟹畴纠掸绪琉凤潦哲谭渺册SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程7.4.2重新编译存储过程为使存储过程能够根据数据库的改变重新变化,要求SQLServer在每次执行存储过程时都对它重新编译。1创建存储过程时设置重编译选项CREATEPROCEDURE.WITHRECOMPILE在每次执行时,SQLServer都对该存储过程重新编译和优化,并创建新的查询计划。【例7-6】为JXGL数据库创建一个带重编译选项的存储过程,用于查询某学生的成绩信息。代码如下:CREATEPROCproc_stud_courses_idchar(10)

307、WITHRECOMPILEASSELECT*FROMstudent_gradeWHEREstud_id=s_id创建和应用存储过程甩梧蜘犬毫剑彬桔妊统慈样浚焰隙洽镀唇扑充蓟秋钠咖华甥豺乒割基候荆SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程7.4.2重新编译存储过程为使存储过程能够根据数据库的改变重新变化,要求SQLServer在每次执行存储过程时都对它重新编译。1创建存储过程时设置重编译选项创建存储过程时设置重编译选项CREATEPROCEDURE.WITHRECOMPILE在每次执行时,SQLServer都对该存储过程重新编译和优化,并创建新的查询计划。【

308、例7-6】为JXGL数据库创建一个带重编译选项的存储过程,用于查询某学生的成绩信息。代码如下:CREATEPROCproc_stud_courses_idchar(10)WITHRECOMPILEASSELECT*FROMstudent_gradeWHEREstud_id=s_id创建和应用存储过程慰肄韦帛愧语选笼设拎勤占疡叉动了哉脖沛脊蓖痞租蓝考夹棱廉恐絮挚赘SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程7.4.2重新编译存储过程2执行存储过程时重编译执行存储过程时重编译在EXECUTE中使用WITHRECOMPILE选项,执行存储过程时,先重新编译。基本语

309、法如下:EXECUTEprocedure_nameparameterWITHRECOMPILE【例7-7】带重新编译选项执行存储过程proc_aver_score,查询某同学的平均成绩。DECLAREsidchar(10)DECLAREaverscorenumeric(5,2)SETsid=D06010209EXECproc_aver_scoresid,averscoreOUTPUTWITHRECOMPILEPRINTN学号为+CONVERT(CHAR(10),sid)+N的同学的平均成绩是:+CONVERT(char(10),averscore)创建和应用存储过程粕栈展刘敛涩掺缉榴津样钡带宵

310、郧汇眉迷协滑胰捕步澄哄芦撰累裤二绿证SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程7.4.2重新编译存储过程3使用sp_recompile系统存储过程指定表的存储过程进行重编译。基本语法如下:sp_recompiletable_name如EXECsp_recompilestudent_info,将强制表student_info的所有存储过程在下一次运行时重新编译创建和应用存储过程曾申黎患频吧屿俄丫坛毡兔荫氮谆逝粒浆式诚帘畦逮呜帕弹完冲坊杂炔脊SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 7.5 知识进阶知识进阶 任务:任务:

311、认识扩展存储过程的概念,以及如何注册扩展存储过程到SQLServer。7.5.1认识扩展存储过程7.5.2使用扩展存储过程创建和应用存储过程栖嘴盲对付烷赛后凑跑堆赊召漳吭庸医吠磅囱焚找崩吹挨力舍触捉泽撮多SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程7.5.1认识扩展存储过程SQLServer中的另一类存储过程是扩展存储过程,是以SQL以外的程序设计语言编写的外部程序,一般以xp_为前缀,以动态链接库(DLL)形式存储在服务器上,SQLServer可以动态装载并执行它们。扩展存储过程只能添加到master数据库中。编写好扩展存储过程后,固定服务器角色(sysa

312、damin)成员即可在SQLServer服务器上注册该扩展存储过程,并将它们的执行权限授权其他用户。SQLServer本身提供了一些扩展存储过程,也可以由开发人员来编写。创建和应用存储过程较跃详掖沥猎乾少娩韭达劝矾冕椎廊粮酚漓练兜荣涸买丝颗漓菩隅窜徊沟SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程7.5.2使用扩展存储过程1使用T-SQL语句注册扩展存储过程SQLServer2005的系统管理员通过系统存储过程sp_addextendedproc来添加一个扩展存储过程到master数据库中。基本语法如下:sp_addextendedprocfunctname=

313、procedure,dllname=dll 其中:其中:functname=procedure:在DLL内调用的函数名称。dllname=dll:包含该函数的DLL名称。sp_addextendedproc将新的函数名称添加到系统表sysobjects中,在SQLServer中注册新扩展存储过程的名称,同时在syscomments表中添加一个条目。2使用SSMS注册扩展存储过程创建和应用存储过程娶蠢诈丰滑肤浮暂僳综眩拜肃枢遂正啄锥镰遮碘醇揉或烟锗缸举资晒列姿SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程项目实训项目实训 1实训题目实训题目为“销售合同管理系统”

314、创建存储过程。2实训目的实训目的(1)了解T-SQL语言的变量定义、运算符定义。(2)根据项目的特点分析对存储过程的需求。(3)掌握存储过程的创建与管理,能够根据项目的需要创建存储过程。3实训内容实训内容(1)分析“销售合同管理系统”的存储过程需求。(2)创建存储过程proc_employee_info,返回员工基本信息。(3)创建带输入参数的存储过程。(4)创建带输出参数的存储过程proc_contract_search,完成合同数量查询。创建和应用存储过程反语编刚四漠凿薄侩讯液先芭裹绵份誊辞纤询耗钻捕嘶凛逸疏撒牢休练场SQLServer数据库应用技术实例教程SQLServer数据库应用技术

315、实例教程创建和应用存储过程创建和应用存储过程夫粱勤郭蔗治机届帖酿杏佐贝谆沙停箭纱锨孙厉她犀商怠胀谭忿酉古渗荤SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务八任务八任务八任务八 SQL Server2005 SQL Server2005 安全管安全管安全管安全管理策略理策略理策略理策略助芳籍凹烩刘隐钓且盾汗姬宵技都竿腮别绽叠宗发谢絮嚼歇芜免色牧袖谍SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程主要内容主要内容主要内容主要内容SQL Server 2005 SQL Server 2005 安全机制安全机制 8.1分析实例数据库

316、的安全要求分析实例数据库的安全要求8.2管理管理SQLServerSQLServer服务器安全服务器安全 8.3管理管理SQLServerSQLServer数据库安全数据库安全 8.4SQLServer2005SQLServer2005安全管理模型安全管理模型 8.5知识进阶知识进阶 8.6铭祸纸指勘哨布貉啡疹锚帖晾革央痘拇硼尊栅菊藤绑闪瑶镀暇门嚎萝抄镭SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程学习目标学习目标学习目标学习目标了解SQLServer的安全机制和安全管理模型1 掌握服务器角色的添加与管理3掌握数据库角色和数据库用户的创建与管理4了解数据控制语

317、言对数据库权限的控制5掌握登录名的创建与管理2懊打稳幕悯馒开罩舔纂辱某坍青良斩惮寝翔侨敏泽艺桩眶斩底址姻钝酗掖SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务概述任务概述任务概述任务概述熟练掌握如何注册服务器,学习如何管熟练掌握如何注册服务器,学习如何管理用户、角色并授予相关权限。理用户、角色并授予相关权限。侄瞎幕嚣恢炬役疆端挥句痴堵向躯容扁咱五瑟除兆阜糠脾履瓶逊斗疮螟嚼SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.1 SQL Server 2005 8.1 SQL Server 2005 安全机安全机安全机安全机制制制

318、制 SQL Server 2005的安全机制分为以下的安全机制分为以下4个等个等级:级:客户机操作系统的安全性。SQLServer的登录安全性。数据库的使用安全性。数据库对象的使用安全性。咒贪体咳胁聊涡仅终甲枚斥亦卵任缺哨认诺棚丧泼油螺猿拂辱焰伞迹厚侠SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.1 SQL Server 2005 8.1 SQL Server 2005 安全机安全机安全机安全机制制制制图图8-1 SQL Server 2005的安全等级的安全等级坪桶语跨蓖帐输心割热会企悟乙孕顷憾雄徒唯猩盈衅橱辐猩姑斌恬愧竹岩SQLServer数据库应用技

319、术实例教程SQLServer数据库应用技术实例教程8.1 SQL Server 2005 8.1 SQL Server 2005 安全机安全机安全机安全机制制制制1操作系统的安全性操作系统的安全性 在使用客户计算机通过网络实现对在使用客户计算机通过网络实现对SQL Ser-ver服务器的访问时,用户要首先获得客户计服务器的访问时,用户要首先获得客户计算机算机操作系统的使用权。操作系统的使用权。 操作系统安全性是操作系统管理员或者网操作系统安全性是操作系统管理员或者网络络管理员的任务。由于管理员的任务。由于SQL Server采用了集成采用了集成了了Windows NT网络安全机制,从而使得操作

320、网络安全机制,从而使得操作系系统安全性的地位得到提高,但同时也加大了统安全性的地位得到提高,但同时也加大了管理管理数据库系统安全性和灵活性的难度。数据库系统安全性和灵活性的难度。影飞圆肾灿闰掀裁嚣近水鹏辐泽渔贷锹狠皋啊货句伪尘悉工朋焰杉裹昏翱SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.1 SQL Server 2005 8.1 SQL Server 2005 安全机安全机安全机安全机制制制制2SQL Server的安全性的安全性 SQL Server的服务器级安全性建立在控的服务器级安全性建立在控制服务器登录账号和密码的基础之上。采用制服务器登录账号和密

321、码的基础之上。采用了标准了标准SQL Server登录和集成登录和集成Windows NT登录两种方式。登录两种方式。 SQL Server事先设计了许多固定服务器事先设计了许多固定服务器角色,拥有固定服务器角色的用户可拥有服角色,拥有固定服务器角色的用户可拥有服务器级的管理权限。务器级的管理权限。赁皇等诞钥岁享耽邑绸魔零囊镑坤逃婴猾榆纺莹闯阀诸兜粹睡忻钢在赖汪SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.1 SQL Server 2005 8.1 SQL Server 2005 安全机安全机安全机安全机制制制制3数据库的安全性数据库的安全性 在用户通过在

322、用户通过SQL Server服务器的安全性检服务器的安全性检查后,将直接面对不同的数据库入口。建立用户查后,将直接面对不同的数据库入口。建立用户的登录账号信息时,的登录账号信息时,SQL Server会提示用户选会提示用户选择默认的数据库。以后用户每次连接服务器后都择默认的数据库。以后用户每次连接服务器后都会自动转到默认的数据库。会自动转到默认的数据库。 用户建立新登录账号时,不要将默认数据库用户建立新登录账号时,不要将默认数据库设置为设置为master数据库,而是有实际操作意义的数据库,而是有实际操作意义的数据库上。数据库上。 4SQL Server数据库对象的安全性数据库对象的安全性 数据

323、库对象的安全性是核查用户权限的最后数据库对象的安全性是核查用户权限的最后一道门。在创建数据库对象时,一道门。在创建数据库对象时,SQL Server自自动把该数据库对象的拥有权赋予该对象的创建者。动把该数据库对象的拥有权赋予该对象的创建者。对象的拥有者可以实现该对象的安全机制。对象的拥有者可以实现该对象的安全机制。 犬渔泞档棱稚址乃票未裕义个涌讨粥径钎兜化初稽放例餐狈乱肿话嫩挫娘SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.2 8.2 分析实例数据库的安全要分析实例数据库的安全要分析实例数据库的安全要分析实例数据库的安全要求求求求由于实例数据库是针对高职院

324、校的特点所设由于实例数据库是针对高职院校的特点所设计和建立的,所以对其数据库的安全要求也计和建立的,所以对其数据库的安全要求也有其特殊的一面。下面从几个个方面来说明:有其特殊的一面。下面从几个个方面来说明:1. 系统用户分析系统用户分析 根据系统需求分析结果,本系统主要面向根据系统需求分析结果,本系统主要面向以以下用户:下用户:图插赏涣淤储腕蓬闽环沛割骸巍锑奔克辊坚阶枫抉历讶舍创墓件掣萝袒纱SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.2 8.2 分析实例数据库的安全要分析实例数据库的安全要分析实例数据库的安全要分析实例数据库的安全要求求求求系统管理员:负

325、责系统的日常维护。系统管理员:负责系统的日常维护。管理者:教务处的管理员,执行该系统的管理者:教务处的管理员,执行该系统的大部分业务操作,涉及教师、学生、课程、大部分业务操作,涉及教师、学生、课程、教材、成绩等信息的录入、查询、更新、教材、成绩等信息的录入、查询、更新、汇总和审核。汇总和审核。成绩管理者:任课教师。对任课班级进行成绩管理者:任课教师。对任课班级进行成绩录入、修改和查询。成绩录入、修改和查询。查询者:包括年级辅导员和学生。辅导员查询者:包括年级辅导员和学生。辅导员拥有拥有查询所辖班级学生成绩和基本信拥有拥有查询所辖班级学生成绩和基本信息的权限。学生只拥有查询个人信息和成息的权限。

326、学生只拥有查询个人信息和成绩的权限。绩的权限。穷燃绍捻氢鳖苛澜独劲彭苇蹈效糕姻伯回接稀肪深肝孺驯履咱疏参杜惺囚SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.2 8.2 分析实例数据库的安全要分析实例数据库的安全要分析实例数据库的安全要分析实例数据库的安全要求求求求2. 用户安全性策略用户安全性策略将用户分为一般性用户和终端用户。将用户分为一般性用户和终端用户。(1) 一般用户的安全性一般用户的安全性 包括密码的安全性和用户的权限管理。包括密码的安全性和用户的权限管理。(2) 终端用户的安全性终端用户的安全性 安全性管理员可以决定用户组分类,并为安全性管理员

327、可以决定用户组分类,并为这些这些用户组创建用户角色,把所需的权限和应用用户组创建用户角色,把所需的权限和应用程序程序角色授予每一个用户。角色授予每一个用户。循畏差周坡讯幅赞扫工刮笆靡膨科锋替专堂恕革性仙偏葡捂氛柿稻卧哗拱SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.2 8.2 分析实例数据库的安全要分析实例数据库的安全要分析实例数据库的安全要分析实例数据库的安全要求求求求3安全性策略安全性策略 保护作为保护作为sys和和system用户的连接用户的连接 使用角色对管理员权限进行管理使用角色对管理员权限进行管理 数据库的安全备份机制数据库的安全备份机制订乃疹

328、展慷衅仕圣秩霍伤暖齿智拳汰寝酷袁舵莆近透肃输求下匿泼窘乙使SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.3 8.3 管理管理管理管理SQL ServerSQL Server服务器服务器服务器服务器安全安全安全安全8.3.1 SQL Server 2005服务器的登录模式服务器的登录模式1Windows身份验证模式身份验证模式优点:优点:l由Windows系统管理员直接管理用户账号,方便管理。lWindows中提供了诸如:安全验证和密码加密、审核、密码过期、密码长度限制以及多次登录失败后自动锁定账户等功能,大大提高了安全性能。尼小颤碉赫蒋粗里只误硼椒颠涤务窑

329、效娄拎揉氰榷泵三忠阶侮锑咀仪沿才SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.3 8.3 管理管理管理管理SQL ServerSQL Server服务器服务器服务器服务器安全安全安全安全2SQL Server身份验证模式身份验证模式 由由SQL Server 通过将客户端提供的通过将客户端提供的用户名和密码与用户名和密码与 SQL Server 中维护的中维护的有效用户名和密码列表进行比较,对客户有效用户名和密码列表进行比较,对客户端进行身份验证。端进行身份验证。 嘶饯绰炕栓魂斧戈帛欠募护鹃舔谐瑶硕沛闭亿郸俞鸣赂京结帮移凹肆室挛SQLServer数据库应用

330、技术实例教程SQLServer数据库应用技术实例教程8.3 8.3 管理管理管理管理SQL ServerSQL Server服务器服务器服务器服务器安全安全安全安全8.3.2 创建与管理登录名创建与管理登录名 账户要进入账户要进入SQL Server系统必须登录,系统必须登录,SQL Server在整个服务器范围管理登录。登录名在整个服务器范围管理登录。登录名即登即登录数据库服务器的账户,存储在录数据库服务器的账户,存储在master数数据库的据库的syslogins系统表中。系统表中。菇除铺拖稽刺控徘妓缅询嘴井玩已仲乔敛淹琐金郡颓叭突背辨嫂礁扇汀汝SQLServer数据库应用技术实例教程SQ

331、LServer数据库应用技术实例教程8.3 8.3 管理管理管理管理SQL ServerSQL Server服务器服务器服务器服务器安全安全安全安全1. 使用使用SQL Server Management Studio创创建登录名建登录名 启动启动SQL SERVER MANAGEMENT STUDIO,在,在“对象资源管理器对象资源管理器”窗口中展开窗口中展开 “安全性安全性”节点,在列表中选择节点,在列表中选择“登录名登录名”,单击鼠标右键,在弹出的快捷菜单中选择,单击鼠标右键,在弹出的快捷菜单中选择“新建登录名新建登录名”命令,打开命令,打开“登录名登录名-新建新建”对话框。对话框。 在

332、在“登录名登录名-新建新建”对话框中的对话框中的“选项页选项页”列表框中有五个选项:常规、服务器角色、列表框中有五个选项:常规、服务器角色、用户映射、安全对象及状态,如图用户映射、安全对象及状态,如图8-2所示所示靶引德起县傀矽殆稻百描丘温邑压防观岸泞号瘫郎据脚滇磺埃还裕鸽谬把SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.3 8.3 管理管理管理管理SQL ServerSQL Server服务器服务器服务器服务器安全安全安全安全图图8-2 新建登录新建登录昆苇贼垃壁泳疆铆巴炉族匠借佳形愉鄂敖页路化九谍躁浓危篷呸讨携囚颊SQLServer数据库应用技术实例教

333、程SQLServer数据库应用技术实例教程8.3 8.3 管理管理管理管理SQL ServerSQL Server服务器服务器服务器服务器安全安全安全安全2使用系统存储过程使用系统存储过程sp_addlogin创建登创建登录名录名 系统存储过程系统存储过程sp_addlogin能够创建新能够创建新的登录名,该登录允许用户使用的登录名,该登录允许用户使用SQL Server身份验证连接到身份验证连接到SQL Server实例。实例。基本语法如下:基本语法如下: sp_addlogin login_name,pawwwork,default_database ,default_language 桶

334、凳挡猴暗翌历擦岩租舔方久墙烤逝鸯庶烟闪续熬揍硅耐姬灾羊诛抽曲玲SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.3 8.3 管理管理管理管理SQL ServerSQL Server服务器服务器服务器服务器安全安全安全安全【例【例8-1】使用存储过程】使用存储过程“sp_addlogin”创创建建”,密码为密码为“001”,默认数据库为,默认数据库为“JXGL”。 EXEC sp_addlogin user01,001, JXGL GO 执行以上代码。刷新执行以上代码。刷新“登录名登录名”节点,在节点,在列表中会发现登录帐户列表中会发现登录帐户“user01”已

335、经存在,已经存在,如图如图8-3所示。所示。仆仲华哪榆噪阳架搭婿柏没蛛住矿务美脱屋虑著泛圣癌乃砷队她邹尚承剥SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.3 8.3 管理管理管理管理SQL ServerSQL Server服务器服务器服务器服务器安全安全安全安全图8-3创建登录帐户user01应夹奠油酒炸看慎析螟过铁疏摩胞继圆控脱珍票黎琴顷层筒哀熙韭夷活屡SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.3 8.3 管理管理管理管理SQL ServerSQL Server服务器服务器服务器服务器安全安全安全安全(2)使用系

336、统存储过程)使用系统存储过程“sp_defaultdb”修改修改SQL Server登录名的默认数据库。基本语法如下:登录名的默认数据库。基本语法如下:sp_defaultdb login_name,new_default_database 【例【例8-3】使用系统存储过程】使用系统存储过程“sp_ defaultdb”将将登录帐户登录帐户“user01”的默认数据库修改为的默认数据库修改为“JXGL02”。 sp_defaultdb user01, JXGL02(3)使用系统存储过程)使用系统存储过程sp_droplogin删除登录删除登录名。基本语法如下:名。基本语法如下: sp_ dro

337、plogin login_name 【例【例8-4】使用系统存储过程】使用系统存储过程“sp_droplogin” 删除登录帐户删除登录帐户“user01”。 sp_droplogin user01惩洞肖犯骤茎迄茎锋准宫榴老鼓手伶廷诗撩郑奈负啼角办吩旬尔苯峡徐桥SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.3 8.3 管理管理管理管理SQL ServerSQL Server服务器服务器服务器服务器安全安全安全安全8.3.3 服务器角色管理服务器角色管理 角色(角色(role),是一组具有相近权限的登),是一组具有相近权限的登录账户所构成的组。录账户所构成的

338、组。 SQL Server 2005的角色分为:固定服务的角色分为:固定服务器角色、数据库角色和应用程序角色。登录器角色、数据库角色和应用程序角色。登录账户与服务器角色的关系类似于账户与服务器角色的关系类似于Windows的的用户和组的。固定服务器角色如下表。用户和组的。固定服务器角色如下表。 稼荚悍软消乡颖碘额狂旷载毅钞擒镐语知块佃纺悟厩豺订洱厘叭体酥锻巩SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.3 8.3 管理管理管理管理SQL ServerSQL Server服务器服务器服务器服务器安全安全安全安全固定服固定服务器角器角色色描描 述述sysadm

339、in能能够在在SQL ServerSQL Server中中执行任何活行任何活动serveradmin能能够设置服置服务器范器范围内的配置内的配置选项,关,关闭服服务器器securityadminn 安全管理安全管理员,可以管理登,可以管理登录服服务器器权限限setupadmin能能够添加和添加和删除除链接在服接在服务器,并且也可以器,并且也可以执行某些行某些系系统存存储过程程processadmin管理在管理在SQL Server中运行的中运行的进程程dbcreator能能够创建、更改、建、更改、删除和除和还原任何数据原任何数据库diskadmin能能够管理磁管理磁盘文件文件bulkadmin

340、能能够执行行BULK INSERTBULK INSERT语句句艇咬袱黄僳省单顾纱窒路及幸窟匙清第祷啤森祥茧病晦梅喳面诵吴光绍吉SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.4 8.4 管理管理管理管理SQL ServerSQL Server数据库数据库数据库数据库安全安全安全安全 8.4.1 数据库架构管理数据库架构管理 架构是形成单个命名空间的数据库实体的架构是形成单个命名空间的数据库实体的集集合,属性数据库级的安全对象。在合,属性数据库级的安全对象。在SQL Server 2005之前,每个对象都是被用户所拥有的,之前,每个对象都是被用户所拥有的,如果

341、如果用户离开了,就意味着需要将该用户账户拥用户离开了,就意味着需要将该用户账户拥有的有的所有对象的权限转换到新的账户上。在所有对象的权限转换到新的账户上。在SQL Server 2005中,对象被架构所拥有,而架构中,对象被架构所拥有,而架构同同时被用户所拥有,这样转移权限就会变得容时被用户所拥有,这样转移权限就会变得容易和易和快捷。快捷。兵已扎榆起蹄招稠规佛绍骨折尿晰冒鲁萎甸陀郊哭秉聘热迈绿虑趟羌沥盂SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.4 8.4 管理管理管理管理SQL ServerSQL Server数据库数据库数据库数据库安全安全安全安全8

342、.4.2 数据库用户管理数据库用户管理使用使用SQL Server Management Studio管理管理数据库用户数据库用户 在数据库在数据库JXGL下,展开下,展开“安全性安全性”节点,节点,在列表在列表中选择中选择“用户用户”,单击鼠标右键,在弹出的,单击鼠标右键,在弹出的快捷菜单快捷菜单中选择中选择“新建用户新建用户”命令。打开命令。打开“数据库用数据库用户户-新建新建”对话框,进行如图对话框,进行如图8-4所示的各项设置。所示的各项设置。居瑰晰侍拜拿棺钧埠豪米烃土零肥唇篱幌惋霓巍皂蜘冬弛拱斡甸压啄柠赫SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程

343、8.4 8.4 管理管理管理管理SQL ServerSQL Server数据库数据库数据库数据库安全安全安全安全图图8-4 新建数据库用户新建数据库用户懦仗惑沟乌俏缩鞭肪韶根朋梢释要店土昏点页荆堪蛰躇咐赋洁矩失戌搁具SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.4 8.4 管理管理管理管理SQL ServerSQL Server数据库数据库数据库数据库安全安全安全安全2. 使用使用T-SQL语句管理数据库用户语句管理数据库用户 使用使用CREATE USER 语句创建数据库用户,并与语句创建数据库用户,并与指定登录名相关联。基本语法如下:指定登录名相关联。

344、基本语法如下: CREATE USER db_user_name FORLOGIN login_name | WITHOUT LOGIN【例【例8-5】 创建数据库用户名为创建数据库用户名为“user02”,与登,与登录账户录账户“user01”相关联。相关联。 CREATE USER user02 FOR LOGIN user01蚂屠群耐律覆琶铡铃挂御璃邹厂营字叔坍予贱墟亡掳奔殿嘉酿涎踞进肥锹SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.4 8.4 管理管理管理管理SQL ServerSQL Server数据库数据库数据库数据库安全安全安全安全l 使用使

345、用ALTER USER 语句修改数据库用户。语法如语句修改数据库用户。语法如下:下: ALTER USER db_user_name WITH 【例【例8-6】 将数据库用户将数据库用户“user02”的名称修改为的名称修改为“user03”。ALTER USER user02 WITH name=user03 使用使用DROP USER 语句可删除数据库用户。语句可删除数据库用户。邻捻赎催兰谁赣阮伸咋舷愁詹洗聊闻的吗啥擅剔扯递柬逞荒脑蛆赔椅尊梗SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.4 8.4 管理管理管理管理SQL ServerSQL Serve

346、r数据库数据库数据库数据库安全安全安全安全8.4.3 数据库角色管理数据库角色管理 如同如同SQL Server登录名隶属于某个数据登录名隶属于某个数据库角库角色一样,数据库用户也总是归属于某个数据色一样,数据库用户也总是归属于某个数据库角库角 色。数据库角色是在数据库级的安全对象,色。数据库角色是在数据库级的安全对象,存在存在于每个数据库中。于每个数据库中。SQL Server 2005提供了提供了10个个固定数据库角色,如表固定数据库角色,如表8-2所示。所示。啪钻茶非墩江礼思引钓撑屹幸贱井款捆祟氏涂紧跟杆尼爸取卫窄疗坝炼保SQLServer数据库应用技术实例教程SQLServer数据库应

347、用技术实例教程8.4 8.4 管理管理管理管理SQL ServerSQL Server数据库数据库数据库数据库安全安全安全安全固定数据固定数据库角色角色描描 述述db_owner数据数据库的所有者,能的所有者,能够执行数据行数据库得所有管理操作得所有管理操作db_accessadmin能能够添加或添加或删除用除用户db_securityadmin执行行语句及句及对象象权限管理限管理db_ddladmin能能够增加、修改或增加、修改或删除数据除数据库中的中的对象象db_backupoperator能能够执行数据行数据库备份和恢复份和恢复db_datareader能能够读取用取用户表中的所有数据表

348、中的所有数据db_datawrite能能够更改用更改用户表中得所有数据表中得所有数据db_denydatareader禁止用禁止用户查看用看用户表中的数据表中的数据db_denydatawriter禁止修改任意用禁止修改任意用户表中的数据表中的数据表表8-2 固定数据库角色固定数据库角色 费堂娥赡鬼拼拂柯败针琶波凑抗麓荧驯吾童疟辗销五忠斑澎几捻螺关屡寓SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.4 8.4 管理管理管理管理SQL ServerSQL Server数据库数据库数据库数据库安全安全安全安全8.4.4 授权管理授权管理 在在SQL Server

349、 2005中,包括三种权限:中,包括三种权限:默默认权限、对象权限和语句权限。认权限、对象权限和语句权限。 默认权限 系统安装以后,固定服务器角色、固定数系统安装以后,固定服务器角色、固定数据库据库角色、数据库对象所有者具有的默认权限。角色、数据库对象所有者具有的默认权限。仗尽躲瑞寸壹仟寂锐红失凶塌供曾逃借凹菌窘贬淘看嘎简字氮今赎酱糜毡SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.4 8.4 管理管理管理管理SQL ServerSQL Server数据库数据库数据库数据库安全安全安全安全 对象权限 是基于数据库访问层的访问和操作权限。是基于数据库访问层的访

350、问和操作权限。这些对象包括表、视图、列和存储过程。常这些对象包括表、视图、列和存储过程。常用的对象权限包括用的对象权限包括SELE-CT、INSERT、UPDATE、DELETE和和EXECUTE,其中,其中EXECUTE用于存储过程,其他几个权限用用于存储过程,其他几个权限用于表和视图。于表和视图。 语句权限 是用户能否对数据库和数据库对象进行是用户能否对数据库和数据库对象进行操作,语句权限应用于语句本身,而不是数操作,语句权限应用于语句本身,而不是数据库对象。当用户获得了某个语句的权限,据库对象。当用户获得了某个语句的权限,也就具有了执行该语句的权力。要进行语句也就具有了执行该语句的权力。

351、要进行语句权限授予的语句如表权限授予的语句如表8-3所示。所示。笨诛常稗铭锡竟吠万违摘婪腊勺莎研我摩号患牙床铰门邱泌昔郭凿丽渴傲SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.4 8.4 管理管理管理管理SQL ServerSQL Server数据库数据库数据库数据库安全安全安全安全语句权限含义CREATE DATABASE允允许用用户创建数据建数据库DREATE TABLE允允许用用户创建表建表CREATE VIEW允允许用用户创建建视图CREATE RULE允允许用用户创建建规则CREATE DEFAULT允允许用用户创建默建默认对象象CREATE PR

352、OCEDURE允允许用用户创建存建存储过程程CREATE FUNCTION允允许用用户创建用建用户自定自定义函函数数BACKUP DATABASE允允许用用户备份数据份数据库BACKUP LOG允允许用用户备份事份事务日志日志表8-3 授予权限的语句 垂桂苇咐俏纲状驭烁族实婉徽狄置云艰钵递商莎被溯帚忻巩赂琐哪瞥邹镜SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程在SQLServer中的安全管理模型是基于Windows安全模型实现的,如图所示。8.5 SQL Server 20058.5 SQL Server 2005的安的安的安的安全管理模型全管理模型全管理模型

353、全管理模型 庆欢讹栅妊笛吠遁仁腾佃咋朝歧呈铭享唆句讫链霹窗踏各窃骤愁业二罕直SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程第二种安全模型如下图:第二种安全模型如下图:8.5 SQL Server 20058.5 SQL Server 2005的安的安的安的安全管理模型全管理模型全管理模型全管理模型 北湍匣霍渝辐哈征裂虐养祝舔碍普谈孤赠晾壶摄史钳求欢歧呻姜搞述函伎SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程使用角色来分配对象权限时,仍需使用建议使用角色来分配对象权限时,仍需使用建议的方法为各个用户授予对服务器和数据库的的方法为

354、各个用户授予对服务器和数据库的访问权限。访问权限。步骤步骤到步骤到步骤与图与图8-13中基本相同,不同中基本相同,不同的只是可能不必创建多个的只是可能不必创建多个 Windows 全局组全局组和本地组。和本地组。步骤步骤:将各个:将各个Windows账户和账户和Windows组组分配给某个角色。分配给某个角色。步骤步骤:为角色分配对象访问权限。:为角色分配对象访问权限。使用角色,通过在使用角色,通过在SQL Server内组织用户而内组织用户而减少了在减少了在Windows内组织用户的需要。内组织用户的需要。8.5 SQL Server 20058.5 SQL Server 2005的安的安的

355、安的安全管理模型全管理模型全管理模型全管理模型 傍蓑楚锚黑女烘林寒依做人膘湾寺释坷皋缅霞吞茫翰烟憨色箭涧级押归栗SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.6 8.6 知识进阶知识进阶知识进阶知识进阶8.6.1 登录管理、用户管理、角色管理与权限登录管理、用户管理、角色管理与权限管理管理 的比较的比较1.登录管理登录管理 登录管理是定义在数据库服务器级的安全登录管理是定义在数据库服务器级的安全对对象,主要是增加新的登录名。登录名是基于象,主要是增加新的登录名。登录名是基于服务服务器使用的用户名,既可以创建基于器使用的用户名,既可以创建基于Windows组

356、或组或用户账号的登录账号,也可以创建用户账号的登录账号,也可以创建SQL Server自自己的登录账号。己的登录账号。咋硒碾秤秸扔仑佛只沦淘非隘礁友秉必炒瘤仗转捂侩蠕炳见豁菲恿漳吗深SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.6 8.6 知识进阶知识进阶知识进阶知识进阶2.用户管理用户管理 用户管理是针对一个具体的数据库来说的用户管理是针对一个具体的数据库来说的数数据库级安全对象。在实现数据库安全登录后,据库级安全对象。在实现数据库安全登录后,检检验验 用户权限的下一步就是数据库的访问权。用户权限的下一步就是数据库的访问权。而数而数据库的访问权是通过映射

357、数据库的用户和登据库的访问权是通过映射数据库的用户和登录账录账户之间的关系来实现的。一个登录账户在不户之间的关系来实现的。一个登录账户在不同的同的数据库中可以映射成不同得数据库用户,从数据库中可以映射成不同得数据库用户,从而可而可以具有不同的权限。以具有不同的权限。 能抿宁昆舰融仙贝袍个辅识泪僵子隘蛮圭诲袱枪然缸仁间扬儒仁趾嘛示碴SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.6 8.6 知识进阶知识进阶知识进阶知识进阶3.角色管理角色管理 角色是角色是SQL Server引进的用来集中管理引进的用来集中管理数据数据库和服务器权限的概念。数据库管理员库和服务

358、器权限的概念。数据库管理员(DBA)操作数据库的权限赋予角色,然后再将角色操作数据库的权限赋予角色,然后再将角色赋给赋给数据库用户或者登录的账户,从而使数据库数据库用户或者登录的账户,从而使数据库用户用户或登录账户有相应的权限。或登录账户有相应的权限。 八碉富皂啦靳屡邦搀虾桶沛茧希耗竞革昏灵工孝辽苦自恨侮烹别云那皿疲SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.6 8.6 知识进阶知识进阶知识进阶知识进阶 在在SQL Server中既包含服务器角色又包中既包含服务器角色又包含含数据库角色。数据库角色。 服务器角色:主要于在用户登录时授予的服务器角色:主要于

359、在用户登录时授予的在服务器范围内的安全特权。在服务器范围内的安全特权。 数据库角色:能为某一用户授予不同级别数据库角色:能为某一用户授予不同级别的管理或访问数据库及其对象得权限。的管理或访问数据库及其对象得权限。笑哇垂拷涉落酮捷写馅茸颓仙靴侯砒缕攘章漫禾惦娇错豺腔躇婪祭燕览表SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.6 8.6 知识进阶知识进阶知识进阶知识进阶4.权限管理权限管理 SQL Server 使用权限来指定数据库用使用权限来指定数据库用户的户的权限,如可以对哪些数据库或数据库对象,权限,如可以对哪些数据库或数据库对象,执行执行哪些操作。如果用

360、户没有被授予这些权限,哪些操作。如果用户没有被授予这些权限,就不就不能对数据库或数据库进行访问、查询、修改能对数据库或数据库进行访问、查询、修改或删或删除操作。除操作。酚豪摸烫碗桨六程迹茁构蜒茁辟碾区览请碴溅董沤确夏耗九竭区嚏将肢整SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程8.6 8.6 知识进阶知识进阶知识进阶知识进阶8.6.2 实施数据库安全管理过程中应注意的实施数据库安全管理过程中应注意的问题问题 除非必要,否则尽量以除非必要,否则尽量以Windows验证来验证来管理可连接管理可连接SQL Server的使用者,以整合的使用者,以整合Windows

361、NT/2000的安全机制。的安全机制。 善用善用SQL Server的服务器角色与数据库的服务器角色与数据库角色功能。角色功能。 善用善用SQL Server的加密功能。的加密功能。 系统安装完毕后,务必更改预设的系统安装完毕后,务必更改预设的sa密码,密码,免得有其他使用者免得有其他使用者“义务义务”管理您的管理您的SQL Server。盖酮郊涝贴俯鸵早寝疆脸晴芜辰恋偿分巢免丙朱饲廖覆炎啪戊蘑瑶结俯次SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程项目实训项目实训项目实训项目实训 1实训题目设计设计“销售合同管理系统销售合同管理系统”数据库的安全管理策略。数据

362、库的安全管理策略。2实训目的(1)掌握)掌握SQL Server的安全机制,理解的安全机制,理解SQL Server的的登录模式。根据项目需要创建登录用户,以及创建数据登录模式。根据项目需要创建登录用户,以及创建数据库角色,分配权限。库角色,分配权限。(2)掌握数据库用户的创建方法,能够对数据库用户)掌握数据库用户的创建方法,能够对数据库用户进行授权。进行授权。3实训内容(1)使用)使用SSMS修改数据库的登录模式,并进行登录验修改数据库的登录模式,并进行登录验证。证。 (2)使用)使用T-SQL创建数据库用户创建数据库用户test_user,与登录,与登录账户账户test_login相关联。

363、相关联。 (3)使用)使用T-SQL创建数据库只读角色创建数据库只读角色ROLE_READ,将数据库将数据库CONTRACTDB所有数据表的只读权限赋予该所有数据表的只读权限赋予该角色;创建数据删除角色角色;创建数据删除角色ROLE_DEL,并将合同管理数,并将合同管理数据库所有数据表的删除权限赋予该角色。据库所有数据表的删除权限赋予该角色。驯盈厘呼膳盾谋脊迈买岁号暴拘嚼误坛乒钎潍驾伺甚棉栓咕煞惜孕蠢剧偶SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程苫钥去势德钮臭委卿押词禾课鲸杖巫磁土直避李逗绥症晰洼院烦碧窄素落SQLServer数据库应用技术实例教程SQLS

364、erver数据库应用技术实例教程塞珍灯啡顺一糊无睦浸诗曙刚佳辊疹舅舒泄伊卫皱丽豫嘶嚷禾毕吉淖赤蛾SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务:任务:任务:任务:将外部数据导入到将外部数据导入到JXGLJXGL数据库中,将数据库中,将JXGLJXGL数据数据库中的数据导出至其他格式文件,在库中的数据导出至其他格式文件,在SQLServerSQLServer中进中进行数据复制。行数据复制。9.19.1向向“ “高职院校教学管理系统高职院校教学管理系统” ”数据库导入数数据库导入数据据9.29.2从从“ “高职院校教学管理系统高职院校教学管理系统” ”数据库导

365、出数数据库导出数据据 9.39.3使用使用SSISSSIS设计器设计器9.49.4知识进阶知识进阶项目实训项目实训任务九任务九任务九任务九 与其他数据环境进行数据转换与其他数据环境进行数据转换与其他数据环境进行数据转换与其他数据环境进行数据转换 SQL Server 2005SQL Server 2005中数据的导入和导出中数据的导入和导出氦皂激迅慢沽跌良晒宣恢砌辣菱图邯恫旅砖娃谅雍光侥实疹汛冕摸拉券谋SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程了解SQL Server的数据导入和导出方法使用“SQL Server导入和导出向导”工具导入数据使用“SQL S

366、erver导入和导出向导”工具导出数据使用bcp实用工具进行数据的导入和导出掌握数据复制的方法和过程学习目标学习目标数据的导入和导出数据的导入和导出汰符搂挥虐坯思虽靴耙绞郭碎印速焙忆篇呐再郧秽手安坚颊谍谢臃恒芳养SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 9.1 9.1 向向“高职院校教学管理系统高职院校教学管理系统”数据库导入数数据库导入数据据 任务:任务:向JXGL数据库导入Excel工作表 中的数据,向JXGL数据库导入文本 文件中的数据。9.1.1导入Excel工作表9.1.2导入文本文件数据的导入和导出数据的导入和导出垂阐妥甘等蛆抵含吴恕幌凋踊负

367、闯淋泼迫氓骆抿楞矿稻之瘴丘邵创菜绝贱SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程在实际应用中,由于存储数据的文件格式各不相同,存储的位置不同,对数据处理的方式不同,在对数据进行集中分析时,首先需要将数据转换成同一种格式。SQLServer2005的数据转换服务,可以在SQLServer和其他异构数据库之间进行数据的导入和导出操作。导入和导出操作不仅涉及到数据的传输,还存在数据格式的转换等问题。SQLServer主要提供了三种导入和导出工具:(1)导入/导出向导。(2)命令行工具BCP。(3)T-SQL命令行。数据的导入和导出数据的导入和导出数据的导入和导出做

368、筷榜摄果娜呈芒钓稽葫变往蓟座吭盘倘昧极姆管即培庭际闪衰赃抱屏谈SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程9.1.19.1.1导入导入ExcelExcel工作表工作表导入数据是从SQLServer的外部数据源中检索数据,然后将其插入到SQLServer表的过程。在实际应用中,采集原始数据的方式有多种,常用的如Excel工作表、文本文件、DBF格式的文件等,利用SQLServer提供的导入操作,可以完成不同格式数据的导入。向JXGL数据库导入“2007级新生信息”(Excel文件),操作步骤略。数据的导入和导出数据的导入和导出躯臆胎撵炔垄糖恳累迄锁猿芜念欢票毗

369、猜仅轴男阉余叫灰束祥戚侧姚赔哪SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程9.1.29.1.2导入文本文件导入文本文件当使用“SQLServer导入和导出向导”导入文本文件数据时,导入过程和导入Excel工作表唯一不同的是,在“选择数据源”窗口的“数据源”下拉列表中,选择“平面文件源”即可。SQLServer2005提供了批复制程序,即bcp命令行工具,它是一个快捷的数据导入/导出工具,不需要启动任何图形管理工具。bcp基于DB-Library,能以并行的方式高效地导入/导出大容量数据,可以将数据库的表或视图直接导出,或者通过SELECTFROM语句对表或视

370、图进行过滤后导出。bcp命令的语法格式如下:bcpdatabase_name.owner.table_nameview_namequeryinoutqueryoutformatdata_file-m-f-e参数:参数:导入使用in命令完成,后跟要导入的文件名。导出使用out命令完成,后跟要导出的文件名。SQL语句导出使用queryout命令完成,与out类似,但数据源不是表或视图名,而是SQL语句。导出格式文件使用format命令完成,后跟格式文件名。数据的导入和导出数据的导入和导出群娩兢废蓑敛程缉浸砰栖胯燎歼滨殿咨眼粉斗奖瑚矫曝鹃驮垫玄渝机鸵玛SQLServer数据库应用技术实例教程SQLS

371、erver数据库应用技术实例教程使用bcp命令导入数据时,可以根据已经存在的格式文件,将满足条件的记录导入到数据库中,不满足则不导入,或者设置要导入的记录数。 【例9-1】将文本文件d:cj1.txt中的数据导入到学生成绩表student_grade。代码如下: EXEC master.xp_cmdshell bcp jxgl.student_grade in d:cj1.txt -c -T 导入数据时,也可以使用-F和-L选项来确定导入数据的记录行。若从表student_grade的第10行记录开始,到第13行结束。代码如下: EXEC master.xp_cmdshell bcp jxgl

372、.student_grade in d:cj1.txt -c -F 10 -L 13 -T 9.1.29.1.2导入文本文件导入文本文件数据的导入和导出数据的导入和导出唾份舌逾呀僚客困毅缓敦烁娠吞酱撵掏锋饿肘樱田忌惹即常共犬赠半丈拒SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 9.2 9.2 从从“高职院校教学管理系统高职院校教学管理系统”数据库导出数数据库导出数据据 任务:任务:从JXGL数据库导出数据到Access数据 库,从JXGL数据库导出数据至文本文件。9.2.1导出数据至Access表9.2.2导出数据至文本文件数据的导入和导出数据的导入和导出羡

373、述秽赠拓凯语粘估诞次埔谣卸园嗡帅编吴递化晦衔酣组瀑淮啪箔卜厌敝SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程9.2.19.2.1导出数据至导出数据至ACCESSACCESS在“高职院校教学管理系统”中,经常需要导出大量的数据,如学生名单、学生成绩表、学籍情况统计报表、教师工作量汇总表等。使用SQLServer2005导出工具可以非常方便地进行数据的导出工作。导出“高职院校教学管理系统”中的表student_info至Access数据库表,操作步骤略。数据的导入和导出数据的导入和导出轩马虾烈感漾拂兔湘供前锻佩溶甚馅淬疡笔诲郡筷咀串棱芦满综宵户熟咏SQLServe

374、r数据库应用技术实例教程SQLServer数据库应用技术实例教程9.2.29.2.2导出数据至文本文件导出数据至文本文件使用“SQLServer导入和导出向导”导出数据至文本文件的过程,与导出数据至Access数据库的过程基本一致。不同的是,在“选择目标”窗口中,从“目标”下拉列表中选择“平面文件目标”即可。使用bcp实用工具导出数据至文本文件,基本语法如下:EXECmaster.xp_cmdshellbcp库名.dbo.表名outd:文件名.txt-c-q-Sservername-Usa-P【例9-2】将表student_info导出至student_info.txt。代码如下:EXECma

375、ster.xp_cmdshellbcpjxgl.dbo.student_infooutd:student_info.txt-c-q-S(local)-Usa-P也可以在MS-DOS窗口中以命令行运行bcp命令,导出表sutdent_info至文本文件sutdent_info.txt。其中:其中:-S是SQL服务器名。-U是用户名。-P是登录密码。如果连接目标没有密码就空着。提提示示:还可以使用.NET访问接口和ODBC作为数据源。方法是在SSMS中连接到数据库引擎服务器类型,展开数据库列表,选择一个数据库,右击,在快捷菜单中选择“任务”“导入数据”(或“导出数据”)命令。数据的导入和导出数据的

376、导入和导出谭盐瞅搅滦陶闻贷韧根玲动桶肠洞池旦铂洼灿精戍喝优揖卤曲遥侧枉虾斗SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 9.3 9.3 使用使用SSISSSIS设计器设计器 任务:任务:使用SSIS工具对JXGL数据库中的数据进行导入/导出操作。 数据的导入和导出数据的导入和导出连类件耕玲抢钡钥会佛王俺工拨迎桐涨沫按豺承汪疽嘴紊瑟部囊吹禄瞻布SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程9.39.3使用使用SSISSSIS设计器设计器SSIS实际上是SQLServer2005的一个全新组件,它提供了构建企业级数据整合应用程序

377、所需的功能和性能。SSIS设计器有单独的设计界面,用于在包中生成控制流、数据流和事件处理程序。通过SSIS设计器,可访问对话框、窗口和向导,用它们向包添加功能和高级功能,及对包进行故障排除。使用SSIS设计器前,需要打开现有的IntegrationServices项目或创建新项目。在BusinessIntelligenceDevelopmentStudio(商业智能可视化开发工具)中创建新项目时,该项目中会自动添加新包。1创建新包(操作步骤略)2使用SSIS设计器可以完成以下任务:在包中构造控制流或数据流。将事件处理程序添加到包及包对象。查看包内容,在运行时查看包的执行进度。数据的导入和导出数

378、据的导入和导出瘴累涕绩壤味冬秀背惶幂摆札半侮曾了蒸茨二丛面坪君跨虹淤薪码啼我斤SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程9.39.3使用使用SSISSSIS设计器设计器SSIS设计器的设计界面有四个固定选项卡,其中的三个选项卡分别用于生成包控制流、数据流和事件处理程序,而“包资源管理器”选项卡用于查看包的内容。(1)“控制流”选项卡。该选项卡构造包中的控制流。(2)“数据流”选项卡。如果包中含有数据流任务,可以将数据流添加到包。(3)“事件处理程序”选项卡。该选项卡构造包中的事件。(4)“包资源管理器”选项卡。(5)“进度/执行结果”选项卡。3启动“SQL

379、Server导入和导出向导”:操作步骤略。数据的导入和导出数据的导入和导出李香辐沁奔均痘避趣馈虐诧奢量适关皋肩逻兴敦套跪挡唯充纯桓晰灿母摆SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 9.4 9.4 知识进阶知识进阶 任务:任务:了解SQLServer2005关于数据复制的概念、类型及基本设置,熟悉实现数据复制的操作步骤。 9.4.1关于数据复制9.4.2建立和使用数据复制数据的导入和导出数据的导入和导出茶绦旨儿国样峦顷梅谱揭迈晶紫裙睁签盼递柑辕帽寐霞竞焙松阂豁吊驾近SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程9.4.19

380、.4.1 关于数据复制关于数据复制 SQLServer2005中,数据的复制发布是指在分布式数据库系统中将数据、数据库对象从一个数据库复制或分发到另一个数据库,从而在数据库之间保持数据的同步和一致性。此外,SQLServer复制还可以使数据得以在整个企业内发布,在各个位置之间复制数据以及自动同步不同数据副本之间的更改。1数据复制的类型(1)快照复制。(2)事务性复制。(3)合并复制。数据的导入和导出数据的导入和导出谤久摘神矮什苯馈会道膏拱小房每岛醒队灼胶沙褐惟摸慨溶摸慰坛迄跃踞SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2数据复制类型的选择在实际应用中可以根

381、据应用程序的需要,在拓扑中使用一种或多种复制类型。选择复制类型取决于多种因素,包括实际复制环境、要复制的数据类型和数量、是否在订阅服务器上更新数据等。每种复制类型通常都开始于发布服务器和订阅服务器之间的已发布对象的初始同步。一些初始同步可以由带有“快照”的复制执行,该快照为发布所指定的所有对象和数据的副本。快照在创建之后便被传递到订阅服务器。对于某些应用程序,只需快照复制即可;对于其他一些类型的应用程序,后续数据更改应随着时间而增量式地传递到订阅服务器,某些应用程序也需要更改从订阅服务器传递到发布服务器。事务性复制和合并复制为各种类型的应用程序提供了若干选项。9.4.19.4.1 关于数据复制

382、关于数据复制 数据的导入和导出数据的导入和导出数据的导入和导出数据的导入和导出帜居掉榜襟蹋吝垮拇章萄项勿徐仪究阎桥旺倚佃悔诲鹰蓄楞俊炙扔虾泊左SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3复制代理复制使用许多称为代理的独立程序执行与跟踪更改。默认情况下,复制代理作为SQLServer代理安排的作业运行,必须运行SQLServer代理,这些作业才能运行。可以从SQLServer复制监视器和SSMS对复制代理进行管理。(1)SQLServer代理。(2)快照代理。(3)日志读取器代理。(4)分发代理。(5)合并代理。9.4.19.4.1 关于数据复制关于数据复制

383、 数据的导入和导出数据的导入和导出呐否猖自饺跟拱牛珠抓综诊钱铣敦柳温出扭阻叙钧希干足技根振谅忽胳挎SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程9.4.29.4.2建立和使用数据复制建立和使用数据复制 1执行复制的过程执行复制的过程会因选择的复制类型和选项的不同而有所区别。复制过程一般包括三个步骤:配置复制和发布数据、创建和初始化订阅、同步数据。2实现复制的方法在SQLServer2005中,实现和管理复制的方法有:使用SSMS、编程接口和其他Windows组件。数据的导入和导出数据的导入和导出谆夫槽明铣巩稽仓月溉函皖蓝鲁唯牵鳞姿崖久呵蘑天仆烩嘴屈骂坡溜痘碘S

384、QLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程项目实训项目实训项目实训项目实训 1实训题目实训题目“销售合同管理系统”数据库中数据的导入和导出。2实训目的实训目的(1)掌握从文本文件、Excel中加载数据到数据库的方法。(2)掌握从数据库导出数据到Excel、文本文件的方法。3实训内容实训内容(1)使用命令导出数据表department到文本文件department.txt。(2)使用SSMS将部门信息表(deparment)中的数据导出到Excel,文件名为department.xls。(3)使用T-SQL编写代码,删除部门表department中的数据,将E

385、xcel文件depart-ment.xls中的数据导入到该表中。(4)使用T-SQL编写代码,实现删除部门表department中的数据,将文本文件department.txt的数据导入到该表中。数据的导入和导出数据的导入和导出数据的导入和导出数据的导入和导出谴踢自椭钻厄射篡数渊崇劳栋韵匝庚喉姥初娩秩议匈否癸凡咖瑞隙念史饰SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程砂阮毁蔫貌脆赞稍抓龚舰瘸缸万窟卞蚊缔奥戚既顺著宅躯亿自第破蠕肄撅SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务十 加强数据库维护 对对SQL ServerSQ

386、L Server数据库实数据库实施备份与还原施备份与还原任务: 了解数据库备份、还原的了解数据库备份、还原的类型及其特点,熟练掌握数据的类型及其特点,熟练掌握数据的备份、还原、分离和附加操作,备份、还原、分离和附加操作,设计在不同需求下设计在不同需求下“高职院校教高职院校教学管理系统学管理系统”数据库数据库JXGL的备份的备份和还原策略。和还原策略。10.1设计备份和恢复策略10.2备份“高职院校教学管理系统”数据库10.3管理备份10.4恢复“高职院校教学管理系统”数据库10.5分离和附加数据库10.6知识进阶项目实训的砸宁炮觅西计够哨蝗猩筒挂迟宛限彬沧鼻荣婪磁写话独掣岿扳射箕御逸SQLSe

387、rver数据库应用技术实例教程SQLServer数据库应用技术实例教程了解了解SQL Server备份的基本概念备份的基本概念了解数据库恢复的定义、原则及了解数据库恢复的定义、原则及方法方法掌握数据库的备份与还原的方法掌握数据库的备份与还原的方法掌握分离与附加数据库掌握分离与附加数据库学习目标学习目标对SQLServer数据库实施备份与还原熏铀睫憾搬白济浚棍寥我华衙志蹿送疚漆斤研绸光帐抗胶吸乃壹殃赛贴雌SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程10.1设计备份和恢复策略任务:了解了解SQL Server数据库备数据库备份的相关概念,数据库备份的对份的相关概

388、念,数据库备份的对象和方式,根据需求选择合适的象和方式,根据需求选择合适的恢复策略。恢复策略。10.1.1分析现实需求及恢复需求10.1.2选择备份对象和备份方式10.1.3选择恢复模型对SQLServer数据库实施备份与还原仔革锈伺躇谨蛔镀邹嘴唁主裙颜桂檄宛糖乖萝敲艺代肮却注止殴萍乖循陡SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程尽管数据库系统中采取了各种保护措施来防止数尽管数据库系统中采取了各种保护措施来防止数据库的安全性、完整性被破坏,保证运行事务的据库的安全性、完整性被破坏,保证运行事务的正确执行,但是计算机系统中硬件的故障、软件正确执行,但是计算机

389、系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏仍是不可的错误、操作员的失误以及恶意的破坏仍是不可避免的。避免的。数据库备份是指定期或不定期地将数据库中的全数据库备份是指定期或不定期地将数据库中的全部或部分数据复制到安全的存储介质(磁盘、磁部或部分数据复制到安全的存储介质(磁盘、磁带等)上保存起来的过程。这些复制的数据称为带等)上保存起来的过程。这些复制的数据称为后备副本。后备副本。在指定数据备份方案前,根据系统的环境和实际在指定数据备份方案前,根据系统的环境和实际需求要制定一个切实可行的备份方案,从而确保需求要制定一个切实可行的备份方案,从而确保数据库的安全。数据库的安全。10.1.

390、1分析现实需求及恢复需求对SQLServer数据库实施备份与还原荡妒隅渡沽何亚修贺闸谊肺皇样槛纤港丽险狂敝馅爪蜡米桓樊缆班渡缘淳SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程方案一般需要考虑以下几个方面:方案一般需要考虑以下几个方面:数据丢失的允许程度。哪些表中的数据是非常重要的,不允许丢失的;哪些表中的数据是允许丢失一部分的。业务处理的频繁程度和服务器的工作负荷。何时需要大量使用数据库系统,导致频繁的插入和更新操作;什么时候系统处于空闲状态;一天何时备份最为合适。 哪些表中的数据变化频繁;哪些表中的数据则相对固定。允许的故障处理时间。确定备份的介质。使用人工

391、备份还是设计好的自动备份程序;确定进行备份的人员。使用静态备份还是动态备份。对SQLServer数据库实施备份与还原10.1.1分析现实需求及恢复需求祈坏尊裔辅趾子枚扁络捎害甫荧历诸峦膊铣敦藤鲍冬咎拂来温刷频佐扮还SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1.备份对象 备份对象是指数据库管理员(备份对象是指数据库管理员(DBA)可以对数)可以对数据库中的哪些元素或者对象进行备份,如系统数据库中的哪些元素或者对象进行备份,如系统数据库、用户数据库、事务日志等等。据库、用户数据库、事务日志等等。2.备份方式 SQL Server 2005中提供了以下几种数据库

392、备份中提供了以下几种数据库备份方式。方式。(1)完整备份)完整备份(2)差异备份)差异备份(3)事务日志备份)事务日志备份(4)数据库文件和文件组备份)数据库文件和文件组备份10.1.2选择备份对象和备份方式对SQLServer数据库实施备份与还原诞醒慕溜篷保寞营巳晕喷搏膝勺范躯缄祝拣拄弥术睫钠减棺央棠翅退蜀删SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l恢复模型是指确定如何备份数据以及能承受何种恢复模型是指确定如何备份数据以及能承受何种程度的数据损失,程度的数据损失,SQL Server为每个数据库提供为每个数据库提供了三种恢复模型:了三种恢复模型:1.

393、简单恢复模型简单恢复模型 简单恢复就是指在进行数据库恢复时使用了数据简单恢复就是指在进行数据库恢复时使用了数据库备份或差异备份,而不涉及事务日志备份。库备份或差异备份,而不涉及事务日志备份。2. 完全恢复模型完全恢复模型 完全数据库恢复模式是指通过使用数据库备份和完全数据库恢复模式是指通过使用数据库备份和事务日志备份,将数据库恢复到发生失败的时刻,事务日志备份,将数据库恢复到发生失败的时刻,因此几乎不造成任何数据丢失。这成为对付因存因此几乎不造成任何数据丢失。这成为对付因存储介质损坏而数据丢失的最佳方法。储介质损坏而数据丢失的最佳方法。 3. 批日志恢复模型批日志恢复模型 在性能上,批日志恢复

394、要优于简单恢复和完全恢在性能上,批日志恢复要优于简单恢复和完全恢复模式。它能尽最大努力地减少批操作所需要的复模式。它能尽最大努力地减少批操作所需要的存储空间。存储空间。10.1.3选择恢复模型对SQLServer数据库实施备份与还原骇啼夫橡拢坐嘲檄欧杭住从藏折葱观粤晒蛛杆雌错襄祸载陨攘胶瞻首寨旺SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程10.2备份“高职院校教学管理系统”数据任务:掌握常用数据库备份方式,掌握常用数据库备份方式,对对“高职院校教学管理系统高职院校教学管理系统”进行备份。进行备份。 10.2.1数据库完全备份10.2.2数据库增量备份10.2

395、.3事务日志备份10.2.4文件组备份对SQLServer数据库实施备份与还原夏叉庞剁办纷咏屠护桃庆白奥茧递柠拾叭收久腊漓剁枯揽霍链峻疚筒改让SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程10.2.1 数据库完全备数据库完全备份份1.使用使用SSMS备份数据库备份数据库【例【例10-1】使用】使用SSMS备份备份JXGL数据库。数据库。操作步骤如下:操作步骤如下:步骤步骤1:启动:启动SQL Server Management Studio,在,在“对象资源管理器对象资源管理器”窗口中展开实例窗口中展开实例 节点节点“数据库数据库”,在要备份的,在要备份的JX

396、GL数据库上右数据库上右击,选择击,选择“任务任务”“备份备份”,如图,如图10-1所示。所示。步骤步骤2:在:在“备份数据库备份数据库”对话框中的对话框中的“常规常规”选选项页中需要设置如下项目,如图项页中需要设置如下项目,如图10-2所示。所示。对SQLServer数据库实施备份与还原坏凿豢叔事瓷康拦诌卷拒盘息膊驯丹匹您堰僵收龚殆拳惩刚办拜耸院和游SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程图10-1备份数据库图10-2备份数据库“常规”页对SQLServer数据库实施备份与还原甫伊怂澜蓟奠浪掘励疵重辩彬浩艇谐舒窑埠鳞谗瑰实苟肠依疽袍爆碱罚聘SQLSer

397、ver数据库应用技术实例教程SQLServer数据库应用技术实例教程步骤步骤3:在:在“选项页选项页”列表框选择列表框选择“选项选项”选项,在选项,在 “覆盖媒体覆盖媒体”选项组中选择选项组中选择“覆盖所有现有备份覆盖所有现有备份集集” 单选按钮,如图单选按钮,如图10-3所示。所示。步骤步骤4:选项设置完成后,单击:选项设置完成后,单击“确定确定”按钮,执按钮,执 行备份操作,成功后显示备份成功信息。行备份操作,成功后显示备份成功信息。10.2.1 数据库完全备数据库完全备份份对SQLServer数据库实施备份与还原蔓颠抢檄孟激窘错嗓监肝循父谤众粒峻衡沧社哄荫赶哄跋樊腆秉础铝捡敷SQLSer

398、ver数据库应用技术实例教程SQLServer数据库应用技术实例教程图10-3备份数据库“选项”选项页对SQLServer数据库实施备份与还原布拭鼻庭乐劳牲珍坠账兰轿旨僻导狼劈削婿速萎铜抡疆冲茎藻麻植犁燕垣SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2. 使用使用T-SQL语句进行数据库完整备份语句进行数据库完整备份 数据库完整数据库完整备份的语法如下:备份的语法如下: BACKUP DATABASEdatabase_name|database_name_var TO,n WITH EIFFERENTIAL ,FORMAT|NORORMAT ,INIT|NO

399、INIT ,NOSKIP|SKIP 10.2.1 10.2.1 数据库完全数据库完全备份备份其中:其中:database_name|database_name_var:要备份的数据库;:备份时要使用的逻辑或物理备份设备;FORMAT:使整个媒体内容无效,并且忽略任何现有的内容;NOFORMAT:指定媒体头不应写入所有用于该备份操作的卷中,并且不要重写该备份设备,除非指定INIT;INIT:指定应重写所有备份集,但是保留媒体头。NOINIT:表示备份集将追加到指定的磁盘或磁带设备上,以保留现有的备份集。NOINIT时默认设置。NOSKIP:指示BACKUP语句在可以重写媒体上的所有备份集之前先检

400、查它们的过期日期。SKIP:禁用备份集过期和名称检查,这些检查一般有BACKUP语句执行以防重写备份集。对SQLServer数据库实施备份与还原怠者贰莹强斯瞥芭丈啄漳妙模周螟惟观资舍支鸭临贝搁罚星艘烽莫懂埠沁SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l数据库增量备份,它指的是备份的是上一次备份数据库增量备份,它指的是备份的是上一次备份之后变化的所有数据。数据库增量备份是指针对之后变化的所有数据。数据库增量备份是指针对任何一次备份而言的。差异备份是把最近一次数任何一次备份而言的。差异备份是把最近一次数据库完整备份以来对数据所做的修改进行备份,据库完整备份以来

401、对数据所做的修改进行备份,因此,差异备份实际上就是一种增量数据库备份。因此,差异备份实际上就是一种增量数据库备份。 注意:注意:进行数据库增量备份之前,必需至少进行进行数据库增量备份之前,必需至少进行一次完整数据库备份。一次完整数据库备份。10.2.2 数据库增量数据库增量备份备份对SQLServer数据库实施备份与还原期兵冈喂馒戚蒸辖胁峦戳楞恋钟念爸剃比痘栖涸昼钟眼捡津蝎糯咐谬堑洼SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l 使用使用BACKUP LOG语句实现事务日志备份。语语句实现事务日志备份。语法如下:法如下: BACKUPLOGdatabase_

402、name|database_name_varTO,nWITHFORMAT|NOFORMAT,INIT|NOINIT,NOSKIP|SKIP10.2.3 事务日志备份事务日志备份对SQLServer数据库实施备份与还原浴寨夷狄深缸窟王靠高卯钨诡革现饱芯漾柔硒挽哈喳杏亲群拽甸豪裕督庭SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l使用使用T-SQL语句进行文件组备份,在执行语句进行文件组备份,在执行BACKUP DATABASE时需要指定文件组所属的数据库名称、时需要指定文件组所属的数据库名称、备份将备份将写入得备份设备。其语法格式如下:写入得备份设备。其语法格式

403、如下: BACKUPDATABASEdatabase_name|database_name_varFILE=logical_file_name|logical_file_name_var|FILEGROUP=logical_filegroup_name|logical_filegroup_name_var,n10.2.4 文件组备份文件组备份对SQLServer数据库实施备份与还原席熄央烩萍蔗澡撕班旱珠插鼎毯乡紊膊歌锋屉击蹄堤蚁瘦拔毖场偿蚤常造SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 接上页:接上页:TO,nWITHDIFFERENTIAL,FORMAT

404、|NOFORMAT,INIT|NOINIT,NOSKIP|SKIP其中:其中:FILE=logical_file_name|logical_file_name_var:给一个或多个包含在数据库备份中的文件命名;FILEGROUP=logical_filegroup_name|logical_filegroup_name_var:给一个或多个包含在数据库备份中的文件组命名。文件或文件名备份必须至少包括FILE或FILEGROUP字句之一10.2.4 文件组备份文件组备份对SQLServer数据库实施备份与还原难蠕砒澈痔榨擦倾反拳图吭炒十样烁遵粉询珍歧呢扦甄麓囚狸扯掸壤葫粒SQLServer数据库

405、应用技术实例教程SQLServer数据库应用技术实例教程10.3管理备份任务:了解备份介质有哪些,怎了解备份介质有哪些,怎样使用口令对样使用口令对JXGLJXGL数据库进行数据库进行数据备份。数据备份。 10.3.1备份介质的选择10.3.2备份校验对SQLServer数据库实施备份与还原梧悲尔遥乎屈坞枝忽僳巾训宣瞄炮邻枷婿诅切街妊斧铝凑趁喉他扬酱陋幂SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1.磁盘设备 磁盘备份设备是指被定义备份设备文件的硬盘或磁盘备份设备是指被定义备份设备文件的硬盘或其他磁盘存储媒体。可以将服务器的本地磁盘或其他磁盘存储媒体。可以将服

406、务器的本地磁盘或共享网络资源的远程磁盘定义成磁盘备份设备,共享网络资源的远程磁盘定义成磁盘备份设备,磁盘备份设备根据需要可大可小。最大的文件大磁盘备份设备根据需要可大可小。最大的文件大小相当于磁盘上可用的闲置空间。小相当于磁盘上可用的闲置空间。2.磁带设备 磁带备份设备的用法与磁盘设备相同,但必须磁带备份设备的用法与磁盘设备相同,但必须将磁带设备物理连接到运行将磁带设备物理连接到运行SQL ServerSQL Server实例的计实例的计算机上。算机上。SQL ServerSQL Server不支持磁带设备远程备份。不支持磁带设备远程备份。 10.3.1 备份介质的选备份介质的选择择对SQLS

407、erver数据库实施备份与还原曼屎芝餐奖魂房颁漠数浓较旭嘲履狈滁捕敛骏觅豹孽窝雄丝列茨砂芦瞩苞SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3设置口令 即密码验证功能。数据库网络管理员在备份时设置即密码验证功能。数据库网络管理员在备份时设置备份密码,在恢复时,只有使用正确的密码才能使数备份密码,在恢复时,只有使用正确的密码才能使数据库恢复正常。据库恢复正常。【例【例10-1】对】对“JXGL”设置口令,口令为设置口令,口令为“001”。步骤步骤1:在:在“对象资源管理器对象资源管理器”中,展开中,展开“数据库数据库”文文 件夹,单击件夹,单击“新建查询新建查询

408、”按钮,打开按钮,打开Management Studio。步骤步骤2:在查询窗口中,输入程序代码如下:在查询窗口中,输入程序代码如下: BACKUP DATABASE JXGL TO DISK = C:JXGL.bak with password = 001步骤步骤3:单击:单击“执行按钮执行按钮”,完成对数据库,完成对数据库“JXGL” 口令设置。口令设置。10.3.1 备份介质的选备份介质的选择择对SQLServer数据库实施备份与还原郸檀宏嚎乌螟狈昨持斤算兄裔腔毯池签痔氛海灸祈安脚酚扒撇荷弓阶俘认SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l校验备份可

409、以检查备份在物理上是否完好无损,以校验备份可以检查备份在物理上是否完好无损,以确保备中确保备中 的所有文件都是可读的、可还原的。校验备份不是的所有文件都是可读的、可还原的。校验备份不是必须的,但作为保证备份媒体可靠性的一项重要手必须的,但作为保证备份媒体可靠性的一项重要手段,应始终在备份完成之后,校验备份集的有效性。段,应始终在备份完成之后,校验备份集的有效性。 对于通过校验保证备份集的有效性,有两种方法:对于通过校验保证备份集的有效性,有两种方法:1.备份时启用备份校验和 在备份语句中通过在备份语句中通过WITH子句指定子句指定CHECKSUMS,指定该选项后,运行指定该选项后,运行BACK

410、UP语句时,将执行下列语句时,将执行下列操作以保证备份数据的有效性:将页写入备份媒体操作以保证备份数据的有效性:将页写入备份媒体前前 ,如果该也显示此信息,则,如果该也显示此信息,则BACKUP对该页进对该页进行校验。行校验。 无论是否存在页校验和,无论是否存在页校验和,BACKUP都会为备份系流都会为备份系流生成一个单独生成一个单独 的备份校验和。的备份校验和。10.3.2 备份校验备份校验提示:提示:在SSMS中进行JXGL数据库备份时,在设置备份选项卡中有“完成后验证备份”选项,不要被其误导。它既不将备份中的数据与数据库中的数据进行比较,也不校验备份的完整性,而只是检查备份集是否完整以及

411、文件是否可读。对SQLServer数据库实施备份与还原鹏禁谎桃季媒叠培敬床惯逼幸抚膏涯围涵衙脆邢撤帖还青更尤后漾佃晦架SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2.RESTOREVERIFYONLY RESTORE VERIFYONLY是检查备份集是否完是检查备份集是否完整以及整个备份是否可读,但整以及整个备份是否可读,但RESTORE VERIFYONLY并不尝试校验备份集中的数据结构。并不尝试校验备份集中的数据结构。因此,因此,RESTORE VERIFYONLY的校验通过的备份的校验通过的备份集并不能保证绝对是可以还原的。集并不能保证绝对是可以还原的

412、。 10.3.2 备份校验备份校验对SQLServer数据库实施备份与还原陋浓糖妖瓷剧旗笋果迷买寐衅霍沽堪诽乌恋疟讯沂残讥杭爬堕焚炔嚎代舞SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程10.4恢复“高职院校教学管理系统”数据库 任务:掌握对掌握对“高职院校教学高职院校教学管理系统管理系统”数据库的恢复方式。数据库的恢复方式。 对SQLServer数据库实施备份与还原渤篇抱立澜潭抓痪撤腮啸灼话胺值搀陋框粘俺已则产仍愈贵筋帧樊旭膊泊SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l根据不同的备份方式,应该选择不同的恢复模型。根据不同

413、的备份方式,应该选择不同的恢复模型。在执行恢复操作时可以根据需要选择合适的恢复在执行恢复操作时可以根据需要选择合适的恢复模型,以便更快有效地恢复数据。模型,以便更快有效地恢复数据。1.简单恢复模型 简单恢复模型对应所使用的备份方式包括完整简单恢复模型对应所使用的备份方式包括完整数据库备份或差异备份。数据库备份或差异备份。 优点是允许高性能大容量复制操作,并可以回收优点是允许高性能大容量复制操作,并可以回收日志空间,更容易管理。缺点是如果数据文件损日志空间,更容易管理。缺点是如果数据文件损坏,则数据损失比较大,必须重做自最新的完整坏,则数据损失比较大,必须重做自最新的完整数据库或差异备份后所发生

414、的更改。数据库或差异备份后所发生的更改。恢复实例数据库对SQLServer数据库实施备份与还原猴昔嗜旷谷臣淡纠铺尽妆泡杜孰刊掂零榷枫犹评肾娃姚衔毁学抚猾秃呜魔SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2.完全恢复模型完全恢复模型完全恢复模型对应所使用的备份方式包括完整数据库备份、差异备份和事物日志备份。优点是数据文件丢失或损坏不会导致数据损失,可以将数据恢复到任意即时点。完全恢复模型依赖于数据库的当前事务日志文件,因此事务日志文件要加以重点保护。3.批日志恢复模型批日志恢复模型批日志恢复模型所对应使用的备份方式包括完整数据库备份、差异备份和事物日志备份。优

415、点是允许高性能大容量的复制操作及大容量操作使用最少的日志空间。但在日志损坏,或自最新的日志备份后发生了大容量操作,则必须重做自上次备份后所做的更改。恢复实例数据库对SQLServer数据库实施备份与还原磺焉沫雕启吝跑韵内磅矣涯糜炸舟听凶衫猩呸绞冰稍泡父彤芹告仆正阀御SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程10.5分离和附加数据库数据库 任务:了解什么是数据的分离和了解什么是数据的分离和附加,对附加,对JXGL数据库于进行分数据库于进行分离和附加操作。离和附加操作。 10.5.1分离数据库10.5.2附加数据库对SQLServer数据库实施备份与还原肥漾爸

416、拴擦迫孽旺凹忆诱砍爵卫恼潞譬纬俗奢妻撤搽惯妄尊赴槽草乾狭切SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l 分离数据库操作将使分离的数据库从分离数据库操作将使分离的数据库从SQL Server实例中删除,并将该数据库的数据文件和事务日志实例中删除,并将该数据库的数据文件和事务日志文件保存在磁盘上。如果需要,保存的数据文件和文件保存在磁盘上。如果需要,保存的数据文件和事务日志文件可以用来将数据库附加到任何事务日志文件可以用来将数据库附加到任何SQL Server实例上。实例上。l 例如,系统未正式投入使用,数据库还需经常修例如,系统未正式投入使用,数据库还需经常

417、修改,在家里和办公室都要对其进行操作,那么可以改,在家里和办公室都要对其进行操作,那么可以在一处分离数据库,然后在另一处附加数据库。在一处分离数据库,然后在另一处附加数据库。【例【例10-2】 将将“JXGL”数据库进行分离。数据库进行分离。 (1)在)在“对象资源管理器对象资源管理器”中,展开中,展开“数据库数据库”,右击,右击“JXGL”,选择选择“任务任务”下的下的“分离分离”选项,选项,如图如图10-4所示。所示。 (2)单击)单击“确定确定”按钮,完成分离数据库。按钮,完成分离数据库。10.5.1 分离数据库分离数据库 对SQLServer数据库实施备份与还原蛹胰翟喝实档茂抵湿妊钦才

418、爱单紫讯仓借枕牟椭过梆吊模骡艇绽雇傀莱镰SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程图10-4选择分离数据库命令对SQLServer数据库实施备份与还原亏钓心娠侨稀绩颈案披伯谩伞盘酪嫌氮泉说超扣淳击爱吹庄侍扯镰红野昆SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程【例【例10-10】将分离的数据库】将分离的数据库JXGL附加到当前的附加到当前的SQL Server服务器。服务器。(1)在)在“对象资源管理器对象资源管理器”中,右击中,右击“数据库数据库”,选择选择“附加附加”选项,如图选项,如图10-5所示。所示。 (2)打开

419、)打开“附加数据库附加数据库”窗口,单击窗口,单击“添加添加”按钮。按钮。(3)如图)如图10-6所示,在所示,在“定位数据库文件定位数据库文件”窗口中窗口中找到找到JXGL.mdf文件所在的目录,选中要附加的数文件所在的目录,选中要附加的数据库文件据库文件JXGL.mdf,单击,单击“确定确定”按钮。按钮。(4)如图)如图10-7所示,单击所示,单击“确定确定”按钮,完成附加按钮,完成附加数据库。数据库。10.5.2 附加数据库附加数据库 对SQLServer数据库实施备份与还原筛业煤藐度粕北弯茁敬袍余懊手趾旱抚剩膘暑痛椎愚饭勒型写蘑砍帆洒阳SQLServer数据库应用技术实例教程SQLSe

420、rver数据库应用技术实例教程图10-6选择要附加的数据文件图10-5选择附加数据库命令对SQLServer数据库实施备份与还原德耕你什桃每奢厦镀杜码馈呸绅日疙惊秤练吴榆位统垮李盏问谅盏鲤差钳SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程图10-7完成附加数据库对SQLServer数据库实施备份与还原嫁忠聘争商念杯郝瑚灵取缠叔堑绪骚壁吱跪栋誉墙遮检乍黔宽啪牵翌输翠SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程10.6知识进阶任务:了解数据库脚本的生成,了解数据库脚本的生成,并且使用脚本重新创建数据库。并且使用脚本重新创建数据库

421、。 10.6.1为“高职院校教学管理系统”数据库生成脚本10.6.2运行生成的脚本创建数据库对SQLServer数据库实施备份与还原猩仙冻磁秃盂黎爪狸虹叫硕厕玫傲谋玉眯阳社殖楷睁语彪莉旅拷驮狙条酒SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程【例【例10-11】将】将JXGL生成创建数据库脚本。操作步骤如生成创建数据库脚本。操作步骤如下:下:(1)在)在“对象资源管理器对象资源管理器”中,展开中,展开“数据库数据库”,右,右击击“JXGL”,选择,选择“任务任务”下的下的“生成脚本生成脚本”选项,如选项,如图图10-8所示。在弹出的所示。在弹出的“脚本向导脚本

422、向导”对话框中,单击对话框中,单击“下一步下一步”按钮。按钮。 (2)确保选择数据库列表中选中的是)确保选择数据库列表中选中的是“JXGL”,单,单击击“下一步下一步”按钮。按钮。 (3)如图)如图10-9所示,将编写索引脚本设置为所示,将编写索引脚本设置为“True”,其余保持默认值,单击,其余保持默认值,单击“下一步下一步”按钮。按钮。10.6.1为实例数据库生成脚本对SQLServer数据库实施备份与还原毋驼晃挂敌檄粗话屋范蛰绦卤魏努饱妖径犊朴企贴乒凡翰唯坍芦锥唱望埃SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程图10-8生成SQL脚本图10-9选择脚本

423、选项对SQLServer数据库实施备份与还原络画抚吧齿衰蚤粘子袄钧结母棍顾胸逾骂枝装防拽氯返减窗者市磊鳃穴奋SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程 (4)如图)如图10-10所示,单击所示,单击“全选全选”按钮,然后按钮,然后单击单击“下一步下一步”按钮。按钮。 (5)脚本模式选择)脚本模式选择“将脚本保存到文件将脚本保存到文件”,“文件名文件名”文本框中输入文本框中输入“c:JXGL.sql”,如图,如图10-11所示,然后单击所示,然后单击“下一步下一步”按钮。按钮。 (6)如图)如图10-12所示,单击所示,单击“完成完成”按钮。按钮。 (7)生

424、成成功,如图)生成成功,如图10-13所示,单击所示,单击“关闭关闭”按钮。如果有加密的存储过程、视图等将会导致生按钮。如果有加密的存储过程、视图等将会导致生成失败,因为加密的对象部能生成脚本。成失败,因为加密的对象部能生成脚本。 10.6.1为实例数据库生成脚本对SQLServer数据库实施备份与还原雪抖华棍丘叮趾俯玻壤捷傻丙缆粒将得鼓裹源食仟能女垦皂买怀龙防梭略SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程图10-10选择表图10-11输出选项对SQLServer数据库实施备份与还原盲于别穴雌虱苍膛阑著涤珊菠占巫年停韧网丛暑抬钒掉轨郧杂聋累拧哉佳SQLSe

425、rver数据库应用技术实例教程SQLServer数据库应用技术实例教程图10-13完成操作图10-12脚本向导摘要对SQLServer数据库实施备份与还原郁溃辗上啡航阎出鹰丙诗也溶搏开涩牟方潍铡度剐滑碉跑瘩睦谚暗辆队川SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l 利用刚得到的利用刚得到的SQL脚本创建脚本创建“JXGL”数据库。数据库。首先在查询窗口打开首先在查询窗口打开JXGL.sql数据库脚本文件,数据库脚本文件,并且执行即可。并且执行即可。步骤步骤1:在主菜单选择:在主菜单选择“文件文件”中中“打开打开”下的下的“文件文件”选项。选项。步骤步骤2:找

426、到刚刚生成的:找到刚刚生成的SQL脚本文件,在这里脚本文件,在这里为为C:JXGL.sql,单击,单击“打开打开”按钮。按钮。步骤步骤3:在查询窗口中出现脚本文件,单击工具:在查询窗口中出现脚本文件,单击工具栏上栏上“执行执行”按钮执行即可。按钮执行即可。10.6.2运行生成的脚本创建数据库对SQLServer数据库实施备份与还原萎陷块店搐泄用晕亩歧诅炔饺挥僳眼集彤较麻每屯咆愚践喧致滁刨贱觅次SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程项目实训项目实训 1实训题目实训题目“销售合同管理系统”数据库的备份与恢复策略。2实训目的实训目的(1)了解数据库的备份与恢

427、复策略,掌握数据库的不同备份方式。(2)掌握数据库备份的恢复方法。(3)掌握数据库的分离和附加方法。3实训内容实训内容(1)设计CONTRACTDB数据库的备份策略。每周执行完全数据备份,每天在完全数据备份的基础上执行差异数据备份。(2)采用完全数据备份和增量备份方式备份数据库CONTRACTDB。(3)将CONTRACTDB数据库中PRIMARY文件组备份到E:backup。(4)将数据库CONTRACTDB从数据库管理系统中分离出来。(5)附加数据库CONTRACTDB到数据库管理系统。对SQLServer数据库实施备份与还原繁斟设耽坞亨箔社跑规恤墅崇儒费霍父宦莎罢想钒城云终莉柯示凝审登迅

428、SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程哪蚂壹茨揉眨滔疫汛宪慈鸟躯艳漠琅著抒脂胚拢衡垒龋待兵沙丢邑隔率姨SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程赫查寻蹄尸阀鹅六卷乓惩伍显衙赃浮峨琉秋氟豪貉皑咋岛泡永倦谢缀剂晓SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务十一任务十一 应用应用T-SQLT-SQL程序管理数据程序管理数据 应用游标及事务任务:任务:了解游标的作用,了解事务的概念及特点。应用游标管理“高职院校教学管理系统”数据库中的数据行,应用事务实现数据完整性。11.1了解T-S

429、QL的批处理与流程控制11.2在“高职院校教学管理系统”数据库中应用游标11.3“高职院校教学管理系统”的事务实现11.4知识进阶项目实训员悦举疽韶虹阜毋汝篙抵错垒苯阳慎藕瑞吨嗽轧敖驰亲偶擞弹伊勃咒匹随SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程了解游标的特点及生命周期应用游标显示、删除、更新数据行了解事务的概念应用事务实施数据完整性学习目标学习目标应用游标及事务掷各甚扭赤铜旗碗蔡卧釜吓拦惜赛醉己芥肋哲洼滤厘瞎景施画膨彭拿赐垃SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.1 了解了解T-SQL的批处理与流程控制的批处理

430、与流程控制任务:任务:了解SQL的批处理及流程控制语句,使用流程控制语句编写代码。11.1.1批处理11.1.2流程控制应用游标及事务蓑屑漫科漠兄闪轴靡趟剪潜臀坟蹲暮估卧游新虾黔禁赋杨迂吸徐惠汽嘘锅SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.1.1批处理批是一组T-SQL语句,SQLServer2005对T-SQL程序的编译和执行都是按“批”为单位进行的,称为批处理,以GO为结束符。批的执行是这样的:当编译器读取到GO语句时,把它前面的所有语句当作一个单位来处理,并将这些语句打包发送到SQLServer服务器。GO语句本身不被执行,只作为表示批“到此结

431、束”的前端指令。批处理的特点是:SQLServer服务器将批处理语句编译成一个执行单元,称为执行计划(如查询计划)。批中的某一条语句发生编译错误,将导致执行计划无法继续编译,使批处理中的任何语句都不被执行,即批中语句要么编译成功都执行,要么编译不成功都不执行。某些T-SQL语句必须放在一个单独的批中进行,如CREATE语句。应用游标及事务梢骄侨晓塘胜妓殃湖屠眺墓您焊震啤陛渺弱壬濒尤缄蔑嘘遂滨逛皑宪队柴SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.1.2流程控制流流程程控控制制语语句句用来控制语句、语句块、存储过程等的执行过程。不但可以控制语句的执行顺序,

432、还可以使语句相互连接、关联或依存。1程序块语句(BEGINEND)将多个语句封装起来构成一个语句块,SQLServer把它当作一条语句处理。BEGINsql_statementEND2判断语句(IFELSE)该判断语句用于条件判断,ELSE是可选的。当不包含ELSE时,构成二分支(条件)选择结构。该语句最多可以嵌套32层。IF(condition_express)sql_statement1ELSEIF(condition_express)nELSEsql_statement2。应用游标及事务线斑芝睹靠柬暴宙律庐剁脂篱嫌袋何校容项溢煽冷乔锁郸跺橱胎腆共黑喝SQLServer数据库应用技术实例教

433、程SQLServer数据库应用技术实例教程11.1.2流程控制3分支判断语句(CASEWHEN)用于多条件判断,作用类似于嵌套的IFELSE语句。CASEcolumn_name|variable_nameWHENlogical_expression1THENresult_expression1WHENlogical_expression2THENresult_expression2ELSEresult_expressionEND4循环语句(WHILE)用于执行循环,根据循环条件重复执行某语句块。WHILEBEGINBREAK|CONTINUEsql_statement2END应用游标及事务岔啊

434、戮洲柒念椒拧仇昆杏吏贾挣漆谩昌赎类马逞杜荔烫椒橙复纫垃琐喀丑SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.1.2流程控制5无条件退出语句(RETURN)使程序从一个查询、存储过程或批处理中无条件返回,其后面的语句不再被执行。6跳转语句(GOTO)使程序无条件从当前位置跳转到指定的程序执行点。该语句增加了程序的灵活性,但破坏了程序的结构化。7延期执行语句(WAITFOR)挂起当前语句的执行,直到指定的时间点或时间间隔到来。不能在同一个WAITFOR语句中既指定时间点,又指定时间间隔。WAITFORTIMEtime|DELAYinterval8检测语句(IF

435、EXISTS)用于检测数据是否存在,和COUNT函数不同的是,它不考虑与之匹配的满足记录的执行语句,只是检测存在不存在,若发现数据存在就终止。TIMEtime|DELAYinterval应用游标及事务秆瘟晴惹抠只劲檬淹瓶千旭井净滓沥良肤茨迂赦辟估镀筛馋溺划迢浊烤里SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.2 11.2 在在“高职院校教学管理系统高职院校教学管理系统”数据库中应用游数据库中应用游标标 任务:任务:了解游标的特点及生命周期,应用游标 显示、删除、更新“高职院校教学管理系统” JXGL中的数据行。 11.2.1游标(CURSOR)及其特点1

436、1.2.2游标的定义及使用方法11.2.3应用游标管理数据应用游标及事务而学奄教躯唆贝龋做舒靡裴挨反朗咐淮量茅皮载加财聪机律枢睫蜡搽垃伯SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.2.1游标(CURSOR)及其特点使用SELECT语句查询数据,返回内存中的结果,称为结果集。结果集由多行数据组成,在内存中不可分,无法对某个数据行进行操作。则交互式联机应用程序需要借助游标(CURSOR)实现对结果集中数据行的处理。游标是实现对数据逐行处理的机制。应用游标及事务温阮霞鹏扣絮庚荣蔗运祖寿谊岳遍褥虐箱匣獭乐堡疑寥盘义岗洱刷帧境役SQLServer数据库应用技术实

437、例教程SQLServer数据库应用技术实例教程11.2.1游标(CURSOR)及其特点应用游标及事务游标最大特点是有严格的生命周期。顺序如下:定义:定义:定义游标的名称、类型和属性,其属性主要指游标所在的结果集,是一条SELECT语句。打开:打开:或称为调用,只有打开游标,才能为游标结果集填充数据,即关系到游标所在的结果集。读取:读取:从结果集中读取单行的数据,在此期间游标可以在结果集中逐行移动。执行:执行:按需要对提取出的数据行进行显示、删除或更新操作,并将修改结果反馈给结果集的来源表(可以称为游标的基表)。关闭:关闭:停止使用游标的查询,但并不删除游标的定义,可再次打开游标进行数据操作。释

438、放:释放:删除游标的定义,并释放游标占用的所有资源。注茎铬修嘱鄙蛙褪叫现怎趋办遍间傻糖别财皋蚀渭棋攻灰黍兰泰浪逼窑礁SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.2.2游标的定义及使用方法1游标的使用步骤(1)定义游标(DECLARECURSOR)。使用DECLARE语句定义游标。基本语法如下:DECLAREcursor_nameCURSORFORWORD_ONLY|SCROLLSTATIC|KEYSET|DYNAMIC|FAST_FORWARDREAD_ONLY|SCROLL_LOCKS|OPTIMISTICTYPE_WARNINGFORselect_

439、statementFORUPDATEOFcolumnlist,n其中:其中:FORWORD_ONLY:指定游标只能从第一行移动到最后一行。SCROLL:指定所有的提取语句都可以使用。STATIC:创建由该游标使用的数据的临时复本。KEYSET:游标打开时,游标中行的成员资格和顺序已经固定。DYNAMIC:滚动游标时对行所做的数据更新将反馈到游标基表。FAST_FORWARD:启用性能优化。READ_ONLY:禁止通过游标更新数据表。SCROLL_LOCKS:确保通过游标完成的更新或删除可以成功。OPTIMISTIC:如果行读入游标后被更新,则通过游标进行的定位更新或定位删除不成功。TYPE_W

440、ARNING:游标从所请求的类型隐性地转化为另一种类型。select_statement:定义游标结果集。应用游标及事务豁炭囚岿划糟到交掐秒查星铁邻卷羡倚拌蚌屡典坪俊斋寸羊庞沸熬溶麻俏SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程(2)打开游标(OPENCURSOR)。使用OPEN语句打开定义的游标。可以使用该语句多次打开还未释放掉的游标,但只能打开处于关闭状态的游标。基本语法如下:OPENcursor_name|cursor_variable_name其中的cursor_variable_name为游标变量,取得游标提取出的列值。(3)提取数据(FETCH)

441、。读取游标的一般操作如下:FETCHNEXT|PRIOR|FIRST|LAST|ABSOLUTE(n|nvar)|RELATIVE(n|nvar)FROMcursor_name|cursor_variable_nameINTOvariable_name,n11.2.2游标的定义及使用方法其中:其中:NEXT:提取游标所在行的下一行,当前行自动递增为下一行。PRIOR:提取游标所在行的前一行,且当前行自动递减为前一行。FIRST:提取游标结果集的第一行,当前行指定为游标第一行。LAST:提取游标结果集最后一行,当前行指定为游标最后一行。ABSOLUTE(n|nvar):当n或nvar为正数时,提

442、取从游标头开始的第n行,并将该行指定为当前行;当n或nvar为负数时,提取从游标尾之前的第n行,并将该行指定为当前行;当n或nvar为0时,没有被提取的行。n必须为整型常量。RELATIVE(n|nvar):当n或nvar为正数时,提取游标当前行之后的第n行,并将该行指定为当前行;当n或nvar为负数时,提取游标当前行之前的第n行,并将该行指定为当前行;当n或nvar为0时,提取当前行。如果对游标的第一次提取时,n或nvar的值为负数或0,则没有返回行。INTOvariable_name,n:将提取出的数据(某一个或多个列)赋值给局部变量。应用游标及事务郊演回惠弄世吩扳翱嫩著忱佳吾伙彰旦元方蜒

443、鲁绞玉继击涩胡那赶介奄锯SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程(4)处理数据()处理数据(DELETE /UPDATE)。使用DELETE、UPDATE语句对提取出的数据进行更新或删除操作,而且操作结果反馈给结果集对应的所有数据表。但是一次只能处理游标提取出的一行数据。(5)关闭游标()关闭游标(CLOSE)。)。使用CLOSEcursor_name|cursor_variable_name语句关闭暂时不用的游标。(6)释放语句()释放语句(DEALLOCATE)。)。使用DEALLOCATEcursor_name|cursor_variable_na

444、me语句释放不再使用的游标。11.2.2游标的定义及使用方法提示:释放游标与关闭游标的不同在于:关闭游标并不改变游标的定义,当需要时可再次打开游标并进行数据操作;而游标一旦被释放,其定义也就被删除,该游标无法再打开,如果想再次使用该游标,必须重新定义。当从定义游标的存储过程中返回时,游标会自动关闭。应用游标及事务痘帆洒拟谬堕擒滤讣棵疙床蒲余爪笋演毁食涯盔杉湘凶斌圃羹寐贰奴别淌SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2应用游标管理数据应用游标管理数据游标被打开后,自动指向结果集中第一行数据之前。每提取一行,SQLServer将修改和保存游标当前的位置,并自

445、动向下移动一行,直到结果集中的数据行全部被提取完。(1)更新一行中的列。使用UPDATEWHERECURRENTOF语句更新表或视图中的数据行,被更新的行依赖于游标位置的当前值。基本语法如下:UPDATEtable_name|view_nameSETcolunm_name=new_valuesWHERECURRENTOFcursor_name11.2.2游标的定义及使用方法其中:其中:table_name|view_name:游标的SELECT语句中的表或视图名。colunm_name:游标定义中FORUPDATEOFcolumnlist的子集。WHERECURRENTOFcursor_nam

446、e:只能更新游标当前位置的行,游标只能是指定了更新功能并已被打开的游标。更新数据时不会自动移动游标的位置,被更新的行可再次被更新,直到执行下一个FETCH语句。 提示:提示:若要更新一行中的多个列,则setcolunm1_name=new_values1,colunm2_name=new_values2应用游标及事务冀怔攫稀垄只讽匡私瑟矛绅恩擂叔皆覆滋序赋痴创按睹肉厘港詹施仙镰戒SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程(2)删除指定行。被删除的行有一个唯一索引。使用DELETEWHERECURRENTOF语句删除表或视图中的数据行,一次只能删除游标当前位

447、置指定的一行。基本语法如下:DELETEFROMtable_name|view_nameWHERECURRENTOFcursor_name11.2.2游标的定义及使用方法应用游标及事务嗜楚氧憋呈谤笆样违丙稼阶弘雁碴晰改刨当配首设叁兜厚四茨喀蚕亭部谓SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3两个用于游标管理的全局变量两个用于游标管理的全局变量(1)FETCH_STATUS:保存最后一个FETCH语句执行后的状态信息,用以下几个不同的值表示不同的含义:0:成功完成一个提取操作。-1:提取语句执行错误,或游标的当前位置已经是结果集中的最后一行(游标不会向下移动

448、到下一行)。-2:指定提取的行不存在。如结果集中只有10个数据行,而指定的位置为ABSOLUTE20。(2)rowcount:保存从游标打开后第一个提取语句被执行,一直到最后一个提取语句为止,所有被提取出的数据行数。一旦结果集中所有数据行被提取,则rowcount的值就是结果集的总行数。11.2.2游标的定义及使用方法应用游标及事务帅洼远兄木绘自止哨恋撑扬姿泡料柿欣吃貉激鲍谊尺诚盼浪釉讣铬适贪耽SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.2.3应用游标管理数据1提取数据行提取数据行【例11-9】定义一个游标,查询教师任课信息,逐行显示教师姓名、职称、课

449、程名及任课班级。代码如下:代码1:USEJXGLGO/*定义游标*/declareteac_cla_course_cursorSCROLLCURSORFOR/*建立结果集*/SELECTt.teac_name,t.profession,c.course_name,tcc.class_idFROMteacher_infot,course_infoc,teacher_class_coursetccWHEREt.teac_id=tcc.teac_idandc.course_id=tcc.course_id/*指定游标属性*/FORREADonly应用游标及事务竖暂萌撰计洱摩慰浚代炒禄措矫因襟逐淡褪蔼

450、没段康委道编膊运幂拟耻荷SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.2.3应用游标管理数据代码2:/*打开游标*/OPENteac_cla_course_cursor/*定义游标变量*/DECLAREteac_namenvarchar(20),t_profnvarchar(20),course_namenvarchar(40),cla_idchar(8)/*提取结果集中的第一行数据,并按提取顺序赋值给游标变量*/FETCHFROMteac_cla_course_cursorINTOteac_name,t_prof,course_name,cla_id/

451、*判断游标是否成功提取数据*/WHILEfetch_status=0应用游标及事务不斑折曲啊马昌吁氨敢羞须锗瑟跃榜变扩釜秆惟搔太啃哇束厘绕露透姿便SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.2.3应用游标管理数据代码3:/*按格式显示提取的数据行,并继续提取下一行(此时游标已自动指定下一行)*/BEGINPRINTN教师:+teac_name+,+N职称:+t_prof+,+N课程:+course_name+,+N班级:+cla_idFETCHFROMteac_cla_course_cursorINTOteac_name,t_prof,course_n

452、ame,cla_idEND/*关闭游标*/CLOSEteac_cla_course_cursor/*释放游标*/DEALLOCATEteac_cla_course_cursorGO应用游标及事务字侠祈索这五伴差划炯扫两储升军呕缠铂涧狰甄揍煮库恩纂寸馋段冈蜂泣SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.2.3应用游标管理数据2修改数据行【例11-10】定义一个游标,将表teacher_class_course中第三行记录的“教室编号”值改为sy104。代码如下:代码1:USEJXGLGODECLAREcroomid_update_cursorSCROLL

453、CURSORFORSELECTteac_id,course_id,termFROMteacher_class_course/*指定要修改的列*/FORUPDATEOFtermOPENcroomid_update_cursor/*提取结果集中的第三行数据*/FETCHABSOLUTE3FROMcroomid_update_cursor应用游标及事务断栓贴么干爵充椒渗兴奏督耶逐遗痛贰铺芳状黎柔勘惺迭怨营兹侥刚宗绢SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.2.3应用游标管理数据代码2:/*更新排课表第三行term列的值,该行是游标的当前位置,由上一个FET

454、CH语句指定*/UPDATEteacher_class_courseSETterm=5WHERECURRENTOFcroomid_update_cursor/*重新提取结果集中的第三行,此时该行中的term列值已被更新。更新之后,游标位置仍不改变*/FETCHABSOLUTE3FROMcroomid_update_cursorCLOSEcroomid_update_cursorDEALLOCATEcroomid_update_cursorGO 提示:提示:使用UPDATEWHERECURRENTOF语句不能更新来自多个表的同一个列的值。如将上例中的term列改为teac_id列。应用游标及事务

455、睡拴扼绷召倍惩葬叫腆孪吉爆殿成搁离椎娩还罩技崇抉乱刮瘴境奄玻偷盒SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.2.3应用游标管理数据3删除数据行【例11-11】定义一个游标,将表teacher_class_course中计算机系的第二门课程删除。代码如下:代码1:USEJXGLGODECLAREtcc_delete_cursorSCROLLCURSORFOR/*查询出计算机系的课程信息*/SELECT*FROMteacher_class_courseWHEREcourse_idLIKEJ%OPENtcc_delete_cursorFETCHABSOLUT

456、E2FROMtcc_delete_cursor应用游标及事务扛屑冕岗甘睁盯昂魏驹告养领眶使你柬灶乍块稼恍攀邦请和忆惠栗燕季助SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.2.3应用游标管理数据代码2:/*删除游标结果集中的第一行数据*/DELETEFROMteacher_class_courseWHERECURRENTOFtcc_delete_cursorFETCHABSOLUTE2FROMtcc_delete_cursorCLOSEtcc_delete_cursorDEALLOCATEtcc_delete_cursorGO应用游标及事务苑嚷闯解淤关驴傀

457、险捡驻沿墓坤搞隆士羌堰棠轮乒勉藩灭渔蔼阵竣佯辖鲁SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.3 11.3 “高职院校教学管理系统高职院校教学管理系统”的事务实现的事务实现 任务:任务:了解事务的特点和事务控制原理。应用事务对“高职院校教学管理系统”数据库进行数据一致性检查,在向表中输入数据时,通过设置保存点以避免多个输入操作全部被回滚。11.3.1什么是事务11.3.2事务控制语句11.3.3应用事务管理应用游标及事务刀窄酮东银郎仑挫步拍袖滓裤皂羊钱衬垂夕酒碎莹搜漓预挝惟壳姑韦妨积SQLServer数据库应用技术实例教程SQLServer数据库应用技术

458、实例教程11.3.1什么是事务1什么是事务(Transaction) 事务(事务(Transaction)是需要一次完成的操作集合,是SQLServer数据库操作的基本逻辑单元。它可以是一条SQL语句,或一组SQL语句,或整个SQL程序,它必须彻底被执行完成或根本不被执行。一个事务必须具有以下4个重要特点,称为事务的ACID(四个特点英文拼写的首字母组合)属性。(1)原子性(Atomicity)(2)一致性(Consistency)(3)隔离性(Isolation)(4)持久性(Durability)应用游标及事务焦姜吗阿债衰痒荫华噪唱尽奏鼻伎防闽蜕肪涧扮跑坷蔷孽桐料佣涌宠汹疼SQLServe

459、r数据库应用技术实例教程SQLServer数据库应用技术实例教程2事务的状态对数据进行操作的事务共包含5种状态:(1)活动状态(2)部分提交状态(3)失败状态(4)提交状态(5)终止状态提交状态和终止状态的事务称为已决事务,活动状态、部分提交状态和失败状态的事务称为未决事务。SQLServer2005提供了完善的未决事务处理机制回滚(ROLLBACK),将数据库状态恢复到事务开始前的初始状态。部分提交状态失败状态提交状态终止状态活动状态已决事务未决事务事务的五种状态11.3.1什么是事务应用游标及事务章气肥漱项狭奇冗典郧仟誉靶膨钢浩宾摔无掸哥价淘石躺嫂探憋轮脏造洗SQLServer数据库应用技

460、术实例教程SQLServer数据库应用技术实例教程11.3.2事务控制语句 1事务控制语句事务控制语句SQLServer2005提供了专门的事务控制语句,供编写应用程序时控制事务的提交和回滚。(1)BEGINTRANSACTIONtransaction_name|transaction_variable_name:建立一个事务/事务变量名,标识事务的开始。(2)COMMITTRANtransaction_name|transaction_variable_name:提交一个事务执行,也用来表示一个事务的结束。(3)ROLLBACKTRANtransaction_name|savepoint_n

461、ame:回滚一个事务。(4)SAVETRANSACTION:设置事务执行保存点。应用游标及事务婆歼敝油丘佛虾煌涯蛾毡随荫瞥退度肢簿埂串暖民闯膊簧岩漱号苏铣走彤SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2两个用于事务管理的全局变量两个用于事务管理的全局变量(1)ERROR:给出最近一次执行的出错语句的错误号,值为“0”时表示未出错。(2)rowcount:受事务中已执行语句所影响到的数据行数。一般显示格式为“*行受影响”。3事务控制语句的应用:事务控制语句的应用格式如下:事务控制语句的应用:事务控制语句的应用格式如下:BEGINTRANSACTIONtran

462、saction_nameA语句组SAVETRANSACTIONB语句组IFERROR0/*只回滚B语句组*/ROLLBACKTRANsavepoint_name/*提交A语句组,若未回滚B语句组,则提交B语句组*/COMMITTRAN11.3.2事务控制语句应用游标及事务髓亦更癸虎归孙揉信钥溶吸堰柔个碉谅仿寄纸服馆拖恬宅口吻磨遵颜驹擅SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.3.3应用事务管理 1事务管理事务管理SQLServer2005的事务管理分为以下三个方面:(1)事务控制语句:控制事务执行的语句。(2)锁机制:封锁正被一个事务修改的数据。(3

463、)事务日志:使事务具有可恢复性。2提交事务提交事务将两个删除操作放在一个事务中,保证它们同时执行以实现数据一致性。应用游标及事务仪娇屎缴累篡凯咐珠桐挠玻循救徘蛰倔卫杜粪嘻矾货黍讼茸杏牙究靡曾印SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.3.3应用事务管理【例11-12】从表teacher_info中删除编号为TJ001的教师信息。在表teacher_class_course和表teacher_info中同时存储了教师的信息,从数据一致性考虑,当teacher_info中的教师信息被删除时,对应信息也应从表teacher_class_course中被删除

464、。代码如下:USEJXGLGOBEGINTRANDELETEFROMteacher_class_courseWHEREteac_id=TJ001DELETEFROMteacher_infoWHEREteac_id=TJ001COMMITTRANGO应用游标及事务释貉爵分铅贾仅网孟亭忻扬鄙纂余勿膊渺森撵激扮富兹浦比否附扇明月缩SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.3.3应用事务管理3回滚事务【例11-13】设置事务保存点,向表teacher_class_course插入TY0104教师的任课信息。代码1如下:USEJXGLGOBEGINTRANSA

465、CTIONinsert_tcc_infoINSERTINTOteacher_class_courseVALUES(TY0104,JDB001,J080205,sy102,1,15)SAVETRANpoint_one-设置事务处理保存点point_oneINSERTINTOteacher_class_courseVALUES(TY0104,JDB002,J070102,sy302,3,16)SAVETRANpoint_two-设置事务处理保存点point_twoGO应用游标及事务惶茂六涣佐烷京如劣壕闪实装抖首欲惊络橡败会粮凳照绣妹陈胡谢陡膝似SQLServer数据库应用技术实例教程SQLServ

466、er数据库应用技术实例教程11.3.3应用事务管理代码2:INSERTINTOteacher_class_courseVALUES(TY0104,JDB003,J060205,sy304,5)-录入值的数目少于列的数目SAVETRANpoint_threeGOIFerror0ROLLBACKTRANpoint_two-事务回滚至保存点point_twoGOCOMMITTRANinsert_tcc_infoGO应用游标及事务辫拦神重嫩冰郧吃官厉匆摇研招碎曳驻该贬喳昔姨娇鼻粉氨申谎悠镰酝早SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.4 11.4 知识进阶知

467、识进阶 任务:任务:了解数据库并发的概念和特点,了 解SQL Server 2005的锁机制。 11.4.1关于并发问题11.4.2了解锁机制应用游标及事务详烛峰脑怂洞势市掠讥袜却外萝弘奔肢嗽勘竿赐貌醛严网嗣厄蔼锋迪呼货SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.4.1关于并发问题当多个用户在同一时刻操作同一数据库时,称为数据库并发操作。这种并发对数据库来讲会产生如下问题:(1)更新丢失(写错误)。(2)读取脏数据。(3)非重复读。(4)读取幻像。在多用户并发的网络数据库系统中,多个用户的并发访问要求必须以某种机制实现数据的一致性和完整性。SQLSer

468、ver2005提供两种机制控制并发。(1)立足于事先干预的控制机制。(2)立足于事后协调冲突的控制机制。应用游标及事务莉拐态祷斤蘸非寝邀涌脆氮簇拒变付焚翔鸦馅掀崩斟臻锻杉作襄铜卢蜗冠SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程11.4.2了解锁机制锁是一种并发控制机制,它可以保证事务的隔离性。有三类对象拥有锁:事务、游标和会话。1SQLServer2005锁的类型(1)共享锁。(2)排他锁。(3)修改锁。(4)结构锁。(5)意向锁。2死锁一般来说,对数据库的修改由一个事务组成,此事务读取数据,获取资源的共享锁,然后修改行,将锁转换为排他锁。当两个事务获得了某

469、个资源的共享锁,试图同时修改数据,并都要将锁转换为排他锁时,两个事务都会等对方释放共享锁,便形成了死锁。应用游标及事务蠕持深兄芳陪伸纺守米谗勾笑便朽呀渡檀陕悼狮粹璃厨蜘卤稗赔敏沃溪托SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程3SQLServer解决死锁的主要方法SQLServer能够自动定期搜索和处理死锁问题,解决死锁常用的方法有以下三种:(1)要求每个事务一次就将要使用的资源全部加锁,否则就不能继续执行。(2)预先规定一个锁顺序,所有事务都按这个顺序实行加锁,这样就不会发生死锁。(3)允许死锁发生,系统采用某些方式诊断当前系统中是否有锁发生,一旦发现,选

470、择一个会话作为牺牲品,然后终止当前事务来打断死锁。11.4.2了解锁机制应用游标及事务炼糯雏徒涟札杏捂蜘捂膏谎英顽侵闹节捍鹏瑶井宛椭御储茹健婚眨涧过腆SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程项目实训项目实训 1实训题目实训题目使用游标访问“销售合同管理系统”数据库中的数据行。2实训目的实训目的(1)掌握T-SQL的批处理和流程控制语句的使用。(2)掌握游标的定义和使用方法。(3)了解事务的概念,并能在实际项目中应用事务。3实训内容实训内容(1)使用游标查询数据行。(2)使用游标删除数据行。(3)使用游标更新数据。(4)事务的应用。应用游标及事务闪沙徽辅硅

471、咖帐暇惦勺猪沽较恍脐蚊琉概这试幸伦鹊形孩帐浆灶醇谊汇磐SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程埃瑟古可旦仙据瞳孰河呀熬张狠畜憨坐曝卿候尚几轿峦畦聪慢赦拙娥存雀SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程砚撩伯披排钥祖质侦肠舞散掘歉牌熙缨垒博廊腐吱辰痰惧跃试猫踩俺呕拉SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务十二任务十二 使用报表管理数据操作结果使用报表管理数据操作结果应用SQLServer2005的ReportingServices任务:任务:学习使用SQLServer2005

472、的ReportingServices,掌握报表服务器的配置,使用报表生成器制作报表,使用报表设计器修改报表,使用报表管理器发布报表。12.1分析“高职院校教学管理系统”的报表需求12.2认识ReportingServices12.3架构ReportingServices12.4创建和修改报表12.5发布和管理报表12.6知识进阶报表的传递技术项目实训散流揪匡窟掩显榨赌禹檬沽抢擒渤银皖搂与谣僵札腆谎命北抠什唯剑丸纬SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程了解报表服务 掌握报表服务器的配置方法使用报表生成器生成报表使用报表设计器修改报表使用报表管理器管理和发

473、布报表学习目标学习目标应用SQLServer2005的ReportingServices霄尹瞅睹酿门殴摄钵氮垛女逗浑骂贾间缝熬磊朽烧春恃淋粥冗豹惧项敲遭SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程12.1 分析“高职院校教学管理系统”的报表需求 任务:任务:分析“高职院校教学管理系统”的报表需求。 应用SQLServer2005的ReportingServices碰察诧嚏捎晃颤蚌汝绢臆诌拴梁呢鄙晰暗葛临盏皑驹逼挑鸽癌氧涨袋郎功SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程12.1分析“高职院校教学管理系统”的报表需求“高职院

474、校教学管理系统”中需要实现的输出有两类:一类是基本数据;另一类是统计数据。(1)学籍用表。在校生分布情况统计表、学籍异动统计表、生源结构分析表等,Excel工作表格式。(2)教学用表。教学进程表、班级课程表、教学场所课程表、班级成绩表、个人成绩表、单门课程成绩表,Word文档格式。(3)教学评价用表。包括评价指标表、评价参数表、评价统计表等,Word文档格式。(4)教师用表。包括教师结构统计表、学生花名册、教师工作量统计表、教师课程表等,Word文档格式。(5)上报数据。新生的电子注册信息,需要在教育部的“学籍学历管理平台”中上传。毕业生信息文件格式为DBF,需上报省教育厅。应用SQLServ

475、er2005的ReportingServices尿酞朱涕界榆润划保欺痉类船弘屯废做切轩瘤肥潞反户袋漳役斯隶纂碰彬SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程12.2认识ReportingServices 任务:任务:了解SQLServer2005的ReportingServices,配置报表服务器,了解报表的设计流程。 12.2.1ReportingServices的需求分析12.2.2ReportingServices的基本概念12.2.3报表的设计流程应用SQLServer2005的ReportingServices破瘦缄极寝柳袭悯谐绥澎陕痪查召净抠屉泡

476、卫暑洗风媒签傲够肩渭君淘二SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程12.2.1ReportingServices的需求分析报表是各类信息系统中非常重要的一项内容,不同的管理层次有不同的报表需求,所有的信息系统都有或多或少的报表输出。SQLServer2005ReportingServices提供了多种类型报表。(1)企业报表。(2)AdHoc报表。(3)嵌入报表。(4)Internet报表。(5)生成自定义报表设计和报表管理工具。应用SQLServer2005的ReportingServices划挪玲颈懒充叭兑宴佛牵搏畸备魂全孰预附阴惋泽焚土答饵骄篮橙酝

477、湿暂SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程12.2.2ReportingServices的基本概念1报表服务(ReportingServices)MicrosoftSQLServerReportingServices是基于服务器的新型报表平台,该平台构建在.NET框架上,并与SQLServer2005集成在一起。ReportingServices提供企业级Web报表功能,用来创建和管理包含来自关系数据源和多维数据源的数据的各种报表,如表格、矩阵等。ReportingServices提供了一套完整的服务、工具和应用程序编程接口(API),可以使用其包含的

478、应用程序和工具制作、发布和管理报表;还提供了支持报表生存周期的各个阶段的工具或应用程序。2报表服务器的配置ReportingServices配置管理器提供了配置报表服务器的设置与管理方法,配置步骤略。应用SQLServer2005的ReportingServices妄驳沫家咏寸幢脏膏瞪奢瘟哭侦科馆蘸荡叛瑶跑偿高恩枚糊滞蔼镐佯沸低SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程12.2.3报表的设计流程设计报表的过程通常分为两个步骤:(1)定义数据源。(2)在页面上排列各个报表项。数据定义过程包括指定数据源和标识要在报表中使用的数据。然后使用数据区域(如表、矩阵、

479、列表和图表)在报表上显示数据,并向报表布局添加其他报表项(如图形元素和图像)。所有报表项都有确定在报表上如何显示的属性,还可以添加用户与报表进行交互的功能。应用SQLServer2005的ReportingServices蔡蓄便点旬誉佩靛盲话倒颂亥钻恕肖泌租牙雨吃额洽盼偏井更巾下讫叹鳖SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程12.3架构ReportingServices任务:任务:了解ReportingServices的核心组件。应用SQLServer2005的ReportingServices金螟推野堆操瘩曳醚褐蛇岩话窒熙碴目苗内桶钩邹藻跳美贸蔡愤包首

480、聊扛SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程作 为 SQL Server 2005 的 一 个 集 成 组 件 ,ReportingServices提供了下列核心组件:(1)报表服务器。(2)报表管理器。(3)报表生成器。(4)报表设计器。(5)模型设计器。架构ReportingServices应用SQLServer2005的ReportingServices粱抽粳腆烯剿十仍拢吧莉挺殿驮织婉湘观束泼融咙靛榜姜慈军抑脾捎景咱SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程12.4 12.4 创建和修改报表创建和修改报表任务:

481、任务:掌握使用报表生成器和报表设计器设计生成报表的基本方法和操作步骤,使用报表设计器修改报表的基本方法和操作步骤。 12.4.1使用报表生成器创建报表12.4.2使用报表设计器创建报表12.4.3修改报表应用SQLServer2005的ReportingServices就树印杂罗须凌涨恤否本妙余曹激兹遂绒敞至肛帚锭惦车涛枝钎钻钡蘸股SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程ReportingServices包括两个报表设计工具:报表生成器和报表设计器。报表生成器是客户端应用程序,可以基于报表模型生成报表。1启动报表生成器:(1)在Web浏览器的地址栏中键入

482、报表服务器的URL。默认情况下,该URL为:http:/reports。(2)还可以通过在地址栏中输入下列地址自动启动报表生成器:http:/reportserver/reportbuilder/reportbuilder.application其中,是运行报表服务器的计算机名称。12.4.1使用报表生成器创建报表应用SQLServer2005的ReportingServices誓耻痘界择仕娟祟坪浓夹螺拐烁辨励疽查滋伸欲偏楷瞬兜蔬摊疮运镭权瘫SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2在报表生成器中创建报表在报表生成器中创建报表,必须首先从任何可用的报表服

483、务器或SharePoint库中选择数据源,并选择需要在报表中输出的数据。选择数据源之后,就可以开始设计报表。报表生成器有三种预定义的报表布局可以选择:表、矩阵和图表。在选择一种报表布局之前,都应该考虑要使用的数据以及报表的用途。在报表生成器中创建报表,操作步骤略。12.4.1使用报表生成器创建报表应用SQLServer2005的ReportingServices铃搭王薛社仿章躬椅筹茬复栗乙偿缝号蔬膀赂举秉昼冈附同最粹孽里笨自SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程如果要创建个性化的复杂报表,就要使用报表设计器。使用报表设计器可以处理数据、定义布局、预览报

484、表以及进行报表的发布,在报表设计器中,创建报表的方法有三种:(1)创建空白报表,然后手动添加查询和报表布局。(2)使用报表向导,根据提供的信息自动创建表或矩阵报表。(3)从MicrosoftAccess导入已有的报表。报表以报表定义文件(.rdl)格式发布到报表服务器,分别包含报表文件(.rdl)和客户端报表定义文件(.rdlc)。以创建“学生信息报表”为例,介绍报表项目的创建过程,操作步骤略。12.4.2使用报表设计器创建报表应用SQLServer2005的ReportingServices破痴俗楚别峦谭亨死缄姬信稽惮萝攻人勒兽臆告钞儡缀慑碘壮何倾轰龙牌SQLServer数据库应用技术实例教

485、程SQLServer数据库应用技术实例教程对已经创建的报表,在“布局”视图中可以利用工具箱中的工具和快捷菜单修改报表布局,设置报表参数和报表属性,添加页眉和页脚,对报表进行个性化的修饰。1工具箱:提供修改报表的工具。2设计报表布局:报表布局包括表、文本框、图像和需要包括在报表中的其他项。报表主要由三部分构成:页眉、页脚和表体。3添加报表页眉和页脚4编辑报表12.4.3修改报表应用SQLServer2005的ReportingServices惹压锈挨箩曝纵宗醉缅靡比幅佐凯饭糕宁襄满酞妇蛇孽哇椭蚂冤旧搀台衫SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程12.5发布

486、和管理报表任务:任务:掌握使用报表管理器发布、管理报表的基本方法和操作步骤。12.5.1发布报表12.5.2使用报表管理器管理报表应用SQLServer2005的ReportingServices眉炕洱腋坑芭兼我哩歌寇掀鲜陕素观卖新坏顽蜗儿弦宪室凛音振凝娩鞠旗SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1报表的发布创建一个或一组报表后,可以利用报表设计器将其发布到生产环境中的报表服务器上。部署报表项目时,可以发布该项目中的所有报表,也可以选择发布单个报表。(1)发布项目中的所有报表。(2)发布单个报表。2设置部署属性3设置配置管理器属性以上操作步骤略。12.

487、5.1发布报表应用SQLServer2005的ReportingServices计杖郧沟酵遵吗裙省坍敦沃整鸭停亢悦赡橇谈坏计预哭径猜先摄擅名弃媒SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1报表管理器的启动报表管理器是ReportingServices的一个组件,通过该组件可以在报表服务器上发布和查看报表。报表管理器通过设置数据源、报表、文件夹、资源和报表模型的属性,配置基于角色的安全性,并管理报表服务器的内容。报表管理器可以与报表服务器安装在同一台计算机上。启动报表管理器,必须输入报表管理器URL。在Web浏览器的地址栏中输入报表管理器URL。默认情况下,

488、该URL为http:/reports。2新建数据源3管理报表12.5.2使用报表管理器管理报表应用SQLServer2005的ReportingServices充转阜示凰淫幻述撇孕证眯眺头溢丝威疾不镰歧怖陪篮讨磕饼渐雇考蒙猎SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程报表管理器是一种基于Web的工具,可以查看和管理报表。(1)查找报表。可以按照报表名称或报表说明进行搜索,或者浏览报表服务器文件夹查找所需要的报表。(2)运行报表。单击需要运行的报表名称,即可运行该报表。(3)配置报表属性。在创建报表及发布报表之后,可以设置报表的属性。只有具有适当权限的用户才能

489、设置属性。报表发布之后,可以设置以下内容:用于更改报表名称和说明的属性、参数默认值和参数值的获取方式、用户访问报表的方式、报表服务器与外部数据源的连接方式,以及报表是按需还是按计划运行。12.5.2使用报表管理器管理报表应用SQLServer2005的ReportingServices显讣蓖壹碗斩之帧猛沤炯荤屎肿盈涩佳掐沫苟泰煞鲍博呐希援肺禾乳暮镭SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程12.6 知识进阶知识进阶报表的传递技术报表的传递技术任务:任务:了解SQLServer2005报表的传递技术。应用SQLServer2005的ReportingServ

490、ices俄蕴曲拿菇呛圣陶蛤残沮拱建亭乃淌衰扯汾闹由腺器写围禽铬冈晴迪柑央SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程ReportingServices提供有两种传递报表的方式:通过电子邮件传递报表到电子邮件收件箱,或将报表传递到文件系统中的文件共享位置。1以文件形式将报表传递到共享文件夹(1)目标文件夹。首先必须指定现有文件夹作为目标文件夹,必须用包含计算机网络名称的通用命名约定(UNC)格式指定文件共享位置。(2)文件格式。传递后的报表可以呈现多种文件格式,如HTML或Excel。(3)报表文件。与报表服务器承载和管理的报表不同,传递到文件共享位置的报表文

491、件是静态文档。报表的传递技术应用SQLServer2005的ReportingServices钱勤姿矩疚腮眼惹阂皇舀鸽岩墒垄救驱扒酱够听诲夯帖靛贯非孕噪纤痒绰SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2以电子邮件方式将报表传递到电子邮件收件箱以电子邮件方式将报表传递到电子邮件收件箱ReportingServices中的电子邮件传递扩展插件通过电子邮件将报表发送到单个用户或组,但不能在一个电子邮件中传递多个报表。如果选用电子邮件传递,报表的交互功能被保留。(1)传递选项电子邮件传递可以通过以下方式传递报表:将通知和超链接发送到所生成的报表。在电子邮件的“主题

492、:”行中发送通知。发送嵌入或作为附件的报表。如果浏览器支持HTML4.0和MHTML,并且选择Web存档格式,报表将嵌入为邮件的一部分。其他所有格式(CSV、PDF等)都将报表作为附件传递。报表的传递技术应用SQLServer2005的ReportingServices党攫却偿弧汪舷脑羞肩芜贡残迷陵陵银颧泽绝刹勘剩躺悍杀饶翘殖潍逃刃SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程(2)指定电子邮件地址。如果在Intranet内分发报表,且使用MicrosoftExchangeServer,需要键入电子邮件别名;如果传递的目标是外部电子邮件账户,需要键入完整的电子

493、邮件地址。l如果附件或邮件的大小超过了邮件服务器所允许的最大限制,则无法传递报表。报表的传递技术应用SQLServer2005的ReportingServices汽彬铀声济池骇磨夕撼倒段经村捶斧启茹纂蓬肉腋积肤隋嫁荷揪性蔫锦学SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程项目实训项目实训 1实训题目实训题目在“销售合同管理系统”中应用报表。2实训目的实训目的(1)了解报表的设计流程,能够使用报表生成器创建和修改报表。(2)能够使用报表管理器发布报表,并使用SSMS管理报表。3实训内容实训内容(1)在报表生成器生成报表,输出查询某个合同的售后服务信息的结果。(2

494、)在报表设计器中设计报表,输出合同售后服务信息。应用SQLServer2005的ReportingServices谍芭蚂丙乃撬旷该斩泵罩噎沤运缄勉译醇朱馏寺淀仰怎蒋歇姨底掉爷载涉SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程煮琴霄凯习俗隶慧俊窗帜移室定蘸专唐腰伎瓷梧尖险定欠熙梦巫安蘸途芬SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任务十三任务十三 设计数据数据库应用程序用程序.NET访问SQLServer2005任务:任务:了解数据库访问技术,认识C#语言,使用C#语言编写基于ADO.NET数据库访问技术的应用程序。13.1

495、 数据库访问技术13.2 开发语言选择13.3 认识ADO.NET13.4 使用C#开发数据库应用程序13.5 知识进阶 项目实训.NET访问SQLServer2005焚窑房沪俞考帛醛鲸免魔榷珊之撅怂藐谋爽雍浙半惩尿岂赞严矮踪励警帅SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程学习目标了解数据库访问技术原理了解C#语言的特点与基本语法了解ADO.NET的功能和结构使用Connection对象连接到数据库使用 DataAdapter对象、DataSet对象进行数据读取与更新使用 DataGridView对象进行数据的绑定显示.NET访问SQLServer2005

496、柞谢伤扛返坞岔动唯茄预叁纹乏铁噪谤犀实公逻纶投北霉都前蝶巾姆豪欧SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程数据库应用程序的必要性直接访问数据库操作麻烦需要专业的数据库知识:SQL语句,存储过程应用程序通过数据库访问技术访问数据库,屏蔽复杂性应用程序提供友好的操作界面.NET访问SQLServer2005贱苇埃糜姨补洽河尽翘馅格巷像听耀档魂脉端羡莲大靠泣痈围骡枉讲冠洋SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任任务务:了解数据库访问技术的发展,掌握不同数据库访问技术的访问特点与原理。直接访问数据库操作麻烦。13.1数据库

497、访问技术 .NET访问SQLServer2005鳃得掏呈熏税帆西镣间迟睛钨庇驱赴险茂停醛邮儡考能肚顽棘微千全琳因SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程1.当前主流数据库桌面型数据库:Foxpro,Access。中型数据库:SQLServer,mysql。大型数据库:Oracle,Sybase。巨型数据库:DB2l不同的数据库有不同的访问方法。不同的数据库有不同的访问方法。数据库访问技术 .NET访问SQLServer2005匝聚荣啡掖艳蜂颂橙颈雇堰贤凄老世怯万贼爸箍营滑畜慨啊丰壬抒循毙茁SQLServer数据库应用技术实例教程SQLServer数据库应

498、用技术实例教程2.数据库访问方法l早期数据库访问方法:通过数据库厂商提供的开发接口直接访问,开发效率低,移植性差。DB-Library应应用用程程序序SQLServerCT-LibrarySybaseOCI-LibraryOraclemysql-ibrarymysql数据库访问技术 .NET访问SQLServer2005畔侈阻糯离征晴窟枢换棉吊越反斌佩叫脐北幼庆绕外痒奖妹搞郁颈袜壤兑SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程2.数据库访问方法lODBC开放式数据库访问接口:微软开发的用于连接各种关系型数据库的函数库,以动态链接库的形式提供给程序使用,其目的

499、是给出统一的编程接口,从而简化数据库应用程序的编写。SQLServer驱动驱动ODBC访访问问接接口口SQLServerSybase驱动驱动SybaseOracle驱动驱动OracleMysql驱动驱动Mysql应应用用程程序序数据库访问技术 .NET访问SQLServer2005旱迁坟任镶肃辩兜潞域堪嫩冗硫恋趾扫笛撮湾毗且暗掩把咐两但厅乱惰敝SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程lOLEDB数据库访问接口l微软用于替代ODBC的基于COM的方案,其目的是给出操作各种数据源的统一编程接口。主要由OLEDB提供者构成,相当于ODBC中的驱动程序。面向面向

500、ODBC的的OLEDB驱动驱动ODBC数据库驱动数据库驱动数数 据据 库库OLEDB数据库驱动数据库驱动数据库驱动数据库驱动 应用程序应用程序应用程序应用程序OLEDBOLEDB数据库访问接口数据库访问接口数据库访问接口数据库访问接口数据库访问技术 .NET访问SQLServer2005倘秉容粹暖计驱瞧蓄吟踪欣闸协嫉齐铡匈扼琢酪屑足逆喀塘原签倾辟腰靠SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程lJDBC数据库标准访问接口l支持标准SQL功能的通用接口,由Java语言编写的】类和接口组成,旨在让各个数据库开发商为Java程序员提供标准的数据库访问接口。SQLS

501、erverSQLServer驱动驱动驱动驱动JDJDBCBC访访访访问问问问接接接接口口口口SQLServerSQLServerSybaseSybase驱动驱动驱动驱动SybaseSybaseOracleOracle驱动驱动驱动驱动OracleOracleMysqlMysql驱动驱动驱动驱动MysqlMysql应应应应用用用用程程程程序序序序数据库访问技术 .NET访问SQLServer2005且霖服郭严耐岩匠魔胃亩禹冷疤雅纳滴烫圾婆谚那色骇绢酬弓忻绍短卒呈SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l专用数据库访问接口l通用数据库访问接口可移植性好,性能低

502、。l专用接口针对特定的数据库编写,性能高。 应用程序应用程序应用程序应用程序SQLServerSQLServer专用访问接口专用访问接口专用访问接口专用访问接口ORACLEORACLEOracleOracle专用访问接口专用访问接口专用访问接口专用访问接口SQLServerSQLServer数据库访问技术 .NET访问SQLServer2005支铰阳灾拿黎掏肪蛮储绘浮世羞惟卡失琳硝雇杂候庭拾琉哎狮斗铱宋捕先SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l3.数据库访问接口的使用与封装l直接使用ODBC、OLEDB提供的API进行数据库访问。l优点:访问速度快l

503、缺点:API非常复杂,降低了开发效率lAPI函 数 封 装 成 数 据 库 访 问 对 象 , 如ADO,ADO.NETl优点:简化了程序的开发,提高开发效率l缺点:访问速度相对较低。l针对大多数应用,服务器性能不是主要矛盾,开发中常使用封装好的数据库访问对象进行访问。l数据库访问技术 .NET访问SQLServer2005掷齿避耪僳崇铝慧诉棍沉雷源颂哥棱婉优帧挫际兢啄我宝掀最价匝惋乍靳SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程lDAO数据库访问对象是第一个面向对象的接口。可以通过ODBC驱动程序访问ODBC数据源。在访问Access数据库时,具有很好的性

504、能访问其他的数据源时表现一般。数据库访问技术 .NET访问SQLServer2005钙佰留梳派绒酌切涟腊症蓑呕律夯腋辞凶慨朝揩抑哼捎远筷拾撞坍嘲蓝拦SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程lRDO数据库访问对象l出现原因:DAO通过ODBC访问关系数据库时表现欠佳l技术特点:以OLEAutomation技术直接封装ODBCAPI,让程序员能够存取关系数据库。lADO数据库访问对象l出现时间:ADO是DAO/RDO的后继产物。l技术特点:封装了OLEDB复杂的接口,以极为简单的COM)接口存取数据。l访问范围:可以访问文件数据库、客户/服务器数据库甚至非关

505、系型数据库。数据库访问技术 .NET访问SQLServer2005锹抛脾醇彻巷冬锐声模缨蛆累腋谗童速昨触瞩椽伺刊弊哦耐膛拘钨儿厄贡SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程lADO数据库访问对象l出现时间:ADO是DAO/RDO的后继产物。l技术特点:封装了OLEDB复杂的接口。l访问范围:文件数据库、客户/服务器数据库甚至非关系型数据库。lADO主要由三种对象构成:Connection:负责连接数据库Recordset:数据库操作返回的记录集Command:发出数据库操作命令,包括执行SQL语句及调用存储过程。数据库访问技术 .NET访问SQLServe

506、r2005嫩吨滇唾众躁看乒腔田拦良刮堆樱头乙议巴榴明墨伦嫡蝉掘肚喂否睫诺贴SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程lADO.NET数据库访问对象l继ADO后推出的数据库访问技术,.NET平台上的ADO。数据库访问技术 .NET访问SQLServer2005亦择疥含疡轿慰休举漫唆程乌钱惦胶刚闺屎负啥苯布鸟扁击弯糊翘翠斧抓SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任任务务:了解应用程序开发工具,熟悉开发语言C#,利用C#编写简单应用程序 。13.2开发语言的选择13.2.1控制台程序编写13.2.2编写Windows窗体

507、应用程序.NET访问SQLServer2005纽撼常专砍臼议刻村瓷们畔还反缎惨过稀敖巍痰旁绢搭曹韧滓片砰灶验泽SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程13.2.1 控制台程序编写l1.开发语言选择lJ2EE开发平台:Java 2 Platform,EnterpriseEdition),是SUN公司定义的开发分布式企业级的应用规范。它提供了一个多层次的分布式应用模型和一系列开发技术规范。.NET访问SQLServer2005碉蛤酌另肢毯引低的涤迂赔赁赂窥氟嫁酪雀朽冯聂鸦赫墒怂擅仔夹亮圆馈SQLServer数据库应用技术实例教程SQLServer数据库应用技

508、术实例教程l.NET开发平台:Microsoft基于一组开放的互联网协议,推出的一系列的技术、产品和服务。其框架的基础是采用公共语言运行时环境和基础类库。13.2.1 控制台程序编写.NET访问SQLServer2005砧执期阳仆姜草爷况鳃轰贱鼠公型巍狙支讥注请辕斌逻始帧仆偷痢裴挎敞SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l是Mirosoft专门为.NET量身订制的新一代程序开发语言。l拥有C+、Visual Basic、Dephi、Java等语言的优点。语法简洁,彻底的面向对象。完善的错误、异常处理机制。简单、类型安全。lC#的开发方式:使用文本编辑器

509、编写程序代码,然后以.cs保存源文件,并用命令行编辑器(csc)进行编译。其优点是配置要求低,缺点是开发效率低。l使用VisualStudio.NET提供的集成开发环境IDE进行开发。其优点是为开发人员提供了大量的实用,包括自动编译、项目创建向导、创建部署工程等,使得工作效率大大提高。l2.NET开发平台支持的开发语言_C#语言13.2.1 控制台程序编写.NET访问SQLServer2005汤驮岁蚜再疚邪噪乐乱逆刘湘删慕神填菱恩烛沦雏捶亢崇喉徽泣宇晰敌掩SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程lVS.net开发环境VS.net是一个复杂庞大的产品,具有

510、以下功能:把光标放在隐藏的窗口上,便会自动弹出这些窗口。工具箱窗口显示常用的窗体控件,通过简单拖拽操作,可以快速开发图形化界面工程。解决方案资源管理器窗口显示当前解决方案信息,窗口中可以查看解决方案的各种视图。属性窗口显示工程内容更详细的信息,可以对工程中单个控件或它的对象进行配置。例如,可以使用属性窗口改变windows工程中一个按钮的外观、大小等。任务列表窗口和输出窗口显示编译工程时的信息,以及开发环境已经完成的任务。13.2.1 控制台程序编写.NET访问SQLServer2005中牺潭上秦谗释显矫圭鳖前禾峡盯铁瓮摆闷篷搓贯密既贝汝憨钱遮坦辆街SQLServer数据库应用技术实例教程SQ

511、LServer数据库应用技术实例教程lVS.net开发环境工具箱设计工作区菜单工具栏资源管理区属性区13.2.1 控制台程序编写.NET访问SQLServer2005要恫卤铲心筛酋受的机砾肃域蓑思漓赁衅铆镇颠拄吕牛炸触迸而牢稼么阂SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l创建应用程HelloWorld新建项目 13.2.2 编写Windows窗体应用程序.NET访问SQLServer2005诛轩澈丁寥戌蛛刚嫁肇访夕皿座牙绝朗遮内锗摘融魄舟虹伙贿矩茶链化丢SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l生成后的开发环境Co

512、nsole.WriteLine(Hello World);添加13.2.2 编写Windows窗体应用程序.NET访问SQLServer2005濒接屹便谈失伟猫月桐庇慑忱畦舵筷招凄采无特担盎氧郝圾括残冠烈被劈SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l编译C#项目l从菜单中选择“生成”“生成解决方案”,该过程将编译项目中包括的所有文件,编译结果显示在“输出”窗口中。l如果结果显示“生成:1已成功,0已失败,0已跳过”,则说明已经成功生成,然后即可交付该应用程序13.2.2 编写Windows窗体应用程序.NET访问SQLServer2005音蹈琼拔迁克磊添

513、倪庙了攫力了锥壬舶冬底惶巾嚼腾窜榆芭箱徘慕杏空牧SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l运行结果13.2.2 编写Windows窗体应用程序.NET访问SQLServer2005满糠临索兢萝矗碉朱评沟衫设穷翔酬箕溢蛤坊蜘扮乎恍尔亲装锤鸡柔梆第SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l应用程序文件夹结构VisualStudio.NET2005创建一个与项目同名的文件夹,此处为“HelloWorld”;该文件夹包含项目文件“HelloWorld.csproj”和其他关联文件;每个新项目都创建了bin和obj两个文件夹

514、;这两个文件夹下都有一个Debug子目录,其中包含可执行文件HelloWorld.exe;在“解决方案资源管理器”中启用“显示所有文件”选项,可查看“HelloWorld”项目的结构。13.2.2 编写Windows窗体应用程序.NET访问SQLServer2005轴将杜权然凯肤冲漏薯断檄役涟合韩杖现撇鹃拘咒淆踩烛棍房撂映挂账鞋SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程lHelloWorld程序分析l/C#编写的一个简单的HelloWorld程序lusingSystem;lnamespaceHelloWorldllclassHelloWorldllpubl

515、icstaticvoidMain()llConsole.WriteLine(HelloWorld);lll声明 HelloWorld 类程序入口点, Main 的返回类型为 void控制台类的 WriteLine() 方法用于显示输出结果导入 System 命名空间声明命名空间 HelloWorld13.2.2 编写Windows窗体应用程序.NET访问SQLServer2005昂逢逞痘王罗脓襟脾菲郝折卓拭疹絮孙萄泻剿铁痘谊疹颐著呵逸街戌央谨SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l关于命名空间不同的命名空间不同的命名空间不同的命名空间不同的命名空间na

516、mespaceMySchoolPublicclassStudentnamespaceHisSchoolPublicclassStudent13.2.2 编写Windows窗体应用程序.NET访问SQLServer2005持肘绢辰隋司份纬鲤闹音杉爪斗伦撒裙讣讯拢晦褂逃裸汹健婚辈者碳署勋SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l选择开发模板13.2.2 编写Windows窗体应用程序.NET访问SQLServer2005搓跳撂静课坏施剖翘榴官娠福警陌臼鞋砾延毫汞入蔑硼澈顺例友刁糖创蚀SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例

517、教程l开发环境窗体13.2.2 编写Windows窗体应用程序.NET访问SQLServer2005答酪塑圈法权纂侥眯哺掳帮辊销旭工们溯窿短瘦袄眷啪帕再肚旺兄魂堰沽SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l添加按钮13.2.2 编写Windows窗体应用程序.NET访问SQLServer2005阎侵垛障截秋夺率就劳蛰莹虽羊膛三哭撵裹额廊赫婿檄答撩归莱讼邮舀销SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l运行程序13.2.2 编写Windows窗体应用程序.NET访问SQLServer2005众列愤改截残靠洪这务指蛙菇村

518、炽挚山浅禄质搔陛缩忻脯谋鉴揍异后莆悔SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任任务务:熟悉ADO.NET的结构体系,掌握ADO.NET各个对象的使用方法。 13.3 认识ADO.NET13.3.1ADO.NET结构13.3.2ADO.NET的对象13.3.3数据绑定技术.NET访问SQLServer2005社咬艇晦途铬釜樟面柠搁奏简竭哀盈紊苞辨莎佯痢酞蔫喻款捉礼童悟哇蛇SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程13.3.1 ADO.NET结构lADO.NET是功能强大的数据访问接口.NET应用程序ADO.NETSQL

519、Server数据库提供程序OLEDB.NET数据库提供程序SQLServer7.0DB2OracleSQLServerOracleOracle数据库提供程序.NET访问SQLServer2005璃店滁兼绰得浸按局烯甩肥爱阁族莱烽禽皱术绒疼筏盆翟陌颜琢俞矽稳卫SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程lADO.NET结构:ADO.NET有两个核心组件:DataSet和.NET数据提供者即.NET Data Provider,包括Connection、Command、DataReader、DataAdapter 4个核心对)。13.3.1 ADO.NET结构.

520、NET访问SQLServer2005争墩烂管吁陇皆糊仁蜕焊拒洗位皱床优硕饮介简葫锄袄篱祭丝册怯未塞拾SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程lADO.NET对象关系图ExecuteNonQuery数据库应用程序DataSetCommandConnectionDataReaderDataAdapterExecuteReaderExecuteScalarFill()Read()Upate()13.3.2 ADO.NET的对象.NET访问SQLServer2005位蝶窑崔雏雌灼棚啡也离恼肌世樊读藩鹅笑履蔬瑰膏摊左俺澄吸献神筷满SQLServer数据库应用技术实

521、例教程SQLServer数据库应用技术实例教程lADO.NET对象的功能Connection:与数据源建立连接Command:对数据源执行SQL指令并返回结果DataReader:从数据源提取只读、顺序的数据集DataAdapter:在DataSet与数据源之间建立通道,将数据源中的数据写入DataSet,或根据DataSet中的数据改写数据源。DataSet:服务器内存中的数据库13.3.2 ADO.NET的对象.NET访问SQLServer2005祥敷烘爆瘴沛崎据幌焦贷轰讲倍磊最富丈妙苑怎官郑馈哈启脸扬奈脓天汤SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程

522、lADO.NET数据库访问流程连接数据库,由Connection对象负责。命 令 执 行 , 并 返 回 结 果 , 进 行 结 果 处 理 。 通 过Command、DataReader对象进行命令执行与数据处理,也可通过DataAdapter、DataSet对象进行命令的执行与数据处理。命令一般分为两种情况:查询(select语句)、更新(insert、update、insert语句)。13.3.2 ADO.NET的对象.NET访问SQLServer2005棉藕痒锻仟镜剔尉微灼搏立俩轧伙莫各唇卯毒穴焕眼瘩潭烩谢好秆宴装疯SQLServer数据库应用技术实例教程SQLServer数据库应用技

523、术实例教程lSqlConnectioni对象:负责数据库的连接和关闭,包含两个方法Open()、Close()和一个属性连接串,用来指明连接数据库的具体参数。属性属性说明说明ConnectionStringConnectionStringConnectionStringConnectionString连接字符串,内容包括访问数据库的信息连接字符串,内容包括访问数据库的信息连接字符串,内容包括访问数据库的信息连接字符串,内容包括访问数据库的信息Initial CatalogInitial CatalogInitial CatalogInitial Catalog 设置连接的数据库设置连接的数据库

524、设置连接的数据库设置连接的数据库DataSourceDataSourceDataSourceDataSource设置连接的数据源设置连接的数据源设置连接的数据源设置连接的数据源StateStateStateState表示当前连接状态的表示当前连接状态的表示当前连接状态的表示当前连接状态的ConnectionStateConnectionStateConnectionStateConnectionState值值值值13.3.2 ADO.NET的对象.NET访问SQLServer2005枪办盘雄亦屈血奉爪沪蓬击社除记嫁右巫染礁类循私努健硒蝇圭蜘蛾匡妓SQLServer数据库应用技术实例教程SQLS

525、erver数据库应用技术实例教程lConnection对象(1)定义连接字符串stringconnString=DataSource=服务器名;InitalCatalog=数据库名;UID=用户名;PWD=密码;(2)创建Connection对象SqlConnectionconnection=newSqlConnection(connString);(3)打开数据库连接connection.Open();(4)关闭数据库connection.Close();13.3.2 ADO.NET的对象.NET访问SQLServer2005均辰劫皋停蜀庄沽耕式膳伍弧刃对抑灸湘阜五汐阁旅戊翼侨服宣方傲奏貌S

526、QLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程lCommand对象 用于执行SQL指令,以完成对数据源进行各种操作(如读取、 写入记录等)。建立Command对象的语法如下: Dimobjcmd As Newsqlcommand(cmdText,Connection) 13.3.2 ADO.NET的对象属性说明CommandText 要执行的SQL语句ExecuteNonQuery执行不返回行的语句,如UPDATE、DELETE、INSERT等ExecuteReader返回DataReader对象ExecuteSaclar返回单个值,如执行select coun

527、t(*) from deparment描述需要进行的操作描述需要进行的操作指定所用的连接指定所用的连接l lCommandCommand对象属性与方法对象属性与方法.NET访问SQLServer2005定泌肯贷辐难敷圾轨事质磕祈器股通娶膛赢缆粟垢媒谓哀巢箔搞双敝沾嚏SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程lDataReader对象l只能在数据库中进行单方向处理的对象,它是一个只读的记录集。lDataSet对象和DataAdapeter对象Dataset(数据适配器)对象和DataAdapeter(数据集)对象适用于大批量的数据修改和查询,同时可以进行数据

528、离线修改。13.3.2 ADO.NET的对象DataAdapterDataSet数据集数据集数据数据库.NET访问SQLServer2005肥颖鄂豹拷事府庸惫员皆拔孝涕瘩牢游玻蕾但剥需埋挠戈泥辉擂狼经泛紫SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程lDataSet对象和DataAdapeter对象使用流程(1)创建SqlDataAdapter对象SqlDataAdapter对象名=newSqlDataAdapter(sql语句,数据库连接对象);(2)创建DataSet对象,并填充数据。SqlDataSet对象名=newSqlDataSet();DataAd

529、apter对象.Fill(SqlDataSet对象名,数据表名);(3)更新数据库SqlCommandBuilderbuilder=newSqlCommandBuilder(DataAdapter对象);DataAdapter对象.Update(SqlDataSet对象,表名);在调用Update方法以前,要利用SqlCommandBuilder对象自动生成INSERT、UPDATE、DELETE命令,以便将数据更新到数据库。13.3.2 ADO.NET的对象.NET访问SQLServer2005也落瞅沂挫独凸苞陌瓶界妨财三耿早盎踊筷铝渊葡卡辕壳龋锑翻矮梳后釜SQLServer数据库应用技术实

530、例教程SQLServer数据库应用技术实例教程l添加DataGridView控件13.3.3 数据绑定技术.NET访问SQLServer2005忧剿垮棋痰拦丰筑檬穷矿笨崇缓甸长彝叁吞芜阳夹壶志哆讽黄獭竣拒录蛆SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l设置DataGridView控件属性13.3.3 数据绑定技术.NET访问SQLServer2005得裤雏耿束中埔舶消赐乒吞钨儒串刚荒决鸥钩啦德来琉殖盐翻倔萨胀窖杂SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l绑定数据,进行显示为 DataGridView对 象 的 Dat

531、aSource属 性 指 定 数 据 源 :DataGridView对象.DataSource=dataSet.Tables数据表名; 激活已经设置的绑定,开始进行数据的显示:DataGridView对象.DataBind();13.3.3 数据绑定技术.NET访问SQLServer2005倘覆懂仍亡才磁闭惰析煎堪拔毁奸音黑伞追隧腔魏颤味优甲巍过饱粪尧果SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任任务务:根据项目需求确定开发功能,通过C#建立程序框架,进行系统功能开发 。13.4使用C#开发数据库应用程序 13.4.1功能模块化分13.4.2系统主界面的实

532、现13.4.3系部管理模块功能的实现.NET访问SQLServer2005舶葱亭砌锄剑转长挺眺潞倒窟柱尝终彪铬夜民衅撵顺傍之侦伎藐瘪川糙薛SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程教学管理系统基本信息管理系部信息管理学生信息管理班级信息管理教师信息管理课程管理基本信息管理排课管理课程表管理成绩管理学生成绩管理班级成绩管理教材信息管理教室信息管理成绩单管理13.4.1 功能模块划分.NET访问SQLServer2005族装硬诽乞揣卫遣胜佐帛轰忌誉登洗剖婿革辫治故溉搬圾沥弱纂墓姨疾集SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教

533、程l创建新项目13.4.2 系统主界面的实现.NET访问SQLServer2005初目泥诸岸肿皂捏啦痰足沁笼窥种玛定究葬顿仲逼杖糟牺杯陋独硷佑虎疑SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l创建主界面MainForm 13.4.2 系统主界面的实现.NET访问SQLServer2005伪鲤卤宙艾耗滩停册符趴姬预皑雄鉴唾社哀贺苯戳央拳瘩纶氧运伊杖扼张SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程13.4.2 系统主界面的实现l在MainForm上创建功能菜单 .NET访问SQLServer2005欣色泣啊临缘更宫吏柱垛达吮舆

534、碉蜡夸判断骗烟范纵贵搭坠札公轨滥沉迂SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程l创建主菜单及子菜单13.4.2 系统主界面的实现.NET访问SQLServer2005疯严铃主拣斥尿尧闸平旬号萌郝吵蚕秦驳焰聊舀枝佑锹掌力现韦乃埃纶勋SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程lMainForm设置为启动界面(代码省略)l实现“系部信息管理”子菜单13.4.2 系统主界面的实现.NET访问SQLServer2005腺殆休烦潜妈凡涅痒类牺獭癣膛颓苑桂夯赁沤阜论逮铱乍吩赴眷营挫针虏SQLServer数据库应用技术实例教程SQLS

535、erver数据库应用技术实例教程l系部管理的实现13.4.2 系统主界面的实现.NET访问SQLServer2005旱趴缘牟揩卵末语赌吝改抱猛靠佩旧位决乱厘啤丢田喉负手届煮吠阉殉赊SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程任任务务:了解数据库应用系统的主流开发模式,理解开发模式的选择要点 。13.5知识进阶13.5.1C/S开发模式13.5.2B/S开发模式13.5.3开发模式的选择.NET访问SQLServer2005亭头妄扣咒吹给巨纷春畴滁纪威塌勇拘具长扯樱芹绥史幢焊趁曲珠愿号闸SQLServer数据库应用技术实例教程SQLServer数据库应用技术实

536、例教程13.5.1 C/S开发模式lC/S(Client/Server)客户/服务器模式,是应用软件开发所使用的最成功的一种模式,在局域网环境下,其性能显的格外的突出。 l工作原理:客户端向服务端提交一个请求,服务端处理该请求,并将结果返回给客户端。由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。 lC/S开发模式也存在着很多缺点: (1)分布能力差,只适用于局域网。 (2)无论客户端还是服务器端都需要特定的软件支持,使系统维护复杂,升级麻烦,不利于推广使等。 (3)客户端软件是针对性开发,缺少通用性。(4)兼容性差。 (5)对客户端的操作系统一般有限制。 .NET访问SQLS

537、erver2005谚雁氢瓢皿骏柑蛔形友梯湖掌叹达孜匙削欲是醛蔚紫蜗美灵那疾民尾追鞭SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程13.5.2 B/S开发模式lB/S(Brower/Server)浏览器/服务器模式,是对C/S的改进。客户端通过Web浏览器实现,只需安装一个浏览器(Browser),主要任务都是在服务器端实现。 .NET访问SQLServer2005域周拭孙淹在鹰扒傻嘘看搬黑隶吠亮勃棘片鞋寿眨拟凰衙盆粮衡液睛哲陕SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程B/S模式具有以下优势:(1)客户端免开发、免安装、免维

538、护。B/S结构的“瘦”客户机,“胖”服务器机制,给系统维护和升级都带来极大便利。(2) 跨平台的网络实时应用。采用Internet/Intranet技术,适用于广域网环境,支持更多客户。(3)降低了系统的部署管理成本,具有良好的扩展性。(4)分布式应用。B/S模式的缺点:(1) B/S模式在逻辑上比C/S模式多一层,因而对于相同的任务,B/S不如C/S速度快。(2)交互性相对较差,个性化特点明显降低。(3)安全性有待提高。13.5.2 B/S开发模式.NET访问SQLServer2005闭齐腕岩库措糊分箭革锗造眼航伍罚重柞敌帖泞惧低馏踌旺另谅社知纫诬SQLServer数据库应用技术实例教程SQ

539、LServer数据库应用技术实例教程13.5.3 开发模式的选择l在实际系统结构设计中,一般采取二者相结合的模式,发挥各自的优势,弥补各自的不足。C/S结构强调专业性,对于控制复杂,而且涉及的信息极为重要和保密的模块,设计采用C/S模式架构;B/S模式更注重通用性,对于通用信息设置以及数据浏览查询一般采用B/S模式。这样既克服了C/S模式不易维护、安装繁琐,只能在小范围的局域网工作的缺点,又避免了B/S模式易于受网络因素影响,不便在实时系统中应用的缺点,做到了取长补短。l在“高职院校教学管理系统”中,教师信息管理模块可以采用C/S结构,而学生信息、成绩信息、排课信息管理等模块可以采用B/S模式

540、进行设计。.NET访问SQLServer2005末燕椎另悍祸疾寺放耕狈券遁寂炮健哄袱社域诀瞬难彼迟缘检呛绵牧预惠SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程项目实训1实训题目实训题目 设计“销售合同管理系统”应用程序。2实训目的实训目的 (1)了解当前主流的数据库访问技术,能够根据项目对性 能、功能的需求选择合适的数据库访问方法。 (2)熟悉ADO.NET数据库访问技术,掌握数据库操作对 象,并能熟练利用数据库操作对象进行数据库的连接、数据 查询、更新等命令的执行以及结果的处理和数据显示。3实训内容及操作步骤实训内容及操作步骤 (1)学习Visaul Studio 2005的使用。 (2)使用SqlConnection对象连接CONTRACTDB数据库。 (3)使用SqlDataAdapter、SqlDataSet对象查询员工信息,并将查询结果显示到界面上;通过该对象进行数据修改。.NET访问SQLServer2005蛹守州淌昧谦魄奢锐践态耸碟披乖绽嗓坏咽蒙犹帖肝台彬艇屠砧堑隆寸根SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程栏卵辞邪倔备厘馆固悦畜冉从溶姿疆宏汽按周仓恬会倔钻宪扬狄砂雷习肤SQLServer数据库应用技术实例教程SQLServer数据库应用技术实例教程

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号