单表查询就是查询的范围只是一个table,我们对其中的某一个字段,或者多个字段进行查询返回,查询的时候还可以满足一定的条件。
下面我们就按照实际的问题,来学习一下单表查询。
首先,原始的是一个student表,其中有如下几个字段:
学号:snum
姓名:sname
年龄:sage
性别:ssex
院系:department
课程:course
分数:score
create table student(snum int(5), sname varchar(10), sage int(5), ssex char(5), department varchar(10), course varchar(10), score int(10), primary key(snum));
如下:
从上图可以看出,student表总共含有10条数据,每个数据有7个字段。我们把snum做为主键,所以即使我原始导入数据不是按照学号排序的,在我导入数据库之后,数据库也会按照主键字段来排序,从1~10排列好。
我们后面的所有题目,除非特别修改数据库之外,都是默认按照这个student表来查询的。
1. 查询所有学生的学号和姓名
把需要查询的字段放在select子句后面,from后面规定查询的表范围。
2. 在查询字段中加入算术计算
上面就是在查询字段sage中使用2015-sage,计算了所有人的出生年份,也就是在查询字段中加入算术计算公式。而且,我们发现相应的字段名字也变成了“2015-sage”。
3. 改变字段的显示名称
如上图所示,我们只需要在查询的字段后面加入需要显示的名称即可,注意:中间用一个空格隔开即可。
4. 小写字母显示数据
select lower(department) from student;
由于本博文基于的是中文数据,所以没有实际显示效果图,不过命令是没有问题的。注意Mysql中是lower函数表示小写字母转换,有些数据库系统中可能不是这个函数,需要注意一下。
5. 消除字段中重复的值
需要使用distinct,把这个约束加在字段的最前面。说是最前面,就是所有字段的前面,select的后面。因为distinct的作用是其后面的所有字段。如下图:
上图中需要唯一的是(snum, department)这个pair,显然所有的数据中没有一个是具有相同的这种pair的,所以就返回了所有。记住:distinct的作用范围是其后面的所有字段。
6. where引起查询条件
where后面可以接查询条件,其中包括:
7. where中确定查询数值范围
我们可以使用between and 这样的句式来指定比较的数值范围。还可以使用in 和not in来确定是否在比较的集合中。