接上次的实验,本次主要练习数据查询由于上次做的比较多,所以本次实验的一些题目在上一次实验报告就已经发布了
首先这次实验是本学期第一次在学校机房做,开始不太习惯,导致有一些截图不是很完整,好在最终还是明白了该怎么用,把实验顺利做完了。只是这次的实验报告题目顺序可能有些乱
这次先给出大纲,之后再放图
单表查询常用的语句和函数
1.比较大小 < > = != !<
具体规则和C语言的语法几乎完全是一样的,!都代表否定的意思
2.确定范围
between…and和not between …and 可用来查找属性值在特定范围内的信息
3.确定集合
IN 可以用来查找属性值属于特定集合的元组,而not IN意义相反,用于查找属性值不属于指定集合的元组
4.字符匹配(个人认为的重点)
LIKE 可以用来实现字符串的匹配 可以用来查找指定属性列值与匹配串相匹配的元组,其中又有一些符号,如%可以代表任意长度的字符串包括0 ,_则代表单个字符。
5.多重条件查询
利用and和or可以链接多个查询条件,其中and优先级最高,仅次于()
6.ORDER BY子句
作用是按某个或多个属性列的升降序完成对查询结果的分组
7.聚集函数
COUNT(*) SUM AVG MAX等等,可以帮助我们更好的实现检索工作,用法大致与C语言的库函数一致,其中DISTINCT语句可以排除重复项,也非常实用
8.GROUP BY子句
此子句可以将查询结果 按某列或多列的值来分组,值相等的为一组
其中,我们常用HAVING语句来增加限制条件
下面是具体例题,顺序有点混乱。。
例3.43计算选修1号课的学生平均成绩
因为我创建的表中没有一号课学生的成绩,所以计算出来的结果为NULL
例3.23 查询所以年龄在20岁以下的学生姓名及其年龄
例3.22 查询计算机科学系全体学生的名单
例3.37 查询所有有成绩的学生学号和课程号
例3.36 查询缺少成绩的学生的学号和相应的课程号
注意,这里的IS不能用等号去代替
例3.46 求各个课程号及其相应的选课人数
GROUP BY子句将查询的某列或某几列的值分组,值相等的为一组
例3.40 查询全体学生,按系号升序排列,同系学生按年龄降序排列
其中升序为ASC降序为DESC 默认为升序排列,也就是说,未标注的情况下,是按升序排列的
例3.42 删掉了DISTINCT,就会重复计算学生人数,如下所示,(当加上DISTINCT便不会重复计算)
例3.28 查询不是计算机科学、数学、信息系学生的姓名和性别(not用大小写都可以,再一次证明SQL语言不必分大小写)
如果删去not 那么查询结果就变为了这三个系的学生信息
例 3.38 查询计算机科学系年龄在20以下的学生姓名
例3.31 查询姓“欧阳” 且全名为三个汉字的学生的姓名
注意,数据库字符集为ASC2时用两个下划线,字符集为GBK时只需要一个
可用‘_阳%’来查询名字中第二个字为”阳“的学生姓名,学号,性别,将会得到同样的结果
例3.30 查询所有刘姓同学的姓名,学号,性别
如果在LIKE 前加not 那么意义将变为查询所有非刘姓同学的信息
例3.26 查询年龄在20-23岁之间的学生信息
between and和not between and都是可以用来查找属性值在指定范围内的元组 加上not意为不在之中的数据。
例3.29 查询某学号学生的具体信息
注,这里的LIKE可以用=代替
下次再上实验课一定拿自己的电脑去上课