您好,欢迎访问三七文档
1一.创建一个学生档案表(表名为xsda),其表结构如下:列名类型长度允许空备注XhChar10学号XmChar8√姓名csnyDatetime√出生年月GzDecimal6√工资ZyChar10√专业CreateTablexsda(xhChar(10)notnullunique,xmChar(8),csnyDatetime,gzDecimal(6,1),zyChar(10))1.在xsda表中插入一个学生记录:(2000jsj008,李平)insertintoxsda(xh,xm)values(‘2000jsj008’,’李平’)2.把xsda表中80-01-01前出生的人的工资增加20%Updatexsdasetgz=gz*1.2wherecsny’80-01-01’3.查询xsda表中不同专业的人数Selectzy,count(xh)fromxsdagroupbyzy4.假如另外还有一个学生成绩表xscj(xh,kch,kccj),xh,kch,kccj分别指学号、课程号、成绩,要求查询姓名为李平的同学的各门课程的成绩。Selectkch,kccjfromxsda,xscjwherexsda.xh=xscj.xhandxm=’李平’5.xsda、xscj表同上,查询选修了kch为Yy2的学生的xh和XmSelectxh,xmfromxsda,xscjwherexsda.xh=xscj.xhandkch=’Yy2’二、使用SQL语句创建一个班级表CLASS,属性如下:CLASSNO,DEPARTNO,CLASSNAME;类型均为字符型;长度分别为8、2、20且均不允许为空。CREATE___table_____CLASS(CLASSNO__char____(8)NOTNULL,DEPARTNOCHAR(2)NOTNULL,CLASSNAMECHAR(__20__)NOTNULL)三、有一个[学生课程]数据库,数据库中包括三个表:学生表: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.查考试成绩有不及格的学生的学号。23.将学号为05001学生的年龄改为22岁。4.计算1号课程的学生平均成绩。5.查计算机系姓赵的男同学的姓名(Sname)、性别(Ssex)、年龄(Sage)。6.将一个新学生记录(学号:05020;姓名:丁莉;性别:女;年龄:17岁;所在系:计算机;)插入Student表中。1.createtablestudent(Snochar(5)primarykey,Snamechar(20),Ssexchar(2),Sageint,Sdeptchar(15))2.selectdistinctsnofromsgwheregrade603.updatestudentsetsage=22wheresno='05001'4.selectavg(grade)fromsgwherecno='1'5.selectsname,ssex,sagefromsdudentwheresdept=’计算机系’andsnamelike'赵%'andssex='女'6.insertintostudentvalues('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)”列,其数据类型为日期型。33.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。4.查询学习1号课程的学生最高分数、平均成绩。5.查询与“李洋”在同一个系学习的学生。6.将计算机系全体学生的成绩置零。7.删除学号为05019的学生记录。8.删除计算机系所有学生的成绩记录。1.CREATETABLEStudent(SnoCHAR(5)NOTNULLUNIQUE,SnameCHAR(20),SsexCHAR(2),SageINT,SdeptCHAR(15))2.ALTERTABLEStudentADDScomeDATETIME3.SELECTSno,GradeFROMSGWHERECno='3'ORDERBYGradeDESC4.SELECTMAX(Grade),AVG(Grade)FROMSCWHERECno='1'5.SELECTSno,Sname,SdeptFROMStudentWHERESdeptIN(SELECTSdeptFROMStudentWHERESname='李洋')6.UPDATESGSETGrade=0WHERESnoin(SELECTSnoFROMStudentWHERESdept='计算机系')7.DELETEFROMStudentWHERESno='05019'8.DELETEFROMSGWHERESnoin(SELECTSnoFROMStudentWHERESdept='计算机系')4五、有一个[学生课程]数据库,数据库中包括三个表:学生表由学号、姓名、性别、年龄、所在系五个属性组成,可记为:学生表(学号,姓名,性别,年龄,所在系)[学号]为关键字。课程表由课程号、课程名、先修课号、学分四个属性组成,可记为:课程表(课程号,课程名,先修课号,学分)课程表为关键字。学生选课表由学号、课程号、成绩三个属性组成,可记为:成绩表(学号,课程号,成绩)(学号、课程号)为关键字。编写用SQL语言实现下列功能的sql语句代码:1、建立一个[学生表],其中学号属性不能为空,并且其值是唯一的。2、查询全体学生的详细记录。3、查询年龄在20至23岁之间的学生的姓名、系别、和年龄。4、计算1号课程的学生平均成绩。5、将计算机科学系全体学生的成绩置零。1、建立一个学生表。CREATETABLE学生表(学号CHAR(5)NOTNULLUNIQUE,姓名CHAR(20),性别CHAR(2),年龄INT,所在系CHAR(15))2、查询全体学生的详细记录SELECT*FROM学生表3、查询年龄在20至23岁之间的学生的姓名、系别、和年龄SELECT姓名,所在系,年龄FROM学生表WHERE年龄BETWEEN20AND234、计算1号课程的学生平均成绩SELECTAVG(成绩)FROM成绩表WHERE课程号='1'5、将计算机科学系全体学生的成绩置零UPDATE成绩表SET成绩=0WHERE学号in(SELECT学号FROM学生表WHERESdept='计算机科学系')现有关系数据库如下:数据库名:学生成绩数据库学生表(班级编号,学号,姓名,性别,民族,身份证号,出生日期)课程表(课程号,课程名,开课学期,学时)成绩表(ID,学号,课程号,分数)用SQL语言实现下列功能的sql语句代码:1.查询学生信息表中的年龄(重复年龄只显示一次)2.从学生信息表和教学成绩表中查询查询学生的学号、姓名、课程名和分数3.从课程表中统计第二学期的总学时。执行结果为:课程好课程名开课学期学时5……………………sum============…4.编写一个存储过程,输入学号,从“教学成绩表视图”显示该学生的姓名、课程名、分数。5.创建一个触发器,当修改学生表中的姓名时,显示“学生姓名已被修改”。1.查询学生信息表中的年龄(重复年龄只显示一次)use教学成绩管理数据库selectdistinct年龄=datediff(year,出生日期,getdate())from学生信息表2.从学生信息表和教学成绩表中查询查询学生的学号、姓名、课程名和分数use学生成绩数据库select成绩表.学号,姓名,课程名,分数from教学成绩表,学生信息表where成绩表.学号=学生表.学号AND成绩表.课程号=课程表.课程号3.从课程表中统计第二学期的总学时。Select课程号,课程名,开课学期,学时From课程表Where开课学期=2computeavg(学时)4.编写一个存储过程,输入学号,从“教学成绩表视图”显示该学生的姓名、课程名、分数。CREATEPROCEDURE成绩1@xhchar(6)asselect姓名,课程名称,分数from教学成绩表视图where学号=@xh5.创建一个触发器,当修改学生表中的姓名时,显示“学生姓名已被修改”。CreateTrigger触发器7On学生表ForupdataAsPrint“学生姓名已被修改”Go现有关系数据库如下:数据库名:学生成绩数据库学生表(班级编号,学号,姓名,性别,民族,身份证号,出生日期)课程表(课程号,课程名)成绩表(ID,学号,课号,分数)用SQL语言实现下列功能的sql语句代码:1.在[学生成绩数据库]的[学生表]中查询年龄为20岁或22岁的学生。2.在[学生成绩数据库]中查询每个学生的班级编号、学号、姓名、平均分,结果按平均分降序排列,均分相同者按班级排列。3.编写一个自定义函数,根据[学生表]中的[出生日期]列,计算年龄。4.创建一个视图[教学成绩表视图]显示学生的学号、姓名、课程名、分数。5.编写一个存储过程,输入学号,从[教学成绩表视图]显示该学生的姓名、课程名、分数。66.把[学生表]、[成绩表]通过[学号]建立约束关系。7.把[学生表]、[成绩表]通过[学号]建立约束关系。8.在学生表中插入记录:班级编号学号姓名性别民族身份证号出生日期050201050201001王莉欣女汉530102197906252241979-06-25050202050202001张晶男NULL01020319801224121NULL把张晶的民族改为“汉”、出生日期改为“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学生表asajoin成绩表asbona.学号=b.学号groupby班级编号,a.学号,a.姓名orderbyavg(分数)desc,班级编号asc3.编写一个自定义函数,根据[学生表]中的[出生日期]列,计算年龄。CREATEFUNCTIONdbo.计算年龄(@v
本文标题:数据库练习及答案
链接地址:https://www.777doc.com/doc-2428786 .html