当前位置:首页 > 数据库系统及应用教程(SQL Server 2008)习题1-8章答案
5.给出下列各T-SQL语句的运行结果。
(1) SELECT CHARINDEX('科学','计算机科学与技术专业')
(2) SELECT ROUND(26.213+124.1869,2)
(3) SELECT STR(234.5678,6,2)
(4) SELECT '25+12='+cast(37 as nvarchar) 解:
(1) 4 (2) 150.4000 (3) 234.57 (4) 25+12=37
6.用PRINT语句输出习题4-5中的T-SQL语句结果。
习题五
1.名词解释:
主数据文件 辅助数据文件 主文件组 默认文件组 数据完整性约束 答:
主数据文件:是数据库的起点,其中包含数据库的初始信息,记录数据库所拥有的文件指针。每个数据库有且仅有一个主数据文件,这是数据库必需的文件。主数据文件的扩展名是.mdf。
辅助数据文件:存储主数据文件未存储的所有其它数据和对象,它不是数据库必需的文件。当一个数据库需要存储的数据量很大(超过了Windows操作系统对单一文件大小的限制)时,可以用辅助数据文件来保存主数据文件无法存储的数据。辅助数据文件可以分散存储在不同的物理磁盘中,从而可以提高数据的读写效率。辅助数据文件扩展名为.ndf。
主文件组:是包含主要文件的文件组。所有系统表和没有明确分配给其他文件组的任何文件都被分配到主文件组中,一个数据库只有一个主文件组。
默认文件组:每个数据库中均有一个文件组被指定为默认文件组。如果在数据库中创建
13
对象时没有指定对象所属的文件组,对象将被分配给默认文件组。在任何时候,只能将一个文件组指定为默认文件组。
数据完整性约束:是数据库设计方面的一个非常重要的问题,数据完整性代表数据的正确性、一致性与可靠性。实施完整性的目的在于确保数据的质量,约束是保证数据完整性的重要方法。
2.简述创建表结构时,常用数据类型的主要作用。 答:
创建数据表时,常用数据类型指定义在该字段上的数据值以及在这些数据值上相关的操作。数据类型起着两种主要作用:
一是利用数据类型信息的字段操作:为字段操作提供了隐含的上下文环境,如字段“AGE”是int类型,表达式avg(AGE)就会求出平均年龄的操作。
二是通过数据类型信息捕捉字段操作错误:数据类型限制了语义上合法的程序里可以执行的操作集合。如数据类型不允许去做一个和字符串进行算术相加的字段操作。
3.简述各种约束对表中数据的作用。 答:
主键约束能唯一地标识表中数据的每一行。
唯一性约束用来限制不受主键约束的列上的数据的唯一性。
CHECK约束用于限制输入一列或多列值的范围,从逻辑表达式判断数据的有效性。 默认值约束是在用户在插入新的数据行时,如果没有为该列指定数据,那么系统就将默认值赋给该列。
外键约束用于建立和加强两个表(主表和从表)的一列或多列数据之间的链接。 4.SQL Server 2008支持的数据完整性约束有哪几类?各有什么作用? 答:
SQL Server 2008支持的数据完整性约束包括5种类型:主键(PRIMARY KEY)约束、唯一性(UNIQUE)约束、检查(CHECK)约束、默认值(DEFAULT)约束和外键(FOREIGN KEY)约束。
PRIMARY KEY约束能唯一地标识表中数据的每一行。
UNIQUE约束用来限制不受主键约束的列上的数据的唯一性。
CHECK约束用于限制输入一列或多列值的范围,从逻辑表达式判断数据的有效性。 DEFAULT约束是在用户在插入新的数据行时,如果没有为该列指定数据,那么系统就将默认值赋给该列。
FOREIGN KEY约束用于建立和加强两个表(主表和从表)的一列或多列数据之间的链接。
5.在图书销售数据库中有表结构BOOK(BOOK_ID,BOOK_NAME,PRICR)和
AUTHOR(AUTHOR_NAME,BOOK_ID,ADDRESS),写出完成下列操作的T-SQL语句。
(1) 设置BOOK中BOOK_ID为主键; (2) 设置AUTHOR中BOOK_ID为外键;
(3) 在表BOOK中插入数据(’1203’,’数据库系统与应用教程’,32.8)
(4) 修改表BOOK中BOOK_ID为“1013”的PRICR,使之为原PRICR的0.75倍。 (5) 删除表AUTHOR中的AUTHOR_NAME为“王昌辉”的记录。
解:
(1) USE EDUC
GO
ALTER TABLE BOOK
14
ADD CONSTRAINT PK_BOOK_ID PRIMARY KEY CLUSTERED(BOOK_ID) GO
(2) USE EDUC
GO
ALTER TABLE AUTHOR
ADD CONSTRAINT FK_AUTHOR_BOOK FOREIGN KEY(BOOK_ID) REFERENCES
BOOK(BOOK_ID)
GO
(3) USE EDUC
GO
INSERT into BOOK VALUES(’1203’,’数据库系统与应用教程’,32.8) GO
(4) USE EDUC
GO
UPDATE BOOK
SET PRICR=PRICR*0.75 WHERE BOOK_ID=’1013’
(5) USE EDUC
GO
DELETE AUTHOR
WHERE AUTHOR_NAME=’王昌辉’ GO
习 题 6
1.名词解释:
连接查询 子查询 无关子查询 相关子查询 游标
答:连接查询:是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。通过连接运算符可以实现多个表查询。
子查询:当一个查询是另一个查询的条件时,称之为子查询。子查询可以使用几个简单命令构造功能强大的复合命令。
无关子查询:不依赖于父查询的字查询。它执行的过程是:首先执行子查询语句,得到的子查询结果集传递给父查询语句使用。
相关子查询:SELECT语句嵌套时,子查询中查询条件依赖于外层查询中的值,因此子查询要反复求值供外层查询使用。这种子查询称为相关子查询。
游标:是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。它从包括多个元组的集合中每次读取一个元组的机制。
2.对于教学管理数据库的三个基本表 S(SNO,SNAME, SEX, AGE,SDEPT) SC(SNO,CNO,GRADE)
C(CNO,CNAME,CDEPT,TNAME) 试用T-SQL查询语句表达下列查询:
(1) 查询“王志强”所授课程的课程号和课程名。
15
(2) 查询年龄大于20岁的男学生的学号和姓名。
(3) 查询学号为S6的学生所学课程的课程名和任课教师名。
(4) 查询至少选修“王志强”老师所授课程中一门课程的女学生姓名。 (5) 查询“李小刚”同学不学的课程的课程号。
(6) 查询至少选修两门课程的学生学号。 解:
(1) USE JXGL
GO
SELECT CNO,CNAME FROM C
WHERE TNAME='王志强' GO
(2) USE JXGL
GO
SELECT SNO,SNAME FROM S
WHERE SEX='M' AND AGE>20 GO
(3) USE JXGL
GO
SELECT CNAME,TNAME
FROM S JOIN SC ON S.SNO=SC.SNO AND S.SNO='S6'
JOIN C ON SC.CNO=C.CNO
GO
(4) USE JXGL
GO
SELECT SNAME FROM S WHERE SNO IN
(
SELECT SNO FROM SC WHERE CNO IN (SELECT CNO FROM C
WHERE TNAME='王志强' ) )
GO
(5) USE JXGL
GO
SELECT CNO FROM C EXCEPT
16
共分享92篇相关文档