数据库系统概论课程实验指导书V1.

上传人:无*** 文档编号:97801131 上传时间:2022-05-28 格式:DOC 页数:82 大小:258.50KB
收藏 版权申诉 举报 下载
数据库系统概论课程实验指导书V1._第1页
第1页 / 共82页
数据库系统概论课程实验指导书V1._第2页
第2页 / 共82页
数据库系统概论课程实验指导书V1._第3页
第3页 / 共82页
资源描述:

《数据库系统概论课程实验指导书V1.》由会员分享,可在线阅读,更多相关《数据库系统概论课程实验指导书V1.(82页珍藏版)》请在装配图网上搜索。

1、.?数据库系统概论?课程实验指导书江 涛师学院计算机信息工程系2021.09目录目录实验一 数据库的创立和管理实验二 表的创立、管理及数据操作实验三SQL数据查询实验四SQL数据操纵实验五 数据库保护实验六 数据库应用开发附加实验 事务并发控制操作实验一数据库的创立和管理一、实验目的n 熟悉SQL Server 2000实验环境的设置、学会独立使用该系统;n 熟悉SQL Server 2000中企业管理器和查询分析器两个常用管理工具;n 熟练掌握SQL Server Enterprise Manager 创立和管理数据库;n 熟练掌握在查询分析器中使用T-SQL语句创立和管理数据库二、实验容1

2、. 熟悉Microsoft SQL Server / Enterprise Manager2. 熟悉Microsoft SQL 查询分析器3. 利用企业管理器创立和管理数据库 (1) 创立数据库(2) 删除数据库4. 在查询分析器中使用T-SQL语句创立和管理数据库(1) 创立数据库(2)修改数据库(3)删除数据库三、实验步骤1、启动效劳器管理器首先通过【开场】【程序】【Microsoft SQL Servers】【效劳器管理器】,在系统托盘中会同时出现SQL效劳的图标,单击【开场/继续】前的小三角,此时,在系统托盘中的图标上会有一个绿色箭头,表示效劳已经启动。2、SQL Server 200

3、0企业管理器首先通过【开场】【程序】【Microsoft SQL Servers】【企业管理器】进入企业管理器界面。在企业管理器的左边列出的是控制台管理目录,依次是数据库类型SQL Servers、数据库群组名SQL Servers组、数据库效劳器主机名,默认连接为本机和该数据库效劳器提供的所有的管理工具包括数据库、数据转换效劳、管理、复制、平安性、支持效劳等。在“数据库选项中列出的是当前效劳器中所有的数据库名master、model、msdb、Northwind等,其中master、model、tempdb等为系统数据库,记录其他数据库的公有属性和*些隐藏信息,用户不要直接对系统数据库也就是

4、master库中的表和数据项进展修改和删除,否则将会给数据库系统造成不可挽回的损失。3、新建数据库在效劳器组的“数据库上,右击,弹出快捷菜单,选择“新建数据库。在弹出的对话框中常规General页框中,要求用户输入数据库名称以及排序规则名称。点击数据文件Data Files页框,该页框用来输入数据库文件的逻辑名称、存储位置、初始容量大小和所属文件组名称,如图点击事务日志Transaction Log页框,该页框用来设置事务日志文件信息,如图:单击“确定按钮,则开场创立新的数据库。4、表操作 新建表 在企业管理器中,展开指定的效劳器和数据库,翻开想要创立新表的数据库,用右键单击表对象,从弹出的快

5、捷菜单中选择“新建表选项,或者在工具栏中选择图标,就会出现新建表对话框,在该对话框中,可以定义列的以下属性:列名称、数据类型、长度、精度、小数位数、是否允许为空、缺省值、标识列、标识列的初始值、标识列的增量值和是否有行的标识。 然后根据提示进展设置。 增加、删除和修改字段 在企业管理器中,翻开指定的效劳器中要修改表的数据库,用右键单击要进展修改的表,从弹出的快捷菜单中选择“设计表选项,则会出现设计表对话框,在该对话框中,可以利用图形化工具完成增加、删除和修改字段的操作。 创立、删除和修改约束 在企业管理器中,用右键单击要操作的数据库表,从弹出的快捷菜单中选择“设计表选项 ,然后根据提示对主键进

6、展添加、删除和修改操作。 查看表格在企业管理器中,用右键单击要操作的数据库表,从弹出的快捷菜单中选择“设计表选项 ,可以查看表格的定义在企业管理器中,用右键单击要操作的数据库表,从弹出的快捷菜单中选择“翻开表返回所有行选项 ,查看表格中的数据 删除表格 在企业管理器中,展开指定的数据库和表格项,用右键单击要删除的表,从快捷菜单中选择“除去表选项,则会出现除去对象对话框。单击“全部删除按钮,即可删除表。5、查询分析器(Query Analyzer)首先通过【开场】【程序】【Microsoft SQL Servers】【查询分析器】进入查询分析器界面。窗口的顶部是菜单和工具栏,在工具栏中有一个数据

7、库列表框,列出主机中所有的数据库,用户可直接在列表框中选择进展操作的数据库名如:Northwind。主窗口的左边是对象浏览器包括对象和模板两页,右边是Transact-SQL程序编辑器。查询分析器是SQL Server2000的另一个非常主要的客户端工具,查询分析器用Transact-SQL程序对数据库系统进展分析和管理,企业管理器用图形界面和向导对数据库进展操作。对于那些更高级的查询分析、批处理创立删除,使用查询分析器就比较灵活。用户可直接在编辑器中输入查询分析语句“select * from categories,其中categories是Northwind数据库中的一表,用户可以在左边对

8、象浏览器的数据库用户表中找到。然后点击工具栏上的绿色三角形按钮进展执行。查询结果将出现在编辑器的下面,如以下列图:查询分析器的有一实用功能程序模板,选择左边的模板类型,右边编辑框将自动生成相应的Transact-SQL程序。修改程序中的参数就执行相应的功能。例如要创立一个数据库,就在左边选择Create Database 模板类型,再选择详细类型Create Database Basic Template,右边出现一段程序,其功能是判断主机中是否存在数据库N,如果存在的话,就将其删除,然后再创立数据库N。用户也可以通过程序模板来进一步学习Transact-SQL语言。6、在查询分析器使用T-S

9、QL语句管理数据库 利用T-SQL语句创立数据库翻开查询分析器,输入如下语句:CREATE DATABASE MYDBON(NAME=MY_DB_DATA,FILENAME=D:PROGRAM FILESMicrosoft SQL ServerMSSQLdataMY_DB_DATA.MDF,SIZE=5, MA*SIZE=15, FILEGROWTH=2)LOG ON(NAME=MY_DB_LOG,FILENAME=D:PROGRAM FILESMicrosoft SQL ServerMSSQLdataMY_DB_LOG.LDF,SIZE=3, MA*SIZE=10, FILEGROWTH=1

10、)GO 利用T-SQL语句修改数据库用T-SQL语句完成修改数据库的操作,语句如下。ALTER DATABASE MYDBADD FILE(NAME=MY_DB_DATA1,FILENAME=C:Program FilesMicrosoft SQL ServerMSSQLdataMY_DB_DATA1.NDF,SIZE=3, MA*SIZE=15, FILEGROWTH=2)GOALTER DATABASE MYDBMODIFY FILE(NAME=MY_DB_LOG,MA*SIZE=20, FILEGROWTH=2)GO 利用T-SQL语句删除数据库DROP DATABASE MYDB实验二

11、 表的创立、管理及数据操作一、实验目的n 熟练掌握使用企业管理器和T-SQL语句创立、修改和删除表。n 熟练掌握使用企业管理器和T-SQL语句插入、修改和删除表数据。二、实验容1、使用企业管理器创立学生选修课程数据库Student_Courses参照课本;2、Student_Courses数据库包含如下三个表:学生表、选修表、课程表;主要设置表的完整性;3、在企业管理器中插入、修改和删除表数据。4、使用T-SQL重复上述操作5、分别使用企业管理器和T-SQL修改和删除表三、实验步骤1、建立studentdb数据库和spjdb数据库;2、在studentdb数据库中利用企业管理器和查询分析器创立

12、以下3个表,同时完成数据完整性的定义实体完整性、参照完整性和用户定义的域完整性:student学生信息表:主码列名数据类型宽度小数位空否取值围备注Pksnochar9N*snamechar10Nsse*char2Y性别sagesmallintY不小于12年龄sdeptchar15Y系名course课程表:主码列名数据类型宽度小数位空否备注PkoChar4N课程号ameChar20Y课程名称cpnoChar4Y先行课号ccreditsmallintY学分sc学生选课表:主码列名数据类型宽度小数空否外码参照关系取值围备注PksnoChar9NFkstudent*oChar4NFkcourse课程号

13、gradeDecimal51Y0*100成绩3、在spjdb数据库中利用企业管理器和查询分析器创立以下4个表,同时完成数据完整性的定义实体完整性、参照完整性和用户定义的域完整性:S供应商信息表:主码列名数据类型宽度小数位空否取值围备注Pksnochar2N供应商号snamechar10N供应商名称statussmallintY大于0供应商状态citychar10Y所在城市P零件信息表:主码列名数据类型宽度小数位空否取值围备注Pkpnochar2N零件号pnamechar10N零件名称colorchar2Y颜色weightsmallintY大于0重量J工程工程表:主码列名数据类型宽度小数位空否取

14、值围备注Pkjnochar2N工程工程号jnamechar10N工程工程名称citychar10Y所在城市SPJ供应情况表:主码列名数据类型宽度小数空否外码参照关系取值围备注PksnoChar2NFkS供应商号pnoChar2NFkP零件号jnoChar2NFkJ工程工程号qtysmallintY*0数量4、修改表构造,具体要求如下:(1) 将表course的ame列的数据类型改为varchar(40).(2) 为表student增加一个新列: birthday(出生日期), 类型为datetime, 默认为空值.(3) 将表sc中的grade列的取值围改为小于等于150的正数.(4) 为St

15、udent表的“Se*字段创立一个缺省约束,缺省值为男(5)为“Sdept字段创立一个检查约束,使得所在系必须是CS、MA或IS之一。(6)为Student表的“Sname字段增加一个唯一性约束(7)为SC表建立外键,依赖于Student表的fk_S_c约束。(8)制止启用Student表的“Sdept的CHECK约束ck_student。5、分别建立以下索引(如果不能成功建立,请分析原因)(1) 在student表的sname列上建立普通降序索引.(2) 在course表的ame列上建立唯一索引.(3) 在sc表的sno列上建立聚集索引.(4) 在spj表的sno(升序), pno(升序)和

16、jno(降序)三列上建立一个普通索引.Transact-SQL提示: 1. 建立表, 修改表, 建立索引需具有create table的权限. 2. 创立根本表的SQL语句是CREATE TABLE .简单语法格式:CREATE TABLE 表名 ( 列名 数据类型 default 缺省值 not null ,列名 数据类型 default 缺省值 not null ,primary key列名 ,列名 ,foreign key 列名 ,列名 references 表名 列名 ,列名 ,check条件 );一般语法格式:CREATE TABLE database_name.owner. tab

17、le_name(| column_name | ,n )ON filegroup | DEFAULT TE*TIMAGE_ON filegroup | DEFAULT :=column_name data_typeDEFAULT constant_e*pression| IDENTITY (seed, increment ) ROWGUIDCOL n参数说明:database_name.owner. table_name:定义表的名字,表名的长度不得超过128个字节,如果是临时表,则表名不能超过116个字符。:列的定义。column_name:列的名字。列的命名必须遵守有关数据库对象的命名规则

18、。data_type:列的数据类型。DEFAULT constant_e*pression:定义该列的默认值。IDENTITY:定义该列是一个标识列。当一个新的数据行插入表中的时候,SQL Server2000为标识列提供一个唯一的、递增的数值。在一表格中,只能定义一个标识列。在定义标识列时,必须同时定义起始值和增量。Seed:定义标识列的起始值。所谓起始值就是插入表的第一行的数据的标识列的值。Increment:定义标识列的增量。所谓增量就是插入表的最近一行相对与前一行标识列的数据值的增量。ROWGUIDCOL:定义该列是一个行全局唯一的标识列。在一表中只有一个唯一标识符列可以被定义为ROW

19、GUIDCOL。column_constraint:定义与列相关联的约束。table_constraint:定义对表的约束。ON filegroup | DEFAULT :定义将表存储在*一个指定的文件组中,DEFAULT表示将表存储在默认文件组中。TE*TIMAGE_ON filegroup | DEFAULT :如果表中有nte*t、te*t或image类型的数据,则将这些数据存储在*一个指定的文件组里。 3. 修改表构造的SQL语句是ALTER TABLE, 修改的容包括:修改、增加、删除列或约束、使约束和触发器无效等。简单语法格式:alter table add / 增加新列drop

20、/ 删除约束 drop column / 删除列alter column ;/修改列定义 其中列级完整性约束包括:空值约束 NOT NULL和NULL主关键字约束 PRIMARY KEY唯一性约束 UNIQUE参照完整性约束 FOREIGN KEY一般语法格式:ALTER TABLE table ALTER COLUMN column_name new_data_type NULL| NOT NULL|ADD |DROP ROWGUIDCOL |ADD | column_name AS puted_column_e*pression ,n |ADD ,n |DROP CONSTRAINT co

21、nstraint_name |COLUMN column ,n |CHECK |NOCHECK CONSTRAINT ALL | constraint_name ,n |ENABLE |DISABLE TRIGGER ALL |trigger_name ,n参数说明:ALTER COLUMN:修改已经存在的列的属性。ADD |DROP ROWGUIDCOL:将指定列定义成ROWGUIDCOL,或者删除该列的ROWGUIDCOL属性。ADD | column_name AS puted_column_e*pression,n:增加新的列。ADD ,n:定义新的表约束。DROP CONSTRAIN

22、T constraint_name |COLUMN column ,n:删除约束或删除列。CHECK |NOCHECK CONSTRAINT ALL | constraint_name ,n:使所有约束或者指定的约束有效或失效。例:使st_e*ample表中的约束salary_cap失效。ALTER TABLEst_e*ample NOCHECK CONSTRAINT salary_capENABLE |DISABLE TRIGGER ALL |trigger_name ,n:使所有或局部触发器有效或无效。例:使用T_SQL语句对学生表进展各种修改。向表中添加新的字段:在学生表中添加一个“cl

23、ass字段,数据类型为字符型。ALTER TABLE student add class char(10)删除表中的旧列:将学生表中的“class字段删除。ALTER TABLE student DROP column class更改表中的约束:删除*列的约束:将SC表中的外码约束FK_sc_sno删除。ALTER TABLE sc DROP FK_sc_sno将Student表中的主码约束PK_student_sno删除。ALTER TABLE student DROP PK_student_sno为*列添加约束:为Student表的“Sse*字段创立一个缺省约束,缺省值为男。ALTER T

24、ABLE student ADD constraint def_sse* DEFAULT 男 FOR sse*更改Student表中的“sno字段的宽度为10及非空约束。ALTER TABLE student ALTER COLUMN sno char(10) NOT NULL为Student表添加一个主码约束PK_student_sno。ALTER TABLE student ADD CONSTRAINT PK_student_sno PRIMARY KEY(sno)为SC表添加一个外码约束FK_sc_sno。ALTER TABLE sc ADD CONSTRAINT FK_sc_sno F

25、OREIGN KEY (sno) REFERENCES student(sno) 给学生表增加“grade字段并加上CHECK约束,让其不可以大于100。ALTER TABLE student ADD grade int Constraint ch_grade check(grade100)E*ec sp_help student给学生表中添加“birthday字段,并且这个日期不能在录入当天的日期之后。Alter table student Add birthday DATETIME NULL CONSTRAINT ch_birthday CHECK (birthdaygetdate()添加

26、具有默认值的可为空的列:在学生表中参加“matriculationday字段,并且这一字段的默认值为录入当天的日期。Alter table student Add matriculationday smalldatetime NULL Constraint adddateflt Default getdate()4.建立索引的SQL语句是CREATE INDE*, 语法格式: CREATE UNIQUE CLUSTERED INDE* ON ( ASC | DESC , ASC | DESC )其中 UNIQUE指出是唯一索引, CLUSTERED指出是聚集索引。实验三SQL数据查询一、实验目

27、的n 熟练掌握使用T-SQL语句进展单表查询,尤其要熟练掌握GROUP BY子句、HAVING 子句和集函数;n 熟练掌握使用SQL标准语句和T-SQL扩展语句进展连接查询。n 熟练掌握使用IN、比较符、ANY或ALL和E*ISTS操作符进展嵌套查询操作。二、实验容完成如下单表查询:1、 单表查询2、 使用分组和集函数3、 连接4、 外连接5、 IN子查询6、 E*ISTS子查询三、实验步骤1、在studentdb数据库中Student、Course以及SC表中,完成以下查询必做:(1)查询course表中所有学分大于2并且序号小于5的课程信息。(2)查询学分界于2和8之间的课程的信息。(3)

28、从course表中查询出课程号为1或4或7的课程的课程号、课程名称、以及学分。(4)从course表中查询学分大于3的课程信息,并按升序排列。(5)查询每个学生及其选修课情况。(6)查询选修2号课程且成绩在80分以上的学生信息。(7)查询每个学生的*、选修的课程及成绩。(8)在student数据库中,查询所有计算机系学生的*、选修课程号以及分数。(使用IN谓词)。(9)查询选修了课程名为“操作系统的学生*和。(10)在student数据库中,查询所有计算机系学生的*、选修课程号以及分数使用E*ISTS谓词。2、在spjdb数据库中S、P、J以及SPJ表中,完成以下查询选做: 完成P74习题5中

29、的查询; 完成P127习题5中(1)(7)的查询。Transact-SQL提示:1. SELECT语句的语法格式如下:根本格式:SELECT ALL|DISTINCT , FROM , WHERE GROUP BY , HAVING ORDER BY ASC|DESC,ASC|DESC 一般格式:SELECT ALL|DISTINCT TOP n PERCENT WITH TIES INTO FROM , . n WHERE | GROUP BY ALL group_by_e*pression , . n WITH CUBE | ROLLUP HAVING :=*|table_name|vie

30、w_name|table_alias .*|column_nameAS column_alias,n :=table_name AS table_alias WITH ( ,.n ) | view_name AS table_alias WITH ( ,.n ) | rowset_function AS table_alias | user_defined_function AS table_alias | derived_table AS table_alias ( column_alias ,.n ) | := ON | CROSS JOIN | ( ) := INNER | LEFT |

31、 RIGHT | FULL OUTER JOIN :=column_name * = | = * column_name参数说明:(1)ALL:默认设置,指定在结果集中可以显示重复行。(2)DISTINCT:指定在结果集中只能显示唯一行,空值被认为相等。(3)TOP n:指定只从查询结果集中输出前n行。N是介于04294967295之间的整数。(4)PERCENT:从结果集中输出前百分之几行,当指定时带PERCENT,n的值必须介于0100之间。(5)WITH TIES:指定从结果集中返回附加的行,这些行包含与出现在TOP nPERCENT行最后的ORDER BY列中的值相等的值。如果指定了O

32、RDER BY子句,则只能指定TOPWITH TIES。(6):为结果选择的列。选择列表是以逗号分隔的一系列表达式。(7)INTO :创立新表并将结果行从查询插入新表中。用户假设要执行带 INTO 子句的 SELECT 语句,必须在目的数据库具有 CREATE TABLE 权限。SELECT.INTO 不能与 PUTE 子句一起使用。new_table 的格式通过对选择列表中的表达式进展取值来确定。new_table 中的列按选择列表指定的顺序创立。new_table 中的每列有与选择列表中的相应表达式一样的名称、数据类型和值。(8) FROM : 指定要在Transact-SQL语句中使用的

33、表或视图带或不带别名均可。可在语句中使用多达256个表。可将table变量指定为表源。 中的参数说明见(19)。 (9): 使用不标准的产品专用语法和 WHERE 子句指定外联接。*= 运算符用于指定左向外联接,=* 运算符用于指定右向外联接。注:这种语法具有潜在的二义性解释并且不标准,因此不提倡使用这种语法进展外联接。而应在 FROM 子句中使用联接运算符指定联接。不能在同一语句中同时使用这两种方法。(10):通过使用谓词限制结果集返回的行。对搜索条件中可以包含的谓词数量没有限制。(11) *:指定在FROM子句返回所有表和视图的所有列,列按FROM子句所指定的由表或视图返回,并按他们在表或

34、视图中的顺序返回。(12)column_name:要返回的列名,必要时限定column_name以防止二义性引用,当FROM子句中的两个表包含重复名的列时会出现该情况。(13)column_alias:是查询结果集替换列名的可选名。(14)GROUP BY ALL: 包含所有组和结果集,甚至包含那些任何行都不满足 WHERE 子句指定的搜索条件的组和结果集。如果指定了 ALL,将对组中不满足搜索条件的汇总列返回空值。不能用 CUBE 或 ROLLUP 运算符指定 ALL。如果远程表的查询中有 WHERE 子句,则不支持 GROUP BY ALL 操作。(15)group_by_e*pressi

35、on : 是对其执行分组的表达式。group_by_e*pression 也称为分组列。group_by e*pression 可以是列或引用列的非聚合表达式。在选择列表定义的列的别名不能用于指定分组列。说明te*t、nte*t 和 image 类型的列不能用于 group_by_e*pression。对于不包含 CUBE 或 ROLLUP 的 GROUP BY 子句,group_by_e*pression 的项数受查询所涉及的 GROUP BY 列的大小、聚合列和聚合值的限制。该限制从 8,060 字节的限制开场,对保存中间查询结果所需的中间级工作表有 8,060 字节的限制。如果指定了 C

36、UBE 或 ROLLUP,则最多只能有 10 个分组表达式。(16)CUBE: 指定在结果集不仅包含由 GROUP BY 提供的正常行,还包含汇总行。在结果集返回每个可能的组和子组组合的 GROUP BY 汇总行。GROUP BY 汇总行在结果中显示为 NULL,但可用来表示所有值。使用 GROUPING 函数确定结果集的空值是否是 GROUP BY 汇总值。结果集的汇总行数取决于 GROUP BY 子句包含的列数。GROUP BY 子句中的每个操作数列绑定在分组 NULL 下,并且分组适用于所有其它操作数列。由于 CUBE 返回每个可能的组和子组组合,因此不管指定分组列时所使用的是什么顺序,

37、行数都一样。(17)ROLLUP: 指定在结果集不仅包含由 GROUP BY 提供的正常行,还包含汇总行。按层次构造顺序,从组的最低级别到最高级别汇总组。组的层次构造取决于指定分组列时所使用的顺序。更改分组列的顺序会影响在结果集生成的行数。重要提示:使用 CUBE 或 ROLLUP 时,不支持区分聚合,如 AVG(DISTINCT column_name)、COUNT(DISTINCT column_name) 和 SUM(DISTINCT column_name)。如果使用这类聚合,SQL Server 将返回错误信息并取消查询。(18) HAVING : 指定组或聚合应满足的搜索条件。HA

38、VING 通常与 GROUP BY 子句一起使用。当 HAVING 与 GROUP BY ALL 一起使用时,HAVING 子句替代 ALL。如果不使用 GROUP BY 子句,HAVING 的行为与 WHERE 子句一样。注:在HAVING子句中不能使用te*t、image和nte*t数据类型。在SELECT语句中使用HAVING 子句不影响CUBE运算符分组结果集和返回汇总聚合行的方式。(19) 中的参数说明:table_name: 表名。FROM 关键字之后的表和视图的顺序并不影响返回的结果集。当 FROM 子句中出现重复名称时将报告错误。AS table_alias: table_na

39、me、view_name 或 rowset_function 的别名,为方便起见而使用,或用于区分自联接或子查询中的表或视图。别名通常是一个缩短了的表名,用于在联接中引用表中的特定列。如果联接中的多个表中有一样名称的列存在,SQL Server 要求必须使用表名或别名来限定列名。如果定义了别名则不能使用表名。WITH ( ) : 指定表扫描、查询优化器要使用的一个或多个索引或查询优化器要对此表、此语句使用的锁定方法。有关更多信息,请参见表提示。view_name: 是视图名称。视图是一个虚拟表,通常创立为一个或多个表中列的子集。 WITH ( ) :指定索引视图扫描。默认情况下,视图在查询优化

40、器处理查询之前展开。视图提示只能用在 SELECT 语句中,而不能用于 UPDATE、DELETE 或 INSERT 语句。rowset_function: 指定一个行集函数,该函数返回可替代表引用的对象。user_defined_function : 指定用户定义的函数,该函数返回一个表。如果用户定义的函数是一个置的用户定义函数,则前面必须加两个冒号,如:FROM :fn_liste*tendedpropertyderived_table: 是从数据库中检索行的子查询。derived_table 用作对外部查询的输入。 column_alias: 替换结果集列名的可选别名。在选择列表中放入每

41、个列的一个别名,并将整个列别名列表用圆括号括起来。: 由两个或更多表的积组成的结果集,例如:SELECT * FROM tab1 LEFT OUTER JOIN tab2 ON tab1.c3 = tab2.c3 RIGHT OUTER JOIN tab3 LEFT OUTER JOIN tab4 ON tab3.c1 = tab4.c1 ON tab2.c3 = tab4.c3对于多个 CROSS 联接,请使用圆括号来更改联接的自然顺序。: 指定联接操作的类型。INNER: 指定返回每对匹配的行。废弃两个表中不匹配的行。如果未指定联接类型,则这是默认设置。FULL OUTER: 指定在结果集

42、中包含左表或右表中不满足联接条件的行,并将对应于另一个表的输出列设为 NULL。这是对通常由 INNER JOIN 返回的所有行的补充。注:按此处指定的方法指定外联接或在 WHERE 子句中使用旧式非标准的 *= 和 =* 运算符都是可行的。不能在同一语句中同时使用这两种方法。LEFT OUTER: 指定在结果集中包含左表中所有不满足联接条件的行,且在由联接返回所有的行之外,将另外一个表的输出列设为 NULL。RIGHT OUTER: 指定在结果集中包含右表中所有不满足联接条件的行,且在由联接返回的所有行之外,将与另外一个表对应的输出列设为 NULL。: 指定 SQL Server 查询优化器

43、为在查询的 FROM 子句中指定的每个联接使用一个联接提示或执行算法。有关更多信息,请参见本主题下面的联接提示。JOIN: 指明所指定的联接操作应在给定的表或视图之间执行。ON : 指定联接所基于的条件。尽管经常使用列和比较运算符,但此条件可指定任何谓词,例如:SELECT ProductID, Suppliers.SupplierID FROM Suppliers JOIN Products ON (Suppliers.SupplierID = Products.SupplierID)当条件指定列时,列不一定必须具有一样的名称或数据类型;但是,如果数据类型不一致,则这些列要么必须相互兼容,要

44、么是 Microsoft SQL Server 能够隐性转换的类型。如果数据类型不能隐式转换,则条件必须使用 CAST 函数显式转换数据类型。 在 ON 子句中可能有仅涉及一个联接表的谓词。这样的谓词也可能出现在查询中的 WHERE 子句中。尽管这种谓词的放置在 INNER 联接中不会产生差异,但是在涉及 OUTER 联接时可能会导致不同的结果。这是因为 ON 子句中的谓词在应用于联接之前先应用于表,而 WHERE 子句在语意上应用于联接结果。CROSS JOIN: 指定两个表的矢量积。这将返回一样的行,就好似在旧式的非 SQL-92 式联接中并没有指定 WHERE 子句。2. 简单的SELE

45、CT查询:SELECT语句在任何SQL语言中都是使用频率最高的语句,是SQL的灵魂。最简单的SELECT查询语法如下: SELECT column_name , n FROM tablename使用TOP关键字例:分别从course中检索出前2条及前面67%的教师的信息。SELECT top 2 * FROM courseSELECT top 67 PERCENT * FROM course使用DISTINCT关键字使用计算列例:将teacher表中各教师的、教工号及工资按95%发放的信息,第2条语句将工资按95%发放后列名改为预发工资。select 教工号,工资*0.95 from teac

46、herselect 教工号,工资*0.95 AS 预发工资 from teacher操作查询的列名SELECTo 课程序号,ame 课程名称, credit+1 修正学分 FROM course使用WHERE子句例:查询course表,返回修正后的学分后仍然大于4的课程的代号、名称以及原先的学分。SELECTo AS 序号,ame AS课程名称,credit AS 学分 FROM course WHERE course+14使用LIKE子句进展模糊查询例:从teacher表中分别检索出姓伍的教师的资料,或者的第2个字是寿或立的教师的资料。SELECT * FROM teacher WHERE

47、LIKE 伍%SELECT * FROM teacher WHERE LIKE _寿,立%使用ORDER BY给数据排序例:从course表中查询学分大于3的课程信息,并按升序排列。SELECTo AS 序号,ame AS 课程名 , credit AS 学分 FROM courseWHERE credit3 ORDER BY credit ASC3. 多表查询数据库各表中存放着不同的数据,用户经常需要用多个表中的数据来组合提炼出所需要的信息,如果一个查询需要对多个表进展操作,就称为关联查询,关联查询的结果集或结果表称为表之间的连接。关联查询实际上是通过各各表之间共同列的关联来查询数据的,它是

48、关系数据库查询最根本的特征。连接查询:如果需要对多表中的数据进展查询,称之为连接查询。等值和非等值连接查询例:查询每个学生及其选修课情况。SELECT student.*,sc.* FROM student,sc WHERE student.sno=sc.sno外连接例:以student表为主体列出每个学生的根本情况及其选课情况,假设没有选课,只输出其根本情况。SELECT student.sno,sname,se*,sbirth,sdept,sc.o,gradeFROM student,sc WHERE student.sno*=sc.sno复合条件连接例:查询选修2号课程且成绩在80分以上

49、的学生信息。SELECT student.sno,sname,grade FROM student,sc WHERE student.sno=sc.sno AND sc.grade80例:查询每个学生的*、选修的课程及成绩。SELECT student.sno,sname,ame,grade FROM student,sc,courseWHERE student.sno=sc.sno AND sc.o=course.o嵌套查询带有IN谓词的子查询例:在student数据库中,查询所有计算机系学生的*、选修课程号以及分数。SELECT sno,o,grade FROM sc WHERE sno

50、IN(SELECT sno FROM student WHERE sdept=计算机系)在嵌套查询中使用E*ISTS关键字例:在student数据库中,查询所有计算机系学生的*、选修课程号以及分数SELECT sno,o,grade FROM sc WHERE E*ISTS(SELECT sno FROM student WHERE sdept=计算机系)使用UNION子句如果希望将多个不同的查询结果数据集组成一组数据,可以使用UNION子句,但有2条根本准则:每一个结果集的数据类型必须一样。每一个结果集中的列数必须相等,排列顺序必须相互对应。例:将pubs数据库authors表格中的列sta

51、te进展排序。SELECT state FROM authors UNION SELECT state FROM publishersORDER BY state注意:UNION子句会自动删除查询结果中重复的行,如果刻意要求获得所有的行,可以使用ALL关键字,如上例的UNION改写为UNION ALL。实验四SQL数据操纵一、实验目的l 熟练掌握使用SQL Server企业管理器和T-SQL向数据库输入数据、修改数据和删除数据的操作。二、实验容1、熟练掌握使用SQL Server企业管理器数据库输入数据、修改数据和删除数据的操作;2、熟练掌握使用T-SQL向数据库输入数据、修改数据和删除数据的

52、操作。三、实验步骤1. 将教材P82表中的数据添加到数据库STUDENTDB中.2. 将教材P75表中的数据添加到数据库SPJDB中. 体会执行插入操作时检查实体完整性规则、参照完整性规则和用户定义完整性规则的效果.3. 设计几个删除操作,体会执行删除操作时检查参照完整性规则的效果.4. 设计一组更新操作, 体会执行更新操作时检查实体完整性规则、参照完整性规则和用户定义完整性规则的效果.5. 设计一组更新操作, 它需要另外一个表中的数据作为更新条件(如将选修了“信息系统课程的成绩均提高15% )。6. 设计一个删除操作,它需要另外一个表中的数据作为删除条件(如将“晨的选课记录删除 )。Tran

53、sact-SQL提示:1.插入语句INSERT的一般格式: 格式1: 一次插入一个元组. INSERT INTO ( , ) VALUES( , ) 格式2: 一次插入多个元组(子查询结果). INSERT INTO (, ) 从一个关系中选择一些元组插入到另一个关系中当然相应属性要出自同一个域。2.数据更新语句UPDATE的一般格式: UPDATE SET = , = FROM WHERE 使用说明: 使用WHERE子句指定条件, 以更新满足条件的一些元组的属性值, 并且一次可以更新多个属性; 更新条件可以与其他的表相关使用FROM指定; 如果没有WHERE子句,则更新全部元组。 例: 将所

54、有选修“数据库课程的成绩提高10% update SC set grade=grade*1.1 from COURSE where SC.o=COURSE.o andame=数据库3.删除操作语句DELETE的一般格式: DELETE FROM FROM WHERE 使用说明: 如果没有指定删除条件则删除全部元组; 删除条件可以与其他的表相关(使用FROM指定); DELETE语句只删除表中的元组(数据), 保存表构造. 例: 删除计算机系学生的选课记录. delete from SC from STUDENT where SC.sno=STUDENT.sno and sdept=CS4. 用TRUNCATE TABLE清空表格TRUNCATE TABLE语句可以删除表格中所有的数据,只留下一个表格的定义。该操作要比DELETE语句快,因为TRUNCATE TABLE是不记录日志的操作。TRUNCATE TABLE将释放表的数据和索引所占据的所有空间。语法如下:TRUNCATE table-name。例:删除表格course中的数据。 TRUNCATE course注意:由于TRUNCATE TABLE操作不进展日志的记录,所以删除数据后无法恢复,同DROP TABLE一样,

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!