sql server 数据库管理与开发教程与实训(第2版习题答案)
- 格式:doc
- 大小:27.09 KB
- 文档页数:10
以下是一个基本的SQL Server数据库应用与实践教程(第2版)实验文档的大纲示例,具体内容可能会根据实际教材和实验要求有所不同:实验一:SQL Server的安装和配置1. 实验目标:理解并掌握SQL Server的安装过程和基本配置。
2. 实验环境:Windows操作系统,SQL Server安装介质。
3. 实验步骤:准备安装环境。
运行SQL Server安装程序。
选择安装类型和功能。
设置服务器配置(如实例名称、账户、密码等)。
完成安装并验证安装结果。
4. 实验问题与思考:如何根据实际需求选择合适的安装选项?实验二:SQL Server Management Studio的使用1. 实验目标:熟悉SQL Server Management Studio(SSMS)的界面和基本操作。
2. 实验环境:已安装SQL Server的计算机,SSMS软件。
3. 实验步骤:启动SSMS并连接到SQL Server实例。
浏览对象资源管理器中的服务器对象。
创建新的数据库和表。
插入、查询、更新和删除数据。
使用Transact-SQL编写和执行简单查询。
4. 实验问题与思考:如何利用SSMS提高数据库管理的效率?实验三:数据库设计与ER图1. 实验目标:学习并实践数据库设计的基本原则和方法。
2. 实验环境:数据库设计工具(如Visio、PowerDesigner等)。
3. 实验步骤:确定业务需求和数据实体。
设计实体关系图(ER图)。
将ER图转换为数据库模型。
根据数据库模型创建实际的数据库和表。
4. 实验问题与思考:如何处理数据库设计中的冗余和异常情况?实验四:事务与并发控制1. 实验目标:理解事务的概念和作用,掌握并发控制的方法。
2. 实验环境:SQL Server实例,多用户环境。
3. 实验步骤:创建并执行包含多个操作的事务。
观察事务的ACID特性(原子性、一致性、隔离性和持久性)。
探讨并发访问可能导致的问题(如脏读、不可重复读、幻读)。
思考习题一、选择题1.在SELECT语句中,下列子句用于对分组统计进一步设置条件的子句为(B)。
A ORDER BYB GROUP BYC WHERED HA VING2.SQL查询语句中ORDER BY子句的功能是(A)。
A 对查询结果进行排序B 分组统计查询结果C 限定分组检索结果D 限定查询条件3.SQL查询语句中HA VING子句的作用是(C)。
A 指出分组查询的范围B 指出分组查询的值C 指出分组查询的条件D 指出分组查询的字段4.采用SQL查询语言对关系进行查询操作,若要求查询结果中不能出现重复元组,可在SELECT子句后增加保留字(A)。
A DISTINCTB UNIQUEC NOT NULLD SINGLE5. 一个查询的结果成为另一个查询的条件,这种查询被称为(D)。
A 联接查询B 内查询C 自查询D 子查询6. 在SELECT语句中使用*,表示(B)。
A 选择任何属性B 选择所有属性C 选择所有元组D 选择主键7.在SQL语句中,谓词“EXISTS”的含义是(B)。
A 全称量词B 存在量词C 自然连接D 等值连接8.INSERT SELECT语句的功能(B)。
A 向新表中插入数据B 执行插入查询C 修改数据D 删除数据9.在关系数据库系统中,为了简化用户的查询操作,而又不增加数据的存储空间,常用的方法是创建(C)。
A 另一个表B 游标C 视图D 索引10.SQL中创建视图应使用(C)语句A、CREATE SCHEMAB、CREATE TABLEC、CREATE VIEWD、CREATE DATEBASE二、填空题1.在SQL Server中,使用(TOP )关键字,用于查询时只显示前面几行数据。
2.在查询条件中,可以使用另一个查询的结果作为条件的一部分,例如判定列值是否与某个查询的结果集中的值相等,作为查询条件一部分的查询称为(子查询)。
3.EXISTS谓词用于测试子查询的结果是否为空表。
思考习题一、选择题1.在SELECT语句中,下列子句用于对分组统计进一步设置条件的子句为(B)。
A ORDER BYB GROUP BYC WHERED HA VING2.SQL查询语句中ORDER BY子句的功能是(A)。
A 对查询结果进行排序B 分组统计查询结果C 限定分组检索结果D 限定查询条件3.SQL查询语句中HA VING子句的作用是(C)。
A 指出分组查询的范围B 指出分组查询的值C 指出分组查询的条件D 指出分组查询的字段4.采用SQL查询语言对关系进行查询操作,若要求查询结果中不能出现重复元组,可在SELECT子句后增加保留字(A)。
A DISTINCTB UNIQUEC NOT NULLD SINGLE5. 一个查询的结果成为另一个查询的条件,这种查询被称为(D)。
A 联接查询B 内查询C 自查询D 子查询6. 在SELECT语句中使用*,表示(B)。
A 选择任何属性B 选择所有属性C 选择所有元组D 选择主键7.在SQL语句中,谓词“EXISTS”的含义是(B)。
A 全称量词B 存在量词C 自然连接D 等值连接8.INSERT SELECT语句的功能(B)。
A 向新表中插入数据B 执行插入查询C 修改数据D 删除数据9.在关系数据库系统中,为了简化用户的查询操作,而又不增加数据的存储空间,常用的方法是创建(C)。
A 另一个表B 游标C 视图D 索引10.SQL中创建视图应使用(C)语句A、CREATE SCHEMAB、CREATE TABLEC、CREATE VIEWD、CREATE DATEBASE二、填空题1.在SQL Server中,使用(TOP )关键字,用于查询时只显示前面几行数据。
2.在查询条件中,可以使用另一个查询的结果作为条件的一部分,例如判定列值是否与某个查询的结果集中的值相等,作为查询条件一部分的查询称为(子查询)。
3.EXISTS谓词用于测试子查询的结果是否为空表。
习题13、简述数据库系统的组成。
答:数据库系统一般由数据库、数据库管理系统(及其开发工具)、数据库管理员(DataBase Administrator ,DBA )和用户组成。
4、试述数据库系统的三级模式结构。
这种结构的优点是什么?答:数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成,同时包含了二级映像,即外模式/模式映像、模式/内模式映像,如下图所示。
数据库应用1……外模式A 外模式B 模式应用2应用3应用4应用5……模式外模式/模式映像模式/内模式映像数据库系统的这种结构具有以下优点:(1)保证数据独立性。
将外模式与模式分开,保证了数据的逻辑独立性;将内模式与模式分开,保证了数据的物理独立性。
(2)有利于数据共享,减少了数据冗余。
(3)有利于数据的安全性。
不同的用户在各自的外模式下根据要求操作数据,只能对限定的数据进行操作。
(4)简化了用户接口。
按照外模式编写应用程序或输入命令,而不需了解数据库全局逻辑结构和内部存储结构,方便用户系统。
5、什么是数据的物理独立性与逻辑独立性?并说明其重要性。
答:(1)数据的物理独立性是指数据的物理结构(包括存储结构、存取方式等)的改变,存储设备的更换,物理存储的更换,存取方式改变等都不影响数据库的逻辑结构,从而不致引起应用程序的变化。
(2)数据的逻辑独立性是指数据库总体逻辑结构的改变,如修改数据模式,增加新的数据类型、改变数据间联系等,不需要相应修改应用程序。
(3)数据的独立性使得数据库中数据独立于应用程序而不依赖于应用程序,也就是说数据的逻辑结构、存储结构与存取方式的改变不影响应用程序。
相应的,数据的独立性也使得应用程序的编制不再依赖于数据的物理和逻辑结构,提高了应用程序的可移植性与鲁棒性。
从理论上说,数据的独立性可以使数据的组织和应用程序的编制完全分离。
8、什么是数据模型?答:数据模型(Data Model )是一种抽象模型,是对现实世界数据特征的抽象。
思考习题一、选择题1.事务的性质中,关于原子性(atomicity)的描述正确的是()。
A 指数据库的内容不出现矛盾的状态B 若事务正常结束,即使发生故障,更新结果也不会从数据库中消失C 事务中的所有操作要么都执行,要么都不执行D 若多个事务同时进行,与顺序实现的处理结果是一致的2.使用DECLARE申明一局部变量@m,则下列能对@m进行赋值的语句是()。
A @m=100B SET @m=100C SELECT @m=100D DECLARE @m=1003.下列运算符优先级别最高的是()。
A ALLB NOTC AND D OR4.下列函数中用于将字符转换为ASCII码的函数是()。
A CHAR()B ASCII()C NCHAR()D UNICODE()5.可用于返回今天属于哪个月份的T-SQL语句是()。
A SELECT DA TEDIFF(mm,GetDate())B SELECT DA TEPART(month,GetDate())C SELECT DA TEDIFF(n,GetDate())D SELECT DA TENAME(dw,GetDate())6.下列常量中不属于字符串常量的是()。
A ’小明’B ’what’’s this’C ”小强”D ”what’s your name”7.有下述T-SQL语句DECLARE @sub varchar(10)SET @sub=’aaa’SELECT @sub=SUBSTRING(‘HELLO SQL Server’,3,3)PRINT @sub则程序执行后的现实结果为()。
A 程序报错B ’aaa’C ’LLO’D ’LO ’8.下列关于触发器的描述,正确的是()。
A 一个触发器只能定义在一个表中B 一个触发器能定义在多个表中C 一个表上只能有一种类型的触发器D 一个表上可以有多种不同类型的触发器9.下列关于存储过程的描述不正确的是()。
《数据库应用技术》模拟试题(二)标准答案及评分标准一.填空题(共35分,第5题2分,命令主体1分,两个条件各0.5分;第6题2分,命令主体1分,分组1分;其他每空.1分。
)1.人工管理阶段、文件系统阶段、数据库系统阶段2.实体联系模型(ER模型)、属性、联系3. 选择、投影、连接4. IDENTITY5. select * from student where class =‘计算机1班’ and sex=’女’6. select cno, avg(degree) as ‘avgdegree’ from score group by cno7. 实体、引用或参照8.聚集、非聚集9. 8490010. @、@@ 11.35 12. 计算机网络技术专业、2.313. 层次模型、网状模型和关系模型14.主要(数据)文件、.mdf、次要(数据)文件、.ndf、(事务)日志文件、.ldf15. 实体16. DROP DA TABASE三.设计题(共45分)1.(共5分)create database gaoshi on(name= gaoshi 1,filename=’d:\ gaoshi 1.mdf’,size=10,maxsize=100,filegrowth=5%),(name= gaoshi 2,filename=’d:\ gaoshi 2.ndf’,size=10,maxsize=100,filegrowth=5%)[log on (name= gaoshilog,filename=’d:\gaoshilog.ldf’,size=5,maxsize=20,filegrowth=5%)](2分)alter database gaoshi add filegroup gsfg(1分)alter database gaoshi add file (name= gaoshi3,filename=’d:\gaoshi3.ndf’,size=5) to filegroup gsfg(1分)alter database exam modify filegroup examfg default(1分)2.(共5分)use pubs(1分)create table product(pro_id char(10) not null primary key,(1分)pro_name char(30),(1分)price money check (price<=$100000),(1分)stock int(1分))3. (共2分)update WORKS set 工资=工资*1.5(1分)where 公司名称=’联华公司’(条件1分)4. (3分)alter table 借阅add constraint fk1 foreign key(图书号) references 图书(图书号)5. (共2分)ALTER TABLE 学生ADD CONSTRAINT zy_def DEFAULT '计算机' FOR 专业6.(共3分)Create default date as gatedate()(1分)go(1分)sp_bindefault date,’学生.入学日期’(1分)7.(共3分)CREATE VIEW SSMZ AS SELECT * FROM XSDA WHERE 民族NOT LIKE '汉族'8.(共2分)DELETE SSMZ WHERE 姓名=‘马丽’9. (共5分)declare @n int,@sum int(1分)set @n=1(1分)set @sum=0(1分)while @n<=100beginset @sum=@sum+square(@n)set @n=@n+1end (循环结构4分)print '1到100的平方和为:'+convert(varchar(30),@sum)(1分)10. (共5分).USE XSIF (SELECT A VG(成绩) FROM KCXX,XSCJWHERE XSCJ.课程编号=KCXX.课程编号AND课程名称='计算机文化基础')<75PRINT '平均成绩低于75分'ELSEPRINT '平均成绩高于75分'11.(共5分)use xs (1分)select 姓名,系名,学位名称=CASE 代码WHEN 1 THEN '博士'WHEN 2 THEN '硕士'WHEN 3 THEN '学位'END(4分)FROM XSDA12.(共5分)declare @n int,@p bigintset @n=1set @p=1--(1分)while @n<=20beginset @p=@p*@nset @n=@n+1end --(循环结构3分)print '1到20的阶乘为:'+convert(varchar(30),@p) --(1分)。
数据库实验二作业及答案[1]实验2SQLServer数据库的管理一、实验目的1.了解SQLServer数据库的逻辑结构和物理结构的特点。
2.学会使用企业管理器对数据库进行管理。
3.学会使用Tranact-SQL语句对数据库进行管理。
二、实验准备1.确定能够创建数据库的用户是系统管理员,或是被授权使用CREATEDATABASE语句的用户。
2.确定要创建的数据库名、所有者(即创建数据库的用户)、数据库大小(最初的大小、最大的大小、是否允许增长即增长的方式)和存储数据的文件。
3.了解常用的创建数据库方法。
三、实验内容及步骤1.在企业管理器中创建tudentdb数据库。
(1)运行SQLServer管理器,启动企业管理器,展开服务器“(LOCAL)(WindowNT)”。
(2)右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。
在新建数据库对话框的名称文本框中输入学生管理数据库名tudentdb。
2.选择tudentdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“数据文件”、“事务日志”、“文件组”、“选项”和“权限”页面。
3.打开tudentdb数据库的“属性”对话框,在“数据文件”选项卡中修改tudentdb数据文件的“分配空间”大小为2MB。
指定“最大文件大小”为5MB.在“事务日志”选项卡中修改tudentdb数据库的日志文件的大小在每次填满时自动递增5%。
4.启动查询分析器,在查询分析器中使用Tranact-SQL语句CREATEDATABASE创建tudb数据库。
然后通过系统存储过程p_helpdb查看系统中的数据库信息。
CREATEdatabaetudbON(NAME=tudb,FILENAME='C:\\databae')e某ecp_helpdb5.在查询分析器中使用Tranact-SQL语句ALTERDATABASE修改tudb 数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小文1MB。
一、实训目的通过完成以下实践与操作,牢固掌握SQL Server 中数据库的创建与管理、数据表的创建与管理、约束的分析与创建、表中数据的输入与删除;二、实训环境PC机+Windows XP操作系统+SQL Server 2000;三、实训内容与要求实践1:设有一数据库GradeManager(成绩管理),包括四个表:学生表(Student)、课程表(Course)、班级表(Class)以及成绩表(Grade)。
四个表的结构如下:根据需要,定义好各个表的约束,比如在Student表中,性别只能是“男”或“女”;在Grade表中,成绩的取值范围为0-100;建立好四个数据表之间的参照完整性关系;用SQL语句创建库与四个表(在创建表结构同时定义各种约束)。
create database GradeManagergouse GradeManagercreate table Student(Sno char(7) not null constraint prik_Sno primary key clustered,Sname varchar(20) not null ,Ssex char(2) not null constraint Ssex_sex check(Ssex='男' or Ssex='女'),Sage smallint,Clno char(5) not null)create table Course(Cno char(1) not null constraint prik_Cno primary key clustered,Cname varchar(20) not null ,Credit smallint)create table Class(Clno char(5) not null constraint prik_Clno primary key clustered, Speciality varchar(20) not null,Inyear char(4) not null,Number int,Moniter char(7) foreign key references Student(Sno))create table Grade(Sno char(7) not null foreign key references Student(Sno),Cno char(1) not null foreign key references Course(Cno),Gmark decimal(4,1) constraint Grade_Gmark check(Gmark<=100 and Gmark>=0))Go实践2:给学生表增加一属性Nation(民族),数据类型为Varchar(20);用select语句查询,查看是否确实已经增加了一个字段;然后删除学生表中的属性Nation,之后用select语句查询操作结果;use GradeManageralter table Student add Nation varchar(20)gouse GradeManagerselect * from Studentgouse GradeManageralter table Student drop column Nationgouse GradeManagerselect * from Studentgo实践3:向四个表中分别插入如下记录,之后用select语句查询操作结果;(此处输入SQL代码及运行结果)--向表Student中输入数据use GradeManagerinsert into Student values('2000101','李勇','男',20,'00311') insert into Student values('2000102','刘诗晨','女',19,'00311') insert into Student values('2000103','王一鸣','男',20,'00312') insert into Student values('2000104','张婷婷','女',21,'00312') insert into Student values('2001101','李勇敏','女',19,'01311') insert into Student values('2001102','贾向东','男',22,'01311') insert into Student values('2001103','陈宝玉','男',20,'01311') go--向表Course中输入数据use GradeManagerinsert into Course values('1','数据库',4)insert into Course values('2','离散数学',3)insert into Course values('3','管理信息系统',2)insert into Course values('4','操作系统',4)insert into Course values('5','数据结构',4)insert into Course values('6','数据处理',2)insert into Course values('7','C语言',4)go--向表Class中输入数据use GradeManagerinsert into Class values('00311','计算机软件','2000',120,'2000101') insert into Class values('00312','计算机应用','2000',140,'2000103') insert into Class values('01311','计算机软件','2001',220,'2001103') go--向表Grade中输入数据use GradeManagerinsert into Grade values('2000101','1',92)insert into Grade values('2000101','3',88)insert into Grade values('2000101','5',86)insert into Grade values('2000102','1',78)insert into Grade values('2000102','6',55)insert into Grade values('2000103','3',65)insert into Grade values('2000103','6',78)insert into Grade values('2000103','5',66)insert into Grade values('2000104','1',54)insert into Grade values('2000104','6',83)insert into Grade values('2001101','2',70)insert into Grade values('2001101','4',65)insert into Grade values('2001102','2',80)insert into Grade values('2001102','4',90)insert into Grade values('2001102','6',83)insert into Grade values('2001103','4',76)insert into Grade values('2001103','6',56)go实践4:把学号为”2001101”的学生的成绩修改为70分,之后用select语句查询操作结果;use GradeManagerupdate Grade set Gmark='70' where Sno='2001101'gouse GradeManagerselect * from Grade where Sno='2001101'go实践5:删除学号为”2001101”的学生的成绩记录,之后用select语句查询操作结果;use GradeManagerdelete from Grade where Sno='2001101'gouse GradeManagerselect * from Grade where Sno='2001101'go实践6:将01311班的全体学生的成绩置零,之后用select语句查询操作结果;use GradeManagerselect Sno from Student where Clno='01311'go--得到三个学号2001101、2001102、2001103,然后用update命令更新Grade 表:use GradeManagerupdate Grade set Gmark='0' where (Sno='2001101' or Sno='2001102' or Sno='2001103')go--验证update操作结果use GradeManagerselect * from Grade where (Sno='2001101' or Sno='2001102' orSno='2001103')go实践7:删除2001级计算机软件的全体学生的选课记录,之后用select语句查询操作结果;--先从表Class中查出2001级的计算机软件专业班级号use GradeManagerselect Clno from Class where (Speciality='计算机软件' and Inyear='2001') go//查到班级号01311,再用班级号从表Student中查出这个班级的学生学号use GradeManagerselect * from Student where Clno='01311'go--得到三个学号2001101、2001102、2001103,然后用delete命令删除Grade 表中有关成绩记录:use GradeManagerdelete from Grade where (Sno='2001101' or Sno='2001102' or Sno='2001103') go--验证delete操作结果use GradeManagerselect * from Grade where (Sno='2001101' or Sno='2001102' orSno='2001103')go实践8:学生李勇已退学,从数据库中删除有关他的记录,之后用select语句查询操作结果。
习题答案子项目1安装和体验数据库一、选择题1.C2.C3.D4. A5.D二、填空题1.工作组版、开发人员版、开发版2. 关系型3.控制台命令、“计算机管理”对话框窗口、SQL Server配置管理器。
4.MSSQL Server5.网络协议三、简答题1.(1)数据库管理系统(DBMS):是一种操纵和管理数据库的软件,是用于建立、使用和维护数据库。
它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。
(2)数据库(DB):是由文件管理系统发展起来的,是依照某种数据模型组织起来的数据集合。
这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一软件进行管理和控制。
(3)数据库系统(DBS):是存储介质、处理对象和管理系统的集合体,通常由软件、数据库和数据管理员组成。
(4)数据库管理员(DBA):负责创建、监控和维护整个数据库,使数据能被任何有权使用的人有效使用。
2.常见数据库管理系统除了Microsoft SQL Server外,还有甲骨文公司的Oracle系统,IBM公司的DB2系统和Informix系统,赛贝斯公司的Sybase ASE系统,微软公司Access系统,以及MySQL公司的MySQL开源数据库系统。
3.需要在本地计算机上注册远程计算机的SQL Server数据库服务器。
成功注册服务器的前提条件:首先确保服务器端的SQL Server数据库服务已经启动,其次在SQL Server 配置管理器中已经启用TCP/IP通讯协议。
子项目2创建教学管理系统数据库与数据表一、选择题1.D2.C3.A4.A5.A6.B7.C8.A9.D 10.D 11.A 12.D二、填空题1.int2.引用(参照)完整性3.输入列的值4.主键5.检查约束、PRIMARYKEYS三、实训操作1、CREATE DATABASE library1ON PRIMARY(NAME = library,FILENAME = 'c:\library\library.mdf',SIZE = 5MB,MAXSIZE = 1000MB)LOG ON(NAME = library_log,FILENAME = 'c:\library\library_log.ldf',MAXSIZE = 5MB,FILEGROWTH = 10%)GO2、USE Library1GOCREATE TABLE Readers(RID INT NOT NULL, --读者编号RName NVARCHAR(50) N OT NULL, --读者姓名RSex CHAR(2) NOT NULL, --读者性别RTypeId INT NOT NULL, --读者类型编号RAddress NVARCHAR(50) NULL, --家庭住址Email NVARCHAR(50) NULL --电子邮件)GOCREATE TABLE ReaderType(RTypeId INT IDENTITY(1,1) NOT NULL, --读者类型编号RType NVARCHAR(30) NOT NULL, --读者类型名称Num TINYINT NOT NULL --可借数量)GOCREATE TABLE Books(BID INT IDENTITY(1,1) NOT NULL, --图书编号Title NVARCHAR(200) NOT NULL, --图书名称Author NVARCHAR(50) NOT NULL, --图书作者PubId INT NOT NULL, --出版社编号PubDate SMALLDATETIME NOT NULL, --出版时间ISBN NVARCHAR(200) NOT NULL, --ISBNPrice MONEY NOT NULL, --单价CategoryId INT NOT NULL --图书种类编号)GOCREATE TABLE BookCategory(CateoryId INT IDENTITY(1,1) NOT NULL, --图书类型编号Name NVARCHAR(20) NOT NULL --图书类型名称)GOCREATE TABLE Publishers(PID INT IDENTITY(1,1) NOT NULL, --出版社编号PName NVARCHAR(50) NULL --出版社名称)GOCREATE TABLE Borrow(RID INT NOT NULL, --读者编号BID INT NOT NULL, --图书编号LendDate DATETIME NOT NULL, --借阅日期ReturnDate DATETIME NULL, --实际归还日期)GOCREATE TABLE Penalty(RID INT NOT NULL, --读者编号BID INT NOT NULL, --图书编号PDate DATETIME NOT NULL, --罚款日期PType INT NOT NULL, --罚款类型Amount MONEY NULL --罚款金额)GO3、--创建各类约束--Reader表的约束--RSex char(2) 只取男、女,默认值为男读者性别ALTER TABLE ReadersADD CONSTRAINT CK_RSex CHECK(RSex='男' OR RSex='女')ALTER TABLE ReadersADD CONSTRAINT DF_RSex DEFAULT '男' FOR RSexALTER TABLE ReadersADD CONSTRAINT DF_Raddress DEFAULT '地址不详' FOR Raddress ALTER TABLE ReadersADD CONSTRAINT CK_Email CHECK(Email LIKE '%@%')ALTER TABLE ReadersADD CONSTRAINT PK_RID PRIMARY KEY (RID)--ReaderType的约束ALTER TABLE ReaderTypeADD CONSTRAINT PK_RTypeId PRIMARY KEY (RTypeId)GOALTER TABLE ReaderTypeADD CONSTRAINT CK_Num CHECK (Num>=0)GO--Books的约束ALTER TABLE BooksADD CONSTRAINT PK_BID PRIMARY KEY (BID)GOALTER TABLE BooksADD CONSTRAINT CK_PubDate CHECK (PubDate<GETDATE())GOALTER TABLE BooksADD CONSTRAINT UQ_ISBN UNIQUE(ISBN)GOALTER TABLE BooksADD CONSTRAINT CK_Price CHECK (Price>0)GO--BookCategory的约束ALTER TABLE BookCategoryADD CONSTRAINT PK_CateoryId PRIMARY KEY (CateoryId)ALTER TABLE PublishersADD CONSTRAINT PK_PID PRIMARY KEY (PID)GO--图书借阅信息表Borrow表中的约束ALTER TABLE BorrowADD CONSTRAINT PK_borrow PRIMARY KEY(RID,BID,LendDate) ALTER TABLE BorrowADD CONSTRAINT DF_LendDate DEFAULT GETDATE() FOR LendDate --图书罚款信息表Penalty 中的约束ALTER TABLE PenaltyADD CONSTRAINT PK_penalty PRIMARY KEY(RID,BID,PDate) ALTER TABLE PenaltyADD CONSTRAINT DF_PDate DEFAULT GETDATE() FOR PDateALTER TABLE PenaltyADD CONSTRAINT CK_Amount CHECK (Amount>0)--创建外键约束ALTER TABLE ReadersADD CONSTRAINT FK_Readers_ReaderType FOREIGN KEY(RTypeId) REFERENCES ReaderType(RTypeId)ALTER TABLE BooksADD CONSTRAINT FK_Books_Publishers FOREIGN KEY(PubId) REFERENCES Publishers(PID)(外键约束以此为例,其他略)4、插入记录此处使用操作方式略。
课后实训参考答案单元1(SQL Server概述)1、使用SQL语句。
在Sale数据库中创建名为MyDataType的用户定义数据类型,数据类型为NV ARCHAR,长度为20,该列允许为NULL。
USE SaleGOEXEC sp_addtype MyDataType,'NVARCHAR(20)','NULL' GO单元2(单表数据)使用查询窗口或sqlcmd实施查询。
本实训使用Xk数据库。
--1.查看系部编号为“03”的系部名称。
USE XkGOSELECT DepartNameFROM DepartmentWHERE DepartNo='03'GO--2.查看系部名称中包含有“工程”两个字的系的全名。
USE XkGOSELECT DepartNameFROM DepartmentWHERE DepartName LIKE'%工程%' GO--3.显示共有多少个系部。
USE XKGOSELECT'系部总数'=COUNT(*)FROM DepartmentGO--4.显示“01”年级共有多少个班级。
USE XKGOSELECT'01 级班级数'=COUNT(*)FROM ClassWHERE ClassNo LIKE'2001%'GOSELECT'01 级班级数'=COUNT(*)FROM ClassWHERE ClassName LIKE'01%'GOSELECT'01 级班级数'=COUNT(*)FROM StudentWHERE ClassNo LIKE'2001%'GO--5.查看在“周二晚”上课的课程名称和教师。
USE XKGOSELECT'课程名称'=CouName,'任课教师'=TeacherFROM CourseWHERE SchoolTime='周二晚'GO--6.查看姓“张”、“陈”、“黄”同学的基本信息,要求按照姓名降序排序查询结果。