数据库实验答案.docx

上传人:b****5 文档编号:6149739 上传时间:2023-01-04 格式:DOCX 页数:11 大小:28.09KB
下载 相关 举报
数据库实验答案.docx_第1页
第1页 / 共11页
数据库实验答案.docx_第2页
第2页 / 共11页
数据库实验答案.docx_第3页
第3页 / 共11页
数据库实验答案.docx_第4页
第4页 / 共11页
数据库实验答案.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数据库实验答案.docx

《数据库实验答案.docx》由会员分享,可在线阅读,更多相关《数据库实验答案.docx(11页珍藏版)》请在冰豆网上搜索。

数据库实验答案.docx

数据库实验答案

实验3使用T-SQL语言完成单表查询

一、实验目的

掌握使用T-SQL语言完成单表查询

掌握常用谓词的用法

掌握where子句的用法

掌握orderby子句的用法

掌握groupby子句和having短语的用法

二、实验环境

MicrosoftSQLServer2000。

三、实验内容和要求

1.查询全体学生的详细信息。

2.查询所有课程的详细信息。

3.查询所有选课记录的详细信息,要结果表中的列名以中文的形式显示,分别为:

学号,课程号,成绩。

4.查询已被学生选修了的课程的编号。

5.查询系别编号为“d002”的学生的姓名和性别。

6.查询年龄在19至21岁或者性别为“女”的学生的学号和所在系别编号。

7.查询系别编号为d001、d002和d003的学生的学号和姓名。

8.查询课程名为“C_”开头的课程名和学分。

9.某些学生入学后还没有确定所在的系,查询还没有确定系的学生的姓名。

10.查询成绩大于60分的学生的学号、课程号和成绩,并将查询结果按课程编号升序排列,同一课程的成绩按分数降序排列。

11.查询学校所开设的总的课程数。

12.计算2号课的学生成绩总和以及平均成绩,对应的列名分别为“总成绩”和“平均成绩”。

13.查询选修了3号课程的学生的最高分和最低分,对应的列名分别为“最高分”和“最低分”。

14.求各个系别的编号以及各系的人数。

15.查询选课人数大于等于2人的课程编号以及选课的人数。

16.查询学生2选修课程的总成绩对应的列名为“总成绩”,并显示出学号。

17.查询有2门以上课程是80分以上的学生的学号及课程数。

18.查询选修了1号课的学生的学号和成绩,结果按成绩降序、学号升序排列。

实验1使用T-SQL语言建库、建表

实验2向表中增、删、改数据

四、实验目的

掌握使用T-SQL建库、建表、修改表;

掌握使用T-SQL对表中数据进行插入、删除和修改。

五、实验环境

MicrosoftSQLServer2000。

六、实验内容和要求

19.建立数据库STDB

20.在数据库STDB中建立四个表:

Student表

列名

类型

约束或索引

说明

Sno

Char(9)

主键约束

学号

Sname

Varchar(20)

非空约束

姓名

Ssex

Char

(2)

性别

sage

Int

年龄

deptno

Char(10)

外键约束

所在系别编号

Department表

列名

类型

约束或索引

说明

Deptno

Char(10)

主键约束

系别编号

dname

Varchar(50)

唯一索引

系名称

Course表

列名

类型

约束或索引

说明

Cno

Char(4)

主键约束

课程编号

cname

Varchar(40)

唯一约束

课程名称

Cpno

Char(4)

先行课

Ccredit

smallint

学分

Sc表

列名

类型

约束或索引

说明

Sno

Char(9)

外键约束,与cno共同构成主键

学号

Cno

Char(4)

外键约束,与sno共同构成主键

课程编号

grade

int

成绩

21.分别向以上四个表中增加数据。

department表:

Student表:

Course表:

SC表:

22.将学生2的年龄改为21岁。

23.将所有学生的所有成绩增加5分。

24.删除7号课程的记录。

25.向学生表增加新列“血型”,并记录下学生表中已存在学生的血型信息。

实验4使用T-SQL语言完成多表查询

七、实验目的

掌握使用T-SQL语言完成等值连接查询

掌握使用T-SQL语言完成自身连接查询

掌握使用T-SQL语言完成外连接查询

掌握使用T-SQL语言完成嵌套查询

掌握使用T-SQL语言完成集合查询

掌握常用谓词在嵌套查询中的用法

八、实验环境

MicrosoftSQLServer2000。

九、实验内容和要求

26.查询每个学生的学号、姓名、性别、所在系的名称、选修的课程名、学分以及成绩。

27.查询所有课程的课程编号、课程名称、学分、选修该课程的学生编号以及成绩。

28.查询选修了1号课程且不及格的学生的学号、姓名。

(要求分别用连接查询和嵌套查询完成)

29.查询姓名为“刘晨”的学生选修的课程名和学分。

(要求分别用连接查询和嵌套查询完成)

30.查询CS系、IS系和MA系的学生的学号、姓名和性别。

31.查询1号同学选修课程的总学分数,显示出姓名和总学分数。

32.找出每个学生小于他选修课程平均成绩的学号和课程号。

33.查询1号同学所选修的课程中,成绩低于其他同学选修的某一课程成绩的课程,要求显示出其课程号和成绩。

34.查询1号同学所选修的课程中,成绩低于其他有成绩的同学选修的所有课程成绩的课程,要求显示出其课程号和成绩。

35.查询1号同学选修课程的课程号和课程名。

(要求分别使用包含EXISTS谓词的嵌套查询以及连接查询完成)

36.查询既选修了课程1又选修了课程2的学生的学号。

(要求使用嵌套查询完成)

37.查询选修了课程1或者选修了课程2的学生的学号。

(要求分别用集合查询和多重条件查询完成)

--实验1、2

createdatabasestdb1

go

usestdb1

go

createtabledepartment

deptnochar(10)primarykey,

dnamevarchar(50)

go

createuniqueindexdeptnameondepartment(dname)

go

createtablestudent

snochar(9)primarykey,

snamevarchar(20)notnull,

ssexchar

(2),

sageint,

deptnochar(10),

foreignkey(deptno)referencesdepartment(deptno)

createtablecourse

cnochar(4)primarykey,

cnamevarchar(40)unique,

cpnochar(4),

ccreditsmallint

go

createtablesc

snochar(9),

cnochar(4),

gradeint,

primarykey(sno,cno),

foreignkey(sno)referencesstudent(sno),

foreignkey(cno)referencescourse(cno)

--3

insertintodepartmentvalues('d001','cs')

insertintodepartmentvalues('d002','is')

insertintodepartmentvalues('d003','ma')

insertintostudentvalues('1','李勇','男',20,'d001')

insertintostudentvalues('2','刘晨','女',20,'d001')

insertintostudentvalues('3','王敏','女',20,'d002')

insertintostudentvalues('5','张立','男',20,'d003')

insertintostudentvalues('6','陈天华','男',20,'d003')

insertintostudentvalues('8','宋阳','女',20,'d002')

insertintocoursevalues('1','数据库','5',4)

insertintocoursevalues('2','数学',null,2)

insertintocoursevalues('3','信息系统','1',4)

insertintocoursevalues('4','操作系统','6',3)

insertintocoursevalues('5','数据结构','7',4)

insertintocoursevalues('6','数据处理',null,2)

insertintocoursevalues('7','PASCAL语言','6',4)

insertintocoursevalues('8','C_语言',null,4)

insertintoscvalues('1','1',92)

insertintoscvalues('1','2',85)

insertintoscvalues('1','3',88)

insertintoscvalues('1','4',72)

insertintoscvalues('1','5',65)

insertintoscvalues('1','6',58)

insertintoscvalues('1','8',68)

insertintoscvalues('1','9',68)

insertintoscvalues('2','2',90)

insertintoscvalues('2','3',80)

insertintoscvalues('6','1',null)

--4

updatestudentsetsage=21wheresno='2'

--5

updatescsetgrade=grade+5

--6

deletefromcoursewherecno='7'

--7

altertablestudent

addbloodtypevarchar(10)

updatestudentsetbloodtype='A'wheresno='1'

updatestudentsetbloodtype='B'wheresno='2'

updatestudentsetbloodtype='O'wheresno='3'

updatestudentsetbloodtype='AB'wheresno='5'

updatestudentsetbloodtype='A'wheresno='6'

updatestudentsetbloodtype='B'wheresno='8'

--1.查询每个学生的学号、姓名、性别、所在系的名称、选修的课程名、学分以及成绩。

select,sname,ssex,dname,cname,ccredit,gradefromstudent,course,department,sc

where=and=and=

--2.查询所有课程的课程编号、课程名称、学分、选修该课程的学生编号以及成绩。

select,cname,ccredit,,gradefromsc,coursewhere=

--3.查询选修了1号课程且不及格的学生的学号、姓名。

(要求分别用连接查询和嵌套查询完成)

select,sname,gradefromsc,studentwhere=andcno='1'andgrade<60

selectsno,snamefromstudentwheresnoin(selectsnofromscwherecno='1'andgrade<60)

--4.查询姓名为“刘晨”的学生选修的课程名和学分。

(要求分别用连接查询和嵌套查询完成)

selectcname,ccreditfromsc,course,student

where=and=andsname='刘晨'

selectcname,ccreditfromcoursewherecnoin(selectcnofromscwheresnoin(selectsnofromstudentwheresname='刘晨'))

--5.查询CS系、IS系和MA系的学生的学号、姓名和性别。

selectsno,sname,ssexfromstudent,department

where=anddnamein('cs','is','ma')

selectsno,sname,ssexfromstudent,department

where=and(dname='cs'ordname='is'ordname='ma')

--6.查询1号同学选修课程的总学分数,显示出姓名和总学分数。

selectsname,sum(ccredit)fromstudent,sc,course

where=and=

and='1'

groupbysname

--7.找出每个学生小于他选修课程平均成绩的学号和课程号。

selectsno,cnofromscx

wheregrade<(selectavg(grade)fromscywhere=)

--8.查询1号同学所选修的课程中,成绩低于其他同学选修的某一课程成绩的课程,要求显示出其课程号和成绩。

selectcno,gradefromsc

wheresno='1'andgrade'1')

selectcno,gradefromsc

wheresno='1'andgrade<(selectmax(grade)fromscwheresno<>'1')

--9.查询1号同学所选修的课程中,成绩低于其他有成绩的同学选修的所有课程成绩的课程,要求显示出其课程号和成绩。

selectcno,gradefromsc

wheresno='1'andgrade'1'andgradeisnotnull)

selectcno,gradefromsc

wheresno='1'andgrade<(selectmin(grade)fromscwheresno<>'1'andgradeisnotnull)

--10.查询1号同学选修课程的课程号和课程名。

(要求分别使用包含EXISTS谓词的嵌套查询以及连接查询完成)

select,cnamefromcourse,scwhere=andsno='1'

selectcno,cnamefromcoursewherecnoin(selectcnofromscwheresno='1')

selectcno,cnamefromcoursewhereexists(select*fromscwhere=andsno='1')

--11.查询既选修了课程1又选修了课程2的学生的学号。

(要求使用嵌套查询完成)

selectsnofromscwherecno='1'andsnoin(selectsnofromscwherecno='2')

selectsnofromscxwherecno='1'and'2'in(selectcnofromscywhere=

--12.查询选修了课程1或者选修了课程2的学生的学号。

(要求分别用集合查询和多重条件查询完成)

selectdistinctsnofromscwherecno='1'orcno='2'

selectsnofromscwherecno='1'

union

selectsnofromscwherecno='2'

--1

select*fromstudent

--2

select*fromcourse

--3

selectsno学号,cno课程号,grade成绩fromsc

--4

selectdistinctcnofromsc

--5

selectsname,ssexfromstudentwheredeptno='d002'

--6

selectsno,deptnofromstudentwheresagebetween21and22orssex='女'

--7

selectsno,snamefromstudentwheredeptno='d001'ordeptno='d002'ordeptno='d003'

--8

selectcname,ccreditfromcoursewherecnamelike'C\_%'escape'\'

--9

selectsnamefromstudentwheredeptnoisnull

--10

selectsno,cno,gradefromscwheregrade>60orderbycno,gradedesc

--11

selectcount(*)fromcourse

--12

selectsum(grade)总成绩,avg(grade)平均成绩fromscwherecno='2'

--13

selectmax(grade)最高分,min(grade)最低分fromscwherecno='3'

--14

selectdeptno,count(sno)fromstudentgroupbydeptno

select*fromstudent

--15

selectcno,count(sno)fromscgroupbycnohavingcount(sno)>=2

select*fromsc

--16

selectsno,sum(grade)总成绩fromscwheresno='2'groupbysno

--17

selectsno,count(cno)fromscwheregrade>80groupbysnohavingcount(*)>2

--18

selectsno,gradefromscwherecno='1'orderbygradede

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1