《Access和SQLServer数据库基础.ppt》由会员分享,可在线阅读,更多相关《Access和SQLServer数据库基础.ppt(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第7章 Access和SQL Server数据库基础本章内容:关系型数据库,本章内容:关系型数据库,Access 2003Access 2003使用基础,使用基础,SQL Server 2008SQL Server 2008使用基础,在使用基础,在Visual StudioVisual Studio中创建中创建SQL ServerSQL Server数据库。数据库。本章重点:本章重点:SQL Server 2008SQL Server 2008使用基础,包括数据使用基础,包括数据库和表的创建、常用库和表的创建、常用T-SQLT-SQL语句的使用、存储过语句的使用、存储过程、数据库的分离和附加。
2、程、数据库的分离和附加。7.1 关系型数据库n n1关系型数据库的分类n n为了更有效地使用关系型数据库,通常将其设计为不同的类型,而且在具体创建数据库的过程中还应遵循一定的规则,以使数据库中的数据更便于查询和使用。n n关系型数据库一般可分为两类:一类是桌面数据库,如Access、FoxPro、Excel等;另一类是客户-服务器数据库,如SQL Server、Oracle等。n n2表、记录和字段n n表(Table)由若干用于描述客观对象多个特征的记录(Record,也称为行Row)组成。表中每一列(Column)表示客观对象的同一特征,也称为字段(Field)。举例见表7-1、表7-2和
3、表7-3。n n3 3关键字关键字n n关键字是表中某个或多个字段,可以是唯一的,也可以是关键字是表中某个或多个字段,可以是唯一的,也可以是非唯一的。唯一关键字可以指定为主关键字,用来唯一标非唯一的。唯一关键字可以指定为主关键字,用来唯一标识一个记录。例如,识一个记录。例如,“学号学号”可以指定为主关键字(也称可以指定为主关键字(也称为为“主键主键”),因为它唯一地标识了一个学生基本情况记),因为它唯一地标识了一个学生基本情况记录。录。n n4 4索引索引n n为了更快地访问数据,大多数数据库都使用关键字对表进为了更快地访问数据,大多数数据库都使用关键字对表进行索引。也就是按关键字对数据库进行
4、排序,并建立一张行索引。也就是按关键字对数据库进行排序,并建立一张索引表,每个索引输入项都指向该记录在数据库中的行。索引表,每个索引输入项都指向该记录在数据库中的行。n n5 5关系关系n n数据库中可以包含多张表,表与表之间可以用不同的方式数据库中可以包含多张表,表与表之间可以用不同的方式相互关联。这样做可以充分利用数据库中现有数据,减少相互关联。这样做可以充分利用数据库中现有数据,减少数据的冗余。数据的冗余。7.2 常用数据库产品简介n n1Microsoft SQL Server数据库管理系统n n2Oracle数据库管理系统n n3Microsoft Access数据库管理系统n n4
5、MySQL数据库管理系统7.3 Access 2003使用基础n n7.3.1 创建创建Access数据库数据库n nAccess的数据库是一个容器,用于存储数据库应用系统的其他对象。Access数据库文件的扩展名是.mdb。创建一个Access数据库,就创建了一个以扩展名为.mdb的文件,并存储了所有数据库子对象管理的细节。n n【例7-1】创建一个Student数据库。n n7.3.2 Access7.3.2 Access表表表表n n1 1表结构表结构n n表结构主要包括:字段名称、数据类型和字段属性设置。表结构主要包括:字段名称、数据类型和字段属性设置。表结构主要包括:字段名称、数据类
6、型和字段属性设置。表结构主要包括:字段名称、数据类型和字段属性设置。n n(1 1)字段名称)字段名称)字段名称)字段名称n n字段即表的列,字段名称即表的列名称。字段名称是用来字段即表的列,字段名称即表的列名称。字段名称是用来字段即表的列,字段名称即表的列名称。字段名称是用来字段即表的列,字段名称即表的列名称。字段名称是用来标识列的。标识列的。标识列的。标识列的。n n字段名称可以是英文名称,也可以是汉语名称,但都得符字段名称可以是英文名称,也可以是汉语名称,但都得符字段名称可以是英文名称,也可以是汉语名称,但都得符字段名称可以是英文名称,也可以是汉语名称,但都得符合合合合AccessAcc
7、ess数据库对象命名的数据库对象命名的数据库对象命名的数据库对象命名的 规则:规则:规则:规则:n n 字段名称可以包含字段名称可以包含字段名称可以包含字段名称可以包含1 16464个字符。个字符。个字符。个字符。n n 字段名称可以包含字母、数字、汉字和空格,以及其他字段名称可以包含字母、数字、汉字和空格,以及其他字段名称可以包含字母、数字、汉字和空格,以及其他字段名称可以包含字母、数字、汉字和空格,以及其他特殊符号(除了特殊符号(除了特殊符号(除了特殊符号(除了“.”“.”、惊叹号、惊叹号、惊叹号、惊叹号“!”“!”、方括号、方括号、方括号、方括号“”“”之外)之外)之外)之外)。n n
8、字段名称不能使用前导空格或控制符(即字段名称不能使用前导空格或控制符(即字段名称不能使用前导空格或控制符(即字段名称不能使用前导空格或控制符(即ASCIIASCII码值为码值为码值为码值为0 03131的字符)。的字符)。的字符)。的字符)。n n 字段名称不能以空格字符开头。字段名称不能以空格字符开头。字段名称不能以空格字符开头。字段名称不能以空格字符开头。n n(2)数据类型n n可以根据不同字段的需要,选择合适的数据类型。Access提供了10种数据类型,见 表7-4。n n(3 3)字段属性)字段属性n n字段属性不是必选的。字段属性分为两组:字段属性不是必选的。字段属性分为两组:“常
9、规常规”和和“查阅查阅”。不同的数据类型,每个分组的选项不一样。不同的数据类型,每个分组的选项不一样。n n“常规常规”属性(属性(“常规常规”选项卡)。选项卡)。n n常用的常用的“常规常规”属性有以下几种。属性有以下几种。n n字段大小字段大小n n只有当字段的数据类型是文本和数字时,字段大小属性才只有当字段的数据类型是文本和数字时,字段大小属性才可以设置。可以设置。n n如果是文本型字段,则字段大小用来设定文本的长度,取如果是文本型字段,则字段大小用来设定文本的长度,取值在值在1 1255255之间。默认值是之间。默认值是5050。n n如果是数字型字段,则字段又可以选择多种子类型,见表
10、如果是数字型字段,则字段又可以选择多种子类型,见表7-57-5。n n格式n n“格式”属性用于对不同数据类型字段使用不同的设置,没有默认值,见表7-6。n n输入法模式n n输入法模式属性仅针对文本数据类型的字段有效,有3个选项:随意、输入法开启、输入法关闭,分别表示:保持原汉字输入法状态、启动汉字输入法和关闭汉字输入法。默认值是输入法开启。n n输入掩码n n输入掩码属性可以使数据的输入变得更为容易,并且可以控制用户在文本框类型控件中的输入值。定义输入掩码属性需要用到多种字符,见表7-7。n n标题标题n n标题属性值用以取代字段名称在显示表中数据时显示的内标题属性值用以取代字段名称在显示
11、表中数据时显示的内容,也就是给字段名称起了个别名。没有默认值。容,也就是给字段名称起了个别名。没有默认值。n n例如,若表的字段名称是例如,若表的字段名称是“name”“name”,它的标题属性值为,它的标题属性值为“姓名姓名”,则在显示记录时,该字段的显示名称为,则在显示记录时,该字段的显示名称为“姓名姓名”。n n默认值默认值n n默认值属性可以在用户没有输入数据时,自动获取指定数默认值属性可以在用户没有输入数据时,自动获取指定数据。没有默认值。据。没有默认值。n n例如,性别字段可以设置默认值属性为例如,性别字段可以设置默认值属性为“男男”,当用户没,当用户没有输入性别数据时,系统将自动
12、赋值有输入性别数据时,系统将自动赋值“男男”。n n有效性规则有效性规则n n有效性规则属性用于指定对输入到字段中的数据的特殊规定取值。如有效性规则属性用于指定对输入到字段中的数据的特殊规定取值。如果输入的数据违反该规则,则会向用户提示出错信息,不允许用户继果输入的数据违反该规则,则会向用户提示出错信息,不允许用户继续操作。没有默认值。续操作。没有默认值。n n例如,性别字段的有效性规则可以设置为:例如,性别字段的有效性规则可以设置为:“=“=男男 Or=Or=女女”。这。这样,用户只能在该字段中输入样,用户只能在该字段中输入“男男”或或“女女”,不能输入其他值。,不能输入其他值。n n有效性
13、文本有效性文本n n当用户输入的数据违反有效性规则时,需要向用户提示有效性文本设当用户输入的数据违反有效性规则时,需要向用户提示有效性文本设置的信息。有效性文本属性和有效性规则属性原则上应该一起设置。置的信息。有效性文本属性和有效性规则属性原则上应该一起设置。没有默认值。没有默认值。n n例如,性别字段的有效性文本可以设置为:例如,性别字段的有效性文本可以设置为:性别只能是男或女性别只能是男或女。如。如果用户输入的数据违反规则,则会向用户提示这个出错信息。果用户输入的数据违反规则,则会向用户提示这个出错信息。n n必填字段必填字段n n必填字段属性取值只有必填字段属性取值只有“是是”和和“否否
14、”两个选项。若选择两个选项。若选择“是是”,则表示该字段可以不输入任何数据;若选择,则表示该字段可以不输入任何数据;若选择“否否”,则表示该字段必须输入数据。默认值为,则表示该字段必须输入数据。默认值为“否否”。n n允许空字符串允许空字符串n n允许空字符串属性取值也只有允许空字符串属性取值也只有“是是”和和“否否”两个选项。两个选项。若选择若选择“是是”,则表示该字段可以为空;若选择,则表示该字段可以为空;若选择“否否”,则表示该字段必须输入数据,不能为空。默认值为则表示该字段必须输入数据,不能为空。默认值为“是是”。n n索引索引n n索引是数据库随机检索的常用手段,它实际上就是记录的索
15、引是数据库随机检索的常用手段,它实际上就是记录的关键字与其相应地址的对应表。使用索引可以加快查询速关键字与其相应地址的对应表。使用索引可以加快查询速度,并能保证行的唯一性。若字段设置有索引属性,则记度,并能保证行的唯一性。若字段设置有索引属性,则记录将以该字段的升序或降序显示。录将以该字段的升序或降序显示。n n索引属性取值有索引属性取值有“无无”、“有(有重复)有(有重复)”和和“有(无重有(无重复)复)”3”3个选项。当选择个选项。当选择“无无”,则该字段没有索引;当,则该字段没有索引;当选择选择“有(有重复)有(有重复)”,则在该字段创建一个非唯一性索,则在该字段创建一个非唯一性索引,即
16、该字段取值可以重复;当选择引,即该字段取值可以重复;当选择“有(无重复)有(无重复)”,则在该字段创建一个唯一性索引,即该字段取值不可以重则在该字段创建一个唯一性索引,即该字段取值不可以重复。默认值是为复。默认值是为“无无”。n nUnicodeUnicode压缩压缩n nUnicodeUnicode压缩属性取值也仅有压缩属性取值也仅有“是是”和和“否否”两个选项。当两个选项。当选择选择“是是”,表示该字段可以存储和显示多种语言的文本;,表示该字段可以存储和显示多种语言的文本;当选择当选择“否否”,表示该字段不能存储和显示多种语言的文,表示该字段不能存储和显示多种语言的文本。默认值是为本。默认
17、值是为“是是”。n n小数位数小数位数n n如果字段数据类型是数字,则有小数位数属性,可以让用如果字段数据类型是数字,则有小数位数属性,可以让用户定义数字的小数的位数。当然了数字数据必须首先设置户定义数字的小数的位数。当然了数字数据必须首先设置为单精度型或双精度型,该属性才有意义。默认值是为为单精度型或双精度型,该属性才有意义。默认值是为“自动自动”。n n“查阅查阅”属性(属性(“查询查询”选项卡)。选项卡)。n n“查阅查阅”属性用于对指定数据类型设定窗体显示控件类型。属性用于对指定数据类型设定窗体显示控件类型。只有文本、数字、是只有文本、数字、是/否这否这3 3种数据类型可以设定窗体显示
18、种数据类型可以设定窗体显示控件类型。可以将这些数据类型的显示设定为文本框、列控件类型。可以将这些数据类型的显示设定为文本框、列表框、组合框或复选框。表框、组合框或复选框。n n2创建表n n3修改表结构n n4设置主键n n5向表中输入记录n n6设置关系7.4 SQL Server 2008使用基础n n7.4.1 创建创建SQL Server数据库数据库n n1数据库文件n nSQL Server 2008数据库有3种类型的文件。n n(1)主数据文件(Primary)n n(2)二级数据文件(Secondary)n n(3)事务日志文件n n2 2创建数据库创建数据库n n在在SQL S
19、erver Management StudioSQL Server Management Studio中创建数据库主要中创建数据库主要有两种方式:一种是在对象资源管理器中创建数有两种方式:一种是在对象资源管理器中创建数据库,另一种是在据库,另一种是在“查询窗口查询窗口”中执行中执行T-SQLT-SQL语语句创建数据库。句创建数据库。n n(1 1)在对象资源管理器中创建数据库)在对象资源管理器中创建数据库n n可以在对象资源管理器中的图形界面环境下创建可以在对象资源管理器中的图形界面环境下创建数据库。数据库。n n【例【例7-47-4】下面以创建名为】下面以创建名为TestDBTestDB数据
20、库为例,介数据库为例,介绍在绍在SQL Server Management StudioSQL Server Management Studio中使用对象资源中使用对象资源管理器创建数据库的过程。管理器创建数据库的过程。n n创建数据库的创建数据库的T-SQLT-SQL语句是语句是CREATE DATABASECREATE DATABASE,其基本语法格式如,其基本语法格式如下:下:n nCREATE DATABASE database_nameCREATE DATABASE database_namen n ON ON n n PRIMARY PRIMARYn n (n n NAME=log
21、ical_file_name,NAME=logical_file_name,n n FILENAME=os_file_name FILENAME=os_file_namen n )n n LOG ON LOG ONn n (n n NAME=logical_file_name,NAME=logical_file_name,n n FILENAME=os_file_name FILENAME=os_file_namen n ););n n3 3删除数据库删除数据库n n执行删除数据库操作将从执行删除数据库操作将从SQL ServerSQL Server实例中删除数实例中删除数据库,并删除该数据库
22、使用的物理磁盘文件。不据库,并删除该数据库使用的物理磁盘文件。不能删除系统数据库。能删除系统数据库。n n(1 1)在对象资源管理器中删除数据库)在对象资源管理器中删除数据库n n(2 2)在查询编辑器中用)在查询编辑器中用T-SQLT-SQL语句删除数据库语句删除数据库n n基本语法格式如下:基本语法格式如下:n nDROP DATABASE database_name;DROP DATABASE database_name;n n参数说明如下。参数说明如下。n ndatabase_namedatabase_name:指定要删除的数据库的名称。:指定要删除的数据库的名称。n n例如,要删除例
23、如,要删除TestDBTestDB数据库,使用下面代码:数据库,使用下面代码:n nDROP DATABASE TestDB;DROP DATABASE TestDB;n n7.4.2 7.4.2 表的操作表的操作表的操作表的操作n n1 1数据类型类别数据类型类别n nSQL ServerSQL Server中的数据类型可以归纳为下列类别:精确数值、中的数据类型可以归纳为下列类别:精确数值、近似数值、日期和时间、字符串、近似数值、日期和时间、字符串、UnicodeUnicode字符串、二进字符串、二进制字符串及其他数据类型。制字符串及其他数据类型。n n在在SQL ServerSQL Ser
24、ver中,根据其存储特征不同,某些数据类中,根据其存储特征不同,某些数据类型被指定为属于下列各组。型被指定为属于下列各组。n n大值数据类型:大值数据类型:varcharvarchar(maxmax)、)、nvarcharnvarchar(maxmax)和)和varbinaryvarbinary(maxmax)。)。n n大型对象数据类型:大型对象数据类型:texttext、ntextntext、imageimage、varcharvarchar(maxmax)、)、nvarcharnvarchar(maxmax)、)、varbinaryvarbinary(maxmax)和)和xmlxml。n
25、 n2创建表n n在当前打开的数据库中创建表。n n(1)在对象资源管理器中创建表n n使用SQL Server Management Studio中的对象资源管理器创建表。n n(2 2)在查询编辑器中用)在查询编辑器中用T-SQLT-SQL语句创建表语句创建表n n创建表的创建表的T-SQLT-SQL语句是语句是CREATE TABLECREATE TABLE,其基本,其基本语法格式如下:语法格式如下:n nCREATE TABLE table_nameCREATE TABLE table_namen n (n n column_name type_name PRIMARY KEY|col
26、umn_name type_name PRIMARY KEY|UNIQUE NULL|NOT NULL,UNIQUE NULL|NOT NULL,n n column_name type_name NULL|NOT column_name type_name NULL|NOT NULL,NULL,n n n n ););n n【例【例7-77-7】用】用T-SQLT-SQL语句,在语句,在StudentDBStudentDB数据库中按表数据库中按表7-27-2创建表创建表CourseCourse。n n用用T-SQLT-SQL语句在语句在StudentDBStudentDB数据库中创建数据库中
27、创建CourseCourse表的步骤如下。表的步骤如下。n n 在在SQL Server Management StudioSQL Server Management Studio中,单击工具栏中的中,单击工具栏中的“新建查询新建查询”按钮,在右侧窗格按钮,在右侧窗格中显示中显示“查询分析器查询分析器”。n n 在查询编辑器中输入如下代码:在查询编辑器中输入如下代码:n nUSE StudentDB -USE StudentDB -打开数据库打开数据库StudentDBStudentDBn nGOGOn nCREATE TABLE Course -CREATE TABLE Course -表名
28、表名n n (n n CourseID char(4)PRIMARY KEY NOT NULL,-CourseID char(4)PRIMARY KEY NOT NULL,-课程编号,主键,非空课程编号,主键,非空n n CourseName nchar(10),-CourseName nchar(10),-课程名课程名n n Period smallint,-Period smallint,-学时学时n n Credit smallint,-Credit smallint,-学分学分n n ););n nGOGOn n 单击查询编辑器上方的单击查询编辑器上方的“执行执行”按钮或按按钮或按F5
29、F5键,执行创建的表代码。键,执行创建的表代码。n n在对象资源管理器中可以看到,在对象资源管理器中可以看到,StudentDBStudentDB数据库下已经创建的数据库下已经创建的CourseCourse表。表。n n 单击查询编辑器右上角的单击查询编辑器右上角的“关闭关闭”按钮按钮 ,关闭查询编辑器。,关闭查询编辑器。n n3 3修改表修改表n n(1 1)修改表结构)修改表结构n n在对象资源管理器中,右键单击需要修改表的表名,显示在对象资源管理器中,右键单击需要修改表的表名,显示快捷菜单,如图快捷菜单,如图7-317-31所示,从快捷菜单中执行所示,从快捷菜单中执行“设计设计”命命令,
30、右侧窗格将显示表设计视图,可以像创建表一样输入令,右侧窗格将显示表设计视图,可以像创建表一样输入表各列的属性。表各列的属性。n n(2 2)修改表名)修改表名n n在对象资源管理器中,右键单击需要修改表的表名,从快在对象资源管理器中,右键单击需要修改表的表名,从快捷菜单中执行捷菜单中执行“重命名重命名”命令,则该表名处出现插入点光命令,则该表名处出现插入点光标,允许输入新的表名。标,允许输入新的表名。n n4 4删除表删除表n n在在“对象资源管理器对象资源管理器”中,右键单击需要删除的表名,从中,右键单击需要删除的表名,从快捷菜单中执行快捷菜单中执行“删除删除”命令,将删除该表。命令,将删除
31、该表。n n7.4.3 7.4.3 记录的操作记录的操作记录的操作记录的操作n n记录操作包括向表中插入新记录、修改记录和删记录操作包括向表中插入新记录、修改记录和删除记录。除记录。n n1 1通过表记录视图操作记录通过表记录视图操作记录n n2 2用用T-SQLT-SQL添加记录添加记录n n将新行添加到表中的将新行添加到表中的T-SQLT-SQL语句是语句是INSERT INTOINSERT INTO,其基本语法格式如下:,其基本语法格式如下:n nINSERT INTO table_nameINSERT INTO table_namen n (column_name,column_nam
32、e)VALUES (column_name,column_name)VALUES(expression,expression);(expression,expression);n n【例【例7-87-8】用】用T-SQLT-SQL语句,在语句,在StudentDBStudentDB数据库中,按表数据库中,按表7-27-2中的数据向表中的数据向表CourseCourse中添中添 加行。加行。n n用用T-SQLT-SQL语句在语句在StudentDBStudentDB数据库中向数据库中向CourseCourse表添加记录的步骤如下。表添加记录的步骤如下。n n 在在SQL Server Mana
33、gement StudioSQL Server Management Studio中,单击工具栏中的中,单击工具栏中的“新建查询新建查询”按钮,按钮,在右侧窗格中显示查询分析器。在右侧窗格中显示查询分析器。n n 在在“查询编辑器查询编辑器”中输入如下代码:中输入如下代码:n nUSE StudentDB -USE StudentDB -打开数据库打开数据库StudentDBStudentDBn nGOGOn nINSERT INTO Course -INSERT INTO Course -指定列名,添加一行指定列名,添加一行n n (CourseID,CourseName,Period,Cr
34、edit)VALUES(1102,(CourseID,CourseName,Period,Credit)VALUES(1102,英语英语1,80,6);1,80,6);n nGOGOn nINSERT INTO Course -INSERT INTO Course -按表中列的顺序,添加按表中列的顺序,添加3 3行行n n VALUES(3205,VALUES(3205,数据结构数据结构,70,5),(3206,70,5),(3206,数据库技术数据库技术,80,6),(3208,C#,80,6),(3208,C#,60,4);60,4);n nSELECT*FROM Course -SELE
35、CT*FROM Course -显示显示CourseCourse表中的所有记录表中的所有记录n nGOGOn n3用T-SQL修改记录n n使用UPDATE语句可以按照某个条件修改表中的现有行的列的值。n n将新行添加到表中的T-SQL语句是UPDATE,其基本语法格式如下:n nUPDATE table_namen n SET column_name=expression,column_name=expression n n WHERE search_condition ;n n【例【例7-97-9】用】用T-SQLT-SQL语句,在语句,在StudentDBStudentDB数据库中,修改
36、表数据库中,修改表StudentInfoStudentInfo、CourseCourse中的数据。中的数据。n n在下面的代码示例中,将在下面的代码示例中,将StudentInfoStudentInfo表中对符合指定学号表中对符合指定学号的行,更改出生日期和的行,更改出生日期和EmailEmail列的值:列的值:n nUPDATE StudentInfoUPDATE StudentInfon n SET DateOfBirth=1991-10-28,Email=L SET DateOfBirth=1991-10-28,Email=Ln n WHERE StudentID=20090260300
37、6;WHERE StudentID=200902603006;n n执行的结果如图执行的结果如图7-377-37所示。所示。n n在下面示例代码中,没有指定在下面示例代码中,没有指定WHEREWHERE子句,将更新所有子句,将更新所有行。行。n nUPDATE CourseUPDATE Coursen n SET Period=Period SET Period=Period 1010n n4用T-SQL删除记录n n使用DELETE语句可以按照某个条件删除表中的行。n n将新行添加到表中的T-SQL语句是UPDATE,其基本语法格式如下:n nDELETEn n FROM table_nam
38、en n WHERE search_condition ;n n【例7-10】使用T-SQL语句从StudentMark表中删除Score列的值小于60的所有行。n nUSE StudentDB -打开数据库StudentDBn nGOn nDELETE FROM StudentMarkn n WHERE Score=1991-6-1 AND Sex=WHERE DateOfBirth=1991-6-1 AND Sex=女女 n n 使用使用SELECT INTOSELECT INTO创建表。下面语句将在创建表。下面语句将在StudentDBStudentDB数据库中创建一个名为数据库中创建一
39、个名为#Stu#Stu的的临时表,临时表中的行满足临时表,临时表中的行满足StudentIDStudentID列值的前列值的前9 9位是位是200902602200902602的条件。的条件。n nSELECT*SELECT*n n INTO#Stu -INTO#Stu -创建名为创建名为#Stu#Stu的临时表的临时表n n FROM StudentInfo FROM StudentInfon n WHERE StudentID LIKE 200902602%;WHERE StudentID LIKE 200902602%;n nSELECT*-SELECT*-显示临时表中的所有行、所有列显
40、示临时表中的所有行、所有列n n FROM#Stu;FROM#Stu;n nGOGOn nDROP TABLE#Stu;-DROP TABLE#Stu;-删除临时表删除临时表n nGOGOn n 等价关联查询。从等价关联查询。从StudentInfoStudentInfo、CourseCourse、StudentMarkStudentMark这这3 3个表中选择个表中选择6 6列,创列,创建建tempStudentMarktempStudentMark表,返回多表查询等价关联的行。在查询编辑器中执行结表,返回多表查询等价关联的行。在查询编辑器中执行结果如图果如图7-397-39所示。所示。n
41、nSELECT StudentMark.StudentID,StudentInfo.StudentName,StudentMark.CourseID,SELECT StudentMark.StudentID,StudentInfo.StudentName,StudentMark.CourseID,Course.CourseName,StudentMark.Score,Course.CourseName,StudentMark.Score,Course.CreditCourse.Creditn n INTO tempStudentMark INTO tempStudentMarkn n FROM
42、 StudentMark FROM StudentMarkn n JOIN StudentInfo ON StudentMark.StudentID=StudentInfo.StudentID JOIN StudentInfo ON StudentMark.StudentID=StudentInfo.StudentIDn n JOIN Course ON StudentMark.CourseID=Course.CourseID;JOIN Course ON StudentMark.CourseID=Course.CourseID;n nGOGOn nSELECT*-SELECT*-显示生成表中
43、的所有行、所有列显示生成表中的所有行、所有列n n FROM tempStudentMark;FROM tempStudentMark;n nGOGOn nDROP TABLE tempStudentMark;-DROP TABLE tempStudentMark;-为了能多次执行,删除生成的表为了能多次执行,删除生成的表n nGOGOn n 下面语句按产品下面语句按产品StudentIDStudentID将将StudentMarkStudentMark表分组,每个学生返回一行,并显表分组,每个学生返回一行,并显示考试门数和平均成绩。在查询编辑器中的执行结果如图示考试门数和平均成绩。在查询编辑
44、器中的执行结果如图7-407-40所示。所示。n nSELECT StudentID,COUNT(StudentID)AS SELECT StudentID,COUNT(StudentID)AS 考试门数考试门数,AVG(Score)AS,AVG(Score)AS 平均成平均成绩绩 n n FROM StudentMark FROM StudentMarkn n GROUP BY StudentID;GROUP BY StudentID;n n如果要在查询结果显示学号对应的学生姓名,则要采用多表连接,代码如下:如果要在查询结果显示学号对应的学生姓名,则要采用多表连接,代码如下:n nSELEC
45、T m.StudentID,i.StudentName,COUNT(m.StudentID)AS SELECT m.StudentID,i.StudentName,COUNT(m.StudentID)AS 考试门数考试门数,n n AVG(m.Score)AS AVG(m.Score)AS 平均成绩平均成绩 n n FROM StudentMark m -m FROM StudentMark m -m为为StudentMarkStudentMark别名别名n n INNER JOIN StudentInfo i ON m.StudentID=i.StudentID -i INNER JOIN
46、StudentInfo i ON m.StudentID=i.StudentID -i为为StudentInfoStudentInfo的别的别名名n n GROUP BY m.StudentID,i.StudentName GROUP BY m.StudentID,i.StudentNamen n ORDER BY m.StudentID;ORDER BY m.StudentID;n n 下面语句显示带聚合函数的HAVING子句。该子句按StudentID将StudentMark表中的行进行分组,并查找平均成绩Score大于等于85的学号。n nSELECT StudentID,AVG(Sco
47、re)AS 平均成绩n n FROM StudentMarkn n GROUP BY StudentID n n HAVING AVG(Score)=85;n n7.4.5 存储过程的操作存储过程的操作n n1存储过程简介n n2使用SQL Server Management Studio管理存储过程n n(1)创建存储过程)创建存储过程n n【例【例7-12】在】在StudentDB数据库中创建用于数据库中创建用于显示所找学生信息的存储过程显示所找学生信息的存储过程up_FindStudent Info。n n(2)运行存储过程)运行存储过程n n【例【例7-13】运行存储过程】运行存储过程
48、up_FindStudentInfo。n n3 3使用使用T-SQLT-SQL管理存储过程管理存储过程n n(1 1)创建存储过程)创建存储过程n n可以使用可以使用T-SQLT-SQL语句语句CREATE PROCEDURECREATE PROCEDURE来创建存储过来创建存储过程。其基本语法格式如下:程。其基本语法格式如下:n nCREATE PROCEDURE procedure_nameCREATE PROCEDURE procedure_namen n parameter data_type =default OUTPUT parameter data_type =default O
49、UTPUT READONLYREADONLYn n parameter data_type =default OUTPUT parameter data_type =default OUTPUT READONLYREADONLYn n n nASASn n ;n n(2)执行存储过程n n执行存储过程的基本语法格式如下:n n EXEC|EXECUTE procedure_name parameter_name=value,n n【例【例7-147-14】设计一个存储过程,返回所有学生信息。该存】设计一个存储过程,返回所有学生信息。该存储过程不使用任何参数。储过程不使用任何参数。n n 编写存
50、储过程编写存储过程uspGetAllStudentInfouspGetAllStudentInfo,代码如下:,代码如下:n nUSE StudentDB;USE StudentDB;n nGOGOn nCREATE PROCEDURE uspGetAllStudentInfoCREATE PROCEDURE uspGetAllStudentInfon nASASn n SELECT*SELECT*n n FROM StudentInfo FROM StudentInfon n ORDER BY StudentID ASC;ORDER BY StudentID ASC;n nGOGOn n【例