版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目一
数据库基础任务1数据库系统任务2数据库管理系统任务3数据库设计基础任务4初识SQLServer2019任务1数据库系统任务引入小林是一名大三的学生,这个学期有C语言、数据库和python等关于计算机编程的选修课。小林去查询相关资料,他对数据库比较感兴趣,决定选修数据库。那么,数据库系统都有哪些组成?数据库系统体系结构是什么样呢?知识准备通常把引进了数据库技术的计算机系统称为数据库系统,它的目的是存储和产生所需要的有用信息。这些有用的信息可以是使用该系统的个人或组织的有意义的任何事情,换句话说,是对某个人或组织辅助决策过程中不可少的事情。一、数据库系统的组成数据库系统由数据库、硬件、数据库管理系统、应用程序和人员等部分组成。二、数据库系统体系结构数据库系统有着严谨的体系结构。目前世界上有大量的数据库在运行中,其类型和规模可能相差很大,但是就其体系结构而言却是大体相同的。1.数据库系统的三级模式结构三级结构对数据库的组织从内到外分3个层次描述,分别称为内模式、概念模式和外模式,如图所示。2.3个模式之间的映象前面谈到的三级模式,只有内模式才是真正存储数据的,而模式和外模式仅是一种逻辑表示数据的方法,但却可以放心大胆地使用它们,这是靠DBMS的映象功能实现的。(1)外模式/模式映象(2)模式/内模式映象任务2数据库管理系统任务引入小林已经对数据库系统有了大体的了解,知道了数据库系统的组成。但是,怎么才能把数据库、用户和应用程序联系到一起呢?知识准备数据库管理系统(DBMS)是数据库系统的关键组成部分。任何数据操作,包括数据库定义、数据查询、数据维护、数据库运行控制等都是在DBMS管理下进行的。DBMS是用户与数据库的接口,应用程序只有通过DBMS才能和数据库打交道。一、DBMS的主要功能通常,DBMS的主要功能包括以下几个方面。1.数据库定义DBMS提供数据定义语言(DataDefinitionLanguage,DDL)来定义数据库的三级模式,用概念DDL编写的概念模式称为源概念模式,用外DDL编写的外模式称为源外模式;用内DDL编写的内模式称为源内模式。2.数据操纵DBMS提供数据操纵语言(DataManipulationLanguage,DML)实现对数据库数据的操纵功能,包括检索、插入、修改和删除。3.数据库的运行管理DBMS提供数据库的运行控制好管理功能,即数据的安全性、完整性和并发控制等对数据库运行进行有效的控制和管理,以确保数据库数据正确有效和数据库系统的有效运行。4.数据库的建立和维护包括数据库初始数据的装入,数据库的转储、恢复、重组织,系统性能监视、分析等功能。5.数据库的传输DBMS提供处理数据的传输,实现用户程序与DBMA之间的通信,通常与操作系统协调完成。二、DBMS的组成DBMS大多是由许多“系统程序”所组成的一个集合。每个程序都有自己的功能,一个或几个程序一起完成DBMS的一件或几件工作。各种DBMS的组成因系统而异,一般说来,它由以下几个部分组成。1.语言编译处理程序2.系统运行控制程序3.系统建立、维护程序4.数据字典任务3数据库设计基础任务引入小林现在已经掌握数据库的原理,想进行数据库设计,可是他却无从下手。那么,数据库设计包括哪些步骤呢?每个步骤都有什么要求呢?知识准备数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建议中的核心技术。由于数据库应用系统的复杂性,为了支持相关应用程序的运行,数据库设计就变得异常复杂,因此最佳设计不可能一蹴而就,而只能是一种“反复探寻,逐步求精”的过程。数据库设计内容包括结构特性设计和行为特性设计。前者是指数据库总体概念的设计,它应该是具有最小数据冗余的、能反映不同用户数据需求的、能实现数据共享的系统。后者是指实现数据库用户业务活动的应用程序的设计,用户通过应用程序来访问和操作数据库。按照规范设计的方法,考虑数据库及其应用系统开发全过程,将数据库设计分为以下6个阶段(见图):需要分析阶段
概念结构设计阶段
逻辑结构设计阶段物理结构设计阶
数据库实施阶段
数据库运行和维护阶段数据库设计步骤一、需求分析需求分析的任务是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。1.需求分析的步骤收集和分析用户要求一般可按以下4步进行。(1)分析用户活动
(2)确定系统范围(3)分析用户活动所涉及的数据1)数据流2)加工(又称为数据处理)3)数据文件(又称数据存储)4)数据的源点或终点(4)分析系统数据2.需求分析的方法在众多的需求分析方法中,结构化分析(StructuredAnalysis,SA)方法是一种简单实用的方法。画数据流图的一般步骤如下:(1)首先画系统的输入输出,即先画顶层数据流图。图书借还系统顶层数据流图(2)画系统内部,即画下层数据流图。数据字典有以下4类条目:数据流、数据文件、数据项、基本加工。图书借还系统0层数据流图图书借还系统1层数据流图
在数据字典的定义式中出现的符号二、概念设计概念设计阶段的目标是产生整体数据库概念结构,即概念模式。概念模式是整个组织各个用户关心的信息结构。描述概念结构的有力工具是E-R模型。设计概念结构的E-R模型可采用4种策略。自顶向下:自底向上:由里向外:
混合策略:1.局部应用E-R模型设计(1)实体和描述它的属性间保持为1∶1或n∶1的联系。(2)描述实体的属性本身不能再有需要描述的性质。2.总体概念E-R模型设计综合各部门(或应用)的局部E-R模型,就可以得到系统的总体E-R模型。综合局部E-R模型的方法有两种:多个局部E-R图一次综合。多个局部E-R图逐步综合,用累加的方式一次综合两个E-R图。3.消除不必要的冗余在初步的E-R图中,可能存在冗余的数据或冗余的联系。冗余的数据是指可由基本的数据导出的数据,冗余的联系是由其他的联系导出的。三、逻辑设计E-R模型表示的概念模型是用户的模型。它独立于任何一种数据模型,独立于任何一个具体的数据库管理系统,因此,需要把上述概念模型转换为某个具体的数据库管理系统所支持的数据模型。然后建立用户需要的数据库。由于国内目前使用的数据库系统基本上都是关系型的,因此本书讨论将E-R模型转换为关系模型的方法。1.E-R模型向关系模型的转换(1)若实体间的联系是1∶1联系,可以在两个实体类型转换成的两个关系模式中的任意一个关系模式的属性中,加入另一个关系模式的主码和联系类型的属性。(2)若实体间的联系是1∶n联系,则在n端实体类型转换成的关系模式中,加入1端实体类型转换成的关系模式的主码和联系类型的属性。(3)若实体间的联系是m∶n联系,则将联系类型也转换成关系模式,其属性为两端实体类型的主码加上联系类型的属性,而该主码为两端实体主码的组合。2.关系规范化(1)考查关系模式的函数依赖关系,确定范式等级。(2)对关系模式进行合并或分解。3.关系模式的优化为了提高数据库应用系统的性能,特别是为了提高对数据的存取和存储效率,还必须对上述产生的关系模式进行优化,即修改、调整和重构模式,经过反复多次的尝试和比较,最后得到优化的关系模式。四、物理设计逻辑设计完成后,下一步的任务就是进行系统的物理设计。物理设计是在计算机的物理设备上确定应采取的数据存储结构和存取方法,以及如何分配存储空间等问题。当确定之后,应用系统所选用的DBMS提供的数据定义语言把逻辑设计的结果(数据库结构)描述出来,并将源模式变成目标模式。由于目前使用的DBMS基本上是关系型的,物理设计的主要工作是由系统自动完成的,用户只要关心索引文件的创建即可。尤其是对微机关系数据库用户来说,用户可做的事情很少,用户只需用DBMS提供的数据定义语句建立数据库结构。任务4初识SQLServer2019任务引入小林去图书馆查询相关书籍,如果要想使用SQLServer进行数据库管理,必须先下载和安装SQLServer。那么,怎样下载和安装SQLServer软件?小林安装好SQLServer软件后,却不知道从哪儿进入软件去进行数据库管理,他咨询了学长,才知道还得再安装SQLServerManagementStudio才行。那么怎么安装SQLServerManagementStudio软件呢?怎么使用SQLServerManagementStudio呢?知识准备一、SQLServer2019简介SQLServer2019为所有数据工作负载带来了创新的安全性和合规性功能、业界领先的性能、任务关键型可用性和高级分析,还支持内置的大数据。SQLServer2019基本功能如下:1.数据库引擎数据库引擎是用于存储、处理和保护数据的核心服务,就是数据库管理系统DBMS。2.分析服务分析服务是SQLServer的一个服务组件。3.集成服务SQLServer集成服务(SQLServerIntegrationServices,简称为SSIS)是一个数据集成平台,负责完成有关数据的提取,转换和加载等操作。4.复制技术复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。5.通知服务通知服务是一个应用程序,可以向上百万的订阅者发布个性化的消息,通过文件、邮件等方式向各种设备传递信息。6.报表服务报表服务(ReportingServices,SSRS)基于服务器的解决方案,从多种关系数据源和多维数据源,提取数据,生成报表。7.服务代理SQLServerAgent代理服务,是sqlserver的一个标准服务,作用是代理执行所有sql的自动化任务,以及数据库事务性复制等无人值守任务。8.全文搜索SQLServer的全文搜索(Full-TextSearch)是基于分词的文本检索功能,依赖于全文索引。二、SQLServer2019应用场景通过数据虚拟化打破数据孤岛,通过利用SQLServerPolyBase,SQLServer大数据集群可以在不移动或复制数据的情况下查询外部数据源。在SQLServer中构建数据湖,SQLServer大数据集群包括一个可伸缩的HDFS存储池。它可以用来存储大数据,这些数据可能来自多个外部来源。一旦大数据存储在大数据集群中的HDFS中,您就可以对数据进行分析和查询,并将其与关系兴数据结合起来使用。三、SQLServer2019的下载安装(1)打开SQLServer官方下载页面/zh-cn/sql-server/sql-server-downloads,单击Developer版下方的“立即下载”按钮,下载SQL2019-SSEI-Dev。(2)下载完毕后,运行SQL2019-SSEI-Dev程序,打开如图所示的安装选择对话框,选择“自定义”安装类型。SQLServer2019安装选择对话框(3)打开如图所示的对话框,选择语言为“中文(简体)”,媒体位置为默认,单击“安装”按钮,进行安装。(4)开始下载安装程序包,这里需要等待一段时间,如图1-8所示。选择语言和安装路径下载安装程序包(5)下载完安装程序包后,打开“SQLServer安装中心”对话框,单击“安装”选项,切换到该页面,如图所示,单击“全新SQLServer独立安装或向现有安装添加功能”选项,自动跳转到“SQLServer2019安装”对话框。(6)在“产品密钥”页面中指定可用版本为“Developer”,其他采用默认设置,如图所示,单击“下一步”按钮。“安装”页面“产品密钥”页面(7)跳转到“许可条款”页面,在该页面中勾选“我接受许可条款”复选框,如图所示,单击“下一步”按钮。(8)跳转到“Microsoft更新”页面,采用默认设置,如图所示,单击“下一步”按钮。“许可条款”页面“Microsoft更新”页面(9)跳转到“功能选择”页面,在该页面中根据自己需要,选择所需功能,选的越多,文件越大,所以不建议选用不上的,但是数据库引擎服务和SQLServer复制是必须选的,如图所示,选择完后,单击“下一步”按钮。(10)跳转到“实例配置”页面,选择“默认实例”单选项,其他采用默认设置,如图所示,单击“下一步”按钮。“功能选择”页面“实例配置”页面(11)跳转到“服务器配置”页面,采用默认设置,如图1-15所示,单击“下一步”按钮。(12)跳转到“数据库引擎配置”页面,选择“混合模式(SQLServer身份验证和Windows身份验证)”选项,此时用户名为sa,输入密码,单击“添加当前用户”按钮,将本机添加到列表中,如图所示,单击“下一步”按钮。“服务器配置”页面“数据库引擎配置”页面(13)跳转到“准备安装”页面,显示设置的安装功能,如图所示,如果有问题,单击“上一步”按钮,重新设置,如果没有问题,单击“安装”按钮,开始安装。(14)跳转到“安装进度”页面,显示当前的安装进度,如图所示。
“准备安装”页面显示安装进度(15)安装完成后,跳转到“完成”页面,显示所有的功能状态为成功,如图所示,单击“关闭”按钮,关闭对话框,SQLServer2019安装完成。四、SQLServerManagementStudio(一)SQLServerManagementStudio的下载安装SQLServerManagementStudio用于管理SQLServer基础架构的集成环境。它提供用于配置、监视和管理SQLServer实例的工具。此外,它还提供了用于部署、监视和升级数据层组件的工具以生产查询和脚本。SQLServerManagementStudio将早期版本的SQLServer中所包含的企业管理器、查询分析器和AnalysisManager功能整合到单一的环境中。四、SQLServerManagementStudio(一)SQLServerManagementStudio的下载安装SQLServerManagementStudio用于管理SQLServer基础架构的集成环境。它提供用于配置、监视和管理SQLServer实例的工具。此外,它还提供了用于部署、监视和升级数据层组件的工具以生产查询和脚本。SQLServerManagementStudio将早期版本的SQLServer中所包含的企业管理器、查询分析器和AnalysisManager功能整合到单一的环境中。
设置安装位置安装进度(二)SQLServerManagementStudio的工作界面在开始菜单中单击MicrosoftSQLServerManagementStudio18程序,打开“连接到服务器”对话框,在“身份验证”下拉列表中选择“SQLServer身份验证”,输入登录名为sa,密码为安装SQLServer时设置的密码,如图所示。1.标题栏2.菜单栏3.工具栏4.对象资源管理器5.文档窗口连接到服务器QLServerManagementStudio快捷菜单项目总结项目二
创建和管理数据库任务1创建数据库任务2修改数据库任务3删除数据库任务1创建数据库任务引入小林已经安装好SQLServer和SQLServerManagementStudio软件,并且已经知道了数据库的设计步骤,他设计一个关于教学管理系统的数据库。那么,怎么才能在SQLServer中创建数据库呢?知识准备新安装SQLServer后,默认有下面几个内置的系统数据库:master数据库:该数据库记录了SQLServer系统的所有系统级别信息。tempdb数据库:该数据库保存所有的临时表和临时存储过程。model数据库:该数据库用作在系统上创建的所有数据库的模板。msdb数据库:该数据库提供SQLServer代理程序在调度警报和作业以及记录操作员时使用。一、使用SSMS创建数据库直接建立数据库是在SSMS中进行的,大多数情况下,应该使用这种方式来创建一个数据库,因为图形化界面比SQL命令更容易使用。案例——创建EMIS数据库
建立数据库
“新建数据库”对话框“数据文件”选项卡“定位文件夹”对话框“选项”选择页“文件组”选择页新建EMIS数据库二、使用T-SQL创建数据库创建数据库可以使用CREATEDATABASE语句其中,各参数和子句的说明如下:database_name指出新数据库的名称。FILENAME为“filespec”定义的文件指定操作系统文件名。SIZE子句指定“filespec”中定义的文件的大小。MAXSIZE子句指定“filespec”中定义的文件可以增长到的最大大小。FILEGROWTH子句指定“filespec”中定义的文件的增长增量。使用一条CREATEDATABASE语句即可创建数据库以及存储该数据库的文件。SQLServer分两步实现CREATEDATABASE语句:(1)SQLServer使用model数据库的副本初始化数据库及其元数据。(2)SQLServer使用空页填充数据库的剩余部分,除了包含记录数据库中空间使用情况以外的内部数据页。案例——创建factory数据库要创建一个factory数据库,并设定数据文件为“D:\SQLServer\factory.MDF”,大小为10MB,最大为50MB,每次增长5MB。事务日志文件为“D:\SQLServer\factory日志.MDF”,大小为10MB,最大为20MB,每次增长为5MB。按F5键或单击工具栏中的“执行”按钮,系统提示消息显示命令已成功完成,如图所示。如果新建的数据库在对象资源管理器中没有显示,可在对象资源管理器的数据库节点上右击,在弹出的快捷菜单中选择“刷新”选项,来查看新建立的数据库,如图所示。
成功完成消息
新建数据库任务2修改数据库一、使用SSMS修改数据库在建立数据库后,可以根据需要调整数据库的属性。这些属性影响该数据库的工作方式。设置数据库属性的操作步骤如下:数据库属性对话框的“常规”选项卡“文件”选项卡“文件组”选项卡“选项”选项卡二、使用T-SQL修改数据库在建立数据库后,可根据需要修改数据库的设置。其中,各参数和子句的说明如下:database指出要更改的数据库的名称。ADDFILE子句指定要添加文件。ADDLOGFILE子句指定要将日志文件添加到指定的数据库。REMOVEFILE指出从数据库系统表中删除文件描述并删除物理文件。MODIFYFILE指定要更改给定的文件,更改选项包括FILENAME、SIZE、FILEGROWTH和MAXSIZE。一次只能更改这些属性中的一种。MODIFYNAME=new_dbname,用于重命名数据库。案例——为factory数据库新增数据文件为factory数据库新增一个逻辑名为“factory1”的数据文件,其大小及其最大值分别为10MB和50MB。按F5键或单击工具栏中的“执行”按钮,系统提示消息显示命令已成功完成,如图所示。任务3删除数据库任务引入小林根据需要对已经创建好的数据库进行了修改,但是修改后的数据库有点乱,他想着把数据库直接删除了重新创建。那么,他怎么删除数据库呢?知识准备一、使用SSMS删除数据库当不再需要数据库,或者如果它被移到另一数据库或服务器时,即可删除该数据库。数据库删除之后,文件及其数据都从服务器上的磁盘中删除。一旦删除数据库,它即被永久删除,并且不能进行检索,除非使用以前的备份。当数据库处于以下3种情况之一时不能被删除:用户正在使用此数据库。数据库正在被恢复还原。数据库正在参与复制。(1)在对象资源管理器的“数据库”节点中,选择要删除的数据库,右击鼠标,在弹出的快捷菜单中选择“删除”选项。打开“删除对象”对话框,如图所示。(2)单击“确定”按钮,确认删除。删除数据库的同时,SQLServer会自动删除存储这个数据库的文件。“删除对象”对话框二、使用T-SQL删除数据库删除数据库,可以使用USE和DROP语句。其语法如下:DROPDATABASEdatabase_name其中,“database_name”表示要使用或删除的数据库。项目总结项目实战实战一创建一个名称为company的数据库创建一个company数据库,并设定数据文件为“D:\SQLServer\company.MDF”,初始大小为10MB,每次增长5MB。(1)在对象资源管理器的选择“数据库”节点,右击鼠标,在弹出的快捷菜单上选择“新建数据库”命令,打开“新建数据库”对话框。(2)分别单击数据库文件选项组行数据和日志对应“初始大小”文本框,输入大小为10。(3)分别单击数据库文件选项组行数据和日志对应的“自动增长/最大大小列”按钮,打开“更改company的自动增长设置”对话框,勾选“启用自动增长”复选框,选择“按MB”选项,输入5,其文件大小自动增长为按5MB增长,其他采用默认设置,单击“确定”按钮,返回“新建数据库”对话框。(4)分别单击数据库文件选项组行数据和日志对应的“路径”按钮,打开“定位文件夹”对话框,指定数据库文件和事物日志文件的放置地址,单击“确定”按钮,返回“新建数据库”对话框。(5)分别单击数据库文件选项组行数据和日志对应“文件名”文本框,输入文件名,如图所示。(6)单击“确定”按钮,创建company数据库。设置参数实战一创建一个名称为test的数据库创建一个test数据库,并设定数据文件为“D:\SQLServer\测试数据1.MDF”,大小为10MB,最大为50MB,每次增长5MB。事务日志文件为“D:\SQLServer\测试数据1日志.MDF”,大小为10MB,最大为50MB,每次增长为5MB。按F5键或单击工具栏中的“执行”按钮,系统提示消息显示命令已成功完成。项目三
创建和管理表约束任务1表的构成任务2表的关联任务3表中数据任务4删除表任务1表的构成任务导入小林通过上一个项目的学习创建了一个教学管理系统的数据库,这个数据库中包含了学号、学生姓名、学生籍贯、性别、出生年月、成绩、专业等信息,他根据数据库原理将这些信息拆分成学生信息表、学院表、专业表、课程表和成绩表。那么,怎么建立表结构呢?知识准备一、数据类型在SQLServer中,表存储在数据库中。数据库建立后,接下来就该建立存储数据的表。varbinary[(n|max)]可变长度二进制数据。n的取值范围为1至8,000。max指示最大存储大小是2^31-1个字节。存储大小为所输入数据的实际长度+2个字节。所输入数据的长度可以是0字节。可以按照存放在数据库中的数据的类型对SQLServer提供的系统数据类型进行分类,如表所示。1.整数型整数型包括bigint、int、smallint和tinyint4种。2.小数数据类型也称为精确数据类型,它们由两部分组成,其数据精度保留到最低有效位,所以它们能以完整的精度存储十进制数。3.近似数值型并非数据类型范围内的所有数据都能精确地表示,因此SQLServer提供了用于表示浮点数字数据的近似数值数据类型。4.字符型字符串存储时采用字符型数据类型。SQLServer提供的系统数据类型5.逻辑数值型SQLServer支持逻辑数据类型bit,它可以存储整型数据1、0或NULL。7.二进制数据类型二进制数据由十六进制数表示。8.日期时间类型SQLServer提供了专门的日期时间类型。9.Unicode字符型在SQLServer中,传统上非Unicode数据类型允许使用由特定字符集定义的字符。10.其他数据类型在SQLServer中,还提供了其他几种数据类型二、创建表结构1.使用SSMS创建表结构使用对象资源管理器建立一个表的过程非常简单。案例——建立college表结构快捷菜单
输入第一行更改列属性输入第二行
college表的各个字段设置主键保存college表2.使用T-SQL创建表结构其中,各参数含义如下:table_name:要创建的表的名称。column_name1:第一个字段名称。data_type:指定字段的数据类型。NULL和NOTNULL:限制字段可以为NULL(空),或者不能为NULL(空)。PRIMARYKEY:设置字段为主键。UNIQUE:指定字段具有惟一性。案例——创建一个specialty表。创建表student表course表score表三、修改表结构1.使用SSMS修改表结构表结构的修改和查看的操作步骤是相同的。案例——给student表中加入resume(简历)字段并修改Specialty_ID(专业号)的长度快捷菜单
快捷菜单插入字段resume修改字段长度2.使用T-SQL修改表结构使用ALTERTABLE语句来修改表结构。其中,各参数含义如下:ADD子句:增加字段,后面为属性参数设置。DROP子句:删除限制或者字段。CONSTRAINT表示删除限制;COLUMN表示删除字段。案例——删除specialty表中的Professional_category(专业名称)列按F5键或单击工具栏中的“执行”按钮,删除Professional_category(专业名称)列,如图所示。任务2表的关联任务导入小林通过上一个任务的学习分别创建学生信息表、学院表、专业表、课程表和成绩表的表结构。那么,怎么建立起表之间的关系呢?知识准备建立两个表之间的“一对一”关系。首先要使两个表都具有相同属性的字段,然后定义父表中该字段为主索引或候选索引字段,子表中与其同名的字段为候选索引或主索引。一、建立表关联1.使用SSMS对表进行关联通过SSMS对表进行关联有两种方法。方法一:创建数据库关系图,添加表,然后拖动字段到对应表的字段上建立表之间的关系。方法二:打开要建立表关系的表,然后在表中单击鼠标右键,在弹出的快捷菜单中选择“关系”选项,打开“外键关系”对话框,单击“表和列规范”右侧的按钮,打开“表和列”对话框,设置主键表和外键表,创建两个表之间的连接。案例——给EMIS数据库中的五个表建立关联
快捷菜单
“添加表”对话框
添加表“表和列”对话框“外键关系”对话框建立score表与student表之间的关系提示对话框建立的EMIS数据库中各个表之间的关系保存关系图2.使用T-SQL建立关联表的字段可能参考到其他表的字段,这就需要将两个表建立关联。案例——将worker表中的dno字段关联到depart表的dno字段。按F5键或单击工具栏中的“执行”按钮,系统提示消息显示命令已成功完成,如图所示。将worker表中的dno字段关联到depart表的dno字段。二、修改表关联快捷菜单
添加转折
快捷菜单提示对话框“属性”选项板任务3表中数据任务导入小林已经创建好了学生信息表、学院表、专业表、课程表和成绩表的表结构,并这些表关联起来,但是现在表中还没有任何数据记录,什么也查不到。那么,怎么将数据记录添加到对应的表中呢?知识准备数据的新增和修改与数据的表内容的查看的操作过程是相同的,就是在打开表的内容窗口后,直接输入新的数据或者进行修改。数据一般是通过T-SQL来添加的,也可以通过SSMS来进行。1.使用SSMS输入数据在输入数据时,如果表之间有关联性存在,例如,表A的某个字段参考到表B时,则必须先输入表B的记录,然后才能输入表A与之相关的记录,否则将会出错。案例——给specialty表添加数据
快捷菜单表的编辑窗口specialty表数据2.使用T-SQL输入数据SQL语言提供了INSERT语句来插入一行数据。基本语法如下:INSERT[INTO]table_name[(column_name)]VALUES(列值列表)案例——给college表添加数据college表数据course表数据student表数据score表数据任务4删除表任务导入小林在向表中添加数据时,一不小心把数据输错了,怎么才能将输错的数据删除呢?如果是整个表都有错误,怎么才能将表删除呢?知识准备一、删除表中数据1.使用SSMS输入数据2.使用T-SQL删除表中数据(1)DELETE(2)TruncateTable二、删除数据表有时需要删除表(如要实现新的设计或释放数据库的空间时)。删除表时,表的结构定义、数据、全文索引、约束和索引都永久地从数据库中删除,原来存放表及其索引的存储空间可用来存放其他表。1.使用SSMS删除表表的删除操作很简单,但是要注意的是,如果与其他表存在关联时,则不能直接删除表。要先删除关联,然后再删除表。快捷菜单提示对话框
“删除对象”对话框错误信息
提示对话框2.使用T-SQL删除表DropTable完全删除某个表,包含表的结构属性和索引等。项目总结项目实战实战一在company数据库中建立表(1)选择“company”数据库的“表”节点,右击鼠标,在弹出的快捷菜单中选择“新建表”命令,打开对应的窗口。(2)在第一行中输入列名为deptno,数据类型为int,允许Null值为否。(3)在第二行中输入列名为dname,数据类型为char,长度为14,允许Null值为是。(4)采用相同的方法,输入表中的其他列,结果如图所示。(5)在deptno字段上右击,在弹出的快捷菜单中单击“设置主键”选项,将deptno字段设置为主键。(6)单击工具栏上的“保存”按钮,打开“选择名称”对话框,输入表名称为dept,单击“确定”按钮,即可创建dept表。(7)重复上述步骤,创建emp表(员工表)和salary表(工资表),如图所示。
dept表中的各个字段
emp表
salary表实战二给company数据库中的三个表建立关联(1)在“company”数据库中选择“数据库关系图”节点,右击鼠标,在弹出的快捷菜单中选择“新建数据库关系图”选项,打开“添加表”对话框并新建关系图窗口。(2)选取salary,emp和dept表,单击“添加”按钮,将这三个表添加到界面中,单击“关闭”按钮,关闭对话框。(3)在dept表的deptno字段对应的按钮上按住鼠标左键,并将其拖动到emp表上的deptno字段上,打开“外键关联”和“表和列”对话框,确认主键表为dept,外键表为emp,字段都为deptno,其他采用默认设置,单击“确定”按钮,完成dept表和emp表的关联。(4)依照上面步骤,建立salary表与emp表,最终的关系图如图所示。(5)单击工具栏上的“保存”按钮,打开“选择名称”对话框,输入关系图的名称,这里采用默认名称,单击“确定”按钮,保存建立的关系图。实战三给company数据库中的三个表添加记录(1)在company数据库的表节点下,选择“dbo.dept”表,右击鼠标,在弹出的快捷菜单中选择“编辑前200行”选项。(2)打开dept表,依次填写想要输入的数据内容,如图所示。(3)采用相同的方法,为company数据库的“salary”和“emp”表输入相应的记录,分别如图所示。
dept表的记录
salary表的记录emp表的记录项目四
数据查询任务1简单查询任务2Where子句查询任务3排序查询任务4聚合函数任务5连接查询任务6高级查询任务1简单查询任务导入小林已经建好了数据库、表并录入了数据,他想查某个表中的某一列的信息,或几列的信息。那么,可以使用什么语句来查询所需数据呢?知识准备一、SQL查询语句结构SQL语言中最主要、最核心的部分是它的查询功能。查询语言用来对已经存在于数据库中的数据按照特定的组合、条件表达式或者一定次序进行检索。二、单列查询单列查询可以对表或视图中的某一列的数据进行查看。在SELECT语句中只需要给出一个需要查看的列的列名就可以实现单列的查询。案例——查询college表中college_name列
查询单列数据三、多列查询SELECT语句不但可以对单列进行查询,还可以对多个列进行查询。查询结果中的列顺序,是根据SELECT语句指定的列名的先后顺序显示。案例——查询student表中的name、sex和specialty_ID列按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。
查询多列数据四、所有列查询在对数据表进行查询时,有时需要对表中的列进行查询。如果表中的列过多,在SELECT语句中指定所有列会比较麻烦,使用“*”符号来代替所有的列。案例——查询student表的所有记录按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。查询所有列任务2Where子句查询任务导入小林通过上一个任务的学习已经会进行简单查询,但是他还想查询表中某个范围的信息,或者满足某个条件的信息,例如,查询成绩在60到70分之间的学生或者查询某个专业的所有学生信息。那么,可以使用什么语句来查询所需数据呢?知识准备一、条件查询选择查询就是指定查询条件,只从表提取或显示满足该查询条件的记录。为了选择表中满足查询条件的某些行,可以使用SQL命令中的WHERE子句。比较运算符包涵:=><>=,<=,!=,<>表示(不等于)1.等值条件查询等值条件用来判断用户指定的条件是否与表中的某条数据相同,如果相同则条件满足,将该条记录显示来。等值条件使用运算符“=”来判断。案例——查询专业号(specialty_ID)为0403的学生信息。按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。2.大于条件查询大于条件用来判断表中大于所指定条件的数据。大于条件使用“>”来判断。案例——查询学分大于3分的课程。按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。
专业号(specialty_ID)为0403的学生信息学分大于3分的课程3.大于等于条件查询大于等于条件用来判断表中大于或等于所指定条件的数据。大于条件使用“>=”来判断。案例——查询学分大于等于3分的课程。按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。4.不等于条件查询不等于条件用来查询表中不满足指定条件的所有数据。不等于条件使用“!=”或“<>”来判断。学分大于等于3分的课程案例——查询学分不等于3分的课程。按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。二、逻辑运算WHERE子句的查询条件可以是一个逻辑表达式,它是由多个关系表达式通过逻辑运算符(AND、OR、NOT)连接而成的。案例——查询student表中“0403”专业号且性别为“男”的学生记录。按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。学分不等于3分的课程“0403”专业且性别为“男”的学生记录案例——查询student表中“0403”专业号或性别为“男”的学生记录。按F5键或单击工具栏中的“执行”按钮,执行结果如图4-9所示。案例——查询student表中专业号不是“0403”的“男”学生记录。按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。0403”专业或性别为“男”的学生记录专业号不是“0403”的“男”学生记录三、特殊条件查询1.空值判断:isnull基本语法为:Select*fromtable_namewherecolumn_nameisnull查询列中的空值。2.betweenandBETWEENmANDn表示在指定的范围m~n内。案例——查询score表中成绩在60~70之间的所有记录。按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。3.inIN…表示在指定的列表中。查询成绩在60~70之间的记录案例——查询score表中成绩为75、82或86的记录。按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。4.like模糊查询案例——查询学生表18级的学生信息。按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。成绩为75、82或86的记录查询18级的学生信息任务3排序查询任务导入小林不仅想查询成绩在60到70分之间的学生或者查询某个专业的所有学生信息,还想对表中的信息进行排序,比如对学习成绩进行排名。那么,可以使用什么语句来进行排序查询呢?知识准备通过在SELECT命令中加入ORDERBY子句来控制选择行的显示顺序。ORDERBY子句可以按升序(默认或ASC)、降序(DESC)排列各行,也可以按多个列来排序。案例——按学号升序显示student表的所有记录。按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。以class降序显示student表案例——以course_ID升序、credit降序显示course表的所有记录。按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。
course_ID升序、credit降序显示course表任务4聚合函数任务导入小林不仅要对学生成绩进行排名,还想统计某个专业的人数,还要计算某个学生的期末成绩的平均分以及总分。那么,怎么使用聚合函数统计学生人数呢?怎么计算学生的平均分和总分呢?知识准备聚合函数用于实现数据统计等功能,常用的聚合函数如表所列。案例——查询“0904”专业的学生人数。按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。
查询人数
查询人数案例——查询学生号为“17043219”的平均分。按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。案例——查询学生号为“17043219”的总分。按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。查询平均分查询平均分当WHERE子句、GROUPBY子句和HAVING子句同时出现在一个查询中时,SQL的执行顺序如下:(1)执行WHERE子句,从表中选取行。(2)由GROUPBY对选取的行进行分组。(3)执行聚合函数。(4)执行HAVING子句选取满足条件的分组。案例——查询最低分大于70,最高分小于90的NO列。按F5键或单击工具栏中的“执行”按钮,执行结果如图所示。查询分数在70到90分的学号任务5连接查询任务导入小林想要查找专业所属学院以及学院领导是谁,但是在单个表中没法查询,需要跨表查询。那么,怎么进行连接查询?知识准备在数据查询中,经常涉及到提取两个或多个表的数据,这就需要使用表的连接来实现若干个表数据的联合查询。在一个查询中,当需要对两个或多个表连接时,可以指定连接列,在WHERE子句中给出连接条件,在FROM子句中指定要连接的表、1.等值查询所谓等值连接,是指表之间通过“等于”关系连接起来,产生一个连接临时表,然后对该临时表进行处理后生成最终结果。案例——查询所有专业的specialty_name、college_name和president列。2.非等值查询所谓非等值连接,是指表之间的连接关系不是“等于”,而是其他关系。3.自连接在数据查询中有时需要将同一个表进行连接,这种连接称之为自连接,进行自连接就如同两个分开的表一样,可以把一个表的某行与同一表中的另一行连接起来。案例——查询“01054010”课程的成绩高于“17043219”号学生成绩的所有学生记录,并按成绩从高到低排列。查询成绩并降序排列任务6高级查询任务导入小林在进行数据查询时,需要将另一个查询结果作为条件或数据源,那么,通过什么方法来实现?小林就这个问题去咨询老师,老师告诉他,可以通过子查询方法来实现。那么,什么是子查询呢?子查询中有哪些语句呢?知识准备一、数据汇总为决策支持系统生成聚合事务的汇总报表是一项复杂并且相当消耗资源的工作。SQLServer提供两个灵活且强大的组件,用于生成MicrosoftSQLServerAnalysisServices。这些组件是程序员在执行SQLServer数据的多维分析时应当使用的主要工具。案例——统计各班各课程的平均分二、联接查询通过联接,可以根据各个表之间的逻辑关系从两个或多个表中检索数据。联接表示SQLServer应如何使用一个表中的数据来选择另一个表中的行。1.内联接内联接是用比较运算符比较要联接列的值的联接。在SQL-92标准中,内联接可在FROM或WHERE子句中指定。统计各班各课程的平均分案例——查询各专业的学院名称2.外联接仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。SQLServer对在FROM子句中指定的外联接使用以下关键字:LEFTOUTERJOIN或LEFTJOIN(左向外联接)RIGHTOUTERJOIN或RIGHTJOIN(右向外联接)FULLOUTERJOIN或FULLJOIN(完整外部联接)(1)左向外联接(2)右向外联接(3)完整外部联接查询各专业的学院名称3.交叉联接在这类联接的结果集内,两个表中每两个可能成对的行占一行。交叉联接不使用WHERE子句。案例——采用交叉联接显示所有课程的任课教师
查询所有课程的任课教师姓名三、子查询子查询是一个SELECT查询,它嵌套在SELECT、INSERT、UPDATE、DELETE语句或其他子查询中。子查询也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择。嵌套在外部SELECT语句中的子查询包括以下组件:包含标准选择列表组件的标准SELECT查询。包含一个或多个表或者视图名的标准FROM子句。可选的WHERE子句。可选的GROUPBY子句。可选的HAVING子句。(1)使用IN或NOTIN通过IN(或NOTIN)引入的子查询结果是一列零值或更多值。案例——查询选修“01054010”课程号的学生名单查询选修“01054010”课程号的学生名单(2)比较运算符的子查询子查询可由一个比较运算符(=、<>、>、>=、<、!>、!<或<=)引入。案例——查找成绩比平均分多5分的数据查找成绩比平均分多5分的数据项目总结项目实战实战一查询部门号(deptno)为30的员工信息。实战二以工资升序、员工号降序显示工资表的所有记录。部门号(deptno)为30的员工信息course_ID升序、credit降序显示course表实战三查询工资在5000~6000之间的员工,包括员工号、姓名、工作名称以及工资实战四查找工资比平均工资多300的员工查询工资在5000~6000之间的员工查找工资比平均工资多300的员工项目五
索引和视图任务1索引任务2视图任务1索引任务引入小林在创建大型数据库时发现信息比较混乱,要是能像书的目录一样通过搜索索引找到特定的值就好了。那么,怎么在数据库中创建索引?怎么查看和删除索引?知识准备可以利用索引快速访问数据库表中的特定信息。索引是对数据库表中一个或多个列的值进行排序的结构。索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些指针。数据库使用索引的方式与使用书的目录很相似:通过搜索索引找到特定的值,然后跟随指针到达包含该值的行。在数据库关系图中,可以为选定的表创建、编辑或删除索引/键属性页中的每个索引类型。当保存附加在此索引上的表或包含此表的数据库关系图时,索引同时被保存。一、创建索引SQLServer提供了两种方法来创建索引:直接创建索引:
间接创建索引:在创建索引时,需要指定索引的特征。这些特征包括下面几项:聚集还是非聚集。惟一还是不惟一。单列还是多列。索引中的列顺序为升序还是降序。覆盖还是非覆盖。1.使用SSMS创建索引选择“管理索引”命令“从dbo.student中选择列”对话框2.使用SQL语言创建索引只有表或视图的所有者才能为表创建索引。
设置参数
新建索引案例——在score表中的course_ID列上创建一个非聚集索引。二、查看和删除索引查看和删除索引均有两种方法:使用图形化界面和SQL语言。1.使用SSMS查看和删除索引创建IDX_ID索引“索引属性”对话框2.使用SQL语言查看和删除索引(1)显示索引要查看索引信息,可使用存储过程sp_helpindex。案例——显示student表上的索引信息。(2)删除索引删除索引使用DROPINDEX语句,其语法格式如下:DROPINDEX'table.index|view.index'[,…n]其中,“table”和“view”是索引列所在的表或索引视图;“index”是要除去的索引名称。索引名必须符合标识符的规则。“n”表示可以指定多个索引的占位符。显示索引任务2视图任务引入小林想将数据库中的几个表导出为视图,然后通过视图检索数据和修改数据。那么,怎么在数据库中创建视图?怎么在视图中进行数据检索?怎么通过视图修改数据?知识准备视图是从一个或者多个表中使用SELECT语句导出的。那些用来导出视图的表称为基表。视图也可以从一个或者多个其他视图中产生。导出视图的SELECT语句存放在数据库中,而与视图定义相关的数据并没有在数据库中另外保存一份,因此,视图也称为虚表。视图的行为和表类似,可以通过视图查询表的数据,也可以修改表的数据。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。所以说,视图是一种SQL查询。在数据库中,存储的是视图的定义,而不是视图查询的数据。通过这个定义,对视图查询最终转换为对基表的查询。一、创建视图要使用视图,首先必须创建视图。视图在数据库中是作为一个独立的对象进行存储的。创建视图要考虑如下的原则:
只能在当前数据库中创建视图。视图名称必须遵循标识符的规则,且对每个用户必须惟一。此外,该名称不得与该用户拥有的任何表的名称相同。可以在其他视图和引用视图的过程之上建立视图。定义视图的查询不可以包含ORDERBY、COMPUTE或COMPUTEBY子句以及INTO关键字。不能在视图上定义全文索引。不能创建临时视图,也不能在临时表上创建视图。不能对视图执行全文查询,但是如果查询所引用的表被配置为支持全文索引,就可以在视图定义中包含全文查询。1.使用SSMS创建视图视图保存在数据库中而查询不是,因此创建新视图的过程与创建查询的过程不同。通过SSMS不但可以创建数据库和表,也可以创建视图。快捷菜单
“添加表”对话框添加表到视图选择需要的字段2.使用SQL语句创建视图案例——创建student_specialty视图,其中包括了学生姓名、专业和学院视图中可以使用的列最多可达1024列。另外,在创建视图时,视图的名称存储在sysobjects表中。有关视图中所定义的列的信息添加到syscolumns表中,而有关视图相关性的信息添加到sysdepends表中。另外,CREATEVIEW语句的文本添加到syscomments表中。输入视图名称
创建student_grade视图
创建student_specialty视图二、使用视图通过视图可以检索基表中的数据,也可以通过视图来修改基表中的数据,例如插入、删除和修改记录。1.使用视图进行数据检索视图是基于基表生成的,因此可以用来将需要的数据集中在一起,而不需要的数据则不需要显示。使用视图来检索数据,可以像对表一样来对视图进行操作。案例——使用创建的student_grade视图来查询成绩大于90分的学生案例——使用SSMS查看视图的数据查询成绩大于90分的学生通过视图检索数据2.通过视图修改数据通过视图修改其中的某些行时,SQLServer将把它转换为对基表的某些行的操作。对于简单的视图来说,可能比较容易实现,但是对于比较复杂的视图,可能就不能通过视图进行修改。案例——新建视图specialty1并添加数据案例——更新数据案例——新建视图,删除学号为16053113的数据插入数据后的specialty表
更新后的college表
通过视图删除数据三、删除视图在创建视图后,如果不再需要该视图,或想清除视图定义及与之相关联的权限,可以删除该视图。删除视图后,表和视图所基于的数据并不受影响。任何使用基于已删除视图的对象的查询将会失败,除非创建了同样名称的一个视图。在删除视图时,定义在系统表sysobjects、syscolumns、syscomments、sysdepends和sysprotects中的视图信息也会被删除,而且视图的所有权限也一并被删除。1.使用SSMS删除视图(1)在对象资源管理器中,展开“数据库”文节点,展开该视图所属的数据库,然后单击“视图”节点。(2)这里选择“school”数据库“视图”节点中的st2_degree,右击鼠标,在弹出的快捷菜单中选择“删除”选项,打开“删除对象”对话框,其中的“显示依赖关系”按钮用于查看删除此视图对数据库的影响。(3)单击“确定”按钮即可删除视图;单击“取消”按钮取消删除操作。2.使用SQL删除视图使用DROPVIEW语句可从当前数据库中删除一个或多个视图。项目总结项目实战实战一为emp表的“员工号”和“工作名称”列创建聚集索引,并且强制惟一性(1)因为这里要创建强制唯一性的索引,必须先删除emp中已经存在的索引。(2)在对象资源管理器中选取“factory”数据库,单击工具栏中的“新建查询”按钮创建IDX_no索引实战二创建View1视图,查询所有员工的姓名、员工号、所在部门以及工资
查询所有员工的所在部门以及工资项目六
程序设计任务1程序设计基础任务2事务处理任务3使用游标任务1程序设计基础任务引入小林不仅想查询数据,还想对表中的数据进行运算和控制。那么,怎么利用SQL语言进行编程满足要求呢?编写的程序中会用到什么变量以及流程控制语句呢?知识准备一、变量在SQLServer中,变量分为局部变量和全局变量。全局变量名称前面有两个at符号(@@),由系统定义和维护。局部变量前面有一个at符号(@),由用户定义和使用。1.局部变最局部变量由用户定义,仅在声明它的批处理、存储过程或者触发器中有效。批处理结束后,局部变量将变成无效。各参数含义如下:@local_variable:是变量的名称。data_type:是任何由系统提供的或用户定义的数据类型。案例——查询并输出学院号为03的院长姓名案例——查询score表中选修课程号为“01054010”且成绩高于80的记录
查询03号学院的院长名称查询成绩高于80的记录2.全局变量全局变量记录了SQLServer的各种状态信息,它们不能被显式地赋值或声明,而且不能由用户定义。在SQLServer中,定义了全局变量,如表所示。二、流程控制语句SQL提供称为控制流的特殊关键字,用于控制SQL语句、语句块和存储过程的执行流。这些关键字可用于SQL语句、批处理和存储过程中。控制流语句就是用来控制程序执行流程的语句,使用控制流语句可以在程序中组织语句的执行流程,提高编程语言的处理能力。SQLServer提供的控制流语句如表所示。1.BEGIN…END语句BEGIN…END语句用于将多个SQL语句组合为一个逻辑块。在执行时,该逻辑块作为一个整体被执行。案例——设置变量值设置变量值下面几种情况经常要用到BEGIN和END语句:WHILE循环需要包含语句块。CASE函数的元素需要包含语句块。IF或ELSE子句需要包含语句块。2.IF…ELSE语句使用IF…ELSE语句,可以有条件地执行语句。案例——查询大学语文课程的成绩状况
查询成绩3.CASE语句使用CASE语句可以进行多个分支的选择。CASE具有两种格式:简单CASE格式将某个表达式与一组简单表达式进行比较以确定结果。搜索CASE格式计算一组布尔表达式以确定结果。(1)简单CASE格式案例——查询课程的课程类型(2)搜索CASE格式案例——查询学生成绩查询老师的单位和职称查询学生成绩4.WHILE语句WHILE语句可以设置重复执行SQL语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用BREAK和CONTINUE关键字在循环内部控制WHILE循环中语句的执行。案例——在查询到成绩表中没有学生成绩超过95分的情况下,将所有成绩提高5分,反复执行,直到成绩超过95分。5.GOTO语句GOTO语句可以实现无条件的跳转。高学生成绩案例——输出18032142学号学生的平均成绩6.RETURN语句使用RETURN语句,可以从查询或过程中无条件退出。可在任何时候用于从过程、批处理或语句块中退出,而不执行位于RETURN之后的语句。案例——查询18032142学号学生的成绩和平均分7.WAITFOR语句使用WAITFOR语句,可以在指定的时间或者过了一定时间后,执行语句块、存储过程或者事务。输出18032142学号学生的平均成绩输出18032142学号学生的成绩和平均分任务2事务处理任务引入小林需要对之前做的数据库进行大量的修改,但是他又担心修改后不对还得一点一点恢复,他咨询老师,怎么处理这个问题,老师告诉他可以采用事物处理来解决这一问题。那么,什么是事物,事物又分为哪些类别呢?显示事务有哪些步骤呢?知识准备事务是SQLServer中的单个逻辑单元,一个事务内的所有SQL语句作为一个整体执行,要么全部执行,要么都不执行。一个逻辑工作单元必须有4个属性,称为ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务。原子性(Atomicity):事务必须是原子工作单元。一致性(Consistency):事务在完成时,必须使所有的数据都保持一致状态。隔离性(Isolation):由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。持久性(Durability):事务完成之后,它对于系统的影响是永久性的。一、事务分类按事务的启动和执行方式,可以将事务分为3类:显式事务:也称为用户定义或用户指定的事务,即可以显式地定义启动和结束的事务。自动提交事务:自动提交模式是SQLServer的默认事务管理模式。
隐性事务:当连接以隐性事务模式进行操作时,SQLServer将在提交或回滚当前事务后自动启动新事务。二、显式事务显式事务需要显式地定义事务的启动和结束。它是通过BEGINTRANSACTION、COMMITTRANSACTION、COMMITWORK、ROLLBACKTRANSACTION或ROLLBACKWORK等SQL语句来完成的。1.启动事务启动事务使用BEGINTRANSACTION语句,该语句将@@TRANCOUNT加1。2.结束事务如果没有遇到错误,可使用COMMITTRANSACTION语句成功地结束事务。3.回滚事务如果事务中出现错误,或者用户决定取消事务,可回滚该事务。案例——启动一个事务向college表中插入一个记录,然后回滚该事务4.在事务内设置保存点设置保存点使用SAVETRANSACTION语句案例——在事务内设置保存点查询表
查询表5.标记事务WITHMARK选项使事务名置于事务日志中。将数据库还原到早期状态时,可使用标记事务替代日期和时间。6.不能用于事务的操作在事务处理中,并不是所有的SQL语句都可以取消执行,一些不能撤消的操作(如创建、删除和修改数据库的操作),即使SQLServer取消了事务执行或者对事务进行了回滚,这些操作对数据库造成的影响也是不能恢复的。因此,这些操作不能用于事务处理。这些操作如表所示。7.自动提交事务SQLServer使用BEGINTRANSACTION语句启动显式事务,或隐性事务模式设置为打开之前,将以自动提交模式进行操作。不能用于事务的操作三、隐式事务在为连接将隐性事务模式设置为打开之后,当SQLServer首次执行某些SQL语句时,都会自动启动一个事务,而不需要使用BEGINTRANSACTION语句。任务3使用游标任务引入小刘老师让小林帮忙从学校的数据库中查询他们专业前十名的学生信息并打印出来,可是小林查询出来是所有学生信息按名次排名,这时小林想到用游标来提取数据。那么,怎么使用游标呢?知识准备关系数据库中的操作会对整个行集产生影响。由SELECT语句返回的行集包括所有满足该语句WHERE子句中条件的行。由语句所返回的这一完整的行集称为结果集。应用程序,特别是交互式联机应用程序,并不总能将整个结果集作为一个单元来有效地处理。这些应用程序需要一种机制,以便每次处理一行或一部分行。游标就是用来提供这种机制的结果集扩展。游标包括以下两个部分:游标结果集(CursorResultSet):由定义该游标的SELECT语句返回的行的集合。游标位置(CursorPosition):指向这个集合中某一行的指针。游标使得SQLServer语言可以逐行处理结果集中的数据,游标具有以下优点:允许定位在结果集的特定行。从结果集的当前位置检索一行或多行。支持对结果集中当前位置的行进行数据修改。为由其他用户对显示在结果集中的数据库数据所做的更改提供不同级别的可见性支持。提供脚本、存储过程和触发器中使用的访问结果集中的数据的SQL语句。使用游标的典型过程如下:(1)声明SQL变量包含游标返回的数据。(2)使用DECLARECURSOR语句把SQL游标与一个SELECT语句相关联。(3)使用OPEN语句执行SELECT语句并生成游标。(4)使用FETCHINTO语句提取单个行,并把每列中的数据转移到指定的变量中。(5)结束游标时使用CLOSE语句。
游标的典型使用过程1.声明游标声明游标使用DECLARECURSOR语句2.打开游标打开游标使用OPEN语句3.从打开的游标中提取行游标声明,而且被打开以后,游标位置位于第一行。4.关闭游标关闭游标使用CLOSE语句5.释放游标释放游标将释放所有分配给此游标的资源。@@FETCH_STATUS()函数的取值及其含义案例——使用游标提取表中的第一行数据案例——使用游标打印一个简单的学生信息表
提取第一行数据打印学生信息表项目总结项目实战实战一输出部门号为20的员工工资水平实战二启动一个事务向dept表中插入一个记录,然后回滚该事务输出部门号20的员工工资水平
查询表项目七
存储过程和触发器任务1存储过程任务2触发器任务1存储过程任务引入小林正在创建一个大型数据库系统,其中创建完成某一特定功能的存储过程。那么,怎么创建存储过程?怎么使用存储过程?存储过程有哪些参数呢?知识准备存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其他强大的编程功能。存储过程可以使得数据库的管理、显示关于数据库及其用户信息的工作容易得多。存储过程包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以出于任何使用SQL语句的目的来使用存储过程,它具有以下优点:可以在单个存储过程中执行一系列SQL语句。可以从自己的存储过程内引用其他存储过程,这可以简化一系列复杂语句。存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快,且能减少网络通信的负担。一、创建存储过程要使用存储过程,首先要创建一个存储过程。使用CREATEPROCEDURE语句创建存储过程。其中,各参数含义如下:procedure_name:新存储过程的名称。number:是可选的整数,用来对同名的过程分组,以便用一条DROPPROCEDURE语句将同组的过程一起除去。@parameter:过程中的参数。data_type:参数的数据类型。VARYING:指定作为输出参数支持的结果集(由存储过程动态构造,内容可以变化)。仅适用于游标参数。Default:参数的默认值。OUTPUT:表明参数是返回参数。{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}:RECOMPILE表明SQLServer不会缓存该过程的计划,该过程将在运行时重新编译。ENCRYPTION表示SQLServer加密syscomments表中包含CREATEPROCEDURE语句文本的条目。FORREPLICATION:指定不能在订阅服务器上执行为复制创建的存储过程。sql_statement:过程中要包含的任意数目和类型的SQL语句。二、执行存储过程执行存储过程使用EXECUTE语句其中,各参数含义如下:@return_status:是一个可选的整型变量,保存存储过程的返回状态。procedure_name:是调用的存储过程的名称。number:是可选的整数,用于将相同名称的过程进行组合,使得它们可以用一句DROPPROCEDURE语句除去。该参数不能用于扩展存储过程。@procedure_name_var:是局部定义变量名,代表存储过程名称。@parameter:是过程参数,在CREATEPROCEDURE语句中定义。value:是过程中参数的值。OUTPUT:指定存储过程必须返回一个参数。DEFAULT:根据过程的定义,提供参数的默认值。案例——创建存储过程stud_grade,用于检索所有学生的成绩记录案例——使用系统存储过程查看EMIS数据库和学生表的相关信息检索所有学生的成绩记录
查看EMIS数据库和学生表的相关信息三、存储过程的参数在创建和使用存储过程时,其参数是非常重要的。下面详细讨论存储过程的参数传递和返回。1.使用参数在调用存储过程时,有两种传
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工现场消防风险隐患排查报告
- 建筑三角形倒角施工技巧与注意点
- 桩基施工技术方案及安全管理
- 公路施工质量监控技术指导
- 2026江西兴宜全过程项目咨询有限公司招聘1人笔试历年常考点试题专练附带答案详解
- 2026江苏连云港市东海水晶产业发展集团有限公司招聘专业技术人员笔试笔试历年典型考点题库附带答案详解
- 2026江苏无锡市江阴百益建材有限公司招聘7人笔试历年典型考点题库附带答案详解
- 2025湖南岳阳市汨罗市市政建设有限公司招聘正式员工笔试历年备考题库附带答案详解
- 2025江西长旅数智科技有限公司招聘2人笔试历年备考题库附带答案详解
- 2025建融金服(河南)科技信息服务有限公司甘肃分公司招聘30人笔试历年备考题库附带答案详解
- HY/T 107-2017卷式反渗透膜元件测试方法
- GB/T 39997-2021加油站埋地用热塑性塑料复合管道系统
- GB/T 1412-2005球墨铸铁用生铁
- GA/T 1449-2017法庭科学印章印文检验技术规程
- 公司法课件培训讲义
- 《颜氏家训》课件
- 项目管理教案完整版
- 抗感染治疗药物教学课件
- 五年级语文下册第三单元【教材解读】课件
- 解读十大经方PPT课件
- 水泵检修培训课件水泵检修培训
评论
0/150
提交评论