数据库原理及应用上机实验二

  |  

实验名称:实验二 数据基本查询

实验目的

1.掌握SQL查询语句的一般格式。

2.掌握简单数据查询操作。

3.熟练掌握各种查询条件的表示。

4.掌握排序和分组操作在SQL语句中的实现。

5.掌握集函数的使用。

实验步骤与调试过程(请用简单的文字描述)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1.按实验一步骤先建好数据库,建好表,并输入实验一所给的数据。
2.对各表中的数据进行不同条件的查询;
包括的运算:投影、选择、比较运算符、逻辑运算符、字符匹配运算符、匹配列表范围、算术运算符、内部函数、排序、分组、分组函数使用
(1)查询全体学生的学号和姓名
(2)查询全体学生的详细记录
(3)查询软件学院的学生姓名、年龄、系别
(4)查询所有选修过课程的学生学号(不重复)
(5)查询考试不及格的学生学号(不重复)
(6)查询不是软件学院、计算机系的学生性别、年龄、系别
(7)查询年龄18-20岁的学生学号、姓名、系别、年龄;
(8)查询姓刘的学生情况
(9)查询姓刘或姓李的学生情况
(10)查询姓刘且名字为两个字的学生情况
(11)查询1983年以后出生的学生姓名。
(12)创建表 studentgrad(sno,mathgrade,englishigrade,chinesegrade)
计算学生各科总成绩并赋予别名
(13)利用内部函数 year()查找软件学院学生的出生年份
(14)利用字符转换函数实现字符联接。
       Select sname + ‘年龄为’+cast(sage as char(2))+’岁’
       From student
(15)查询全体学生情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。
(16)查询学生总人数。
(17)查询选修了课程的学生人数。
(18)查询选修了7号课程的学生总人数和平均成绩
(19)查询选修6号课程学生的最好成绩
(20)查询每个系的系名及学生人数。
(21)查找每门课的选修人数及平均成绩
(22)查找没有先修课的课程情况

实验结果(上传实验结果截图或者简单文字描述)

1
2
3
4
5
6
7
1.如果要对一列值设置别名,需要select+ 列名+as+新名字。

2.使用group by可以把一列或者多列分组,具有相同值的会被分在同一个分组。

3.使用year()函数可以很简洁算出你想要的那个日期的元组数有多少。

4.使用order by 可以对指定列排序,升序可以直接省略。

疑难小结(总结个人在实验中遇到的问题或者心得体会)

1
2
3
1.在查询全体学生的学号和姓名时,因为记错了语句,一直出错,调试了好久。
2.在进行步骤的时候,不知道怎么才能在列之间插入字符,很是迷茫,所以去百度了方法之后,才会。
3.还有就是在进行实验的过程中,经常遇到一些小问题,总结来说的话,就是不够细心和认真,下次再做实验的时候会改正。

实验详细操作步骤或程序清单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
1、查询全体学生的学号和姓名
select sno,sname
from student;

2、查询全体学生的详细记录
select *
from student;

3、查询软件学院的学生姓名、年龄、系别
select sname,sage,sdept
from student
where sdept='MA';

4、查询所有选修过课程的学生学号(不重复)
select distinct sno
from sc;
where cno<>'null';

5、查询考试不及格的学生学号(不重复)
select distinct sno
from sc
where grade<60;

6、查询不是软件学院、计算机系的学生性别、年龄、系别

select ssex,sage,sdept
from student
where sdept not in('CS','MA');

7、查询年龄18-20岁的学生学号、姓名、系别、年龄

select sno,sname,sdept,sage
from student
where sage between 18 and 20;

8、查询姓刘的学生情况
select *
from student
where sname like '刘%';

9、查询姓刘或姓李的学生情况
select *
from student
where sname like '刘%' or sname like '李%';

10、查询姓刘且名字为两个字的学生情况
select *
from student
where sname like '刘_';

11、查询1983年以后出生的学生姓名
select sname
from student
where sage < 2019-1983

12、创建表 studentgrad(sno,mathgrade,englishigrade,chinesegrade)计算学生各科总成绩并赋予别名
create table studentgrade(
Sno char(8) ,
mathgrade int,
englishigrade int,
chinesegrade int
)
select sum(mathgrade+chinesegrade+englishigrade) '学生总成绩'
from studentgrade;

13、利用内部函数 year()查找软件学院学生的出生年份
select (year(getdate())-student.sage+1)
from student
where sdept='MA';

14、利用字符转换函数实现字符联接。select sname+‘年龄为’+cast(sage as char(2))+’岁’ from student
select sname+'年龄为'+cast(sage as char(2))+'岁'
from student;

15、查询全体学生情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列
select *
from student
order by sdept,sage desc;

16、查询学生总人数
select count(*)
from student;

17、查询选修了课程的学生人数
select count(distinct sno)
from sc;

18、查询选修了7号课程的学生总人数和平均成绩
select count(*),avg(grade)as avggrade
from student,sc
where student.sno=sc.sno and sc.cno='7';

19、查询选修6号课程学生的最好成绩
select max(grade) as maxgrade
from sc
where cno='6';

20、查询每个系的系名及学生人数
select sdept,count(*)
from student
group by sdept;

21、查找每门课的选修人数及平均成绩
select cno,count(*),avg(grade) as avggrade
from sc
group by cno;

22、查找没有先修课的课程情况
select *
from course
where cpno is null;

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 实验名称:实验二 数据基本查询
  2. 2. 实验目的
  3. 3. 实验步骤与调试过程(请用简单的文字描述)
  4. 4. 实验结果(上传实验结果截图或者简单文字描述)
  5. 5. 疑难小结(总结个人在实验中遇到的问题或者心得体会)
  6. 6. 实验详细操作步骤或程序清单
,
字数统计:87.6k 载入天数...载入时分秒...