电大数据库系统及应用形考册第章习题与参考答案.docx
第4章习题与参考答案一. 单项选择题1下列所述功能中,不属于SQL语言功能的是(D)。A数据表的定义功能B数据查询功能C数据增、删、改功能D供应便利的用户操作界面功能2设某职工表中有用于存放年龄(整数)的列,下列类型中最相宜年龄列的是(C)。AintBsmallintCtinyintDbit3设某学生表中有用于存放学生编号的列,下列类型中最相宜的是(D)。AintBdateCtinyintDchar4下列约束中用于限制列的取值范围的约束是(B)。APRIMARY KEYBCHECKCDEFAULTDUNIQUE5下列约束中用于限制列取值不重的约束是(D)。APRIMARY KEYBCHECKCDEFAULTDUNIQUE6下列约束中用于实现实体完好性的是(A)。APRIMARY KEYBCHECKCDEFAULTDUNIQUE7下列关于DEFAULT约束的说法,错误的是(D)。A一个DEFAULT约束只能约束表中的一个列B在一个表上可以定义多个DEFAULT约束CDEFAULT只能定义在列级完好性约束处D在列级完好性约束与表级完好性约束处都可以定义DEFAULT约束8下列为变量赋值的语句中,错误的是(D)。ASET X = 10BSELECT X = 10CSET X = 10 + 10DSET X = 10 + 'A'9设有表T,现要在该表新增加一个列,列名为:c1,类型为int。下列能实现该功能的语句是(A)。AALTER TABLE T ADD COLUMN c1 intBALTER TABLE T ADD (c1 int)CALTER TABLE T ADD COLUMN c1DALTER TABLE T ADD c110设有表M,将其中的Type列的数据类型改为NCHAR(4)。下列能实现该功能的语句是(B)。AALTER TABLE M ADD COLUMN Type NCHAR(4)BALTER TABLE M ALTER COLUMN Type NCHAR(4)CALTER TABLE M DROP COLUMN Type NCHAR(4)DALTER TABLE M ALTER Type NCHAR(4)11. 下列(B)固定占用10个字节的空间。Avarchar(10)Bchar(10)Cnchar(10)Dnvarchar(10)12. 关于 numeric(p,s)说法错误的是(C)。Ap代表整个数值的数字位数Bq代表小数点后的数字位数Cnumeric(p,s)是近似数值类型D最大的存储空间是17字节二推断题1decimal(p,s)数据类型属于字符型。()2 /*/ 之间的内容用于表示注释,对程序无影响。( )3'Good' + morning的结果为:'Good morning'。()4SsexNCHAR(1) DEFAULT '男'语句中的DEFAULT约束表示Ssex变量的默认值为'男'。( )5SageTINYINTCHECK(Sage>=22 AND Sage<=60)中的变量Sage只能取值在22到60之间。( )三简答题1简述SQL语言的功能,每个功能的作用是什么?答:SQL按其功能可分为四大局部:数据定义、数据限制、数据查询与数据操作。数据定义功能用于定义、删除与修改数据库中的对象;数据查询功能用于实现查询数据的功能,查询数据是数据库中运用最多的操作;数据操作功能用于增加、删除与修改数据;数据限制功能用于限制用户对数据库的操作权限。2Transact-SQL支持的主要数据类型有哪些?答:数值类型(包括精确数值类型与浮点数值类型)、字符串类型(包括统一字符编码的字符串类型与一般字符编码的字符串类型)、日期时间类型以及二进制数据类型。四综合应用题例1计算两个变量的与,然后显示其结果:DECLARE x int = 10, y int = 20, z intSET z = x + yPrint z解析:DECLARE x int = 10, y int = 20, z int声明了三个整型变量x,y,z,其中x的初值为10,y的初值为20。利用SET语句为z赋值Print语句的作用是向客户端返回Z的值。例2If语句运用示例。DECLARE x int, y int, z intSET x = 40SET y = 30IF (x > y ) SET z = x - yELSESET z = y - xPrint z解析:语句DECLARE x int, y int, z int声明了三个整型变量x,y,z,语句SET x = 40与SET y = 30给出变量x的初值是40,y的初值是30,语句IF (x > y ) 进展推断,确定进入哪个分支。本例中,程序进入SET z = x - yZ值为10。例3计算1 + 2 + 3 + + 100的值。解析:DECLARE i int, sum intSET i = 1SET sum = 0WHILE i <= 100BEGINSET sum = sum + iSET i = i + 1ENDPRINT sum例4创立表并给出约束。用SQL语句创立如下三张表:学生表(Student)、课程表(Course)与学生修课表(SC),这三张表的构造与约束如表4-1到表4-3所示。表4-1 Student表构造列名含义数据类型约束Sno学号CHAR(7)主键Sname姓名NCHAR(5)非空SID身份证号CHAR(18)取值不重Ssex性别NCHAR(1)默认值为“男”Sage年龄TINYINT取值范围为1545Sdept所在系NVARCHAR(20) 表4-2 Course表构造列名含义数据类型约束Cno课程号CHAR(6)主键Cname课程名NVARCHAR(20)非空Credit学分NUMERIC(3,1)大于0Semester学期TINYINT 表4-3 SC表构造列名含义数据类型约束Sno学号CHAR(7)主键,引用Student的外键Cno课程名CHAR(6)主键,引用Course的外键Grade成果TINYINT 解析:创立满意约束条件的上述三张表的SQL语句如下:CREATE TABLE Student (SnoCHAR(9)PRIMARY KEY,SnameNCHAR(5)NOT NULL,SIDCHAR(18)UNIQUE,SsexNCHAR(1)DEFAULT '男', SageTINYINTCHECK(Sage>=15 AND Sage<=45),SdeptNVARCHAR(20)CREATE TABLE Course (CnoCHAR(6)PRIMARY KEY,CnameNVARCHAR(20)NOT NULL,CreditNUMERIC(3,1)CHECK(Credit>0),SemesterTINYINT )CREATE TABLE SC (SnoCHAR(9)NOT NULL,CnoCHAR(6)NOT NULL,GradeTINYINT,PRIMARY KEY (Sno, Cno),FOREIGN KEY (Sno) REFERENCES Student(Sno),FOREIGN KEY (Cno) REFERENCES Course(Cno) )例5为SC表添加“修课类别”列,此列的定义为:Type NCHAR(1),允许空。解析:ALTER TABLE SC ADD Type NCHAR(1)例6将新添加的Type列的数据类型改为NCHAR(2)。解析:ALTER TABLE SC ALTER COLUMN Type NCHAR(2)例7为Type列添加限定取值范围为必修,重修,选修的约束。解析:ALTER TABLE SCADD CHECK(Type IN ('必修', '重修', '选修') )例8删除SC表的“Type”列。解析:ALTER TABLE SC DROP COLUMN Type例9“图书表”构造如下:书号:统一字符编码定长类型,长度为6,主键;书名:统一字符编码可变长类型,长度为30,非空;第一一般编码定长字符类型,长度为10,非空;出版日期:日期型;价格:定点小数,小数局部1位,整数局部3位,默认值为20。写出创立表的SQL语句,要求在定义表的同时定义数据的完好性约束。(表名与列名用中文)解析:createtable图书表(书号nchar(6)primarykey,书名nvarchar(30)notnull,第一作者char(10)notnull,出版日期date,价格numeric(4,1)default20)10为图书表添加“印刷数量”列,类型为整数。解析:altertable图书表add印刷数量int第 13 页