《数据库教材课件汇总完整版ppt全套课件最全教学教程整本书电子教案全书教案合集最新课件汇编》由会员分享,可在线阅读,更多相关《数据库教材课件汇总完整版ppt全套课件最全教学教程整本书电子教案全书教案合集最新课件汇编(387页珍藏版)》请在金锄头文库上搜索。
1、数数据据库库原原理理及及应应用用(SQLServer2005):2024年年7月月19日日第第1 1章章 数据库概述数据库概述第第1章章数据库概述数据库概述任务目标:熟悉数据管理技术的基本概念;掌握数据库系统的构成、体系结构;掌握数据模型的三要素、分类;理解概念模型及其表示方法。第第1章章数据库概述数据库概述1.1 数据管理技术基本概念1.2 数据库系统1.3 数据模型习题1.1数据管理技术的基本概念数据管理技术的基本概念1.1.1信息与数据姓名:张三姓名:张三年龄:年龄:17性别:男性别:男身高:身高:1.67m体重:体重:50kg客观事物数据表达数据表达信息(Information)1.1
2、基本概念基本概念1.1.1信息与数据数据(Data):是对客观事物及其活动的抽象符号表示;存储在某一种媒体上可以鉴别的符号资料;表示形式多样,可以是数据、文本、图形、声音等。信息(Information)是经过加工处理加工处理后具有一定含义的数据集合;以某种特定数据形式表现。数据处理(DataProcessing)将数据转换成信息的过程称为数据处理;对数据进行收集、储存、分类、加工等活动;目的:从数据出发,推导、抽取有价值的信息。1.1基本概念基本概念数据管理是指对数据进行收集、分类、组织、编码、存储、检索和维护等,数据管理技术的发展经历了人工管理、文件系统和数据库系统3个阶段,目前正在向着网
3、络化、智能化和集成化的方向发展。数据管理技术发展三阶段:1人工管理阶段2文件系统阶段3数据库系统阶段1.1.2数据管理技术的发展1.1基本概念基本概念数据库系统阶段特点如下:数据管理者:数据库管理系统。数据面向的对象:整个应用系统。数据的共享程度:共享性良好,冗余度小。数据的独立性:独立性良好,具备高度的逻辑独立性和物理独立性。数据的结构化:单条记录内部有结构,并使用数据模型描述,整体上有结构。数据控制能力:由数据库管理系统提供数据安全性、完整性等数据控制。1.1.2数据管理技术的发展1.2数据库系统数据库系统数据库系统(DataBaseSystem,DBS)是指引进了数据库技术后的计算机系统
4、,它能够有组织地、动态地存储大量数据,提供数据处理和数据共享机制。数据库系统是一个复杂的系统,一般情况下由硬件系统、软件系统、数据库和用户组成。1.1.2数据库系统构成1.2数据库系统数据库系统数据库系统的基本组成主要有以下几项:(1)系统硬件(HW,HardWare)(2)操作系统(OS,OperatingSystem)(3)数据库(DB,DateBase)(4)数据库管理系统(DBMS,DateBaseManagementSystem)(5)数据库应用系统开发软件(DT,DevelopmentTools)(6)数据库应用系统(DBAS,DateBaseApplicationSystem)(
5、7)用户(User)1.1.2数据管理技术的发展1.2数据库系统数据库系统数据库管理系统(DataBaseManagementSystem,DBMS)是处理数据访问的软件系统,是位于用户与操作系统之间的一层对数据库进行管理的软件。数据库在建立、运行和维护时由数据库管理系统统一管理、统一控制。数据库管理系统的功能主要包括:数据定义:数据库提供数据定义语言(DDL,DateDefinitionLanguage)对数据库进行定义。数据操纵:数据库提供数据操作语言(DML,DateManipulationLauguage)对数据进行具体操作。数据库的运行管理:数据库提供数据控制语言(DCL,DateC
6、ontrolLanguage)对数据进行完整性控制、安全性控制、数据库恢复、数据库维护和数据库的并发控制等。数据字典:数据库的逻辑结构、物理存储结构和完整性约束均保存在数据字典(DD,DateDictionary)中。数据通信接口:数据库管理系统需要提供与其他软件系统进行通信的功能。例如提供与其他数据库管理系统的接口,从而能够将数据转换为另一个数据库管理系统能够接受的格式,或者接收其他数据库管理系统的数据。常见的数据库管理系统有Qracle、SQLServer、Sybase、MYSQL、DB2、Access等。1.1.2数据管理技术的发展1.2数据库系统数据库系统根据数据库从建设到运行的整个过
7、程中不同岗位的工作性质,可以将其用户分为两个大类:开发类用户和应用类用户。1.1.2数据管理技术的发展数据库分析员开发类用户应用程序员数据库管理员终端用户应用类用户数据库用户分类1.2数据库系统数据库系统1单机数据库系统整个数据库系统,包括应用程序、数据库管理系统、数据信息,都安装在一台计算机上,这类系统系统结构简捷,系统运行速度快,但不同机器之间不能进行数据共享,安全性较差,只适用于小型用户使用。2主从结构的数据库系统1.2.2数据库系统体系结构应用终端(应用程序)主 机(DBMS、DB)发送请求响应请求主从结构的数据库系统1.2数据库系统数据库系统3分布式结构的数据库系统数据库中的数据在逻
8、辑上是一个整体,但物理地分布在整个数据库系统网络下的不同结点上。网络中的每个结点都可以独立处理本地数据库中的数据;同时也可以同时存取和处理网络上的多个异地数据库中的数据,执行全网的数据库应用。4客户服务器(C/S,Client/Server)结构的数据库系统该结构下的数据库系统显著减少了网络上的数据传输量,提高了系统的性能、吞吐量和负载能力。C/S结构分为二层C/S体系结构和三层C/S体系结构。SQLServer2005是可用于C/S模式的数据库管理系统。5浏览器/服务器(B/S,Browser/Server)结构的数据库系统1.2.2数据库系统体系结构1.2数据库系统数据库系统1.2.2数据
9、库系统体系结构数据库应用端计算机操作系统客户端1计算机硬件数据库应用端计算机操作系统客户端n计算机硬件数据库管理系统计算机操作系统计算机硬件数据库服务器端请求响应响应二层C/S结构1.2数据库系统数据库系统1.2.2数据库系统体系结构应用程序界面计算机操作系统客户端1计算机硬件应用程序界面计算机操作系统客户端n计算机硬件数据库应用程序数据库服务器数据库管理系统计算机操作系统计算机硬件数据库服务器端请求响应响应请求响应三层C/S结构1.2数据库系统数据库系统1.2.2数据库系统体系结构三层B/S结构浏览器计算机操作系统客户端1计算机硬件浏览器计算机操作系统客户端n计算机硬件数据库应用程序浏览器服
10、务器数据库管理系统计算机操作系统计算机硬件数据库服务器端请求响应响应请求响应1.2数据库系统数据库系统数据库管理系统将数据库建立为三级模式结构和二级存储映象,这便是数据库的体系结构。1.2.3数据库的体系结构外部应用1外部应用2外部应用3外部应用n外模式1外模式2外模式n模式内模式数据库模式模式/外模式映象外模式映象模式模式/内模式映象内模式映象三级模式结构和二级存储映象1.3数据模型数据模型数据模型(DataModel)是对数据特征的抽象,是严格定义的概念集合。数据模型包括数据库数据的结构部分、数据库数据的操作部分和数据库数据的约束条件。即数据模型所描述的三个部分:(1)数据结构(2)数据操
11、作基本的数据操作包括两大类:检索:数据查询更新:数据的插入、删除和更新等操作(3)数据的完整性约束1.3.1数据模型的三要素1.3数据模型数据模型在实际数据库应用中,为了更为便捷、准确的描述现实世界中的数据,通常依据不同的应用环境,采用不同的数据模型。数据模型按不同的应用层次分成三种类型:(1)概念数据模型(2)逻辑数据模型(3)物理数据模型如果要将现实世界中的具体事物抽象和表示为根据某具体应用环境的、某种数据库管理系统支持的数据模型,那么通常需要首先把现实世界转换为信息世界(概念模型),再由信息世界转换成数据库管理系统支持的逻辑模型。1.3.2数据模型分类及关系1.3数据模型数据模型数据模型
12、(DataModel)是对数据特征的抽象,是严格定义的概念集合。数据模型包括数据库数据的结构部分、数据库数据的操作部分和数据库数据的约束条件。即数据模型所描述的三个部分:(1)数据结构(2)数据操作基本的数据操作包括两大类:检索:数据查询更新:数据的插入、删除和更新等操作(3)数据的完整性约束1.3.2数据模型分类及关系1.3数据模型数据模型1.3.2数据模型分类及关系机器世界关系数据模型信息世界实体及其联系现实世界客观事物及其联系存 在概念模型逻辑模型 三个世界模型关系1.3数据模型数据模型概念模型是对信息世界的建模,是对真实世界中问题域内的事物的描述,它不依赖于某一个具体数据库管理系统支持
13、的数据模型,但概念模型可以转换为计算机上某数据库管理系统支持的特定数据模型。概念模型具备以下特点:能够方便、直接地表达应用中的各种语义知识。简单、清晰、易于理解,是用户与数据库设计人员之间进行交流的媒介。1.3.3概念模型及其表示方法1.3数据模型数据模型1基本概念(1)实体(Entity)客观存在并可相互区别的事物和活动的抽象称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。例如:一个员工。(2)属性(Attribute)实体和联系所具有的特性称为属性。一个实体可以由若干个属性来描述。例如:员工编号、员工姓名、员工性别、员工年龄。(3)主码(Key)能唯一标识实体的属性或属性集
14、称为码。例如:实体员工中的员工编号。(4)域(Domain)属性的取值范围称为该属性的域。例如:可以为员工编号设置一定的取值范围。1.3.3概念模型及其表示方法1.3数据模型数据模型(5)实体型(EntityType)用实体名及描述它的各属性名,可以刻画出全部同质实体的共同特征和性质,它被称为实体型。(6)实体集(EntitySet)同型实体的集合称为实体集。(7)联系(Relationship)实体集间或一个实体集内的各实体之间存在的关系,现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系。联系有以下三种:一对一联系(1:1)一对多联系(1:n)多对多联系(
15、m:n)1.3.3概念模型及其表示方法1.3数据模型数据模型2概念模型表示方法联系方法(Entity-RelationshipApproach)用这个方法描述的概念模型称为实体联系模型,简称ER模型。ER模型(Entity-RelationshipModel)用E-R图来描述现实世界的概念模型,它是一个面向问题的概念模型。E-R图的描述方式很接近人的思维方式,描述过程不设计数据在数据库中的表示和存取,便于用户与系统开发人员之间的交流。在ER模型中,信息由实体型、实体属性和实体间的联系三种概念单元来表示。1.3.3概念模型及其表示方法1.3数据模型数据模型实体型:用矩形表示,矩形框内写明实体名。
16、属性:是实体的说明,用椭圆形表示,并用无向边将其与相应的实体连接起来。如图所示,学生实体具备学号、姓名、性别等属性。1.3.3概念模型及其表示方法学 生学 号姓 名性 别学生实体属性1.3数据模型数据模型联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)。1.3.3概念模型及其表示方法课 程课程号课程名课程类型学 生学 号姓 名性 别选修nm课程与学生的联系1.3数据模型数据模型联系本身也是一种实体型,可以有属性。如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来。学生与课程具有联系选课,课程被学生选修后,学
17、生需获得对应课程的成绩。因此,选修联系具有属性“成绩”。1.3.3概念模型及其表示方法课 程课程号课程名课程类型学 生学 号姓 名性别选修nm成 绩联系“选修”的属性“成绩”第第1章章数据库概述数据库概述本章小结:数据与信息;数据库系统与数据库管理系统;数据模型及其分类;概念模型及E-R图的画法。ThankYou!数数据据库库原原理理及及应应用用(SQLServer2005):2024年年7月月19日日第第2 2章章 关系数据库基础关系数据库基础第第2章章关系数据库基础关系数据库基础任务目标:了解数据模型的分类,掌握关系模型的组成及相关概念;了解关系代数的基础知识,能运用关系代数进行传统的集合
18、运算和专门的集合运算;掌握关系完整性的相关知识,能够对关系进行实体完整性、参照完整性和用户定义完整性约束;掌握关系规范化理论,能够使用1NF、2NF和3NF对关系进行规范化。第第2章章关系数据库基础关系数据库基础2.1 关系模型的基本概念2.2 关系数据的基本运算2.3 关系的完整性2.4 关系规范化理论习题2.1关系模型的基本概念关系模型的基本概念2.1.1关系模型在数据库中,有些数据实体之间存在着某种联系,用来描述这些数据实体间关联形式的模型叫做数据模型。在数据库技术领域中,较为经典的数据模型有三种,分别是:层次模型;网状模型;关系模型,采用二维表结构描述数据实体间的关联,以记录组或数据表
19、的形式组织数据,以便于利用各种地理实体与属性之间的关系进行存储和变换,不分层也无指针,是建立空间数据和属性数据之间关系的一种非常有效的数据组织方法。2.1关系模型的基本概念关系模型的基本概念2.1.1关系模型关系模型和层次、网状模型相比,有以下特点:1)数据结构简单(二维表)2)扎实的理论基础3)关系运算4)关系模式的数据独立性强关系模型由三部分组成:关系数据结构;关系数据操作;关系数据完整性约束。2.1关系模型的基本概念关系模型的基本概念2.1.2关系基本概念在关系和关系数据库的学习中,需要先学习以下术语和相关概念。1.域域是一组具有相同数据类型的值的集合。2.元组关系中的每个元素是关系中的
20、元组,可以用来表示一个实体。3.关系关系是一个规范化的二维表,表的每一行对应一个元组,表的每一列对应一个域,由于域可以相同,为了加以区分表中的列,必须对每列起一个名字,称为属性。2.1关系模型的基本概念关系模型的基本概念基本的关系满足以下特性:关系(二维表)中的每一行对应一个元组,即一个实体;表的每一列对应某个实体的一个属性。关系中的元组(实体)不能完全相同。关系中的属性名称不能重复。关系中的元组次序和属性次序可以互换。关系中的每个属性都是不可再分解的数据项。关系的属性中必须有一个是关键字,用来唯一标识一个实体。2.1.2关系基本概念2.1关系模型的基本概念关系模型的基本概念例:学生选课系统中
21、,其概念模型中有学生实体、课程实体以及选课联系。学号(studentID)姓(studentName)性别(Sex)20100101张小丽女20100102王刚男20100103李平女20100104郭鹏男20100105刘翔男20100106吴飞男20100107张国强男20100108李国庆男2.1.2关系基本概念课程号(courseID)课程名(coursename)课程类别(typename)342101计算机基础专业课342102数据库应用专业课342103C语言程序设计专业课342104大学英语基础课342105高等数学基础课学号(studentID)课程号(courseID)成绩
22、(Grade)20100102342103862010010134210179201001053421028120100107342104902010010834210192201001023421047520100107342105802010010634210170关系选课关系课程关系学生2.1关系模型的基本概念关系模型的基本概念4.属性描述实体或者联系的特性的列名称为属性,属性分为主属性和非主属性。主属性:主码的各个属性。非主属性:除了主属性之外的属性。例如,关系Student中的studentID、studentName、Sex是关系Student的属性。在关系Student的各属性中
23、,主属性有studentID,非主属性有studentName和Sex。关系Course中的courseID、coursename、typename是关系Course的属性。在关系Course的各属性中,主属性有courseID,非主属性有coursename和typename。2.1.2关系基本概念2.1关系模型的基本概念关系模型的基本概念5.属性值描述实体或者联系的具体数据称为属性值。属性值的取值范围是域。例如,关系Student中的20100101,20100105,张小丽,张国强,女,男等都是关系Student的属性值。关系Course中的342101,342103,C语言程序设计,数
24、据库应用,专业课,基础课等都是关系Course的属性值。关系Student_Course中的20100102,20100108,342104,342101,70,81等都是关系Student_Course的属性值。2.1.2关系基本概念2.1关系模型的基本概念关系模型的基本概念6.关系型关系表的所有列标题,即所有属性名。例如,关系Student的关系型可表示成为:(studentID,studentName,Sex)关系Course的关系型可表示成为:(courseID,coursename,typename)关系Student_Course的关系型可表示成为:(studentID,cours
25、eID,Grade)2.1.2关系基本概念2.1关系模型的基本概念关系模型的基本概念7.关键字关系中用来唯一标识一个实体的某个属性或属性组。每个关系只能有一个关键字,又被称为主码或主键。例如,关系Student中的关键字是studentID属性。关系Course中的关键字是courseID属性。关系Student_Course中的关键字是studentID和courseID属性组,原理与关系Student_Course主属性的选取一样。2.1.2关系基本概念2.1关系模型的基本概念关系模型的基本概念8.外关键字关系中用的某个属性或属性组不是本关系的关键字,而是另一个关系的关键字,又被称为外码或
26、外键。例如,关系Student_Course中的studentID属性和courseID属性都是外关键字。在关系Student和关系Student_Course中没有外关键字。9.候选码候选码是指可以作为关键字的属性或属性组。候选码可以有多个,可从候选码中选取一个或部分作为关键字。2.1.2关系基本概念2.1关系模型的基本概念关系模型的基本概念10.关系模式用来描述关系的关系名称。关系模式通常可以简记为:关系名(属性名1,属性名2,属性名n)。如,学生关系模式通常可以简记为:Student(studentID,studentName,Sex)课程关系模式通常可以简记为:Course(cours
27、eID,coursename,typename)选课关系模式通常可以简记为:Student_Course(studentID,courseID,Grade)2.1.2关系基本概念2.1关系模型的基本概念关系模型的基本概念1.关系数据库关系数据库是指在一个给定的现实世界应用领域中,用于描述实体及实体之间联系的所有关系表的集合。2.关系数据库系统采用关系数据模型构造的数据库系统,被称为关系数据库系统。关系数据库系统是目前使用最为广泛的数据库系统。2.1.3关系数据库2.2关系数据的基本运算关系数据的基本运算关系数据的运算是以关系代数为基础的。关系代数是一种抽象的查询语言,用于对关系的运算来表达各种
28、操作,其运算对象是关系,运算结果亦为关系。关系代数用到的运算符包括四类:集合运算符(并、差、交、笛卡尔积);专门的关系运算符(选择、投影、连接);算术比较符(大于、小于、等于、大于等于、小于等于、不等于);逻辑运算符(与、或、非)。2.2.1关系代数2.2关系数据的基本运算关系数据的基本运算比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的,所以关系代数的运算按运算符的不同主要分为传统的集合运算和专门的关系运算两类。2.2.1关系代数传统的集合运算符运算名称运算符号并差交笛卡儿积专门的关系运算符运算名称运算符号选择投影连接专门的关系运算符传统的集合运算符2.2关系数据的基本运算关系数据
29、的基本运算传统的集合运算是二目运算。假设有两个关系R和S,t是元组变量,关系R为学习成绩优秀的学生,关系S为心理素质优秀的学生,分别如表2-6和表2-7所示。学生姓名学生性别张小丽女王刚男李平女郭鹏男刘翔男吴飞男张国强男李国庆男2.2.2传统的集合运算学生姓名学生性别张小丽女王刚男王晓霞女郭鹏男刘翔男表2-7心理素质优秀的学生关系S表2-6学习成绩优秀的学生关系R2.2关系数据的基本运算关系数据的基本运算学生姓名学生性别张小丽女王刚男李平女郭鹏男刘翔男吴飞男张国强男李国庆男王晓霞女2.2.2传统的集合运算1.并运算任务2-1对以上R和S两个关系进行并运算。任务分析:按照学习成绩优秀的学生关系和
30、心理素质优秀的学生关系,可知并运算RS表示学习成绩优秀或心理素质优秀的学生,可以得到RS的关系如下表2-8所示。表2-8并运算后的新关系2.2关系数据的基本运算关系数据的基本运算2.差运算任务2-2对以上R和S两个关系进行差运算。任务分析:按照学习成绩优秀的学生关系和心理素质优秀的学生关系,可知差运算R-S表示学习成绩优秀的学生但心理素质没有达到优秀的学生,可以得到R-S的关系如下表2-9所示。2.2.2传统的集合运算学生姓名学生性别李平女张国强男李国庆男吴飞男表2-9差运算后的新关系2.2关系数据的基本运算关系数据的基本运算3.交运算任务2-3对以上R和S两关系进行交运算。任务分析:按照学习
31、成绩优秀的学生关系和心理素质优秀的学生关系,可知交运算RS表示学习成绩优秀同时心理素质也优秀的学生,可以得到RS的关系如下表2-10所示。2.2.2传统的集合运算学生姓名学生性别张小丽女王刚男刘翔男郭鹏男表2-10差运算后的新关系2.2关系数据的基本运算关系数据的基本运算4.笛卡儿积运算任务2-4假如在学生选课系统中,学生关系R如表2-11所示,选课关系S如表2-12所示,对以上R和S两关系进行交运算。任务分析:笛卡儿积是关系的连接,在形成的新关系中前m个属性来自R,后n个属性来自S,即新关系的属性为m+n;关系R的元组个数为a,关系S的元组个数为b,则新关系的元组个数为ab。2.2.2传统的
32、集合运算2.2关系数据的基本运算关系数据的基本运算学号姓名性别20100101张小丽女20100102王刚男学号课程号成绩20100102342103862010010134210179201001053421028120100107342104902.2.2传统的集合运算学号姓名性别学号课程号成绩20100101张小丽女201001023421038620100101张小丽女201001013421017920100101张小丽女201001053421028120100101张小丽女201001073421049020100102王刚男201001023421038620100102王刚男
33、201001013421017920100102王刚男201001053421028120100102王刚男2010010734210490表2-13笛卡儿积RS表2-11学生关系R表2-12选课关系S2.2关系数据的基本运算关系数据的基本运算1选择运算选择又称为限制。它是在关系R中选择满足给定条件的元组。任务2-5使用选择运算从学生关系R中选择男学生,学生关系R如表2-14所示。任务分析:运算过程中选择性别条件为“男”的元组组成新关系。进行过选择运算后的新关系如表2-15所示。学号姓名性别20100101张小丽女20100102王刚男20100103李平女20100104郭鹏男2010010
34、5刘翔男20100106吴飞男20100107张国强男20100108李国庆男2.2.3专门的关系运算学号姓名性别20100102王刚男20100104郭鹏男20100105刘翔男20100106吴飞男20100107张国强男20100108李国庆男表2-14学生关系R表2-15选择运算后新关系2.2关系数据的基本运算关系数据的基本运算2投影运算关系R上的投影是从R中选择出若干属性列组成新的关系。任务2-6使用投影运算从表2-15所示关系中运算出学生姓名和性别情况。任务分析:运算过程中选择表2-15所示关系的“姓名”和“性别”情况组成新关系。进行过投影运算后的新关系如表2-16所示。2.2.3
35、专门的关系运算姓名性别王刚男郭鹏男刘翔男吴飞男张国强男李国庆男表2-16选择运算后的新关系2.2关系数据的基本运算关系数据的基本运算3连接运算连接也称为连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组,形成一个新的关系。连接分为两种:1)等值连接;等值连接是在关系R和关系S的连接中,比较条件为等于,则在笛卡儿积中,按等于的比较条件进行选择。2)自然连接。自然连接是一种特殊的等值连接,它要求两个关系R和S中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。此时,可以将自然连接运算过程理解为先进行等值连接,再去处重复属性列。2.2.3专门的关系运算2.2关系数据的基本运
36、算关系数据的基本运算等值连接任务2-7学生、选课和课程关系如表2-17、表2-18和表2-19所示,使用等值连接进行关系运算。任务分析:以选课表中的courseID和studentID条件进行等值连接,观察等值连接的结果是具有重复属性的新关系。新关系如表2-20所示。学号姓名性别0101张小丽女0102王刚男2.2.3专门的关系运算学号课程号成绩010134210386010134210179010234210281010234210490课程号(courseID)课程名(coursename)课程类别(typename)342101计算机基础专业课342102数据库应用专业课342103C语
37、言程序设计专业课342104大学英语基础课342105高等数学基础课表2-17学生关系(Student)表2-18选课关系(Student_Course)表2-19课程关系(Course)2.2关系数据的基本运算关系数据的基本运算2.2.3专门的关系运算学号姓名性别学号课程号成绩课程号课程名课程类别0101张小丽女010134210386342103C语言程序设计专业课0101张小丽女010134210179342101计算机基础专业课0102王刚男010234210281342102数据库应用专业课0102王刚男010234210490342104大学英语基础课表2-20等值连接关系2.2关
38、系数据的基本运算关系数据的基本运算2.2.3专门的关系运算表2-21自然连接关系自然连接自然连接是一种特殊的等值连接,它要求两个关系R和S中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。此时,可以将自然连接运算过程理解为先进行等值连接,再去处重复属性列。任务2-8根据任务2-7的结果,进行自然连接。任务分析:自然连接运算过程理解为先进行等值连接,再去处重复属性列。因此,可以在表2-20的基础上去处重复列。其结果如表2-21所示。学号姓名性别课程号成绩课程名课程类别0101张小丽女34210386C语言程序设计专业课0101张小丽女34210179计算机基础专业课0102王刚
39、男34210281数据库应用专业课0102王刚男34210490大学英语基础课2.3关系的完整性关系的完整性任意一个关系通常对应现实世界的某一个实体,如学生关系对应于学生的集合,课程关系对应课程的集合。现实世界中的实体是可区分的,即它们具有自身特定的标识。相应地,关系模型中以主码作为唯一性标识。主属性不能取空值,即不能是“不知道”或“无意义”的值。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与实体的定义相矛盾。实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。2.3.1实体完整性2.3关系的完整性关系的完整性任务2-9建立表“学生”,其中的属性“课程
40、号”为主码,该主码唯一且不能为空。使用T-SQL语言定义“学生”表。任务分析:T-SQL语言的相关知识将在本书第五章介绍,此处从T-SQL语言定义数据表的角度帮助读者理解实体完整性规则。使用T-SQL语言创建某表“课程”的语句如下:CREATETABLECOURSE(courseIDchar(8)NOTNULLPRIMARYKEY,coursenamevarchar(20)null,typenamevarchar(18)null)从表的定义中可以看到“courseIDchar(8)NOTNULLPRIMARYKEY”,对“课程”表的主属性“PRIMARYKEY”指明了“NOTNULL”。依据以
41、上T-SQL语句进行了表的创建后,当有基于此表的数据输入、修改等操作时,数据库管理系统自动对输入和修改的数据进行检查,从而可以保障数据的有效性。2.3.1实体完整性2.3关系的完整性关系的完整性实体与实体之间往往存在某种依存关系,这种依存关系叫做联系。在关系模型中实体及实体间的联系都是用关系来描述的,这样就自然存在着关系与关系间的引用,即关系参照的完整性。在一个关系模型中,关系R中的外码对应另一个关系S的主码(关系R和S不一定是不同的关系),关系R中外码的取值要参照另一个关系S主码的取值。此时,R为参照关系,S为被参照关系。参照完整性规则:定义外码与主码之间的引用和参照规则,参照关系的外码取值
42、不能超出被参照关系的主码取值。2.3.2参照完整性2.3关系的完整性关系的完整性任务2-10新建一个关系“选课”,与任务2-9中关系“课程”形成参照关系和被参照关系,此时“选课”中外码courseID的值不能超过“课程”中courseID的值。使用T-SQL语言定义参照完整性。任务分析:T-SQL语言的相关知识将在本书第五章介绍,此处从T-SQL语言实现参照完整性约束的角度帮助读者理解参照完整性。使用T-SQL语言创建某表“选课”的语句如下:CREATETABLEStudent_Course(studentIDchar(10)NOTNULL,courseIDchar(8)NOTNULL,Gra
43、deTinyint,PRIMARYKEY(studentID,courseID),FROEIGNKEY(courseID)REFERENCESCourse(courseID)当对“选课”中插入数据时,数据库管理系统检查其插入的courseID值是否在“课程”的courseID属性值中,如果存在则可插入,如不存在则不能插入。2.3.2参照完整性2.3关系的完整性关系的完整性2.3.3用户定义完整性实体完整性和参照性适用于任何关系数据库系统,而用户自定义的完整性规则是针对某一具体数据库的约束条件。不同的关系数据库系统根据其应用环境的不同,往往需要一些特殊的约束条件,用户定义的完整性就是针对某一具体
44、关系数据库进行的条件约束,它反映的是具体应用所涉及的数据所须满足的要求。关系模型应能提供定义和检验这类完整性的机制,以便用统一的处理这些条件要求。因此,在实际应用中,应用程序的编程人员不需考虑这类完整性规则。2.3关系的完整性关系的完整性任务2-11对关系“学生”,其中的属性“性别”的取值范围必须满足“男”或“女”,使用T-SQL语言定义用户完整性约束(CHECK约束)。任务分析:T-SQL语言的相关知识将在本书第五章介绍,此处从T-SQL语言实现用户定义完整性约束的角度帮助读者理解用户定义完整性。使用T-SQL语言创建某表“学生”的语句如下:CREATETABLESTUDENT(studen
45、tIDchar(10)NOTNULLPRIMARYKEY,studentNamevarchar(10)NOTNULL,Sexchar(2)NULLCHECK(Sex=男ORSex=女))在对关系“学生”进行数据输入的时候,数据库管理系统自动检查所输入性别对应的值,所输入的Sex值只可能是“男”或者是“女”两种情况之一。2.3.3用户定义完整性2.4关系规范化理论关系规范化理论在数据库设计过程中,需要考虑到针对具体问题构造适合于这个问题的数据库模式,即在该数据库设计过程中应该构造几个关系模式,每个关系由哪些属性组成等。这是数据库设计的问题,确切地讲是关系数据库逻辑设计问题。关系数据库逻辑设计的好
46、坏与其所含的各个关系模式设计的好坏相关。如果各个关系模式结构合理、功能简单明确、规范化程度高,就能确保所建立的数据库具有较少的数据冗余、较高的数据共享度、较好的数据一致性,并为数据库系统能够很好的应用于实际打下良好基础。不规范的关系设计会增大系统在运行过程中的数据冗余,进而可能由数据冗余为整个数据库系统带来其他运行的障碍。同时,还会带来数据的删除异常和插入异常等问题。因此,关系的规范化在数据库设计中起着很重要的作用。2.4关系规范化理论关系规范化理论在关系模式设计中,经常会遇到某一属性还具有子属性的情况。此时,可对其进行规范化,使其满足第一范式。1NF定义:设关系R,则关系R中所有属性不可再分
47、,即消除非原子属性分量。例如:在关系“学生”中有“电话”属性,电话属性可能有家庭电话、手机、宿舍电话等子属性。如表2-22所示。2.4.1第一范式1NF学 号姓 名性 别电 话家庭电话手 机宿舍电话20100101张小丽女52236891365521*612254520100102王刚男53688571352215*625879820100103李平女53658951592256*682001220100104郭鹏男56812571385965*6156328表2-22学生信息表2.4关系规范化理论关系规范化理论2.4.1第一范式1NF任务2-12对以上关系进行规范化,使其满足1NF。任务分析
48、:家庭电话、手机、宿舍电话三个属性属于“电话”属性的子属性。此时,可将“电话”属性进行分解。结果如表2-23所示。学 号姓 名性 别家庭电话手 机宿舍电话20100101张小丽女52236891365521*612254520100102王刚男53688571352215*625879820100103李平女53658951592256*682001220100104郭鹏男56812571385965*6156328表2-22满足1NF的学生信息表2.4关系规范化理论关系规范化理论2.4.2第一范式2NF在关系模式设计中,如果非主属性存在对主码的部分函数依赖,则不满足2NF。此时,可对其进行规
49、范化,使其满足第二范式。2NF定义:设关系R,则关系R中所有非主属性需完全函数依赖每个主码,即消除非主属性对主码的部分函数依赖。例如:假如某设计人员将学生“选课”关系设计为“Student_Course(studentID,studentName,Sex,courseID,coursename,typename,Grade)”,主码为studentID和courseID,则此时存在非主属性对主码的部分函数依赖。可能产生的问题:数据冗余:不同课程同一个选课学生的学生姓名、性别信息存在数据冗余。即一个学生可能选了多门课程,则在这个学生对应的多个课程实体中,存在大量学生姓名、性别的数据冗余。插入异常
50、:如果有某门课程没有学生进行选择,则导致该门课程的信息无法正常插入,造成插入异常。删除异常:如果某学生只选择了一门课程,则在删除该门课程信息时,导致学生信息也被删除,造成删除异常。更新异常:更新过程实际是删除和插入过程的结合,所以也会带来更新异常。2.4关系规范化理论关系规范化理论2.4.2第一范式2NF任务2-13对以上关系进行规范化,使其满足2NF。任务分析:可以发现存在两种非主属性。一种是“Grade”,它完全由studentID和courseID同时决定,它对主码是完全函数依赖,另一种是“studentName,Sex,coursename,typename”,它们对主码并不是完全函数
51、依赖,比如studentName只由studentID决定,而coursename只由courseID决定。此时,可将“选课”关系分解为两个关系:Student_Course(studentID,courseID,Grade)主码:studentID,courseIDCourse(courseID,coursename,typename)主码:courseID这样,两个新关系中的非主属性就分别完全函数依赖于各自的关系主码,从而达到了2NF。2.4关系规范化理论关系规范化理论在关系模式设计中,如果非主属性存在对主码的传递函数依赖,则不满足3NF。此时,可对其进行规范化,使其满足第三范式。3NF定
52、义:设关系R,则关系R中所有非主属性需不传递函数依赖每个主码,即消除非主属性对每个主码的传递函数依赖。例如:假如某设计人员将“课程”关系设计为“Course(courseID,coursename,CoursetypeID,typename)”,主码为courseID,则此时存在非主属性对主码的传递函数依赖。可能产生的问题:数据冗余:同一课程类型的多门课程对应的类型名称存在数据冗余。即可能多门课程属于同一课程类型,此时,同一类型多门课程对应实体中存在课程类型名称的数据冗余。插入异常:在某课程类型没有对应课程的情况下,无法正常插入课程类型信息,造成插入异常。删除异常:某类型课程只有一门对应课程,
53、当删除该课程信息时,导致删除课程类型信息,造成删除异常。更新异常:更新过程实际是删除和插入过程的结合,所以也会带来更新异常。2.4.3第三范式3NF2.4关系规范化理论关系规范化理论任务2-14对以上关系进行规范化,使其满足3NF。任务分析:可以发现“课程”关系中的主码courseID决定CoursetypeID,而CoursetypeID决定非主属性typename,即非主属性typename通过CoursetypeID传递函数依赖主码courseID,达不到3NF。此时,可将“课程”关系分解为两个关系,取消其传递依赖:Course(courseID,coursename,Coursetyp
54、eID)主码:courseIDCoursetype(coursetypeID,typename)主码:coursetypeID这样,由于分解为两个新关系,则取消了原有关系之间的传递依赖,且新关系中也不存在其他传递依赖,从而达到了3NF。2.4.3第三范式3NF2.4关系规范化理论关系规范化理论在关系模式设计中,如果不是每一个决定因素都包含关键字,则不满足BCNF。BCNF定义:设关系R,则关系R中所有属性都不传递函数依赖每个候选码,即消除属性对候选码的传递函数依赖。BC范式的要求比第三范式更加严格,是改进的第三范式。第三范式只关注非主属性和关键字之间的传递函数依赖关系,而BC范式则关注所有属性
55、和每个候选码之间的传递函数依赖。当一个关系模式中有多个候选码,并且这些候选码具有公共属性时,就不能够满足BC范式。由此可见,满足BC范式的关系模式一定满足第三范式,但满足第三范式的关系模式不一定满足BC范式。2.4.4BC范式BCNF2.4关系规范化理论关系规范化理论2.4.5关系规范化的实际应用图2-1 范式间的关系3NFBCNF2NF1NF非规范化关系消除非原子属性分量消除非主属性对主码的部分函数依赖消除非主属性对主码的传递函数依赖消除非主属性对主码的部分和传递函数依赖第第2章章关系数据库基础关系数据库基础本章小结:关系模型、关系基本概念;关系数据库基本运算;关系规范化。ThankYou!
56、数数据据库库原原理理及及应应用用(SQLServer2005):2024年年7月月19日日第第3 3章章 关系数据库基础关系数据库基础第第2章章关系数据库基础关系数据库基础任务目标:了解数据库设计的基本方法;了解影响数据库设计的各因素及数据库设计的特点;能够根据项目需求分析进行数据库的概念模型设计;能运用关系模型的基本知识将概念模型转换为关系模型;能够用关系规范化方法对关系模型进行规范化和优化;能够根据完整性规则对关系模型进行实体完整性、用户定义完整性和参照完整性的设计;了解数据库系统安全的基础知识。第第3章章数据库的设计数据库的设计3.1 数据库设计概述3.2 数据库设计的步骤3.3 数据库
57、保护习题3.1数据库设计概述数据库设计概述3.1.1数据库设计方法 规范化设计中著名的有新奥尔良法,它将数据库设计分为四个标准阶段:需求分析(分析用户需求)、概念设计(信息分析和定义)、逻辑设计(设计实现)和物理设计(物理数据库设计)。后来,很多设计者在此基础上对新奥尔良法进行了补充和丰富。S.B.Yao法将数据库设计分为5个步骤:需求分析,模式构成,模式汇总,模式重构,模式分析和物理数据库设计;I.R.Palmer法主张将数据库设计当成一步步的过程并采用一些辅助手段实现每一过程;数据库生命周期法以软件生命周期(规划、设计、实施、运行维护)为主线对数据库进行设计。 基于E-R模型的数据库设计方
58、法、基于3NF(第三范式)的设计方法和基于抽象语法规范的设计方法,都是在数据库设计的不同阶段上支持实现的具体技术和方法。规范法设计从本质上看仍然属于手工设计方法,其基本思想是过程迭代和逐步求精,在遵从一定设计标准的基础上,设计出科学、合理的数据库系统。3.1数据库设计概述数据库设计概述3.1.2数据库设计特点数据库设计的基本任务是根据用户使用的硬件系统、操作系统与数据库管理系统等条件,设计出数据库模式,设计过程中受很多因素的影响。因此,数据库系统设计具有如下几个主要特点:1反复性2试探性3多步性4面向数据3.2数据库设计的步骤数据库设计的步骤3.2.1SQLServer数据库应用系统设计一般步
59、骤一般可将数据库设计分为以下6个阶段。1需求分析阶段2概念设计阶段3逻辑设计阶段4物理设计阶段5数据库实现阶段6数据库运行和维护阶段需求分析概念设计逻辑设计物理设计数据库实现数据库的运行、维护图3-1 数据库设计流程3.2数据库设计的步骤数据库设计的步骤3.2.2需求分析阶段需求分析是整个数据库设计的基础,在进行数据库设计时,首先要了解与分析用户的应用需求,因为该阶段需要设计者与客户的沟通,因此也是最费时、最困难的一个阶段。任务3-1学生成绩管理系统需求分析。任务分析:通过与教务处学生成绩管理职能部门的沟通,获得该部门的组织结构图,分析组织结构图后绘制该系统的数据流程图,分析学生成绩管理系统的
60、功能需求,写出数据字典。1绘制学生成绩管理部门(教务处)组织结构图。学生成绩管理部门(教务处)学生管理职责成绩管理职责课程管理职责图3-2 学生成绩管理部门组织结构图3.2数据库设计的步骤数据库设计的步骤3.2.2需求分析阶段2绘制系统数据流程图。学生成绩管理部门(教务处)学生管理职责成绩管理职责课程管理职责学生管理成绩管理课程管理学生信息表成绩信息表课程信息表图3-3 学生成绩管理系统数据流程图3.2数据库设计的步骤数据库设计的步骤3.2.2需求分析阶段3了解系统功能需求。学生成绩管理系统需要完成如下功能。学生管理:存储、检索、维护有关学生的信息;课程管理:存储、检索、维护有关课程的信息;成
61、绩管理:存储、检索、维护有关学生成绩的信息。4细读数据字典。针对学生成绩管理系统的功能需求,通过分析、归纳,总结出需要如下信息。学生信息:学生编号、学生姓名、民族、性别、出生日期、班级专业系部信息、入学年份、联系电话、已修学分、家庭住址、密码、备注;课程信息:课程编号、课程名称、课程类型、总课时、周课时、学分、备注;成绩信息:学生编号、课程编号、学生成绩、学期。3.2数据库设计的步骤数据库设计的步骤3.2.3概念设计阶段概念设计是将需求分析得到的用户需求抽象为数据库的概念结构,是对现实世界的抽象反映,它不依赖于具体的计算机系统,是现实世界到数据世界的一个中间层次,如图3-4所示。数据库管理系统
62、支持的数据模型现实世界认识抽象独立于计算机载体的信息世界(概念模型)图3-4 数据抽象过程3.2数据库设计的步骤数据库设计的步骤3.2.3概念设计阶段结合学生成绩管理系统的需求分析,对数据库系统进行概念设计。1定义实体。根据需求分析,找出数据实体。根据学生成绩管理系统需求分析,可找出学生和课程两个数据实体。2定义联系。根据需求分析,找出实体与实体之间的联系。通过分析学生成绩管理系统可知,学生与课程之间存在选课考试并获得成绩的联系。一个学生可以选择多门课程并获得对应的多门课成绩,一门课程也可能被多个学生选择。3定义主码。根据需求分析,找出实体的主码。学生成绩管理系统中实体学生的主码为学生编号,课
63、程的主码为课程编号。4定义属性。根据需求分析,找出实体的属性。根据需求分析中的数据字典可以得到学生和课程的属性。5E-R模型设计。综合以上分析进行E-R模型设计。3.2数据库设计的步骤数据库设计的步骤3.2.3概念设计阶段任务3-2根据学生成绩管理系统需求分析,绘制局部E-R图。任务分析:E-R模型设计过程中先绘制局部E-R图,即实体及属性E-R图。根据用户需求可知学生实体属性有学生编号、学生姓名、民族、性别、出生日期、班级专业系部信息、入学年份、联系电话、已修学分、家庭住址,密码,备注,主码为学生编号,其局部E-R图如图3-5所示。学 生学生编号家庭住址学生姓名入学年份民 族已修学分图3-5
64、 学生实体及属性局部E-R图3.2数据库设计的步骤数据库设计的步骤3.2.3概念设计阶段课程实体属性有课程编号、课程名称、课程类型、总课时、周课时等,主码为课程编号,其局部E-R图如图3-6所示。课 程课程编号学 分课程名称周课时课程类型总课时图3-5 课程实体及属性局部E-R图3.2数据库设计的步骤数据库设计的步骤3.2.3概念设计阶段任务3-3根据学生成绩管理系统需求分析及局部E-R图,绘制综合E-R图。任务分析:根据学生与课程之间的联系。一个学生可以选择多门课程进行考试,并获得成绩,一门课程会有多个学生选择进行考试,学生与课程之间存在多对多的成绩联系。综合局部E-R图,可得综合E-R图如
65、图3-7所示。图3-7 学生成绩管理系统概念设计E-R图学 生学生编号家庭住址学生姓名入学年份民 族已修学分课 程课程编号学 分课程名称周课时课程类型总课时成 绩成 绩学 期nm3.2数据库设计的步骤数据库设计的步骤3.2.4逻辑设计阶段概念模型不依赖于具体的计算机,而数据库最终的实现都是以计算机为载体的,因此我们需对概念模型进行转化。1实体(E)转换为关系模式的方法实体转换为关系模式:实体的属性就是关系的属性,实体的主码就是关系的主码。由于逻辑设计是面向具体数据库管理系统,所以概念设计中实体、联系和属性名称在关系模型中最好设计为英文的标准命名标识符。任务3-4将学生和课程实体转换为关系模式。
66、任务分析:将学生和课程实体对应的主码转换关系的主码,将实体的属性转换为关系的属性。3.2数据库设计的步骤数据库设计的步骤3.2.4逻辑设计阶段实体(E):学生(学生编号,学生姓名,民族,性别,出生日期,入学年份,联系电话,已修学分,班级专业系部信息,家庭住址,密码,备注)PK:学生编号关系模式:Student(studentID,studentName,nation,sex,birthday,ru_date,telephone,credithour,class-speciality-department,address,pwd,remark)PK:studentID实体(E):课程(课程编号,
67、课程名称,课程类型,总课时,周课时,学分,备注)PK:课程编号关系模式:Course(courseID,coursename,coursetype,totalperiod,weekperiod,credithour,remark)PK:courseID3.2数据库设计的步骤数据库设计的步骤3.2.4逻辑设计阶段2联系(R)转换为关系模式实体间的联系存在一对一、一对多、多对多三种情况,在转换成关系模式的时候应分别遵从联系到关系的转换方法:一对一:将联系与任意端实体所对应的关系模式合并,并加入另一端实体的主码和联系本身的属性;一对多:将联系与多端实体所对应的关系模式合并,加入一端实体的主码和联系的
68、属性;多对多:将该联系相连的各实体的主码和联系本身的属性转换为关系的属性。3.2数据库设计的步骤数据库设计的步骤3.2.4逻辑设计阶段任务3-5将学生实体与课程实体之间的联系转换成关系模式。任务分析:学生实体和课程实体之间的联系是多对多的。因此,将联系转换成一个关系模式,该联系相连的学生实体主码“学生编号”和课程实体的主码“课程编号”加上联系本身的属性“成绩”和“学期”转换为关系的属性。如图3-8所示。图3-7 学生成绩管理系统概念设计E-R图学 生学生编号家庭住址学生姓名入学年份民 族已修学分课 程课程编号学 分课程名称周课时课程类型总课时成 绩成 绩学 期nm学生编号课程编号3.2数据库设
69、计的步骤数据库设计的步骤3.2.4逻辑设计阶段3关系规范化数据库逻辑设计的好坏与关系模式的结构有很大关系,关系模式的结构合理、规范化程度高,可以确保所建立的数据库具有较高的数据密度、较好的数据共享度、较准确的数据一致性。关系规范化的相关理论在第二章已经介绍。在学生成绩管理系统中,由于关系不规范,可能存在大量数据冗余,此时需要进行关系规范化。任务3-6分析课程关系的规范情况,对其进行关系规范化。任务分析:课程关系的“coursetype”属性还包括课程类型编号“coursetypeID”、课程类型名称“typename”属性。可知此时的课程关系模式为:Course(courseID,course
70、name,coursetypeID,typename,totalperiod,weekperiod,credithour,remark)PK:courseID可以发现该关系属性之间存在传递函数依赖,主码courseID决定coursetypeID,而coursetypeID决定非主属性typename。即非主属性typename传递依赖主码courseID。3.2数据库设计的步骤数据库设计的步骤3.2.4逻辑设计阶段由于存在传递依赖,所以该关系存在如下问题:数据冗余:同一个类型的课程对应的课程类型信息存在大量重复;插入异常:在某课程类型没有对应课程的情况下,不容许插入数据;更新异常:冗余带来更
71、新不一致。为解决上述问题,将该关系进行分解,分解如下:Course(courseID,coursename,coursetypeID,totalperiod,weekperiod,credithour,remark)PK:courseIDFK:coursetypeIDCT(courseID,coursetypeID)-该联系可通过增加外码省略Coursetype(coursetypeID,typename)此时,学生成绩管理系统的数据模型规范化如下:Course(courseID,coursename,coursetypeID,totalperiod,weekperiod,credithour
72、,remark)PK:courseIDFK:coursetypeIDCoursetype(coursetypeID,typename)PK:coursetypeIDGrade(studentID,courseID,Term,grade)PK:studentID,courseIDFK:studentID和courseIDStudent(studentID,studentName,nation,sex,birthday,ru_date,telephone,credithour,class-speciality-department,address,pwd,remark)PK:studentID3.
73、2数据库设计的步骤数据库设计的步骤3.2.4逻辑设计阶段任务3-7分析学生关系的规范情况,对其进行关系规范化。任务分析:学生关系的“class-speciality-department”属性还包括班级编号“classID”、班级名称“className”、专业编号“specialityID”、专业名称“specialityName”、入学年份“EntranceYear”、班长编号“MonitorID”、部门编号“departmentID”、部门名称“DepartmentName”、部门负责人“DepartmentHead”属性。此时的学生关系模式为:Student(studentID,stu
74、dentName,nation,sex,birthday,ru_date,telephone,credithour,classID,className,specialityID,specialityName,EntranceYear,MonitorID,departmentID,DepartmentName,DepartmentHead,address,pwd,remark)PK:studentID可以发现该关系属性之间存在多重传递函数依赖,主码studentID决定classID,而classID决定非主属性className、specialityID、specialityName、Entr
75、anceYear、MonitorID、departmentID、DepartmentName、DepartmentHead,即以上非主属性通过classID传递依赖主码courseID。同时classID决定属性specialityID、specialityName、departmentID、DepartmentName、DepartmentHead;specialityID决定属性departmentID、DepartmentName、DepartmentHead。3.2数据库设计的步骤数据库设计的步骤3.2.4逻辑设计阶段根据以上分析,将该关系进行分解,分解如下:Student(stude
76、ntID,studentName,nation,sex,birthday,ru_date,telephone,credithour,classID,address,pwd,remark)PK:studentIDSC(studentID,classID)-该联系可通过增加外码省略Class(classID,specialityID,className,EntranceYear,MonitorID)PK:classIDFK:specialityID和MonitorIDCS(specialityID,classID)-该联系可通过增加外码省略Speciality(specialityID,speci
77、alityName,departmentID)PK:specialityIDFK:DepartmentIDSD(departmentID,specialityID)-该联系可通过增加外码省略Department(departmentID,DepartmentName,DepartmentHead)PK:DepartmentID3.2数据库设计的步骤数据库设计的步骤3.2.5物理设计阶段对数据库进行设计后,数据库最终是要存储在物理设备上的。为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构(存储结构与存取方法)的过程,就是数据库的物理设计。物理结构依赖于给定的数据库管理系统和硬件系统,因此
78、设计人员必须对所使用数据库管理系统的内部特征有充分了解,特别是存储结构和存取方法;充分了解该数据库的具体应用环境,特别是对响应频率和响应速度的具体要求;同时,充分了解物理存储设备的使用特性。数据库的物理设计通常分为两步:1.确定数据库的物理结构2.对物理结构进行时间和空间效率评价3.2数据库设计的步骤数据库设计的步骤3.2.6数据库实施阶段数据库实施主要包括以下工作:用DDL定义数据库结构组织数据导入数据库编制与调试相关应用程序数据库试运行3.2数据库设计的步骤数据库设计的步骤3.2.7运行和维护阶段当数据库试运行结果符合数据库设计目标后,就可以真正投入运行了。数据库的运行标着数据库开发任务的
79、基本结束和数据库维护工作的开始,但这并不意味着数据库设计过程的终结,由于在具体的应用环境下数据库使用的具体需求也在不断变化,随着数据库的运行,其物理存储也会不断变化,因此对数据库设计进行调整、修改、评价等工作是一个长期反复的任务,也是设计工作的继续和对数据库设计质量的提高。在数据库运行阶段,对数据库的维护工作主要是由数据库管理员完成的,其工作内容包括以下几点:1数据库的备份和恢复2数据库的安全性、完整性控制3对数据库性能的监督、分析和改进4数据库的重组织和重构造3.3数据库保护数据库保护在数据库运行过程中,需要对数据库进行保护,以保障数据库安全正常的运行,数据库保护是计算机安全中的一个重要部分
80、。计算机系统安全是指为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏、数据遭到更改或泄露等。计算机系统的安全性问题可分为三大类:1.技术安全类2.管理安全类3.政策法律类3.3数据库保护数据库保护技术安全具体包括四个级别的安全性:1.操作系统级别的安全性客户要访问数据库,首先要获得计算机操作系统的使用权。2.服务器级别的安全性SQLServer的服务器级安全性建立在控制服务器登陆帐号和密码的基础上,用户名和密码保证了用户在使用数据库前能获得SQLServer的访问权限。3.数据库级别的安全性用户获得服务器安全性验证后,将直接
81、面对不同的数据库入口,这是用户接受的第三层安全性验证。4.表和列级的安全性该层是对某一数据库中对象使用权限的验证。第第3章章数据库的设计数据库的设计本章小结:数据库设计方法及特点;数据库设计详细步骤;数据库安全。ThankYou!数数据据库库原原理理及及应应用用(SQLServer2005):2024年年7月月19日日第第4 4章章 SQL Server 2005 SQL Server 2005 概述概述第第4章章SQLServer2005概述概述任务目标:了解SQL Server 2005的功能熟悉SQL Server 2005的安装条件掌握SQL Server 2005的安装方法;熟悉SQ
82、L Server的管理和配置工具;掌握SSMS查询编辑器的用法。第第4章章SQLServer2005概述概述4.1 SQL Server 2005简介4.2 SQL Server 2005的安装4.3 SQL Server 2005 管理工具 4.4 SQL Server Management Studio的使用方法 习题与实验4.1SQLServer2005简介简介4.1.1SQLServer2005版本介绍EnterpriseEdition(32位和位和64位,缩写为位,缩写为EE)StandardEdition(32位和位和64位,缩写为位,缩写为SE)WorkgroupEdition(
83、只适用于(只适用于32位,缩写为位,缩写为WG)DeveloperEdition(32位和位和64位,缩写为位,缩写为DE)ExpressEdition(只适用于(只适用于32位,缩写为位,缩写为SSE)MobileEdition(以以前前的的WindowsCEEdition2.0,缩缩写写为为CE或或ME)。)。4.1SQLServer2005简介简介4.1.2SQLServer2005的新特性.NETFramewok集成集成WebServicesXML技术技术数据库镜像数据库镜像MicrosoftOfficeSystem的集成的集成4.2SQLServer2005的安装的安装对硬件环境的要
84、求4.2.1安装的软硬件需求版本版本(32)开发版开发版标准版标准版工作组版工作组版精简版精简版CPU类型类型Intel兼容的兼容的PentiumIII处理器或更高级处理器或更高级别别Intel兼容的兼容的PentiumIII处理器或更高级别处理器或更高级别Intel兼容的兼容的PentiumIII处理器或更高级别处理器或更高级别Intel兼容的兼容的PentiumIII处理器或更高级别处理器或更高级别CPU速度速度最低:最低:500MHz推荐:推荐:1GHz或或更高更高最高:最高:TBD最低:最低:500MHz推荐:推荐:1GHz或更或更高高最高:最高:TBD最低:最低:500MHz推荐:推
85、荐:1GHz或更或更高高最高:最高:TBD最低:最低:500MHz推荐:推荐:1GHz或更高或更高最高:最高:TBD内存大小内存大小最低:最低:512MB推荐:推荐:1G或更高或更高最高:最高:TBD最低:最低:512MB推荐:推荐:1G或更高或更高最高:最高:TBD最低:最低:512MB推荐:推荐:1G或更高或更高最高:最高:TBD最低:最低:128MB推荐:推荐:512G或更高或更高最高:最高:TBD4.2SQLServer2005的安装的安装对操作系统的要求4.2.1安装的软硬件需求操作系统操作系统企业版企业版开发版开发版标准版标准版工作组版工作组版ExpressExpress版版企业评
86、估版企业评估版Windows 2000 Professional Windows 2000 Professional EditonEditon SP4 SP4否否是是是是是是是是是是Windows 2000 Sever SP4Windows 2000 Sever SP4是是是是是是是是是是是是Windows 2000 Advanced Server SP4Windows 2000 Advanced Server SP4是是是是是是是是是是是是Windows 2000 Datacenter Edition SP4Windows 2000 Datacenter Edition SP4是是是是是是是
87、是是是是是嵌入式嵌入式Windows XPWindows XP否否否否否否否否否否否否Windows XP Home Windows XP Home EditonEditon SP2 SP2否否是是否否否否是是否否Windows XP Professional Windows XP Professional EditonEditon SP2 SP2否否是是是是是是是是是是Windows XP Media Windows XP Media EditonEditon SP2 SP2否否是是是是是是是是是是Windows XP Tablet Windows XP Tablet EditonEdito
88、n SP2 SP2否否是是是是是是是是是是Windows 2003 Server SP1Windows 2003 Server SP1是是是是是是是是是是是是Windows 2003 Enterprise Edition SP1Windows 2003 Enterprise Edition SP1是是是是是是是是是是是是Windows 2003 Datacenter Edition SP1Windows 2003 Datacenter Edition SP1是是是是是是是是是是是是Windows 2003 Web Edition SP1Windows 2003 Web Edition SP1否
89、否否否否否否否是是否否4.2SQLServer2005的安装的安装对Internet要求4.2.1安装的软硬件需求组件组件要求要求Internet Internet 软件软件所有所有SQL Server 2005SQL Server 2005的安装都需要的安装都需要 Microsoft Internet Microsoft Internet Explorer 6.0 SP1Explorer 6.0 SP1或更高版本,因为或更高版本,因为 Microsoft Microsoft 管理管理控制台控制台 (MMC) (MMC) 和和 HTML HTML 帮助需要它。帮助需要它。InternetInt
90、ernet信息服务信息服务安装安装 Microsoft SQL Server 2005 Reporting Services Microsoft SQL Server 2005 Reporting Services (SSRS) (SSRS) 需要需要IIS 5.0IIS 5.0或更高版本。或更高版本。ASP.NET 2.0ASP.NET 2.0Reporting ServicesReporting Services需要需要ASP.NET 2.0ASP.NET 2.0。安装。安装Reporting Reporting Services Services 时,如果尚未启用时,如果尚未启用 ASP
91、.NETASP.NET,则,则 SQL SQL Server Server 安装程序将启用安装程序将启用 ASP.NETASP.NET。4.2SQLServer2005的安装的安装以在WindowsServer2003上安装企业版SQLServer2005为例,介绍SQLServer2005的安装步骤。如果光盘未自动运行,可以双击安装盘中的“SPLASH.HTA“可按照提示一步一步安装完毕,如下图所示。4.2.2一般安装过程4.2SQLServer2005的安装的安装点击安装“服务器组件、工具、联机丛书和示例”,如下图所示。4.2.2一般安装过程4.2SQLServer2005的安装的安装在打
92、开的“最终用户许可协议”对话框中阅读许可条款,再选中“我接受许可条款和条件我接受许可条款和条件”,点击“下一步下一步”,如下图所示。4.2.2一般安装过程4.2SQLServer2005的安装的安装在打开的“安装必备组件”对话框中,安装程序显示必须的组件,点击“安装安装”按钮开始安装必备组件,如下图所示。4.2.2一般安装过程4.2SQLServer2005的安装的安装必备组件安装结束后,单击“下一步”将进入正式安装的向导界面。再次点击“下一步下一步”进入配置检查界面,检查配置没问题,点击“下一步下一步”,如下图所示。4.2.2一般安装过程4.2SQLServer2005的安装的安装配置检查结
93、束后,单击“下一步下一步”进入“注册信息”输入对话框,如下图所示。在这个对话框中需要输入相应的注册信息。4.2.2一般安装过程4.2SQLServer2005的安装的安装注册信息输入完毕后单击“下一步”打开“要安装的组件”对话框,如下图所示。在这个对话框中选择需要安装的组件。4.2.2一般安装过程4.2SQLServer2005的安装的安装单击“高级”按钮可以打开“功能选择”对话框,进行更详细的配置,如下图所示。4.2.2一般安装过程4.2SQLServer2005的安装的安装安装组件选择和设置完毕后,单击“下一步”,进入“实例名”对话框,可以为SQLServer服务器命名。如果是首次安装可以
94、选择“默认实例默认实例”,然后点击“下一步下一步”,如下图所示。4.2.2一般安装过程4.2SQLServer2005的安装的安装命名实例选择后,单击“下一步”,进入“服务账户”对话框,为SQLServer服务账户指定用户名、密码及域名等信息,如下图所示。4.2.2一般安装过程4.2SQLServer2005的安装的安装单击“下一步”,进入“身份验证模式”选择对话框。如果选择“混合模式混合模式”,还必须输入默认账户sa的密码,而且sa默认必须是强密码。如下图所示。4.2.2一般安装过程4.2SQLServer2005的安装的安装点击“下一步下一步”,打开“排序规则设置”对话框,指定SQLSer
95、ver实例的排序规则。如下图所示。4.2.2一般安装过程4.2SQLServer2005的安装的安装单击“下一步”进入“错误和使用情况报告设置”对话框,SQLServer可以将错误及使用情况报告到Microsoft。单击“下一步”,打开“准备安装”界面,如下图所示。4.2.2一般安装过程4.2SQLServer2005的安装的安装单击“安装安装”,打开“安装进度”对话框,如下图所示。在这个对话框中可以监视安装进度。还可以通过单击某个服务的名称,打开该服务安装的日志文件。4.2.2一般安装过程4.2SQLServer2005的安装的安装安装完毕,点击“下一步下一步”,如下图所示。点击“完成完成”
96、,安装完毕。4.2.2一般安装过程4.3SQLServer2005管理工具管理工具在MicrosoftSQLServer2005AnalysisServices(SSAS)中,可以方便地创建复杂的联机分析处理(OLAP)和数据挖掘解决方案。AnalysisServices工具提供了设计、创建和管理来自数据仓库的多维数据集和数据挖掘模型的功能,还提供对OLAP数据和数据挖掘数据的客户端访问。在SQLServer中提供了AnalysisServices的“部署向导”,为用户提供将某个AnalysisServices项目的输出部署到某个目标服务器的功能。4.3.1AnalysisServices4.
97、3SQLServer2005管理工具管理工具NotificationServices命令提示命令提示ReportingServices配置配置SQLServerConfigurationManagerSQLServer错误和使用情况报告错误和使用情况报告SQLServer外围应用配置器外围应用配置器。4.3.2配置工具4.3SQLServer2005管理工具管理工具SQLServer2005提供了大量的联机帮助文档和内容详实的教程,为用户提供学习帮助。除了在开始菜单中启动联机帮助外还可以直接在其他任何SQLServer的实用工具中启动。4.3.3文档和教程4.3SQLServer2005管理工
98、具管理工具SQLServer的性能工具包括“SQLServerProfiler”和“数据库引擎优化顾问”两个。主要用于用户数据库性能调试和优化。4.3.4性能工具4.3SQLServer2005管理工具管理工具SQLServerBusinessIntelligenceDevelopmentStudio是商务智能(BI)系统开发人员设计的集成开发环境,构建于VisualStudio2005技术之上,为商业智能系统开发人员提供了一个丰富、完整的专业开发平台,支持商业智能平台上的所有组件的调试、源代码控制以及脚本和代码的开发。4.3.5SQLServerBusinessIntelligenceDev
99、elopmentStudio4.3SQLServer2005管理工具管理工具SQLServerManagementStudio(SQLServer管理控制台)是SQLServer的集成管理工具,将SQLServer早期版本中包含的企业管理器、查询分析器和分析管理器的功能组合到单一环境中,为不同层次的开发人员和管理员提供SQLServer访问能力。4.3.6SQLServerManagementStudio4.4SQLServerManagementStudio的使用方法的使用方法“开始”“程序”“SQLServer2005”“SQLServerManagementStudio”,弹出“连接到服
100、务器”对话框,如下图所示。4.4.1启动SMSS4.4SQLServerManagementStudio的使用方法的使用方法选择身份验证模式,输入用户名和密码,单击“连接”按钮,便可以进入“SQLServerManagementStudio”窗口。如下图所示。4.4.1启动SMSS4.4SQLServerManagementStudio的使用方法的使用方法查询编辑器工具栏查询编辑器工具栏该工具栏上的常用按钮及其说明如下:按钮:用于执行编写好的T-SQL脚本;按钮:用于检查分析编写好的T-SQL脚本;按钮:终止正在执行的T-SQL脚本;按钮:用于显示预估的执行计划;按钮:以文本形式查看运行结果;
101、按钮:以网格形式查看运行结果;按钮:将运行结果另存到文件;按钮:将选中行注释;按钮:取消对选中行的注释;4.4.2SMSS查询器4.4SQLServerManagementStudio的使用方法的使用方法使用使用SSMS编写并运行编写并运行SQL脚本脚本“文件”|“新建”|“数据库引擎查询”或单击工具栏上的“数据库引擎查询”按钮或“新建查询按钮”;在弹出的“连接到服务器”对话框中,单击“确定”按钮,在“文档”窗口打开了查询编辑器,如下图所示;4.4.2SMSS查询器4.4SQLServerManagementStudio的使用方法的使用方法使用使用SSMS编写并运行编写并运行SQL脚本脚本在查
102、询编辑器的编辑面板中,输入T-SQL语句:USESGMSgoSELECT*FROMStudentgo4.4.2SMSS查询器4.4SQLServerManagementStudio的使用方法的使用方法使用使用SSMS编写并运行编写并运行SQL脚本脚本使用工具栏上的“连接”、“执行”、“分析”或“显示估计的执行计划”按钮完成相应的任务;在查询结果栏里显示执行结果。如下图所示。4.4.2SMSS查询器4.4SQLServerManagementStudio的使用方法的使用方法使用使用SSMS编写并运行编写并运行SQL脚本脚本“文件”“保存”/“另存为”,保存T-SQL查询语言为脚本语言(.sql)
103、,。如下图所示;4.4.2SMSS查询器习题与实验习题与实验习题1、在、在WindowsXP操作系统中,不可以安装操作系统中,不可以安装SQLServer2005的(的()。)。A.企业版企业版B.标准版标准版C.个人版个人版D.开发版开发版2、简述、简述SQLServer2005常用常用2、管理工具有哪些,主要功、管理工具有哪些,主要功能是什么?能是什么?3、SQLServer2005提供了哪些版本?各自的应用范围是提供了哪些版本?各自的应用范围是?习题与实验习题与实验实验1、在实验室的计算机上安装、在实验室的计算机上安装SQLServer2005,如果已,如果已安装过安装过SQLServe
104、r,选择安装命名实例,并将该实例,选择安装命名实例,并将该实例命名为自己的姓名。命名为自己的姓名。2、启动、启动SQLServerConfigurationManager,熟悉,熟悉SQLServer的常用配置及其设置方法。的常用配置及其设置方法。3、启动并使用、启动并使用sa用户登录用户登录SQLServerManagementStudio,熟悉该工具的用法。,熟悉该工具的用法。4、编写基本的、编写基本的T-SQL脚本并调试运行。脚本并调试运行。第第4章章SQLServer2005概述概述本章小结:SQL SERVER 2005简介;SQL SERVER 2005 的安装;SMSS的使用Th
105、ankYou!数数据据库库原原理理及及应应用用(SQLServer2005):2024年年7月月19日日第第5 5章章 Transact-SQL Transact-SQL 语言基础语言基础第第5章章Transact-SQL语言基础语言基础任务目标:了解了解T-SQLT-SQL编程语言的基本常识;编程语言的基本常识;理解理解T-SQLT-SQL语句的类型和系统数据类型;语句的类型和系统数据类型;理解理解T-SQLT-SQL所提供的运算符及表达式的用法;所提供的运算符及表达式的用法;掌握变量的声明、赋值及输出方法;掌握变量的声明、赋值及输出方法;掌握基本的流程控制语句用法;掌握基本的流程控制语句用
106、法;掌握常用函数的用法。掌握常用函数的用法。第第5章章Transact-SQL语言基础语言基础5.1 T-SQL语言简介 5.2 SQL Server的数据类型 5.3 变量、运算符与表达式 5.4 批处理与流程控制5.5 常用的系统函数 习题与实验5.1T-SQL语言简介语言简介SQL全称是“结构化查询语言(StructuredQueryLanguage)”。T-SQL主要包含以下三个部分功能:数据定义语言(DataDefinitionLanguage,DDL)。数据控制语言(DataControlLanguage,DCL)。数据操纵语言(DataManipulationLanguage,D
107、ML)。5.2SQLServer的数据类型的数据类型表SQLServer2005提供的数据类型分类5.2.1SQLServer系统提供的数据类型分类分类数据类型数据类型整数数据类型整数数据类型INT或或INTERGER、SMALLINT、TINYINT、BIGINT浮点数据类型浮点数据类型REAL、FLOAT、DECIMAL、NUMERIC货币数据类型货币数据类型MONEY、SMALLMONEY字符数据类型字符数据类型CHAR、NCHAR、VARCHAR、NVARCHAR、TEXT、NTEXT日期和时间数据类型日期和时间数据类型DATETIME、SMALLDATETIME二进制数据类型二进制数
108、据类型BINARY、VARBINARY、IMAGE逻辑数据类型逻辑数据类型BIT特定数据类型特定数据类型TIMESTAMP、UNIQUEIDENTIFIER用户自定义数据类型用户自定义数据类型SYSNAME5.2SQLServer的数据类型的数据类型整数数据类型整数数据类型整数数据类型是最常用的数据类型之一。具体类型名称、表示范围和有效存储空间如下表所示:5.2.1SQLServer系统提供的数据类型数据类型数据类型范围范围存储空间存储空间bigintbigint长整数长整数-2-263632 26363-1-18 8字节字节intint整数整数-2-231312 23131-1-14 4字节
109、字节smallintsmallint短整数短整数-2-215152 21515-1-12 2字节字节tinyinttinyint更小的整数更小的整数0 02552551 1字节字节5.2SQLServer的数据类型的数据类型浮点数据类型浮点数据类型浮点数据类型用于存储十进制小数。浮点数据类型包括精确的小数数据和近似的小数数据类型。精确的小数类型包括decimal和Numeric两种,近似的小数类型包括float和real两种。如下表所示:5.2.1SQLServer系统提供的数据类型数据类型数据类型应用说明应用说明存储空间存储空间decimal decimal (p,sp,s)p p为精度,最
110、大为精度,最大3838;s s为小数位数,为小数位数,0sp0sp2 2到到1717个字个字节节numeric numeric (p,sp,s)等价于等价于decimaldecimal2 2到到1717个字个字节节float (n)float (n)范围从范围从 -1.79E+308 -1.79E+308 到到 1.79E+3081.79E+308;n n 为用于存储尾数的位数,为用于存储尾数的位数,1n531n534 4 字节字节realreal范围从范围从 3.40E+38 3.40E+38 到到 3.40E+38 3.40E+38 4 4 字节字节5.2SQLServer的数据类型的数据
111、类型货币数据类型货币数据类型货币数据类型用于存储货币值,包括money和smallmoney两种类型。它们的表示范围如下表所示:5.2.1SQLServer系统提供的数据类型数据类型数据类型范围范围存储空间存储空间money922 337 203 685 477.580 8+922 337 203 685 477.580 78字节smallmoney-214 748.3648 214 748.36474字节5.2SQLServer的数据类型的数据类型字符数据类型字符数据类型字符数据类型可以用来存储各种字母、数字符号、特殊符号。一般情况下,使用字符类型数据时须在其前后加上单引号“”。如下表所示:
112、5.2.1SQLServer系统提供的数据类型数据类型数据类型应用说明应用说明备注备注char(n)存储字符个数为存储字符个数为08000ANSI字符串字符串varchar(n) 存储字符个数为存储字符个数为08000text存储字符个数为存储字符个数为02GBnchar(n)存储字符个数为存储字符个数为04000UNICODE字符串字符串nvarchar(n)存储字符个数为存储字符个数为04000ntext存储字符个数为存储字符个数为01GB5.2SQLServer的数据类型的数据类型日期和时间数据类型日期和时间数据类型日期和时间类型包括datetime和smalldatetime两种,它们
113、的表示范围如下表所示:5.2.1SQLServer系统提供的数据类型数据类型数据类型范围范围精确度精确度datetimedatetime占占8 8个字节,表示从个字节,表示从17531753年年1 1月月1 1日到日到 99999999年年1212月月3131日的日期日的日期3.333.33毫秒毫秒(1/300(1/300秒秒) )smalldatetimesmalldatetime占占4 4个字节,表示从个字节,表示从19001900年年1 1月月1 1日至日至20792079年年6 6月月6 6日的日期日的日期1 1分钟分钟5.2SQLServer的数据类型的数据类型二进制数据类型二进制数
114、据类型BINARY:用于存储二进制数据。其定义形式为BINARY(n),n表示数据的长度,取值为1到8000。VARBINARY:定义形式为VARBINARY(n)。它与BINARY类型相似,n的取值也为1到8000,若输入的数据过长,将会截掉其超出部分。不同的是VARBINARY数据类型具有变动长度的特性,因为VARBINARY数据类型的存储长度为实际数值长度+4个字节。当BINARY数据类型允许NULL值时,将被视为VARBINARY数据类型。Image:用于存储照片、目录图片或者动画,其理论容量为231-1个字节。5.2.1SQLServer系统提供的数据类型5.2SQLServer的数
115、据类型的数据类型逻辑数据类型逻辑数据类型BIT:占用1个字节的存储空间,其值为0或1。如果输入0或1以外的值,将被视为1。BIT类型不能为NULL。其他数据类型其他数据类型除了上述的数据类型外,SQLServer还包括一些特殊的数据类型,如cusor、sql_variant、table、timestamp、uniqueidentifier、xml等,用户在使用时可以参阅相关帮助文档。5.2.1SQLServer系统提供的数据类型5.2SQLServer的数据类型的数据类型创建用户自定义数据类型创建用户自定义数据类型在创建用户自定义数据类型时,必须提供数据类型名称、所基于的系统数据类型,以及为空
116、性(是否允许为NULL)。创建别名数据类型的基本语法如下:CREATETYPE数据类型名称 From基类型描述 NULL|NOTNULL例如,为学生成绩管理系统创建一个student_number别名数据类型:CREATETYPEstudent_numberFROMvarchar(12)NULL5.2.2用户自定义数据类型5.2SQLServer的数据类型的数据类型删除用户定义数据类型删除用户定义数据类型如果该数据类型已不再使用,可以使用DROPTYPE语句将其删除。DROPTYPE语句不可以用来删除系统数据类型,只能删除别名数据类型。其基本语法如下:DROPTYPEschema_name.t
117、ype_name5.2.2用户自定义数据类型5.3变量、运算符与表达式变量、运算符与表达式T-SQL语言中有两种形式的变量:局部变量和全局变量局部变量局部变量局部变量的声明局部变量的声明定义局部变量的语法形式如下:定义局部变量的语法形式如下:DECLAERlocal_variabledata_typen局部变量的赋值局部变量的赋值使用使用DECLARE命令声明并创建局部变量之后,会将其初始值设命令声明并创建局部变量之后,会将其初始值设为为NULL。其语法形式为:其语法形式为:SETlocal_variable=expression或者或者SELECTlocal_variable=express
118、ion,.n5.3.1变量5.3变量、运算符与表达式变量、运算符与表达式局部变量局部变量局部变量及表达式的输出局部变量及表达式的输出语法形式为:语法形式为:PRINTexpression或者或者SELECTexpression,.n任务任务5-1:定义两个整型变量:定义两个整型变量a和和b,赋值并打印输出两者的和与差。,赋值并打印输出两者的和与差。实现本任务的脚本如下:实现本任务的脚本如下:DECLAREaint,bintSETa=1SELECTb=2PRINTa+bSELECTa-b5.3.1变量5.3变量、运算符与表达式变量、运算符与表达式全局变量全局变量全局变量是全局变量是SQLServ
119、er系统内部使用的变量,其作用范围任何系统内部使用的变量,其作用范围任何程序均可以随时调用。程序均可以随时调用。所有的全局变量都以标记符所有的全局变量都以标记符“”开头。开头。SQL-sever提供的全局提供的全局变量共有变量共有33个,常用的不多,常见的全局变量如下表所示:个,常用的不多,常见的全局变量如下表所示:5.3.1变量全局变量名全局变量名含义含义ERROR最后一个最后一个T-SQL错误的错误号错误的错误号IDENTITY最后一次插入的标识值最后一次插入的标识值LANGUAGE当前使用的语言的名称当前使用的语言的名称MAX_CONNECTIONS可以创建的同时连接的最大数目可以创建的
120、同时连接的最大数目ROWCOUNT受上一个受上一个SQL语句影响的行数语句影响的行数SERVERNAME本地服务器的名称本地服务器的名称TRANSCOUNT当前连接打开的事务数当前连接打开的事务数VERSIONSQLServer的版本信息的版本信息5.3变量、运算符与表达式变量、运算符与表达式算术运算符算术运算符算术运算符用来在两个表达式上执行数学运算,这两个表达式可算术运算符用来在两个表达式上执行数学运算,这两个表达式可以是任意两个数字数据类型的表达式。算术运算符包括以是任意两个数字数据类型的表达式。算术运算符包括+(加加)、-(减减)、*(乘乘)、/(除除)、%(模模)五个。五个。在在T-
121、SQL中,中,“+”除了表示加运算符外,还包括另外两个方面除了表示加运算符外,还包括另外两个方面的意义:的意义:表示正号,即在数值前添加表示正号,即在数值前添加“+”号表示该数值是一个正数。号表示该数值是一个正数。连接两个字符型或连接两个字符型或binary型的数据,这时的型的数据,这时的“+”号叫做字符串串联号叫做字符串串联运算符。运算符。5.3.2运算符与表达式5.3变量、运算符与表达式变量、运算符与表达式赋值运算符赋值运算符T-SQL有一个赋值运算符,即等号有一个赋值运算符,即等号(=)。赋值运算符能够将数据。赋值运算符能够将数据值指派给特定的对象。另外,还可以使用赋值运算符在列标题和值
122、指派给特定的对象。另外,还可以使用赋值运算符在列标题和为列定义值的表达式之间建立关系。为列定义值的表达式之间建立关系。5.3.2运算符与表达式5.3变量、运算符与表达式变量、运算符与表达式比较运算符比较运算符比较运算符用来测试两个表达式是否相同。比较运算符的符号及比较运算符用来测试两个表达式是否相同。比较运算符的符号及其含义如下表所示。其含义如下表所示。比较运算符的结果是布尔数据类型,即比较运算符的结果是布尔数据类型,即TRUE(表示表达式的结(表示表达式的结果为真)、果为真)、FALSE(表示表达式的结果为假)以及(表示表达式的结果为假)以及UNKNOWN。在在WHERE子句中使用带有布尔数
123、据类型的表达式,可以筛选出子句中使用带有布尔数据类型的表达式,可以筛选出符合搜索条件的行,也可以在流控制语言语句(例如符合搜索条件的行,也可以在流控制语言语句(例如IF和和WHILE)中使用这种表达式。)中使用这种表达式。5.3.2运算符与表达式运算符运算符含义含义= =等于等于 大于大于 =大于等于大于等于=小于等于小于等于不等于不等于5.3变量、运算符与表达式变量、运算符与表达式逻辑运算符逻辑运算符逻辑运算符用来对某个条件进行测试,以获得其真实情况。逻辑逻辑运算符用来对某个条件进行测试,以获得其真实情况。逻辑运算符和比较运算符一样,返回带有运算符和比较运算符一样,返回带有TRUE或或FAL
124、SE值的布尔数值的布尔数据类型。逻辑运算符的符号及其含义如下表所示。据类型。逻辑运算符的符号及其含义如下表所示。5.3.2运算符与表达式运算符运算符含义含义ANDAND如果两个布尔表达式都为如果两个布尔表达式都为 TRUETRUE,那么就为,那么就为 TRUETRUEOROR如果两个布尔表达式中的一个为如果两个布尔表达式中的一个为 TRUETRUE,那么就为,那么就为 TRUETRUENOTNOT对任何其他布尔运算符的值取反对任何其他布尔运算符的值取反BETWEENBETWEEN如果操作数在某个范围之内,那么就为如果操作数在某个范围之内,那么就为 TRUETRUELIKELIKE如果操作数与一
125、种模式相匹配,那么就为如果操作数与一种模式相匹配,那么就为 TRUETRUEININ如果操作数等于表达式列表中的一个,那么就为如果操作数等于表达式列表中的一个,那么就为 TRUETRUE5.3变量、运算符与表达式变量、运算符与表达式字符串连接运算符字符串连接运算符字符串允许通过加号(字符串允许通过加号(+)进行字符串串联,此时加号)进行字符串串联,此时加号“+”被称被称为字符串连接运算符。为字符串连接运算符。例如:例如:SELECTabc+def,结果:结果:abcdef5.3.2运算符与表达式5.3变量、运算符与表达式变量、运算符与表达式运算符优先级运算符优先级运算符的优先级别如下表所示。在
126、较低级别的运算符之前先对较运算符的优先级别如下表所示。在较低级别的运算符之前先对较高级别的运算符进行求值。高级别的运算符进行求值。5.3.2运算符与表达式级别级别运算符运算符1 1 (位非)(位非)2 2* *(乘)、(乘)、/ /(除)、(除)、% %(取模)(取模)3 3+ +(正)、(正)、- -(负)、(负)、+ +(加)、(加)、+ +(连接)、(连接)、- -(减)、(减)、& &(位与)、(位异或)、(位与)、(位异或)、| |(位或)(位或)4 4=, , =, =, , !=, !, !, =, =, , !=, !, ! (比较运算符)(比较运算符)5 5NOTNOT6 6
127、ANDAND7 7ALLALL、ANYANY、BETWEENBETWEEN、ININ、LIKELIKE、OROR、SOMESOME8 8= =(赋值)(赋值)5.4批处理与流程控制批处理与流程控制批批两个两个GO之间的之间的SQL语句作为一个批处理。语句作为一个批处理。在一个批处理中可以包含一条或多条在一个批处理中可以包含一条或多条T-SQL语句,成为一个语句语句,成为一个语句组。组。SQLServer服务器将批处理编译成一个可执行单元,称为执行服务器将批处理编译成一个可执行单元,称为执行计划。计划。BEGINEND语句语句BEGINEND语句用于将多条语句用于将多条T-SQL语句封装起来,构
128、成一个语语句封装起来,构成一个语句块,它用在句块,它用在IFELSE语句及语句及WHILE等语句中,使语句块内的等语句中,使语句块内的所有语句作为一个整体被依次执行。所有语句作为一个整体被依次执行。BEGINEND的基本语法格式如下:的基本语法格式如下:BEGINSQL语句语句|SQL语句块语句块END5.4.1顺序语句5.4批处理与流程控制批处理与流程控制IFELSE语句是条件判断语句,其中,语句是条件判断语句,其中,ELSE子句是可子句是可选的,最简单的选的,最简单的IF语句没有语句没有ELSE子句部分。子句部分。IFELSE语句用来判断当某一条件成立时执行某段程序,语句用来判断当某一条件
129、成立时执行某段程序,条件不成立时执行另一段程序。条件不成立时执行另一段程序。SQLServer允许嵌套使用允许嵌套使用IFELSE语句,而且嵌套层语句,而且嵌套层数没有限制。数没有限制。IFELSE语句的语法形式为:语句的语法形式为:IF SQL语句语句|SQL语句块语句块ELSESQL语句语句|SQL语句块语句块5.4.2IFELSE语句5.4批处理与流程控制批处理与流程控制任务任务5-2在学生成绩管理系统中查看张然的成绩。如果张然的最低在学生成绩管理系统中查看张然的成绩。如果张然的最低成绩为成绩为60分以上,显示其成绩情况,否则显示文本分以上,显示其成绩情况,否则显示文本“成绩不理想成绩不
130、理想”。DECLAREavgsintSELECTavgs=AVG(grade)FROMStudentass,GradeasgWHEREs.studentID=g.studentIDANDstudentName=张然张然IF(avgs=60)SELECTs.studentID,studentName,courseID,gradeFROMStudentass,GradeasgWHEREs.studentID=g.studentIDANDstudentName=张然张然ELSEPRINT成绩不理想成绩不理想5.4.2IFELSE语句5.4批处理与流程控制批处理与流程控制WHILECONTINUEBR
131、EAK语句用于设置重复执行语句用于设置重复执行SQL语句或语句块的条件。只要指定的条件为真,就重语句或语句块的条件。只要指定的条件为真,就重复执行语句。复执行语句。其语法形式为:其语法形式为:WHILESQL语句语句|SQL语句块语句块BREAKSQL语句语句|SQL语句块语句块CONTINUE5.4.3WHILE语句5.4批处理与流程控制批处理与流程控制任务任务5-3计算计算1到到10之间的奇数之和。之间的奇数之和。DECLAREitinyint,sumintSETsum=0SETi=0WHILEi=0BEGINIIF(i=10)BEGINSELECT总和总和=sumBREAKENDELSE
132、BEGINSETi=i+1IF(i%2)=0CONTINUEELSESETsum=sum+iENDEND5.4.3WHILE语句5.4批处理与流程控制批处理与流程控制CASE语句可以计算多个条件式,并将其中一个符合条件的结果表达语句可以计算多个条件式,并将其中一个符合条件的结果表达式返回。式返回。简单简单CASE语句的语法格式如下语句的语法格式如下:CASE表达式表达式WHEN表达式表达式THEN表达式表达式WHEN表达式表达式THEN表达式表达式.nELSE表达式表达式END搜索搜索CASE语句的语法格式如下:语句的语法格式如下:CASEWHEN布尔表达式布尔表达式THEN表达式表达式WHE
133、N布尔表达式布尔表达式THEN表达式表达式.nELSE表达式表达式END5.4.4CASE语句5.4批处理与流程控制批处理与流程控制任务任务5-4根据学生的成绩显示学生成绩的等级,将根据学生的成绩显示学生成绩的等级,将90100分的显示分的显示为为“优秀优秀”,8090的显示为的显示为“好好”,7080的显示为的显示为“中等中等”,6070的显示为的显示为“及格及格”,其他为,其他为“不及格不及格”。SELECTstudentID,courseID,term,grade,rank=CASEgrade%10WHEN10THEN优秀优秀WHEN9THEN优秀优秀WHEN8THEN良好良好WHEN7
134、THEN中等中等WHEN6THEN及格及格ELSE不及格不及格ENDFROMGrade5.4.4CASE语句5.4批处理与流程控制批处理与流程控制任务任务5-4根据学生的成绩显示学生成绩的等级,将根据学生的成绩显示学生成绩的等级,将90100分的显示为分的显示为“优秀优秀”,8090的显示为的显示为“好好”,7080的显示为的显示为“中等中等”,6070的显示为的显示为“及格及格”,其他为,其他为“不及格不及格”。SELECTstudentID,courseID,term,grade,rank=CASEWHENgrade=90andgrade=80andgrade=70andgrade=60a
135、ndgrade70THEN及格及格ELSE不及格不及格ENDFROMGrade5.4.4CASE语句5.4批处理与流程控制批处理与流程控制GOTO语句语句GOTO语句可以使程序直接跳到指定的标有标识符的位置处继续语句可以使程序直接跳到指定的标有标识符的位置处继续执行,而位于执行,而位于GOTO语句和标识符之间的程序将不会被执行。语句和标识符之间的程序将不会被执行。GOTO语句和标识符可以用在语句块、批处理和存储过程中,标语句和标识符可以用在语句块、批处理和存储过程中,标识符可以为数字与字符的组合,但必须以识符可以为数字与字符的组合,但必须以“:”结尾。如:结尾。如:a1:。在。在GOTO语句行
136、,标识符后面不用跟语句行,标识符后面不用跟“:”。GOTO语句的语法形式为:语句的语法形式为:GOTO标签标签标签标签:5.4.5其他控制语句5.4批处理与流程控制批处理与流程控制WAITFOR语句语句WAITFOR语句用于暂时停止执行语句用于暂时停止执行SQL语句、语句块或者存储过语句、语句块或者存储过程等,直到所设定的时间已过或者所设定的时间已到才继续执行。程等,直到所设定的时间已过或者所设定的时间已到才继续执行。WAITFOR语句的语法形式为:语句的语法形式为:WAITFORDELAYtime|TIMEtime任务任务5-5使用使用WAITFOR语句,以便在晚上语句,以便在晚上10:20
137、执行存储过程执行存储过程update_all_stats。BEGINWAITFORTIME22:20 EXECUTEupdate_all_statsEND5.4.5其他控制语句5.4批处理与流程控制批处理与流程控制RETURN语句语句RETURN语句用于无条件地终止一个查询、存储过程或者批处理,语句用于无条件地终止一个查询、存储过程或者批处理,此时位于此时位于RETURN语句之后的程序将不会被执行。语句之后的程序将不会被执行。RETURN语句的语法形式为:语句的语法形式为:RETURN 整型表达式整型表达式 其中,参数其中,参数integer_expression为返回的整型值。存储过程可以为
138、返回的整型值。存储过程可以给调用过程或应用程序返回整型值。给调用过程或应用程序返回整型值。5.4.5其他控制语句5.5常用的系统函数常用的系统函数ASCII:用于返回字符表达式最左端字符的:用于返回字符表达式最左端字符的ASCII代码值。代码值。语法:语法:ASCII(字符串表达式字符串表达式)CHAR:用于将:用于将int类型的类型的ASCII代码转换为字符的字符串代码转换为字符的字符串函数。函数。语法:语法:CHAR(整型表达式整型表达式)CHARINDEX:用于返回子字符串在某个特定字符串中的:用于返回子字符串在某个特定字符串中的起始位置。如果没有发现子串,则返回起始位置。如果没有发现子
139、串,则返回0。语法:语法:CHARINDEX(子串子串,字符串表达式字符串表达式)LEFT:用于返回从字符串左边开始指定个数的字符。:用于返回从字符串左边开始指定个数的字符。语法:语法:LEFT(字符串表达式字符串表达式,返回个数返回个数)5.5.1字符串函数5.5常用的系统函数常用的系统函数LEN:用于返回给定字符串表达式的字符(而不是字节)个数,其中不包用于返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾随空格含尾随空格语法:语法:LEN(字符串表达式字符串表达式)LOWER:用于将大写字符数据转换为小写字符数据后返回字符表达式:用于将大写字符数据转换为小写字符数据后返回字符表达
140、式语法:语法:LOWER(字符串表达式字符串表达式)LTRIM:用于删除起始空格后返回字符表达式。:用于删除起始空格后返回字符表达式。语法:语法:LTRIM(字符串表达式字符串表达式)PATINDEX:用于返回指定表达式中某模式第一次出现的起始位置;如:用于返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回果在全部有效的文本和字符数据类型中没有找到该模式,则返回0。语法:语法:PATINDEX(%模式串模式串%,字符串表达式字符串表达式)5.5.1字符串函数5.5常用的系统函数常用的系统函数REPLACE:用于用第三个表达式替换第一个串表达式
141、中出现的所有第:用于用第三个表达式替换第一个串表达式中出现的所有第二个给定字符串表达式。二个给定字符串表达式。语法:语法:REPLACE(字符串表达式字符串表达式1,字符串表达式字符串表达式2,字符串表达式字符串表达式3)RIGHT:用于返回字符串中从右边开始指定个数的字符。:用于返回字符串中从右边开始指定个数的字符。语法:语法:RIGHT(字符串表达式字符串表达式,返回个数返回个数)STUFF:用于删除指定长度的字符并在指定的起始点插入另一组字符。:用于删除指定长度的字符并在指定的起始点插入另一组字符。STUFF(字符串表达式字符串表达式,起始位置起始位置,结束位置结束位置,替换字符串替换字
142、符串 )SUBSTRING:用于返回第一个参数中从第二个参数指定的位置开始、:用于返回第一个参数中从第二个参数指定的位置开始、第三个参数指定的长度的子字符串。第三个参数指定的长度的子字符串。SUBSTRING(字符串表达式字符串表达式,返回个数返回个数)5.5.1字符串函数5.5常用的系统函数常用的系统函数DATEADD:用于在向指定日期加上一段时间的基础上,:用于在向指定日期加上一段时间的基础上,返回新的返回新的datetime值。值。语法:语法:DATEADD(日期部分日期部分,所加数字所加数字,日期日期)DATEDIFF:用于返回开始日期与结束日期之间指定部分:用于返回开始日期与结束日期
143、之间指定部分的差。的差。语法:语法:DATEDIFF(日期部分日期部分,开始日期开始日期,结束结束日期日期)GETDATE:用于按:用于按datetime值的值的MicrosoftSQLServer标准内部格式返回当前系统日期和时间。标准内部格式返回当前系统日期和时间。语法:语法:GETDATE()5.5.2日期和时间函数5.5常用的系统函数常用的系统函数MONTH:用于返回代表指定日期月份的整数。:用于返回代表指定日期月份的整数。语法:语法:MONTH(日期日期)DAY:用于返回代表指定日期的天的日期部分的整数。:用于返回代表指定日期的天的日期部分的整数。语法:语法:DAY(日期日期)YEA
144、R:用于返回表示指定日期中的年份的整数。:用于返回表示指定日期中的年份的整数。语法:语法:YEAR(日期日期)5.5.2日期和时间函数5.5常用的系统函数常用的系统函数ABS:用于返回给定数字表达式的绝对值。:用于返回给定数字表达式的绝对值。语法:语法:ABS(数字表达式数字表达式)RAND:用于返回:用于返回0到到1之间的随机之间的随机float值。值。语法:语法:RAND(种子种子)ROUND:用于返回数字表达式并四舍五入为指定的长度:用于返回数字表达式并四舍五入为指定的长度或精度。或精度。语法:语法:ROUND(数字表达式数字表达式,长度长度)5.5.3数学函数5.5常用的系统函数常用的
145、系统函数FLOOR:用于返回小于或等于所给数返回小于或等于所:用于返回小于或等于所给数返回小于或等于所给数字表达式的最大整数字表达式的最大整数。给数字表达式的最大整数字表达式的最大整数。语法:语法:FLOOR(数字表达式数字表达式)SQUARE:用于返回给定表达式的平方。:用于返回给定表达式的平方。语法:语法:SQUARE(数字表达式数字表达式)POWER:用于返回给定表达式的:用于返回给定表达式的N次方。次方。语法:语法:POWER(数字表达式数字表达式 ,N)5.5.3数学函数5.5常用的系统函数常用的系统函数AVG:用于返回组中值的平均值。空值将被忽略。:用于返回组中值的平均值。空值将被
146、忽略。语法:语法:AVG(ALL|DISTINCT表达式表达式)MAX:用于返回表达式的最大值。:用于返回表达式的最大值。语法:语法:MAX(ALL|DISTINCT表达式表达式)MIN:用于返回表达式的最小值。:用于返回表达式的最小值。语法:语法:MIN(ALL|DISTINCT表达式表达式)SUM:用于返回表达式中所有值的和。空值将被忽略。:用于返回表达式中所有值的和。空值将被忽略。语法:语法:SUM(ALL|DISTINCT表达式表达式)COUNT:用于返回组中项目的数量。:用于返回组中项目的数量。语法:语法:COUNT(ALL|DISTINCT表达式表达式|*)5.5.4聚合函数5.5
147、常用的系统函数常用的系统函数CAST和和CONVERT:用于将某种数据类型的表达式显:用于将某种数据类型的表达式显式转换为另一种数据类型。式转换为另一种数据类型。语法:语法:CAST(表达式表达式AS数据类型数据类型)CONVERT(数据类型数据类型(长度长度),表达式表达式,格式格式)COALESCE:用于返回其参数中第一个非空表达式:用于返回其参数中第一个非空表达式语法:语法:COALESCE(表达式表达式,.n)DATALENGTH:用于返回任何表达式所占用的字节数:用于返回任何表达式所占用的字节数语法:语法:DATALENGTH(表达式表达式)5.5.5系统函数5.5常用的系统函数常用
148、的系统函数ISDATE:用于确定输入表达式是否为有效的日期:用于确定输入表达式是否为有效的日期语法:语法:ISDATE(表达式表达式)ISNULL:用于使用指定的替换值替换:用于使用指定的替换值替换NULL语法:语法:ISNULL(表达式表达式,替换值替换值)NULLIF:用于如果两个指定的表达式相等,则返回空值:用于如果两个指定的表达式相等,则返回空值语法:语法:NULLIF(表达式表达式1,表达式表达式2)5.5.5系统函数习题与实验习题与实验1、T-SQL语言的分类包括三类,不包括下面哪一类()。A.数据定义语言B.数据操纵语言C.数据控制语言D.数据传输语言2、简述T-SQL语言的功能
149、及其分类。3、简述char类型与varchar类型之间的区别,char类型与nchar类型之间的区别。4、如何定义局部变量?如何给局部变量赋值?习题习题与实验习题与实验1、编写程序计算1+2+1000的和。2、编写计算n!(n=20)的SQL语句,并显示计算结果。3、尝试求解所有的水仙花数。水仙花数是三位数,它的各位数字的立方和等于这个三位数本身。4、尝试使用系统函数:将你的身份证号的出生日期提取出来,例如19900913将你的手机号码中间第4至7位号码隐藏为*,例如138*9008。获取110之间的随机整数。从你的身份证号获取年龄。实验第第5章章Transact-SQL语言基础语言基础本章小
150、结:T-SQL编程语言的基本常识;T-SQL编程语言语法规则;基本的流程控制语句使用常用函数的用法。ThankYou!数数据据库库原原理理及及应应用用(SQLServer2005):*2024年年7月月19日日第第6 6章章 数据库的创建与管理数据库的创建与管理2024/7/19第第6章章数据库的创建与管理数据库的创建与管理任务目标:任务目标:n理解数据库存储结构;n理解数据库文件和事务日志文件的功能和作用;n了解文件组的类型及其作用;n了解数据库分类和数据库对象;n掌握利用T-SQL语句创建、修改和删除数据库的操作方法;n掌握利用SSMS创建、修改和删除数据库的操作方法;n会使用T-SQL语
151、句和使用SSMS分离和附加数据库;n了解文件组的作用并会利用文件组来管理数据文件。2024/7/19第第6章章数据库的创建与管理数据库的创建与管理6.1SQLServer数据库简介6.2使用T-SQL脚本创建和管理数据库6.3使用SSMS创建和管理数据库本章小结习题与实验2024/7/196.1SQLServer数据库简介数据库简介6.1.1数据库结构1数据库文件数据库文件SQLServer2005用文件来存放数据库,即将数据库映射到操作系统文件上。SQLServer2005中的文件通常有两种类型:逻辑文件名和物理文件名。逻辑文件名是在所有T-SQL语句中引用物理文件时所使用的名称。逻辑文件名
152、必须符合标识符的命令规则,而且数据库中的逻辑文件名必须是唯一的。物理文件名是包括目录路径的物理文件名。它必须符合操作系统的命名规则。逻辑文件名和物理文件名是一一对应的,其对应关系由SQLServer系统来维护。2024/7/196.1SQLServer数据库简介数据库简介6.1.1数据库结构SQLServer2005数据库文件有3类:(1)主数据文件(也称主文件):主数据文件主要用来存储数据库的启动信息、部分或全部数据,是数据库的关键文件。主数据文件是数据库的起点,包含指向数据库中其他文件的指针。每个数据库都有一个主数据库文件。主数据库文件推荐扩展名为.mdf。(2)次要数据文件(也称辅助数据
153、文件):除主数据文件以外的所有其他数据文件都是次要数据文件。用于存储主数据文件中未存储的剩余数据和数据库对象。一个数据库可以没有,也可以有多个次要数据文件。次要数据文件推荐扩展名为.ndf。(3)事务日志文件(简称日志文件):存放用来恢复数据库所需的事务日志信息,每个数据库必须有一个或多个日志文件。事务日志文件推荐扩展名为.ldf。2024/7/196.1SQLServer数据库简介数据库简介6.1.1数据库结构一般情况下,一个数据库可以只有一个主数据库文件和一个事务日志文件组成,如果数据库很大,则可以设置多个次要数据文件和多个日志文件,并将它们放在不同的磁盘上,以便提高数据存取和处理的效率。
154、【注意】SQLServer2005不强制使用文件扩展名,但使用上述推荐扩展名,有利于标识文件的各种用途和类型。2数据库文件组数据库文件组SQLServer2005中提供了两种类型的文件组:主文件组和用户定义文件组。(1)主文件组包括主数据文件和任何没有明确分配给其他文件组的数据文件。2024/7/196.1SQLServer数据库简介数据库简介6.1.1数据库结构(2)用户定义文件组是在CREATEDATEBASE或ALTERDATABASE语句中使用FILEGROUP关键字指定的任何文件组。一个文件组可以包含多个文件,但是一个文件只能属于一个文件组。每个数据库中均有一个文件组被指定为默认文件
155、组。如果创建表或索引时未指定文件组,则将其分配到默认文件组。一次只能有一个文件组作为默认文件组。db_owner固定数据库角色成员可以将默认文件组从一个文件组切换到另一个文件组。如果没有指定默认文件组,则将主文件组作为默认文件组。但因为日志文件要与数据空间分开管理,所以不包括在文件组内。SQLServer的数据文件和文件组必须遵循以下规则:一个文件和文件组只能被一个数据库所使用一个文件只能属于一个文件组日志文件不能属于文件组2024/7/196.1SQLServer数据库简介数据库简介6.1.1数据库结构3数据库对象数据库对象SQLServer2005数据库中的数据在逻辑上被组织成一系列对象,
156、当一个用户连接到数据库后,就能看到这些逻辑对象,而不是物理的数据库文件。SQLServer2005中数据库对象有表、视图、存储过程、触发器、用户定义数据类型、用户自定义函数、索引、规则、默认值等。在SQLServer2005中创建每个对象都必须有一个唯一的完全限定对象名,即对象的全名,它由4部分组成:服务器名、数据库名、所有者名和对象名,各个部分之间用“”连接。格式为:server.database.owner.object2024/7/196.1SQLServer数据库简介数据库简介6.1.1数据库结构使用当前数据库内的对象可以省略完全限定对象名的某部分,省略的部分系统将使用默认值或当前值,
157、如:server.database.objectserver.owner.objectdatabase.owner.objectserver.objectowner.objectobject2024/7/196.1SQLServer数据库简介数据库简介6.1.2数据库的分类SQLServer2005数据库分为:系统数据库、实例数据库和用户数据库。1系统数据库系统数据库依次打开SSMS中“对象资源管理器”对话框中的“服务器”|“数据库”|“系统数据库”文件夹,可以看到4个系统数据库,如图6-1所示。图6-1系统数据库图6-1系统数据库2024/7/196.1SQLServer数据库简介数据库简介
158、6.1.2数据库的分类SQLServer2005系统数据库分别是master数据库、tempdb数据库、model数据库和msdb数据库。(1)master数据库master数据库记录SQLServer系统的所有系统级信息。包括实例范围内的元数据(如登录账户)、端点、链接服务器和系统配置数据设置。master数据库记录了所有其他数据库是否存在以及这些数据库文件的位置。另外,数据库还记录了SQLServer的初始化信息。因此,如果master数据库不可用,则SQLServer将无法启动。2024/7/196.1SQLServer数据库简介数据库简介6.1.2数据库的分类(2)tempdb数据库t
159、empdb数据库是连接到SQLServer实例的所有用户都可用的全局资源,它保存了所有临时表和临时存储过程。另外,它还用来满足所有其他临时存储的要求,如存储SQLServer生成的临时工作表。每次启动SQLServer时,都要重新创建tempdb,以便系统启动时,该数据库总是空的。在断开连接时,系统会自动删除临时表和存储过程,并且在系统关闭后没有活动链接。因此,tempdb中不会有什么内容从一个SQLServer会话保存到另一个会话。2024/7/196.1SQLServer数据库简介数据库简介6.1.2数据库的分类(3)model数据库model数据库是在SQLServer实例上创建的所有数
160、据库的模板。因为每次启动SQLServer时都会创建tempdb数据库,所以tempdb数据库必须始终存在于SQLServer系统中。model数据库相当于一个模子,所有在系统中创建的数据库的内容,在刚创建时都和数据库完全一样。可以在数据库中创建表或其它数据库对象,这些对象可以供以后建立的数据库所继承。(4)msdb数据库msdb数据库由SQLServer代理(SQLServerAgent)来计划警报和作业。2024/7/196.1SQLServer数据库简介数据库简介6.1.2数据库的分类2实例数据库实例数据库AdventureWorks、AdventureWorksDW是SQLServer
161、2005中的实例数据库,此类数据库是基于一个生产公司,以简单、易于理解的方式来展示SQLServer2005。3用户数据库用户数据库用户根据数据库设计创建的数据库,一般是用来解决某一具体实际问题的数据库。如学生成绩管理数据库(SGMS),教务管理数据库(EDUC)等。2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.1创建数据库T-SQL提供了数据库创建语句CREATEDATABASE,其语法形式如下:CREATEDATABASE数据库名ON,n,nLOGON,n2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.1
162、创建数据库其中,各参数的含义如下:数据库名:是所创建数据库的逻辑名称。数据库名称在当前服务器中必须唯一且符合标识符的命名规则,最多可以包含128个字符;ON:用于指定数据文件及文件组属性,具体属性值在中指定;的详细格式如下:=PRIMARY(NAME=逻辑文件名,FILENAME=存放数据库的物理路径和文件名,SIZE=数据文件的初始大小,MAXSIZE=指定文件的最大大小,FILEGROWTH=指定文件每次的增量)2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.1创建数据库LOGON:用于指定事务日志文件的属性,具体属性值在中指定。如果在定义时没有指
163、定ON子句和LONON子句,系统将默认设置,自动生成一个主数据文件和一个事务日志文件,并将文件存储在系统默认路径上。任务任务6-1创建一个名为创建一个名为TestSGMS的测试数据库,文件及的测试数据库,文件及其他选项均为默认。其他选项均为默认。任务分析:由于没有指定数据文件名,默认的情况下,命名主数据文件为TestSGMS.MDF,事务日志文件为TestSGMS_log.LOG,同时由于按复制model数据库的方式来创建新的数据库,主数据文件和事务日志文件的大小都与model数据库的主数据文件和事务日志文件的大小一致,并且可以自由增长。实现本任务的程序为:CREATEDATABASETest
164、SGMSGO2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.1创建数据库任务任务6-2创建一个名为创建一个名为SGMS学生成绩管理系统数据库。学生成绩管理系统数据库。要求有要求有3个文件,其中,主数据文件为个文件,其中,主数据文件为10MB,最大大小为,最大大小为50MB,每次增长,每次增长20%;辅助数据文件属于文件组;辅助数据文件属于文件组group,文件为,文件为10MB,大小不受限制,每次增长,大小不受限制,每次增长10%;事务日;事务日志文件大小为志文件大小为20MB,最大大小为,最大大小为100MB,每次增长,每次增长10MB。文件存储为。
165、文件存储为C:db路径下。路径下。任务分析:本任务中,要求创建的数据库是SGMS,数据库中有3个文件,分别是主数据文件、次数据文件和事务日志文件,创建时每个文件都要给出逻辑文件和物理文件名称,文件的大小、最大大小、增长方式等详细信息。实现代码如图6-2所示。2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库图6-2创建SGMS数据库6.2.1创建数据库2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.1创建数据库【注意】(1)服务器中不能存在同名的数据库名,所以类似CREATE语句均只能正确执行一次,下一次执行时,将提示该
166、对象已存在;(2)创建数据库之前,文件存储路径C:db必须存在。2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.2管理数据库随着时间变化,数据库在运行过程中也会发生变化,如文件增长等。所以数据库管理员要经常对数据库进行管理和维护。日常的管理任务包括查看数据库信息、修改数据库属性、删除数据库等操作。1使用使用T-SQL语句查看数据库信息语句查看数据库信息(1)使用系统存储过程sp_helpdb查看数据库信息。其语法格式如下:Sp_helpdb数据库名1)不指定数据库参数,将显示服务器中所有数据库的信息,如图6-3所示。图6-3查看服务器中所有数据库的信息
167、图6-3查看服务器中所有数据库的信息2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.2管理数据库2)指定具体数据库参数,将显示服务器中所指定数据库的信息,如图6-4所示。图6-4查看SGMS数据库的信息2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.2管理数据库(2)使用系统存储过程sp_database查看数据库信息,其语法格式如下:sp_database此命令用来显示服务器中所有可以使用的数据库的信息,如图6-5所示。图6-5查看服务器中可以使用的数据库信息2024/7/196.2使用使用T-SQL脚本创建
168、和管理数据库脚本创建和管理数据库6.2.2管理数据库(3)使用系统存储过程sp_helpfile查看数据库中文件的信息。其语法格式如下:sp_helpfile文件名1)不指定文件名参数,将显示当前数据库中所有文件的信息,如图6-6所示。图6-6查看SGMS数据库中所有文件的信息2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.2管理数据库2)指定具体文件名参数,将显示数据库中指定文件的信息,如图6-7所示。图6-7查看SGMS数据库中SGM主文件信息(4)使用系统存储过程sp_helpfilegroup,用法与sp_helpfile相似。其语法格式如下:
169、sp_helpfilegroup文件名1)不指定文件名参数,将显示数据库中所有文件的信息。2)指定具体文件名参数,将显示数据库中指定文件组的信息。2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.2管理数据库2使用使用T-SQL语句修改数据库语句修改数据库修改数据库包括增减数据库文件、修改文件属性(包括文件名和文件大小等)、修改数据库选项等。T-SQL提供了数据库修改语句ALTERDATABASE,其语法格式如下:ALTERDATABASE数据库名ADDFILE,nTOFILEGROUP文件组名|ADDLOGFILE,n|REMOVEFILE逻辑文件名|
170、ADDFILEGROUP文件组名|REMOVEFILEGROUP文件组名|MODIFYFILE|MODIFYNAME=新文件名2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.2管理数据库其中,各子句的作用如下:ADDFILE:在文件组中增加数据文件;ADDLOG:增加事务日志文件;REMOVEFILE:删除数据文件;ADDFILEGROUP:增加文件组;REMOBEFILEGROUP:删除文件组;MODIFYFILE:修改文件属性;MODIFYNAME:更改数据库的名称。2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库
171、6.2.2管理数据库下面通过一些实例来掌握ALTERDATABASE语句的使用。任务6-3为数据库SGMS增加一个数据文件SGMS_DB_Data3,物理名称为SGMS_DB_Data3.ndf,初始大小为5MB,最大大小为50MB,每次扩展1MB。任务分析:本例中要增加数据文件,通过ADDFILE子句来实现。增加时要给出数据文件的物理文件名和逻辑文件名、文件的初始大小、最大文件大小和增加方式。实现的代码如图6-8所示。图6-8增加数据文件SGMS_DB_data32024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.2管理数据库任务任务6-4将数据库将数据
172、库SGMS的第二个数据文件的第二个数据文件SGMS_DB_data2的初始大小修改为的初始大小修改为40MB。任务分析:修改数据文件要用MODIFYFILE子句来实现,指定需要修改数据文件名和具体需要修改文件的属性,本例中要修改数据文件SGMS_DB_data2的初始大小,其它的属性不变。实现的代码如图6-9所示。图6-9修改SGMS_DB_data2文件大小2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.2管理数据库任务任务6-5删除删除SGMS数据文件数据文件SGMS_DB_Data3。任务分析:删除数据文件要用REMOVEFILE子句来实现。实现
173、的代码如图6-10所示。图6-10删除数据文件SGMS_DB_data32024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.2管理数据库3使用使用T-SQL语句删除数据库语句删除数据库T-SQL中提供的DROPDATABASE语句可以删除数据库,一次可以删除多个数据库。其语法格式如下:DROPDATABASEdatabase,.n任务任务6-6删除测试数据库删除测试数据库TestSGMS。任务分析:当数据库不再使用,或者已将其移到其他数据库服务器上时,可以删除该数据库。删除数据库后,文件及其数据都从服务器的磁盘中被删除,一旦删除将无法恢复,除非已经对数据库
174、做了备份,因此删除数据库之前一定要格外小心。不管数据库所处是何种状态(脱机、只读和可疑),都可以将其删除。图6-11删除数据库SGMS2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.2管理数据库【注意】(1)不能删除系统数据库;(2)删除数据库后,应备份master数据库,因为删除数据库将更新数据库中的信息;(3)如果数据库已经损坏,不能删除复制,可以首先使用ALTERDATABASE语句将数据库设置为脱机,然后再删除数据库;(4)如果数据库涉及日志传送操作,应在删除数据库之前取消日志传送操作。2024/7/196.2使用使用T-SQL脚本创建和管理数
175、据库脚本创建和管理数据库6.2.3分离和附加数据库SQLServer2005允许分离数据库的数据和事务日志文件,然后将其重新附加到另一台服务器。分离数据库将从SQLServer删除数据库,但是保持在组成该数据库的数据和事务日志文件中的数据库完好无损。然后这些数据和事务日志文件可以用来将数据库附加到任何SQLServer实例上,包括从中分离该数据库的服务器。分离和附加数据库的功能作用有:将数据库移动到其他计算机的SQLServer中使用;改变存放数据库数据文件和日志文件的物理位置。1分离数据库分离数据库SQLServer中用执行系统存储过称sp_detach_db来实现。其格式如下:EXECsp
176、_detach_db数据库名2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.3分离和附加数据库任务任务6-7将将SGMS数据库从当前计算机中分离。数据库从当前计算机中分离。任务分析:分离数据库是将数据库文件从当前SQLServer实例脱离,即数据库从某台计算机上移走。实现代码如图6-12所示:图6-13附加SGMS数据库2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.4使用文件组管理数据文件为了达到分配和管理的目的,可以将数据库文件分成不同的文件组。可以通过文件组来实现对文件的管理,主题包括将文件组添加到数据库
177、中、从数据库中删除文件组和设置默认文件组。1将文件组添加到数据库将文件组添加到数据库任务任务6-9向数据库向数据库SGMS中添加文件组中添加文件组fgroup。任务分析:将文件组添加到数据库中,可以用ALTERDATABASE语句中ADDFILEGROUP子句来实现。实现本任务的代码如图6-14所示:图6-14为SGMS数据库增加一个文件组2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.4使用文件组管理数据文件2从数据库中删除文件组从数据库中删除文件组任务任务6-10从数据库从数据库SGMS中删除文件组中删除文件组fgroup。任务分析:从数据库中删除
178、文件组可以使用任务分析:从数据库中删除文件组可以使用ALTERDATABASE语句中语句中REMOVEFILEGROUP子句来实现,子句来实现,实现本任务的代码如图实现本任务的代码如图6-15所示:所示:【注意注意】删除文件组时,要确保文件组为空,否则无法删删除文件组时,要确保文件组为空,否则无法删除。除。图6-15删除文件组fgroup2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.4使用文件组管理数据文件3设置数据库默认文件组设置数据库默认文件组设置默认文件组,通过修改数据库设置默认文件组,通过修改数据库ALTERDATABASE来来实现,其格式如
179、下:实现,其格式如下:MODIFYFILEGROUP文件组名文件组名|DEFAULT|NAME=新文件组名新文件组名子句中参数如下:子句中参数如下:对文件组设置只读(:对文件组设置只读(READ_ONLY)或读)或读/写(写(READ_WRITE)属性;)属性;DEFAULT:将当前文件组设置为默认数据库文件组;:将当前文件组设置为默认数据库文件组;NAME=新文件组名新文件组名:更改文件组名称为:更改文件组名称为“新文件组名新文件组名”。图6-16删除文件组fgroup2024/7/196.2使用使用T-SQL脚本创建和管理数据库脚本创建和管理数据库6.2.4使用文件组管理数据文件任务任务6
180、-11将将SGMS数据库中数据库中fgroup文件组设置为默认文文件组设置为默认文件组。件组。实现本任务的代码及执行结果如图实现本任务的代码及执行结果如图6-16所示:所示:【注意注意】一个数据库中只能有一个文件组作为默认文件组。一个数据库中只能有一个文件组作为默认文件组。设置默认文件组之前要确保该文件组中已经包含文件。设置默认文件组之前要确保该文件组中已经包含文件。图6-16删除文件组fgroup2024/7/196.3使用使用SSMS创建和管理数据库创建和管理数据库6.3.1创建数据库任务任务6-12创建学生成绩管理数据库创建学生成绩管理数据库SGMS。在在SSMS中创建数据库的具体步骤如
181、下:中创建数据库的具体步骤如下:(1)打开SSMS并连接到相应的服务器。在“对象资源管理器”中,逐级展开“服务器”|“数据库”,右击“数据库”节点,在弹出的快捷菜单中选择“新建数据库(N).”,如图6-17所示。图6-17创建新数据库2024/7/196.3使用使用SSMS创建和管理数据库创建和管理数据库6.3.1创建数据库(2)在弹出的“新建数据库”对话框中,左侧“选择页”中包括“常规”、“选项”和“文件组”3项,默认显示的是“常规”选项,如图6-18所示。在“常规”选项卡中,可以设置新建数据库的名称、数据库的所有者、数据文件、事务日志文件等信息。本例中要建立SGMS数据库,在弹出“数据库名
182、称”文本框中输入SGMS,此时,系统为数据库设置了两个必须的文件。图6-18“新建数据库”对话框2024/7/196.3使用使用SSMS创建和管理数据库创建和管理数据库6.3.1创建数据库(3)可以对主文件和事务日志文件的属性进行修改。例如)可以对主文件和事务日志文件的属性进行修改。例如要修改主数据文件的要修改主数据文件的“自动增长自动增长”选项,可以单击其后的选项,可以单击其后的按钮,将显示按钮,将显示“更改更改SGMS的自动增长设置的自动增长设置”对话框,如对话框,如图图6-19所示。在对话框中可以设置文件增长方式以兆字节所示。在对话框中可以设置文件增长方式以兆字节增长还是以百分比增长,以
183、及每次增长的幅度。增长还是以百分比增长,以及每次增长的幅度。“最大文最大文件大小件大小”可以设置文件的最大大小或不限制文件增长。设可以设置文件的最大大小或不限制文件增长。设置完成后,单击置完成后,单击“确定确定”按钮,返回按钮,返回“新建数据库新建数据库”对话对话框。框。图6-19“更改SGMS的自动增长设置”对话框2024/7/196.3使用使用SSMS创建和管理数据库创建和管理数据库6.3.1创建数据库(4)最后单击“确定”按钮,系统会根据用户设置的信息完成数据库的创建。在SSMS的“对象资源管理器”中,会显示创建的数据库SGMS,如图6-20所示。图6-20查看新建的数据库2024/7/
184、196.3使用使用SSMS创建和管理数据库创建和管理数据库6.3.1创建数据库可以根据用户设置的数据库文件存储路径找到创建的数据库文件。默认情况下,在本机的C:ProgramFilesMicrosoftSQLServerMSSQL.1MSSQLData下生成物理数据库文件,如图6-21所示。图6-21数据库文件及路径2024/7/196.3使用使用SSMS创建和管理数据库创建和管理数据库6.3.2管理数据库管理数据库包括查看数据库信息、修改数据库、删除数据库等操作。1查看数据库信息任务6-13查看SGMS数据库信息。任务分析:使用SSMS查看数据库信息比较方便,可以按以下方法实现。在SSMS“
185、对象资源管理器”中,展开“服务器”|“数据库”,右击数据库SGMS,在弹出的快捷菜单中选择“属性”命令,打开如图6-22所示的“数据库属性”对话框,其中包含“常规”、“文件”、“文件组”、“选项”、“权限”、“扩展属性”、“镜像”和“事务日志传送”8个选择页。可以通过它们来查看数据库的基本属性。图6-22SGMS“数据库属性”对话框2024/7/196.3使用使用SSMS创建和管理数据库创建和管理数据库6.3.2管理数据库2修改数据库修改数据库修改数据库包括增减数据库文件、修改文件属性、修改数据库选项等。在SSMS“对象资源管理器”中,展开“服务器”|“数据库”,右击数据库SGMS,在弹出的快
186、捷菜单中选择“属性”命令,打开如图6-18所示的“数据库属性”对话框,可以通过选择页来修改数据库的基本属性。(1)增减数据库文件和文件组。用户可以使用“文件”选项增减数据库文件或修改数据库文件属性。使用“文件组”选项可以增加或删除一个文件组,修改现有文件组的属性。(2)修改数据库选项。使用“选项”可以修改数据库的选项。只需要单击要修改的属性值后的下拉列表按钮,选择True或False就可以了。2024/7/196.3使用使用SSMS创建和管理数据库创建和管理数据库6.3.2管理数据库比较常用的数据库选项有:限制访问:即限制访问数据库的用户。包括MULTI_USER(多用户)、SINGLE_US
187、ER(单用户)和RESTRICTED_USER(受限用户)三种。只读:即数据库中的数据只能读取,不能对它进行修改。自动关闭:用于指定数据库在没有用户访问并且所有进程结束时自动关闭,释放所有资源,当又有新的用户要求连接时,数据库自动打开。数据库自动关闭后,数据库文件可以像普通文件一样处理,所以这个选项很适合移动用户。而对于网络应用数据库,则最好不要设置这个选项。自动增减:当数据或日志量较少时自动缩小数据库文件的大小,当设置了只读属性时,这个选项失效。2024/7/196.3使用使用SSMS创建和管理数据库创建和管理数据库6.3.2管理数据库3使用使用SSMS删除数据库删除数据库在SSMS“对象资
188、源管理器”中右击要删除的数据库,在弹出菜单中选择“删除”命令即可,如图6-23所示。图6-23删除数据库2024/7/196.3使用使用SSMS创建和管理数据库创建和管理数据库6.3.3分离和附加数据库分离和附加数据库的概念和作用见6.2.3。1分离数据库分离数据库任务任务6-14分离分离SGMS数据库。数据库。任务分析:分离数据库是将数据库从MicrosoftSQLServerDatabaseEngine实例中删除,但保留完整的数据库及其数据文件和事务日志文件。分离数据库可以按照以下步骤来实现。(1)展开“数据库”,右击需要分离的用户数据库名。(2)指向“任务”,再单击“分离”。将显示分离数
189、据库对话框,如图6-24所示。图6-24分离对话框2024/7/196.3使用使用SSMS创建和管理数据库创建和管理数据库6.3.3分离和附加数据库(3)选中要分离的数据库,网格将显示“数据库名称”列中选中的数据库的名称。确定是否为要分离的数据库。(4)默认情况下,分离操作将在分离数据库时保留过期的优化统计信息;若要更新现有的优化统计信息,请选中“更新统计信息”复选框。(5)默认情况下,分离操作保留所有与数据库关联的全文目录。若要删除全文目录,请清除“保留全文目录”复选框。(6)“状态”列将显示当前数据库状态(“就绪”或者“未就绪”)。(7)分离数据库准备就绪后,再单击“确定”,即可完成。20
190、24/7/196.3使用使用SSMS创建和管理数据库创建和管理数据库6.3.3分离和附加数据库2附加数据库附加数据库任务任务6-15附加附加SGMS数据库。数据库。任务分析:附加数据库是将数据库附加到其他实例,及数据库实例移动到另一个数据库实例。在SSMS中附加数据库可以按照以下方法实现。(1)在对象资源管理器窗口中指向数据库,并单击鼠标右键,在弹出的菜单中选择“附加”按钮。(2)在附加数据库对话框中单击“添加”按钮,弹出“定位数据库文件”对话框,如图6-25所示。找到其所在路径并选择SGMS.mdf文件,窗口下方显示文件所处的位置,文件名及文件类型信息,然后单击“确定”按钮。图6-25“定位
191、数据库文件”对话框2024/7/196.3使用使用SSMS创建和管理数据库创建和管理数据库6.3.3分离和附加数据库(3)在附加对话框中显示要附加的数据SGMS以及SGMS数据库详细信息,如图6-26所示,然后单击“确定”按钮,完成SGMS数据库的附加。图6-26附加SGMS数据库详细信息2024/7/196.3使用使用SSMS创建和管理数据库创建和管理数据库6.3.4使用文件组管理数据文件在SSMS中,利用文件组管理数据文件,可以通过如图6-27所示的窗口中进行。在窗口中可以实现:将文件组添加到数据库、从数据库中删除文件组、设置数据库默认文件组。在“SMGS数据库属性”对话框中,选择左侧的“
192、文件组”页,在对应的右侧窗口中可以通过“添加”按钮、“删除”按钮、默认值复选框,实现向数据库中添加新的文件组、删除文件组和设置默认文件组,可按如下具体操作实现。(1)单击“添加”按钮,输入文件组名称,然后单击“确定”按钮,可向数据库中添加新的文件组。(2)选中某个文件组,可以将数据库需要删除文件组的文件组删除。(3)选定文件组名,然后单击“默认值”复选按钮,可以将某个文件组设为默认了。图6-27SGMS数据库属性2024/7/19第第6章章数据库的创建与管理数据库的创建与管理本章首先主要介绍数据库的存储结构和数据库的分类,数据库中的文件和文件组的概念,并通过学生成绩管理系统数据库这个案例,重点
193、介绍利用T-SQL语句和利用SSMS创建和修改数据库、分离和附加数据库的方法。最后,介绍了利用文件组来管理数据库的具体方法。本章小结2024/7/19习题与实验习题与实验【本章习题本章习题】一选择题一选择题1、()不能放在任何文件组中。A.主数据库文件B.次数据库文件C.事务日志文件D.操作系统文件2、每个数据库至少包含()个文件。A.1B.2C.3D.43、每个数据库有()个文件组。A.1个B.1个到多个C.0到多个D.2个4、关于数据库文件组,下列说法正确的是()。A.所有数据库都至少包含一个文件组,数据库首先创建时,主文件组是默认的文件组;B.文件或文件组只能由一个数据库使用,不能属于不
194、同的文件组;C.一个文件只能属于一个文件组,不能属于不同的文件组;D.事务日志文件必须存放在主文件组中。2024/7/19习题与实验习题与实验5、在SQLServer中创建数据库是,必须指明()。A.存储路径B.逻辑名C.数据文件名D.数据库名6、删除数据库的命令是()。A.DELETEDATABASEB.CREATEDATABASEC.DROPDATABASED.ALTERDATABASE7、有关修改数据库的说法正确的是()。A.数据库名可以直接修改B.一次可以修改数据文件多个属性C.不能修改文件组属性D.修改数据库时,必须断开连接服务器8、数据库属性窗口中包含的属性页有()。A.常规B.选
195、项C.文件组D.文件夹2024/7/19习题与实验习题与实验二、填空题二、填空题1、SQLServer数据库中系统数据库有、。2、用CREATEDATEBASESTU创建数据库时,数据库文件逻辑名自动为。3、数据库从一台计算机上移动到另一台计算机上,必须通过分离和。4、修改数据库T-SQL语句为,删除数据库的T-SQL语句为。5、数据库首次建立时,是默认文件组,但用户可以通过命令将用户定义的文件组指定为默认文件组。2024/7/19习题与实验习题与实验三、简答题三、简答题1、简述SQLServer2005数据库中包含的3类文件,4种系统数据库。2、简述SQLServer2005中对数据库能做哪
196、些方面属性的修改?3、SQLServer2005中能对数据库做哪些方面的设置?4、简述SQLServer2005数据库对象有哪些,数据库对象完全限定对象名由哪几部分组成?怎样表示一个数据库对象?2024/7/19习题与实验习题与实验【实验实验】一.实验目的和要求1、熟悉数据库的存储结构;2、会使用SSMS创建数据库,并对数据库进行管理;3、会使用有关T-SQL语句创建数据库和对数据库进行管理;4、会利用SSMS和T-SQL语句对数据库进行分离和附加。2024/7/19习题与实验习题与实验二.实验内容1、利用SSMS和T-SQL语句创建“JWGL”,相关属性为默认值。2、使用SSMS和T-SQL
197、查看JWGL数据库的属性。如当前数据库文件、文件组及数据库大小等信息。3、在D盘student目录下新建一个名为LIBRARY数据库,其中:(1)主文件逻辑名称为“LIBRARY_data”,物理文件名为“LIBRARY_data.mdf”,初始大小为5MB,最大大小为10MB,增长方式为1MB;(2)事务日志文件逻辑名为“LIBRARY_log”,物理文件名为“LIBRARY_log.ldf”,初始大小为2MB,最大大小为10MB,增长方式为5%。2024/7/19习题与实验习题与实验4、修改LIBRARY数据库,修改要求如下:(1)为其增加一个文件组dy,其中包含两个数据文件,逻辑名分别为
198、“dya”和“dyb”其它属性采用默认值;(2)为其增加一个事务日志文件,其中逻辑名为“dy_log”,物理文件名为“dy_log.ldf”,初始大小为1MB,最大大小为不限制,增长方式为1MB。(3)修改数据文件“LIBRARY_data”,将其最大大小修改为不受限制(UNLIMITED)。5、将“LIBRARY”数据库分离出来后,尝试删除其中的事务日志文件,然后附加到当前计算机SQLServer服务器上,检查一下事务日志文件相关属性前后变化。ThankYou!数数据据库库原原理理及及应应用用(SQLServer2005):*2024年年7月月19日日第第7 7章章 表的创建与约束机制表的创
199、建与约束机制2024/7/19第第7章章表的创建与约束机制表的创建与约束机制任务目标任务目标:掌握T-SQL语句创建表的方法;掌握使用SSMS创建表的方法;掌握T-SQL语句对表结构修改的方法;掌握使用SSMS修改表结构的方法;掌握T-SQL语句对表中数据进行操作;会利用SSMS对表中数据进行操作;理解并掌握5种约束机制基本概念;会使用T-SQL语句和利用SSMS创建约束的方法。2024/7/19第第7章章表的创建与约束机制表的创建与约束机制7.1 7.1 数据表的基本概念数据表的基本概念7.2 7.2 表的设计与创建表的设计与创建7.3 7.3 管理表管理表7.4 7.4 数据的插入、更新和
200、删除数据的插入、更新和删除7.5 SQL Server7.5 SQL Server约束机制约束机制本章小结本章小结习题与实验习题与实验2024/7/197.1数据表的基本概念数据表的基本概念表是用来存储数据和操作数据的逻辑结构。关系数据库中的所有数据都存储在表中。因此表是SQLServer数据库中最为重要的组成部分。表是由行和列组成,最多可以有1024列,每行对应实体集的一个实体,也称为记录,每列代表一个属性,也称为字段。SQLServer中,表分为系统表和用户表两类。1系统表系统表默认情况下,每个数据库都有一组系统表,系统表主要记录所有服务器活动的信息,大多数系统表的表名以sys开头。系统表
201、中的信息组成了系统使用的数据字典。任何用户都不能直接修改系统表,也不允许直接访问系统表中的信息,如要访问其中的内容,最好通过系统存储过程或系统函数来访问。2用户表用户表用户表是由用户自定义建立的表,用来存储用户特定的数据,又可分为永久表和临时表两种。2024/7/197.1数据表的基本概念数据表的基本概念(1)永久表永久表存储在用户数据库中,用户数据通常存储在永久表中,如果用户没有删除永久表,永久表及其存储过程将永久存在。(2)临时表临时表存储在tempdb数据库中,当不再使用时,系统会自动删除。临时表又可分为本地临时表和全局临时表两种。本地临时表:表名以#开头,仅对当前连接数据库的用户有效,
202、当用户断开连接时,本地临时表自动删除。全局临时表:表名以#开头,对所有连接数据库的用户有效,当所有用户断开连接,全局临时表才自动删除。2024/7/197.2表的设计与创建表的设计与创建设计表时,要事先确定需要什么样的表,表中有哪些数据,表中各字段的数据类型及其属性,建表一般经过定义表结构、设置约束、输入记录等步骤,其中设置约束既可以在定义表结构时进行,也可以在定义表结构完成之后进行。1定义表结构定义表结构确定表的各列的列名及其数据类型、数据长度、是否允许为空等。定义表结构时要注意:7.2.1表的设计2024/7/197.2表的设计与创建表的设计与创建(1)允许空:决定某列在表中是否允许为空值
203、。空值是不等于零、空白或零长度的字符串。(2)默认值:当在表中插入该列为空值的行时,用此默认值。设置该值能够起到默认输入的作用,减少输入数据的工作量。如设置性别的默认值为“男”。(3)标识列:设置为标识的列,可以有系统自动操作计数(自动编号),不用用户输入,对于一些具有递增或递减自动编号性质的列,如订单号、发票号等可以设置此附加属性。将一个字段设置为标识列,其数据类型必须是以下类型之一:int、bigint、smallint、tinyint、或小数位数为0的decimal、numeric字段。该字段不允许为空,且不能有默认值。(4)计算列:计算字段是一个虚拟的字段,它并未将计算结果实际存储在表
204、中,而只是在运行时才计算出结果。在设置计算字段时,不需要指定该字段的数据类型,当保存表结构,SQLServer会自动决定计算字段的数据类型。7.2.1表的设计2024/7/197.2表的设计与创建表的设计与创建2设置约束设置约束约束定义了关于允许什么数据进入数据库的规则,是分配给表或表中某列的一个属性。使用约束,主要目的在于防止列中出现非法数据,可以自动维护数据库中的数据完整性。数据完整性是指数据的正确性、完备性和一致性,是衡量数据库质量好坏的重要标准。使用INSERT、DELETE、UPDATE语句修改数据库内容时,数据的完整性可能会遭到破坏。可能会将无效的数据添加到表中,如将学生考试成绩输
205、入成负数。为了解决类似的问题,SQLServer提供了对数据库中表、列实施数据完整性的方法。完整性的类型主要包括:7.2.1表的设计2024/7/197.2表的设计与创建表的设计与创建(1)域完整性域完整性是指一个列的输入有效性,是否允许空值。通常使用有效性检查强制域完整性,也可以通过限定列中允许的数据类型、格式或可能值的范围来强制域完整性。(2)实体完整性实体完整性是指保证表中所有的行唯一。实体完整性要求表中的所有行都有一个唯一标识符。这个唯一标识符可能是一列,也可能是几列的组合,称之为主键。也就是说,表中主键在所有行上必须取值唯一且不能为空值。7.2.1表的设计2024/7/197.2表的
206、设计与创建表的设计与创建(3)参照完整性参照完整性也叫引用完整性。参照完整性总是保证主关键字(被引用表)和外部关键字(引用表)之间的参照关系。在SQLServer中约束是强制数据完整性的首选方法,它是强制数据完整性的ANSI标准方法。每种数据完整性类型,使用单独的约束类型进行强制。约束确保在列中录入有效的数据值,并且能维护表之间的关联关系。具体的约束类型及实现方法将在7.5节做详细介绍。3输入记录输入记录表结构设计好之后,就可以向表中输入数据了。输入记录时,必须遵循所设置的约束条件,否则,服务器将拒绝接受所输入的不非法数据。按照学生成绩管理系统数据库(SGMS)实际问题的需要,设计了9张表,分
207、别为:student、course、coursetype、teacher、users、department、class、speciality、grade,表结构见附录。7.2.1表的设计2024/7/197.2表的设计与创建表的设计与创建用T-SQL语句创建表比使用SSMS创建表更加直接、有效。实际的应用系统中,通常用CREATETABEL语句创建表,其基本语法格式如下:CREATETABEL表名(列名 数据类型 NOTNULL|NULL)上面格式中,包含参数的含义如下:表名:是所创建的表的名称,在一个数据库内表名必须唯一。列名:列名在一个表内列名必须唯一。数据类型:可以使用系统数据类型,也可
208、以使用用户定义的数据类型。对于需要给定数据最大长度的类型,在定义时要给出长度。7.2.2使用T-SQL语句创建表2024/7/197.2表的设计与创建表的设计与创建任务任务7-1在在SGMS数据库中创建数据库中创建student表。表。任务分析:创建表时,要给出表的名称、字段名、字段数据类型等有关信息。在T-SQL中,可以用CREATETABEL命令来创建表,表中列的定义必须用括号括起来。一个表中最多可以包含1024列。本例中可以按照student表结构,依次定义字段的名称、数据类型及是否允许为空。实现代码如图7-1所示。7.2.2使用T-SQL语句创建表图7-1创建student表2024/
209、7/197.2表的设计与创建表的设计与创建任务任务7-2使用使用SSMS创建创建course表。表。任务分析:使用SSMS创建表,首先必须打开SGMS数据库,然后再打开“表设计器”,在“表设计器”窗口中依次定义表的字段名、数据类型、是否允许为空就可以了。利用SSMS创建表步骤如下:(1)在“对象资源管理器”的树型目录中找到要建表的数据库SGMS,展开该数据库。(2)选择“表”,右击鼠标,在弹出的快捷菜单中选择“新建表(N).”命令,打开表设计器,如图7-2所示。7.2.3使用SSMS创建表图7-2表设计器2024/7/197.2表的设计与创建表的设计与创建(3)表设计器的上半部分有一个表格,在
210、这个表格中输入列的属性,表格的第一行对应设置一列,对每一列都需要进行如下设置:列名:为每一列设定一个列名。数据类型:数据类型是一个下拉列表框,其中包含了所有的系统数据类型和用户自定义的数据类型。用户可根据需要来选择数据类型和长度。允许空:单击该行的复选框,可以切换是否允许该列为空值的状态。打勾表示允许为空值,空白表示不允许为空值,默认状态下是允许为空值的。表设计器下半部分是特定列的详细属性,包括是否是INDENTITY列、是否使用默认值等。表设计器右半部分是表的详细属性,这里可以设置表的名称、表所在的文件组等信息。7.2.3使用SSMS创建表2024/7/197.2表的设计与创建表的设计与创建
211、(4)逐个定义好表中的列,单击工具栏中的“保存”按钮。若没有在表设计器中给出表的名称,会出现保存对话框,提示用户输入表的名称,如图7-3所示。单击“确定”按钮,course表就建立完成。7.2.3使用SSMS创建表图7-3保存表结构2024/7/197.3管理表管理表在表创建完成以后,根据实际的需要,有可能会对表原有的设计作相应的修改,比如增加一列,删除一列,或者对相应的某一列的数据类型做些调整等等。用户可以使用T-SQL脚本管理表,也可以使用SSMS管理表,下面分别介绍。2024/7/197.3管理表管理表1使用使用T-SQL语句显示表信息语句显示表信息任务任务7-3查看表查看表studen
212、t的基本信息。的基本信息。任务分析:可以使用系统存储过程sp_help来查看表结构,包括表的所有者、类型(系统表还是用户表)、创建时间、表上每一列的名称、数据类型、表上定义的索引及约束等。本例实现代码如图7-4所示。7.3.1使用T-SQL脚本管理表图7-4查看student表的结构2024/7/197.3管理表管理表2使用使用T-SQL语句修改表结构语句修改表结构使用ATLERTABEL语句可以对表结构进行修改,具体包括增加列、删除列以及修改列定义。(1)增加列)增加列向表中增加列,通过ADD子句实现,其基本语法格式为:ATLERTABLE表名ADD列名列的描述参数:列的描述中要给出列的数据
213、类型,是否为空。7.3.1使用T-SQL脚本管理表2024/7/197.3管理表管理表任务任务7-4向向student表中增加列表中增加列Email列。列。任务分析:向表中增加一列时,应使新增加的列有默认值或允许为空值,SQLServer将向表中已经存在的行填充新增加列的默认值或空值。如果既没有提供默认值也不允许为空值,那么新增加列的操作将会出错,因为不知道该怎样处理哪些已经存在的行。实现代码如图7-5所示。7.3.1使用T-SQL脚本管理表图7-5增加Email列【注意】可以一次向表中增加多列,多列之间用逗号分开。2024/7/197.3管理表管理表(2)删除列)删除列对于一张表,要删除表中
214、某列可以用DROPCOLUMN子句实现,其基本语法格式如下:ATLERTABLE表名DROPCOLUMN列名任务任务7-5删除删除student表中表中Email列列任务分析:删除表中的列,使用T-SQL中提供的DROPCOLUMN子句实现,实现代码如图7-6所示。7.3.1使用T-SQL脚本管理表图7-6删除student表中Email列2024/7/197.3管理表管理表(3)修改列定义)修改列定义修改列定义可以用ALTERCOLUMN子句实现,其基本语句格式如下:ALTERTABLE表名ALTERCOLUMN列名列的描述任务任务7-6将将student表中表中studentName修改为
215、最大长度为修改为最大长度为60的的nvarchar型数据,且不允许为空值。型数据,且不允许为空值。任务分析:表中的每一列都有其定义,包括列名、数据类型、数据长度及是否允许为空值等,这些值都可以在表创建好以后,如果不合适,可以对其进行修改。实现代码如图7-7所示。7.3.1使用T-SQL脚本管理表2024/7/197.3管理表管理表【注意】默认状态下,列是被设置为允许为空值的,将一个原来允许为空值的列修改为不允许为空值的列时,必须有两个前提条件:列中没有存放有空值的记录;在列上没有创建索引。7.3.1使用T-SQL脚本管理表图7-7修改student表studentname列2024/7/197
216、.3管理表管理表3使用使用T-SQL删除表结构删除表结构在T-SQL语句中,DROPTABLE语句可以用来删除表。其基本语法格式如下:DROPTABLE表名任务任务7-7删除删除SGMS数据库中的表数据库中的表course表。表。任务分析:删除表之前一定要确定该表是不再需要的表。一旦一个表被删除,那么它的数据、结构定义、约束、索引等都将被永久删除,以前用来存储数据和索引的磁盘空间可以用来存储其他数据库对象了。实现代码如图7-8所示。7.3.1使用T-SQL脚本管理表图7-8删除course表结构2024/7/197.3管理表管理表1使用使用SSMS查看表属性查看表属性任务7-8查看studen
217、t表属性。任务分析:在SSMS的“对象资源管理器”中找到要查看表所在的数据库,选中树型结构中的“表”结点,右边的窗口中就会显示这一数据库中所有的表,其中系统表单独在“系统表”文件夹内。对于每一个表,都会显示它的架构和创建时间。在列表中选择一个要查看的表,右击打开快捷菜单,选择“属性”命令,打开“表属性”对话框,如图7-9所示,可以在此查看、设置表的属性、权限和扩展属性等。7.3.2使用SSMS管理表图7-9查看student表的属性2024/7/197.3管理表管理表2使用使用SSMS修改表结构修改表结构任务任务7-9修改修改student表结构。表结构。任务分析:修改表结构,也是在“表设计器
218、”窗口中进行。其方法如下:在SSMS的“对象资源管理器”中要修改的表,右击要修改的表,在弹出的快捷菜单中选择“修改(Y)”命令,将弹出如图7-10所示的表设计器。7.3.2使用SSMS管理表图7-10修改student表结构2024/7/197.3管理表管理表此时可以象新建表一样,向表中增加列、从表中删除已有列或修改列的属性,修改完毕后单击“保存”按钮即可。选中某一列,右击鼠标,在弹出的快捷菜单中选择“删除列(N)”命令,则可删除某一列。7.3.2使用SSMS管理表2024/7/197.3管理表管理表3使用使用SSMS删除表结构删除表结构任务7-10删除SGMS数据库中student1表结构。
219、任务分析:这里对student表复制了一份,在副本student1上进行删除操作。(1)使用SSMS删除表非常简单,只需在“对象资源管理器”中找到要删除的表,右击,在弹出快捷菜单中选择“删除(D)”命令即可,如图7-11所示。(2)在弹出“删除对象”对话框中,单击“确定”按钮即可。7.3.2使用SSMS管理表图7-11删除SGMS数据库中的student1表2024/7/197.4数据的插入、更新和删除数据的插入、更新和删除1向表中插入数据向表中插入数据使用INSERT语句,可以实现数据的插入操作。INSERT语句的基本语法格式如下:INSERTINTO表名(列名)VALUES(表达式)参数I
220、NTO:一个可选的关键字,可以将它用在INSERT和目标表之间。(1)添加数据到一行中的所有列)添加数据到一行中的所有列当将数据添加到一行中的所有列时,使用VALUES关键字来给出要添加的数据。任务任务7-11向向class表中添加一条记录,记录信息为:表中添加一条记录,记录信息为:(2008007,08计算机控制计算机控制,a01,2008,0733005)。)。任务分析:INSERT语句中无需给出表中的列名,只要在VALUES中给出所有的数据就可以了。但给出的数据要与用CREATETABLE定义表时给定的列名顺序、数据类型和个数均相同。实现代码及运行结果如图7-12所示。7.4.1使用IN
221、SERT语句添加数据图7-12插入一行中所有列及显示运行结果2024/7/197.4数据的插入、更新和删除数据的插入、更新和删除【注意】若对表中列的顺序不明确,则要在表名后给出具体的列名,而且列名顺序、类型和数量也要与VALUES中给出的数据一一对应。如上面的语句也可以写为:INSERTINTOclass(classID,className,specialityID,specialityName,EntranceYear,Monitor)VALUES(2008007,08计算机控制,a01,2008,0733005)7.4.1使用INSERT语句添加数据图7-12插入一行中所有列及显示运行结果
222、2024/7/197.4数据的插入、更新和删除数据的插入、更新和删除(2)添加数据到一行中部分列)添加数据到一行中部分列任务任务7-12向向student表中添加到一条记录,插入记录是:表中添加到一条记录,插入记录是:student表中的表中的studentID、studentName、sex、birthday、credithour,列的数据为:,列的数据为:(0711003,张红张红,女女,1988-8-8,34)。任务分析:要将数据添加到一行中部分列时,则必须同时给出要使用的列名以及要赋给这些列的数据。由于Student表中studentID、studentName和credithour三
223、列均为非空,在插入记录时必须给出具体的值。实现代码和运行结果如图7-13所示。7.4.1使用INSERT语句添加数据图7-13插入一行中部分列及运行结果2024/7/197.4数据的插入、更新和删除数据的插入、更新和删除【注意】输入数据的顺序和数据类型必须与表中列的顺序和数据类型一致;列名与数据必须一一对应,当每列都有数据输入时,列名可以省略,但输入数据的顺序必须与表中列的定义顺序相一致;可以不给全部列赋值,但没有赋值的列必须是可以为空的列;插入字符型和日期型数据时要用单引号括起来。7.4.1使用INSERT语句添加数据2024/7/197.4数据的插入、更新和删除数据的插入、更新和删除(3)
224、添加多行数据)添加多行数据通过在INSERT语句中嵌套子查询实现。可以将子查询的结果作为批量数据,一次向表中添加多行数据。查询语句将在第8章作讲解,这里仅给出一个简单的例子。任务任务7-13添加批量数据,将添加批量数据,将student表中女生信息插入表中女生信息插入到一张新表到一张新表stu_girl中。中。任务分析:为了实现新旧数据的比较,可以先建立一个stu_girl表,表中包含studentID、studentName、nation列。假设student表中已有一批数据,可以从student表中选择女生的记录信息插入到新表stu_girl中。实现代码和运行结果如图7-14所示。7.4.
225、1使用INSERT语句添加数据图7-14插入多行数据及运行结果2024/7/197.4数据的插入、更新和删除数据的插入、更新和删除T-SQL语句中提供了UPDATE语句对表中数据进行修改,其基本语法格式如下:UPDATE表名SET列名=表达式WHERE条件任务任务7-14将将student表中学号为表中学号为0711001的学生的家的学生的家庭住址列修改为庭住址列修改为“马鞍山马鞍山”。任务分析:本例中要修改student表中学号为0711001address列的信息,要用WHERE来指出条件。实现代码如图7-15所示。7.4.2使用UPDATE语句修改数据图7-15更新学号为0711001a
226、ddress列数据2024/7/197.4数据的插入、更新和删除数据的插入、更新和删除当数据的添加工作完成后,随着使用和对数据的操作,表中存在一些无用的数据,这些无用数据会占用空间,影响修改和查询数据的速度,所以应及时将对无用的数据进行删除。(1)使用)使用DELETE语句删除数据语句删除数据使用DELETE语句可以删除数据表中的一行或多条记录。DELETE语句基本语法格式如下:DELETE表名WHERE条件任务任务7-15删除删除student表中表中studentID为为“0711003”同同学的记录。学的记录。任务分析:这里要删除student表中studentID为“0711003”同
227、学记录,要用WHERE子句来指定条件。实现代码如图7-16所示。7.4.3使用DELETE语句删除数据图7-16删除学号为0711003的数据2024/7/197.4数据的插入、更新和删除数据的插入、更新和删除图7-16删除学号为0711003的数据(2)使用)使用TRUNCATETABLE语句删除表中所有行记录。语句删除表中所有行记录。TRUNCATETABLE是T-SQL提供的一种删除表中所有记录的快捷方法,它比DELETE命令要快。因为它在删除表中所有记录时将不写入日志,节约了大量日志操作的时间。其基本语法格式如下:TRUNCATETABLE表名任务任务7-16删除删除student1表
228、中所有学生记录。表中所有学生记录。实现本任务的代码及执行结果如图7-17所示。7.4.3使用DELETE语句删除数据图7-17删除student1表中所有学生记录2024/7/197.4数据的插入、更新和删除数据的插入、更新和删除【注意】TRUNCATETABLE删除表中记录是一种快捷方法。因为TRUNCATETABLE语句不记录日志,只记录整个数据页的释放操作,而DELETE语句对每一行数据修改都记录日志,所有TRUNCATETABLE语句总比没有指定条件的DELETE语句删除记录要快。7.4.3使用DELETE语句删除数据2024/7/197.4数据的插入、更新和删除数据的插入、更新和删除
229、使用SSMS对数据进行操作比使用T-SQL语句要简单得多。任务任务7-17使用使用SSMS操纵操纵curse表中的数据。表中的数据。任务分析:使用SSMS可以对一个表中的数据进行查看、插入、修改和删除等操作,方法如下:(1)在“对象资源管理器”的树型目录中找到存放表的数据库。(2)展开数据库,选中要操作的数据表。(3)右击要操作的表,在弹出的快捷菜单中选择“打开表(O)”命令,如图7-18所示。7.4.4使用SSMS操纵数据图7-18打开course表2024/7/197.4数据的插入、更新和删除数据的插入、更新和删除(4)打开的窗口如图7-19所示显示course表数据。在此窗口中可以实现对
230、course表中数据的添加、修改和删除等操作。7.4.4使用SSMS操纵数据图7-19显示course表中的数据2024/7/197.5SQLServer约束机制约束机制SQLServer2005中提供了5种约束,分别是主键约束(PRIMARY)、唯一键约束(UNIQUE)、默认值约束(DEFAULT)、检查约束(CHECK)和外键约束(FOREIGNKEY)。具体描述见表7-1所示。创建约束始终和表的创建和修改分不开,因为约束是关联在表的某一列或几列的组合上的,所以可以通过CREATETABLE语句在建表的时候添加约束,也可以使用ALTERTABLE语句来为已经存在的表添加约束。下面我们分别
231、介绍通过T-SQL语句与SSMS创建约束的方法。表7-1约束的类型和功能表述7.5.1SQLServer提供的约束类型2024/7/197.5SQLServer约束机制约束机制1PRIMARY约束约束创建PRIMARY约束有两种方法:(1)使用CREATETABLE语句在创建表时添加主键约束CREATETABLE语句中,通过对某个字段添加PRIMARYKEY来实现。CREATETABLE语句语法格式见7.2.2。任务任务7-18使用使用T-SQL语句为语句为SGMS数据库中数据库中Class表创表创建主键约束。建主键约束。任务分析:PRIMARY约束标识列或列集,使这些列或列集的值唯一标识表中
232、的行。Class表主键是classID,对于单个字段所建立的主键约束称为列级主键。实现代码如图7-20所示。7.5.2使用T-SQL脚本创建约束图7-20给class表添加列级主键约束2024/7/197.5SQLServer约束机制约束机制任务任务7-19使用使用T-SQL语句为语句为SGMS数据库中数据库中Grade表创建主键约束。表创建主键约束。任务分析:Grade表的主键是组合字段studentID和courseID。对于组合关键字段所建立的主键称为表级主键。实现代码如图7-21所示。7.5.2使用T-SQL脚本创建约束图7-21给grade表添加表级主键约束2024/7/197.5S
233、QLServer约束机制约束机制(2)使用ALTERTABLE语句向现有表添加主键约束当表创建好之后,可以通过修改表结构ALTERTABLE命令来实现,其基本语法格式如下:ALTERTABLE表名 ADDCONSTRAINT约束名PRIMARYKEYCLUSTEREDNONCLUSTERED(列名,.)参数含义如下:约束名:为约束指定的名称。CLUSTEREDNONCLUSTERED:索引选项。主键默认为聚集索引。列名:表示创建PRIMARYKEY约束所依据的列。7.5.2使用T-SQL脚本创建约束2024/7/197.5SQLServer约束机制约束机制任务任务7-20假设假设Grade表已
234、经存在且没有定义主键,为该表已经存在且没有定义主键,为该表添加主键约束。表添加主键约束。任务分析:利用ALTERTABLE修改表结构,通过ADDCONSTRAINT子句来实现添加主键。实现代码如图7-22所示。7.5.2使用T-SQL脚本创建约束图7-22修改grade表中添加主键约束2024/7/197.5SQLServer约束机制约束机制【注意】在一个表中,不能有两行包含相同的主键值,不能在主键内的任何列输入NULL值,NULL值在数据库中是特殊值,代表不同于空白和0值的未知值。每一个表都应有一个主键,且对于每一个表只能创建一个PRIMARYKEY约束。一个表中可以有一个以上的列组合,这些
235、组合能唯一标识表中的行,每个组合就是一个候选键,数据库管理员可以从候选键中选择一个作为主键。7.5.2使用T-SQL脚本创建约束2024/7/197.5SQLServer约束机制约束机制2UNIQUE约束约束创建PRIMARY约束有两种方法:(1)使用CREATETABLE语句在创建表时添加UNIQUE约束任务任务7-21创建创建Course表时,为表时,为coursename列添加唯一列添加唯一约束,不允许课程名重复。约束,不允许课程名重复。任务分析:创建course表时,为coursename列添加唯一约束,利用CREATETABLE命令创建表时来实现,实现代码如图7-23所示。7.5.2
236、使用T-SQL脚本创建约束图7-23创建表时添加UNIQUE约束2024/7/197.5SQLServer约束机制约束机制【注意】UNIQUE约束在列集内强制执行值的唯一性。对于UNIQUE约束中的列,不允许出项相同的值,这一点与主键约束类似。与主键约束不同的是,在UNIQUE约束的列中允许输入空值,所有空值都是作为相同的值对待的。主键也强制执行唯一性,但主键不允许出现空值。7.5.2使用T-SQL脚本创建约束2024/7/197.5SQLServer约束机制约束机制(2)使用ALTERTABLE语句向现有表添加UNIQUE约束当表已经建立好,可以通过修改表结构命令ALTERTABLE来添加唯
237、一约束,其基本语法格式如下。其参数含义与上述创建主键约束的参数含义相似。ALTERTABLE表名ADDCONSTRAINT约束名UNIQUE(列名)任务任务7-22假设表假设表course表已经建立,现在要为表已经建立,现在要为coursename列添加唯一约束,不允许出现相同的课程列添加唯一约束,不允许出现相同的课程名。名。任务分析:表已经存在,可以通过修改表结构ALTERTABLE命令实现。实现代码如图7-24所示。7.5.2使用T-SQL脚本创建约束图7-24修改表时添加UNIQUE约束2024/7/197.5SQLServer约束机制约束机制3DEFAULT约束约束DEFAULT约束指
238、为表中的列定义默认值。当执行数据插入操作而又没有为该列提供数据时,系统将自动以定义的默认值填充该列。(1)使用CREATETABLE语句在创建表时添加DEFAULT约束任务任务7-23创建创建student表,为表,为sex列添加列添加DEFAULT,默,默认值为认值为“男男”。任务分析:创建表时添加默认值约束,只需要指定某列的DEFAULT及默认值就可以了。实现代码如图7-25所示。7.5.2使用T-SQL脚本创建约束图7-25创建表时添加DEFAULT约束2024/7/197.5SQLServer约束机制约束机制(2)使用ALTERTABLE语句向现有表添加DEFAULT约束如果表已存在,
239、则可以修改表结构时添加DEFAULT约束,基本语法格式如下:ALTERTABLE表名ADDCONSTRAINT约束名DEFAULT表达式FOR列名任务任务7-24在在SGMS数据库中已经存在的数据库中已经存在的student表,为表,为sex列添加列添加DEFAULT,默认值为,默认值为“男男”。任务分析:student表已经存在,添加DEFAULT约束,可以通过修改表结构实现。实现代码如图7-26所示。7.5.2使用T-SQL脚本创建约束图7-26修改表结构时添加DEFAULT约束2024/7/197.5SQLServer约束机制约束机制【注意】:表中的每一列都可以包含一个DEFAULT定义
240、,但每列只能有一个DEFAULT定义;DEFAULT定义可以包含常量值、函数或NULL;DEFAULT定义不能引用表中的其他列,也不能引用其他表、视图或存储过程;不能对数据类型为timestamp的列或具有IDENTITY属性的列创建DEFAULT定义;不能对使用用户定义数据类型的列创建DEFAULT定义。7.5.2使用T-SQL脚本创建约束2024/7/197.5SQLServer约束机制约束机制4CHECK约束约束向表中输入数据时,CHECK约束可以确保输入数据的正确性。创建方法也有两种。(1)使用CREATETABLE语句在创建表时添加CHECK约束任务任务7-25创建创建grade表时
241、为表时为grade列添加列添加CHECK约束,约束,规定成绩取值范围为规定成绩取值范围为0,100。任务分析:创建表时,为表中某列添加CHECK约束,本例中是为表中成绩grade列规定取值范围,保证输入数据的正确性。实现代码如图7-27所示。7.5.2使用T-SQL脚本创建约束图7-27创建表时添加CHECK约束2024/7/197.5SQLServer约束机制约束机制(2)使用ALTERTABLE语句向现有表添加CHECK约束,其语法格式如下:ALTERTABLE表名ADDCONSTRAINT约束名CHECK(表达式)任务任务7-26使用使用T-SQL语句在语句在SGMS数据库中为数据库中为
242、class表创表创建名为建名为CK_classID的的CHECK约束,该约束限制约束,该约束限制classID列中只允许出现列中只允许出现7位数字。位数字。任务分析:CHECK约束对可以放入到列中的值进行限制,本例中是限制数据格式,以保证数据的完整性,可以用like关键字来指定其格式。实现代码如图7-28所示。7.5.2使用T-SQL脚本创建约束图7-28修改表时添加CHECK约束2024/7/197.5SQLServer约束机制约束机制5FOREIGNKEY约束约束FOREIGNKEY约束标识表之间的关系,建立两个表之间的联系。(1)使用CREATETABLE语句在创建表时添加FOREIGN
243、KEY约束任务任务7-27表表Grade的外键为的外键为studentID,用于与表,用于与表student的的studentID相关联。相关联。任务分析:SGMS数据库中有成绩记录的学生应该是本校学生,因此grade表中的studentID列取值范围应当是student表中的studentID中的所有数据。这就要建立grade表和student表之间的联系。实现代码如图7-29所示。7.5.2使用T-SQL脚本创建约束图7-29创建表时添加FOREIGNKEY约束2024/7/197.5SQLServer约束机制约束机制(2)使用ALTERTABLE语句向现有表添加FOREIGNKEY约束当
244、表已存在,可以修改表结构时,添加FOREIGNKEY约束,基本语法格式如下:ALTERTABLE表名1ADDCONSTRAINT约束名FOREGINKEY(列名1)REFERENCES表名2(列名2)参数如下:表名1:要设置外键的表的名称;FORGIENKEY:关键字,表示外键;列名1:外键列;REFRENCES:关键字,表示参照;表名2:主键表(外建表所参照的表)的名称;列名2:主键列。7.5.2使用T-SQL脚本创建约束2024/7/197.5SQLServer约束机制约束机制任务任务7-28当表当表Grade已经存在时,为其设置键为已经存在时,为其设置键为studentID,用于与表,用
245、于与表student的的studentID相关联。相关联。任务分析:可以通过ALTERTABLE表结构实现外键的添加。实现代码如图7-30所示。7.5.2使用T-SQL脚本创建约束图7-30修改表时添加FOREIGNKEY约束2024/7/197.5SQLServer约束机制约束机制1使用使用SSMS创建创建PRIMARYKEY主键约束主键约束任务任务7-29为表为表Teacher表创建主键表创建主键teacherID约束。约束。任务分析:使用SSMS创建表主键约束,可以在表创建好之后,通过修改表结构进行,而修改表结构是在“表设计器”环境中进行的,因此首先必须打开“表设计器”,然后右击需要设置
246、主键的字段,从弹出菜单中选择“设置主键(Y)”命令,如图7-31所示。7.5.3使用SSMS创建约束图7-31设置主键2024/7/197.5SQLServer约束机制约束机制2使用使用SSMS创建表的创建表的UNIQUE约束约束任务任务7-30为为Course表表coursename列增加列增加UNIQUE约束。约束。步骤如下:(1)利用SSMS打开SGMS数据库。打开Course表的“表设计器”。(2)然后右击需要设置UNIQUE约束的字段,从弹出菜单中选择“索引/键(I).”命令,弹出如图7-32所示的“索引/键”对话框。7.5.3使用SSMS创建约束图7-32“索引/键”对话框2024
247、/7/197.5SQLServer约束机制约束机制(3)再按“添加”按钮,单击索引列对应右边的省略号按钮,在弹出如图7-33所示的“索引/列”对话框,列名下拉列表框中选择coursename列,再选择排序顺序,然后按“确定”按钮。最后将标识中的名称修改为“UN_course”就可以了。7.5.3使用SSMS创建约束图7-33“索引/列”对话框2024/7/197.5SQLServer约束机制约束机制3使用使用SSMS创建创建DEFAULT约束约束任务任务7-31为为student表性别字段添加默认值为表性别字段添加默认值为“男男”。任务分析:为表添加默认值,仍然在表的设计器中进行,当打开表的设
248、计器,选择需要添加默认值的字段,在设计器的下半部分中“常规”项目中选择“默认值或绑定”,在右侧输入默认值,如“男”,如图7-34所示。7.5.3使用SSMS创建约束图7-34设置默认值2024/7/197.5SQLServer约束机制约束机制4使用使用SSMS创建创建CHECK约束约束任务任务7-32为为grade表中表中grade字段添加取值范围为字段添加取值范围为0,100。任务分析:在需要建立CHECK约束的字段上右击,在弹出的菜单中选择“CKECEK约束(O).”命令,弹出如图7-35所示“CHECK约束”对话框,编辑:“gradebetween0and100”或通过右边的省略号按钮进
249、行编辑。7.5.3使用SSMS创建约束图7-35编辑CHECK约束属性2024/7/197.5SQLServer约束机制约束机制5使用使用SSMS创建创建FOREIGNKEY约束约束任务任务7-33为为course表和表和grade表之间建立联系。表之间建立联系。任务分析:表Grade的外键为courseID,用于与表Course的CourseID相关联。其操作步骤为:首先打开“表的设计器”,在“表设计器”窗口中选择courseID字段,右击,从菜单中选择“关系(H)”,弹出“外键关系”对话框,如图7-36所示。单击“添加”按扭,新建一个外键,展开“表和列规范”项目,通过其右侧的省略号按钮打开
250、“表和列”对话框,设置引用关系。最后编辑“标识”项目中的名称即可。7.5.3使用SSMS创建约束图7-36索引/键属性2024/7/197.5SQLServer约束机制约束机制1约束的查看约束的查看PK_class主键约束创建好之后,可以在SSMS“对象资源管理器”树状目录中依次单击“表”,再点击“class”表中的“键”节点或“约束”节点就能查看到所有已经建立的约束,如图7-37所示。7.5.4约束的查看和删除图7-37查看class表中约束信息2024/7/197.5SQLServer约束机制约束机制2约束的删除约束的删除约束的删除可以用SSMS来删除约束,也可以使用DROPCONSTRA
251、INT子句实现,其基本语法格式如下:ALTERTABLE表名DROPCONSTRAINT约束名任务任务7-34删除删除Class表的表的PK_clas约束。约束。实现本任务的代码及执行结果如图7-38所示。7.5.4约束的查看和删除图7-38删除约束2024/7/19第第7章章表的创建与约束机制表的创建与约束机制本章将首先主要介绍数据表的基本概念和表的分类,讨论表的设计方法,并通过学生成绩管理系统(SGMS)中所包含的表,重点介绍了利用T-SQL语句和利用SSMS创建、修改表的基本方法,表创建好之后,如何添加、修改和删除数据等操作的基本方法。最后,为保证输入数据的合法性,介绍了通过约束机制来对
252、表及表中有关字段进行限制。本章小结2024/7/19习题与实验【本章习题本章习题】一选择题一选择题1用ALTERTABLE不可以修改表的()内容。A.表名B.增加列C.删除列D.列约束2创建表结构用()语句实现。A.CREATETABLE表名B.CREATEDATABASE表名C.ALTERTABLE表名D.ALTERDATABASE表名3ALTERCOLUMN子句实现的功能是()。A.修改列名B.设置默认值或删除默认值C.增加列D.改变列的属性4如果要防止插入空值,应使用()来进行约束。A.Unique约束B.Notnull约束C.PrimaryKey约束D.Check约束5增加约束用()语
253、句是实现。A.ADDCOLUMNB.ADDCONSTRAINTC.ADDFILED.ADDTABLE2024/7/19习题与实验二填空题二填空题1SQLServer中提供了约束和唯一性约束共同来维护实体完整性。2SQLServer中提供了主键约束和外键约束共同维护完整性。3限制输入到列的取值范围,应使用约束。4更新表中某列数据应用关键字,插入记录到表中用关键字,删除表中某条记录用关键字。2024/7/19习题与实验三简答题三简答题1简述表的特点,如何建立表?2如何为一个表设计主键?3修改表中数据与修改表结构有何不同?4如何在表中插入数据?2024/7/19习题与实验【实验实验】实验目的和要求1
254、学会使用SSMS创建表结构,并输入数据;2会使用CREATETABLE定义表结构;3会使用ALTERTABLE修改表结构;4会建立有关约束。2024/7/19习题与实验实验内容1.利用SQLServer2005中SSMS创建LIBRARY数据库,在此数据库中创建“图书”表和“出版社”表。量表结构分别定义为表7-10和表7-11所示。(见课本)2.利用T-SQL语句在LIBRARY数据库中创建“学生”表和“借阅”表,两个表的结构分别定义如表7-13和表7-14所示。(见课本)2024/7/19习题与实验(1)利用T-SQL语句在“学生”表中增加列“名族”,数据类型为varchar(6),默认值为
255、“汉”。(2)在“学生”表中修改列“姓名”,数据类型为char(6),学号为主键。(3)在“借阅”表中增加列“到期日期”,数据类型为datetime.(4)在“借阅”表中添加一默认约束,借书日期默认值为getdate(),外键约束于“学生”表中的“学号”列。(5)在“学生”表中插入表7-15所示(见课本)的数据。ThankYou!数数据据库库原原理理及及应应用用(SQLServer2005):2024年年7月月19日日第8章 数据查询第第8章章数据查询数据查询任务目标:了解SELECT语句的基本用法;掌握数据筛选及操纵结果集的方法;掌握实现分组汇总的方法;掌握内连接和外连接的用法;会使用一般的
256、嵌套子查询;会使用SSMS实现查询。第第8章章数据查询数据查询8.1 基本查询语句8.2 数据分组与汇总8.3 多表连接查询8.4 子查询8.5 使用SSMS实现简单查询习题与实验8.1基本查询语句8.1.1查询语句的基本格式SELECT ALL | DISTINCTTOP n FROM ,n WHERE GROUP BY ,n HAVING ORDER BY ,n选择列表指定了要返回的列WHERE子句指定限制查询的条件FROM子句知道了返回的行和列所属的表DISTINCT选项从结果集中消除了重复的行,TOPn选项限定了要返回的行数GROUPBY子句是对结果集进行分组HAVING子句是在分组的
257、时候,对字段或表达式指定搜索条件ORDERBY子句对结果集按某种条件进行排序8.1.1查询语句的基本格式【任务8-1】查看所有学生的详细信息任务分析:可以使用“*”代替表中所有的列名。这样的查询也被称为全表查询。在实际应用中,一般不建议使用全表查询。1、全表查询8.1.1查询语句的基本格式【任务8-2】仅向普通用户返回学号与姓名两列。任务分析:使用来指定返回的数据。在中各个字段及表达式的顺序可以与表中的顺序不一致,结果集将按照指定的顺序显示。这个操作不影响表中数据。2查询指定列的数据8.1基本查询语句8.1.2数据筛选使用WHERE子句,可以得到基于搜索条件的行格式:WHERE条件表达式条件表
258、达式包括:比较表达式(=、=、=、)字符串比较表达式(like)逻辑表达式(and、or、not)值的范围判断(betweenand)使用值列表作为搜索条件(in|notin)未知值判断(isNULL|isnotnull)8.1.2数据筛选【任务8-3】查看学号为“0711001”的学生信息。任务分析:可以使用比较运算符来实现判断。字符串类型的数据两端需要加单引号,此外时间日期数据也需要。1简单条件查询8.1.2数据筛选2实现模糊查询字符串比较运算符Like在Like表达式中可使用通配符,常用的有:%,可以替代包含零个或更多字符的任意字符串_,可以替代任何单个字符,可以替代指定的范围或集合内的
259、任何单个字符,可以替代不再指定范围或集合内的任何单个字符表达式表达式返回值返回值LIKE BR%每个以字符串BR开头的字符串LIKE %EN%每个包含字符串EN的字符串LIKE _EN每个以字符串EN结尾,包含三个字符的字符串LIKE CK%每个以字母C或K开头的字符串LIKE C-KING每个以ING结尾且以C到K中任意字符开头的字符串LIKE Mc%每个以字母M开头、第二个字符不是字符C的字符串8.1.2数据筛选【任务8-4】查找所有姓李的学生信息。任务分析:可以使用LIKE运算符实现判断。LIKE一般只适用于字符串与时间日期等数据类型。2实现模糊查询8.1.2数据筛选【任务8-5】查询1
260、987年出生的男生的详细信息。任务分析:两个查询条件的与运算,AND。逻辑运算符的优先级:notandorYear(expression)用来获取指定时间的年份部分3多条件组合查询8.1.2数据筛选【任务8-6】查询1987年到1990年间出生学生信息。任务分析:两个时间段范围内,betweenand。BETWEENAND运算符包含范围内的边缘值相当于(birthday=1987-1-1ANDbirthdayANY大于子查询结果中的某个值(大于最小值)ANY小于子查询结果中的某个值(小于最大值)=ANY等于子查询结果中的某个值(相当于 IN)ANY不等于子查询结果中的某个值ALL大于子查询结果
261、中的所有值(大于最大值) ALL小于子查询结果中的所有值(小于最小值)ALL不等于子查询中的任何一个值8.4.2比较子查询(ALL|ANY)【任务8-31】从学生表中查询大于来自合肥的所有学生年龄的学生信息。1带有ALL谓词的子查询8.4.2比较子查询(ALL|ANY)【任务8-32】查询选修过英语类课程的学生信息2带有ANY谓词的子查询8.4.3相关子查询相关子查询相关子查询中,内层子查询引用了外层查询的表,使得内外查询相关联。使用相关子查询时,内层子查询被反复执行。外层查询有多少记录,内层查询就被执行多少次SQLServer在外层查询的每一条记录执行一次子查询SQLServer将比较内层查
262、询的结果和外层查询的结果,仅返回满足条件的数据8.4.3相关子查询【任务8-33】查询每个班级学分最高的学生信息。1一般相关子查询该语句的执行过程如下:对于每一条记录,外部查询将班级号传递给内部查询;子查询根据外部查询传递来的班级号,计算出该班级学分的最大值;子查询将查询后得到的结过返回给外部查询,外部查询判断查询条件是否符合。如符合,则返回该记录;对主查询的下一条记录重复这样的过程。8.4.3相关子查询EXISTS谓词当子查询至少存在一个返回值时,这个条件为TRUE。【任务8-34】查询从未选修过任何课程的学生信息。2使用EXISTS谓词的相关子查询第第8章章数据查询数据查询8.1 基本查询
263、语句8.2 数据分组与汇总8.3 多表连接查询8.4 子查询8.5 使用SSMS实现简单查询习题与实验8.5使用SSMS实现简单查询1SSMS查询的基本操作8.5使用SSMS实现简单查询2使用SSMS实现基本查询【任务8-35】查询学生表中班级号为“200801”的班级学生学号、姓名信息,并按照学号排序。8.5使用SSMS实现简单查询3使用SSMS实现分组与汇总【任务8-36】查询各班级学生人数,返回班级号和人数两列。8.5使用SSMS实现简单查询4使用SSMS实现连接查询【任务8-37】查询每个学生的学号、姓名及班级。第第8章章数据查询数据查询本章小结:基本查询及数据筛选、结果集的操纵等;聚合函数及数据分组汇总的方法;多表连接查询的方法;子查询的方法。ThankYou!