数据库练习及答案

一. 创建一个学生档案表(表名为 xsda),其表结构如下: 列名 Xh Xm csny Gz Zy 类型 Char Char Datetime Decimal Char 6 10 长度 10 8 √ √ √ √ 允许空 备注 学号 姓名 出生年月 工资 专业 Create Table xsda ( xh Char (10) not null unique, xm Char(8), csny Datetime , gz Decimal(6,1), zy Char (10) ) 1. 在 xsda 表中插入一个学生记录: (2000jsj008,李平) insert into xsda(xh,xm) values(‘2000jsj008’,’李平’) 2. 把 xsda 表中 80-01-01 前出生的人的工资增加 20% Update xsda set gz=gz*1.2 where csny<’ 80-01-01’ 3. 查询 xsda 表中不同专业的人数 Select zy ,count(xh) from xsda group by zy 4. 假如另外还有一个学生成绩表 xscj(xh,kch,kccj), xh,kch,kccj 分别指学号、 课程号、 成绩, 要求查询姓名为李平的同学的各门课程的成绩。 Select kch,kccj from xsda,xscj where xsda.xh=xscj.xh and xm=’ 李平’ 5. xsda、xscj 表同上,查询选修了 kch 为 Yy2 的学生的 xh 和 Xm Select xh,xm from xsda,xscj where xsda.xh=xscj.xh and kch=’ Yy2’ 二、使用 SQL 语句创建一个班级表 CLASS,属性如下:CLASSNO,DEPARTNO,CLASSNAME;类型均 为字符型;长度分别为 8、2、20 且均不允许为空。 CREATE ___table_____ CLASS (CLASSNO __char____ (8) NOT NULL, DEPARTNO CHAR (2) NOT NULL, CLASSNAME CHAR (__20__) NOT NULL ) 三、有一个[学生课程]数据库,数据库中包括三个表: 学生表:Student 由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个 属性组成,记为:Student(Sno,Sname,Ssex,Sage,Sdept),Sno 为关键字。 课程表:Course 由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组 成,记为: Course(Cno,Cname,Cpno,Ccredit) Cno 为关键字。 成绩表:SG 由学号(Sno)、 课程号(Cno)、 成绩(Grade)三个属性组成, 记为: SG(Sno,Cno,Grade) (SNO, CNO) 为关键字。 用 SQL 语言实现下列功能: 1.建立学生表[Student],其中学号属性不能为空,并且其值是唯一的。 2.查考试成绩有不及格的学生的学号。 1

3.将学号为05001学生的年龄改为22岁。 4.计算1号课程的学生平均成绩。 5. 查计算机系姓赵的男同学的姓名(Sname)、性别(Ssex)、年龄(Sage)。 6.将一个新学生记录(学号:05020;姓名:丁莉;性别:女;年龄:17 岁;所在系:计算机;) 插入 Student 表中。 1. create table student (Sno char(5) primary key, Sname char(20), Ssex char(2), Sage int, Sdept char(15) ) 2. select distinct sno from sg where grade < 60 3. update student set sage=22 where sno='05001' 4. select avg(grade) from sg where cno='1' 5. select sname,ssex,sage from sdudent where sdept=’计算机系’and sname like '赵 %' and ssex ='女' 6. insert into student values ('05020', '丁莉', '女', 17, '计算机系') 四、有一个[学生课程]数据库,数据库中包括三个表: 学生表 Student 由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属 性组成,记为: Student(Sno,Sname,Ssex,Sage,Sdept) ,Sno 为关键字。 课程表 Course 由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组 成,记为:Course(Cno,Cname,Cpno,Ccredit) Cno 为关键字。 成绩表 SG 由学号(Sno)、 课程号(Cno)、 成绩(Grade)三个属性组成, 记为: SG(Sno,Cno,Grade) (SNO, CNO)为关键字。 用 SQL 语言实现下列功能: 1.建立学生表Student,其中学号属性不能为空,并且其值是唯一的。 2.向Student表增加“入学时间(Scome)”列,其数据类型为日期型。 2

3.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。 4.查询学习1号课程的学生最高分数、平均成绩。 5.查询与“李洋”在同一个系学习的学生。 6.将计算机系全体学生的成绩置零。 7.删除学号为05019的学生记录。 8.删除计算机系所有学生的成绩记录。 1. CREATETABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20), Ssex CHAR(2), Sage INT, Sdept CHAR(15)) 2. ALTER TABLE Student ADD Scome DATETIME 3. SELECT Sno, Grade FROM SG WHERE Cno='3' ORDER BY Grade DESC 4. SELECT MAX(Grade), AVG(Grade) FROM SC WHERE Cno='1' 5. SELECT Sno, Sname, Sdept FROM Student WHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname='李洋') 6. UPDATE SG SET Grade=0 WHERE Sno in ( SELECT Sno FROM Student WHERE Sdept = '计算机系') 7. DELETE FROM Student WHERE Sno='05019' 8. DELETE FROM SG WHERE Sno in ( SELECT Sno FROM Student WHERE Sdept = '计算机系') 3

五、有一个[学生课程]数据库,数据库中包括三个表: 学生表由学号、姓名、性别、年龄、所在系五个属性组成, 可记为:学生表(学号,姓名,性别,年龄,所在系) [学号]为关键字。 课程表由课程号、课程名、先修课号、学分四个属性组成, 可记为:课程表(课程号,课程名,先修课号,学分) 课程表为关键字。 学生选课表由学号、课程号、成绩三个属性组成, 可记为: 成绩表(学号,课程号,成绩) (学号、课程号)为关键字。 编写用SQL语言实现下列功能的sql语句代码: 1、建立一个[学生表],其中学号属性不能为空,并且其值是唯一的。 2、查询全体学生的详细记录。 3、查询年龄在20至23岁之间的学生的姓名、系别、和年龄。 4、计算1号课程的学生平均成绩。 5、将计算机科学系全体学生的成绩置零。 1、建立一个学生表。 CREATE TABLE 学生表 (学号 CHAR(5) NOT NULL UNIQUE, 姓名 CHAR(20), 性别 CHAR(2), 年龄 INT, 所在系 CHAR(15)) 2、查询全体学生的详细记录 SELECT * FROM 学生表 3、查询年龄在20至23岁之间的学生的姓名、系别、和年龄 SELECT 姓名, 所在系, 年龄 FROM 学生表 WHERE 年龄 BETWEEN 20 AND 23 4、计算1号课程的学生平均成绩 SELECT AVG(成绩) FROM 成绩表 WHERE 课程号='1' 5、将计算机科学系全体学生的成绩置零 UPDATE 成绩表 SET 成绩=0 WHERE 学号 in ( SELECT 学号 FROM 学生表 WHERE Sdept ='计算机科学系') 现有关系数据库如下: 数据库名:学生成绩数据库 学生表(班级编号,学号,姓名,性别,民族,身份证号,出生日期) 课程表(课程号,课程名,开课学期,学时) 成绩表(ID,学号,课程号,分数) 用 SQL 语言实现下列功能的 sql 语句代码: 1.查询学生信息表中的年龄(重复年龄只显示一次) 2.从学生信息表和教学成绩表中查询查询学生的学号、姓名、课程名和分数 3.从课程表中统计第二学期的总学时。 执行结果为: 课程好 课程名 开课学期 学时 4

… … … … … … sum ============ … 4.编写一个存储过程,输入学号,从“教学成绩表视图” 显示该学生的姓名、课程名、分数。 5.创建一个触发器,当修改学生表中的姓名时,显示“学生姓名已被修改” 。 1.查询学生信息表中的年龄(重复年龄只显示一次) use 教学成绩管理数据库 select distinct 年龄=datediff(year,出生日期,getdate()) from 学生信息表 2.从学生信息表和教学成绩表中查询查询学生的学号、姓名、课程名和分数 use 学生成绩数据库 select 成绩表.学号,姓名,课程名,分数 from 教学成绩表,学生信息表 where 成绩表.学号 = 学生表.学号 AND 成绩表.课程号=课程表.课程号 3. 从课程表中统计第二学期的总学时。 Select 课程号, 课程名, 开课学期, 学时 From 课程表 Where 开课学期=2 compute avg(学时) 4.编写一个存储过程,输入学号,从“教学成绩表视图” 显示该学生的姓名、课程名、分数。 CREATE PROCEDURE 成绩 1 @xh char (6) as select 姓名,课程名称,分数 from 教学成绩表视图 where 学号=@xh 5.创建一个触发器,当修改学生表中的姓名时,显示“学生姓名已被修改” 。 Create Trigger 触发器 7 On 学生表 For updata As Print “学生姓名已被修改” Go 现有关系数据库如下: 数据库名:学生成绩数据库 学生表(班级编号,学号,姓名,性别,民族,身份证号,出生日期) 课程表(课程号,课程名) 成绩表(ID,学号,课号,分数) 用SQL语言实现下列功能的sql语句代码: 1.在[学生成绩数据库]的[学生表]中查询年龄为20岁或22岁的学生。 2.在[学生成绩数据库]中查询每个学生的班级编号、学号、姓名、平均分,结果按平均分降序排 列,均分相同者按班级排列。 3.编写一个自定义函数,根据[学生表]中的[出生日期]列,计算年龄。 4.创建一个视图[教学成绩表视图]显示学生的学号、姓名、课程名、分数。 5.编写一个存储过程,输入学号,从[教学成绩表视图]显示该学生的姓名、课程名、分数。 5 … …

6.把[学生表]、[成绩表]通过[学号]建立约束关系。 7.把[学生表]、[成绩表]通过[学号]建立约束关系。 8.在学生表中插入记录: 班级编号 学号 姓名 性别 民族 身份证号 出生日期 050201 050201001 王莉欣 女 汉 53010219790625224 1979-06-25 050202 050202001 张晶 男 NULL 01020319801224121 NULL 把张晶的民族改为“汉”、出生日期改为“1980-12-24” 1.在学生成绩数据库的学生表中查询年龄为20岁或22岁的学生 use 教学成绩管理数据库 select 姓名, 性别, 年龄=datediff(year,出生日期,getdate()) from 学生表 where (datediff(year,出生日期,getdate())=20) or (datediff(year,出生日 期,getdate())=22) 2.在学生成绩数据库中查询每个学生的班级编号、学号、姓名、平均分,结果按平均分降序排列, 均分相同者按班级排列 use 教学成绩管理数据库 select 班级编号,a.学号,a.姓名, avg(分数) 平均分 from 学生表 as a join 成绩表 as b on a.学号 = b.学号 group by 班级编号, a.学号,a.姓名 order by avg(分数) desc, 班级编号 asc 3.编写一个自定义函数,根据[学生表]中的[出生日期]列,计算年龄。 CREATE FUNCTION dbo.计算年龄(@vardate datetime,@Curdate datetime) RETURNS tinyint AS BEGIN return END datediff(yyyy, @vardate, @Curdate) 4.创建一个视图“教学成绩表视图” 显示学生的学号、姓名、课程名、分数。 CREATE VIEW [教学成绩表视图] AS SELECT 学号, 姓名, 课程名, 分数 FROM 学生表, 成绩表 WHERE 学生表.学号=成绩表.学号 5.编写一个存储过程,输入学号,从“教学成绩表视图” 显示该学生的姓名、课程名、分数。 CREATE PROCEDURE [成绩 1] @xh char (6) as select 姓名,课程名称,分数 from 教学成绩表视图 where 学号=@xh 6.把学生表、成绩表通过“学号”建立约束关系。 alter table 学生表 6

  • 数据库 练习及答案

    数据库 练习及答案

    数据库 练习及答案...

    贡献者:网络收集
    147539
  • 《数据库》练习题及答案

    《数据库》练习题及答案

    《数据库》练习题及答案...

    贡献者:网络收集
    95867
  • 数据库 考试练习题及答案

    数据库 考试练习题及答案

    数据库 考试练习题及答案...

    贡献者:网络收集
    672490
  • 数据库查询练习及答案

    数据库查询练习及答案

    数据库查询练习及答案...

    贡献者:网络收集
    399597
  • SQL网络数据库期末练习题及答案

    SQL网络数据库期末练习题及答案

    SQL网络数据库期末练习题及答案...

    贡献者:网络收集
    760633
  • 数据库练习题及答案解析

    数据库练习题及答案解析

    数据库练习题及答案解析...

    贡献者:网络收集
    255807
  • 数据库技术—ACCESS习题及答案(汇总)

    数据库技术—ACCESS习题及答案(汇总)

    数据库技术—ACCESS习题及答案(汇总)...

    贡献者:网络收集
    267786
  • 数据库基础与应用第一、二章综合练习及参考答案

    数据库基础与应用第一、二章综合练习及参考答案

    数据库基础与应用第一、二章综合练习及参考答案...

    贡献者:网络收集
    811633
  • 数据库原理及习题答案

    数据库原理及习题答案

    数据库原理及习题答案...

    贡献者:网络收集
    174938
  • 网友在搜