《《数据库技术》-复习题答案.doc》由会员分享,可在线阅读,更多相关《《数据库技术》-复习题答案.doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库应用技术习题-答案一、基本句法格式掌握:1、创建 数据库(使用CREATE DATABASE 语句)格式:CREATE DATABASE 数据库名称2、修改 数据库名 (使用ALTER DATABASE 语句 )格式:ALTER DATABASE 数据库旧名 MODIFY NAME = 数据库新名3、删除 实例数据库 (使用DROP DATABASE 语句)格式:DROP DATABASE 数据库名称4、创建 表(使用CREATE TABLE 语句)格式:CREATE TABLE表名称 ( 字段名1 数据类型 NOT NULL, 字段名2 数据类型 NOT NULL, 字段名3 数据类型
2、 NOT NULL, ., PRIMARY KEY ( 字段名1 ASC ) )5、修改 表中的数据类型 ( 使用ALTER TABLE 语句 )格式:alter table 表名 alter column 字段名 新数据类型6、添加 表中的数据类型( 使用ALTER TABLE 语句 )格式:ALTER TABLE 表名 add 字段名 新数据类型7、向表中录入数据 ( 使用 INSERT INTO 语句)格式:INSERT INTO 表名 VALUES(数据1,数据2,数据3,.)8、修改(更新)表中的数据 ( 使用 UPDATE 语句)格式:UPDATE 表名 SET 字段名=新数据 W
3、HERE 字段名=旧数据9、使用DELETE语句从表中删除某一条数据语法格式格式:delete from 表名 where 条件10、请写出完整的SELECT语句的语法结构。SELECT语句的语法结构如下: SELECT ALL | DISTINCT 字段列表 INTO 新表 FROM 数据源 WHERE 条件表达式 GROUP BY 分组表达式 HAVING搜索表达式 ORDER BY 排序表达式 ASC | DESC11、要将下表“stu”中的“sno”设为主键,下面的语句如何修改?CREATE TABLE stu(sno char(10) NOT NULL, sname char(20)
4、, sage int CHECK (cage0) )修改后为:CREATE TABLE stu(sno char(10) primary key, sname char(20), sage int CHECK (cage0) )二、附加basetest数据库,然后完成相应操作题目:以下题目均在basetest数据库中4个表中完成,请大家先将给出的“basetest数据库”附加之后再操作。1、创建“MA系男生选课信息”,并为每个字段指定字段别名,(只显示sno,sname,ssex,cno几列)以方便查看。USE basetestCREATE VIEW MA系男生选课信息(学号,姓名,性别,选课
5、号)AS SELECT student.sno,sname,ssex,cno FROM student,sc WHERE student.sno=sc.sno AND ssex=男2、在basetest数据库中,创建“所有男同学的信息” 视图,并且要添加“WITH CHECK OPTION”子句;然后在视图中插入一条记录(05044,黄君,女,21,MA),看看是否可以插入?CREATE VIEW 所有男同学的信息 AS SELECT * FROM student WHERE ssex=男 WITH CHECK OPTION 不可以插入。3、在basetest数据库中,查询学生年龄在19到21
6、岁之间的同学,将他们的信息插入到新表“LXH”中。USE basetestselect *into LXHfrom studentwhere sage between 19 and 214、在basetest 数据库中,使用T-SQL语句,分别以Varchar 和Smalldatetime数据类型为基础建立一个sname (不能为空)和birthday 的数据类型(可以为空);USE basetest Exec sp_addtype sname,varchar(10),not nullExec sp_addtype birthday, Smalldatetime,null5、删除上题中建立的s
7、name数据类型 USE basetestExec sp_droptype sname6、在basetest数据库中添加一个新文件“test”,初始大小为5MB,最大长度为20MB,增长量为5MBALTER DATABASE basetestADD FILE(NAME=test,FILENAME=C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDatatest.ndf,SIZE=5MB,MAXSIZE=20MB,FILEGROWTH=5MB)GO7、修改数据库basetest中名“test”文件的大小为8MB,(之前大小为5MB)最大值为22,增长
8、量1% 。alter database basetestmodify file(name= test,size=8,maxsize=22,filegrowth=1%)8、利用T-SQL语句更新student表,把sname=戈丽丽的记录的sno改为05114。 update studentset sno=05114where sname=戈丽丽9、利用T-SQL语句更新student表,把所有性别为男记录的sage都增加1。update studentset sage=sage+1where ssex=男10、在表“xiaoli”中 查询,所有认为老师一般严肃的学生记录,并显示他们的姓名,年龄
9、(不是生日),总分,对老师评价和每日睡觉时间。结果先按“总分”升序排列,在“总分”相同情况下按“年龄”降序排列,Select 姓名,2009-Year(生日) 年龄,总分,对老师评价,每日睡觉时间from xiaoliwhere 对老师评价=一般严肃 ORDER BY 总分ASC, 2007-Year(生日)DESC11、在表“xiaoli”中 按性别分类查询显示男生和女生的平均年纪.Select 性别,avg(2009-year(生日) 平均年纪from xiaoligroup by 性别12、在表“xiaoli”中 按是否吸烟,性别分类查询显示男生和女生是否吸烟的人数.Select 是否吸
10、烟,性别,count(姓名) from xiaoligroup by 性别, 是否吸烟13、在表“xiaoli”中 统计显示表中”不吸烟”和”吸烟”的学生的最低体重和最高体重.Select 是否吸烟,min(体重) 最低体重, max(体重) 最高体重from xiaoliwhere 是否吸烟 in(是,否)group by 是否吸烟14、在表“xiaoli”中 按“性别”,“是否吸烟”对体重超过90斤的学生进行分组,统计学生人数Select 是否吸烟,性别,count(姓名) 人数from xiaoliwhere 体重90group by 性别,是否吸烟15、在表“xiaoli”中 统计显示
11、表中不喝酒和喝酒的男生和女生的最高月生活费,最后显示最高月生活费高于1000的学生记录。Select 性别,是否喝酒,max(月生活费) 最高月生活费from xiaoliwhere 是否喝酒 in(是,否)group by 是否喝酒,性别having max(月生活费)100016、在表“xiaoli”中 按性别,月生活费统计班级里“不吸烟”的学生人数。Select 月生活费,性别,count(姓名) 人数from xiaoliwhere 是否吸烟=否group by 性别,月生活费17、在表“xiaoli”中 按宿舍统计不姓“陈”的学生的平均月生活费,月生活费为空的不统计。Select 宿
12、舍,avg(月生活费) 平均月生活费from xiaoliwhere 姓名 like 陈% and 月生活费 is not nullgroup by 宿舍三、动手创建test数据库,然后完成相应操作题目:1、在数据库“TEST”中建立“工人信息表”,包括字段:编号,姓名,身高,体重,共4个字段。将编号和姓名的组合设置为主键约束,请写出语句。Use TESTcreate table工人信息表(编号 char(8),姓名 char(20),身高 int ,体重 float,primary key (编号,姓名) )2、利用SQL语句修改“工人信息表”中的列,将上题中的 “体重”列删除。Use TE
13、STalter table 工人信息表drop column 体重3、利用SQL语句在“工人信息表”表中增加一个“性别”列(缺省为“男”)和“住址”列(不能为空) 。Use TESTALTER TABLE 工人信息表ADD 性别 CHAR(2) default男,住址 CHAR(40) not null4、在数据库“TEST”中,创建“学生信息表”, 包括【学号(主键),姓名(不为空),年龄,性别】,强制年龄字段在6岁到20岁之间,强制”性别”字段只能为男或女,不能为其他任何数值,请写出语句。Use TESTcreate table 学生信息表(学号 int primary key,姓名 TEXT not null,年龄 int check(年龄6 and 年龄=0 AND SCORE =100)Insert into SC (CNO,SCORE,SNO) Values(2011,89,118)Insert into SC (SCORE,CNO,SNO) Values(70,1301,232)