字数统计:
1.5k字
|
阅读时长:
5分
实验名称:实验二 数据基本查询
实验目的
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;
|