目录
- 1.查看数据的两种方法
- 2.查看数据并进行筛选(where)
- 3.不查看重复记录(distinct),空值,非空值
- 5.查看指定行(limit)
- 6.模式匹配(like)
- regexp
- 6.范围查询(between and)
- 7.逻辑运算符查询
- 8.order by 子语句(排序)
- 9.group by 子语句(聚合函数)
- count()的用法
- having(过滤)
select <子句1>
from <子句2>
[where<表达式1>]
[group<字句3>]
[having<表达式2>]
[order by<字句4>]
[limit<子句5>]
[union<操作符>]
1.查看数据的两种方法
select 字段名 from 表名;
- 查看多指定的字段
select 字段名,字段名 from 表名
2.查看数据并进行筛选(where)
select 字段名 from 表名
where 字段名=字段值;
例如:
select name from student
where xb='f';
我查看student表中,关于记录name(姓名)的字段
但是他要满足xb(性别)为f(男)
3.不查看重复记录(distinct),空值,非空值
- 不查看重复记录,多字段无效
select distinct 字段名 from 表名;
- 查看含有空值的记录
select *from 表名
where 字段名 is null;
- 查看不为空的学生信息
select *from 表名
where 字段名 is not null;
5.查看指定行(limit)
查看3行
select *from 表名 limit 3;
从第三行开始,查看三行
select *from 表名 limit 2,3;
6.模式匹配(like)
通配符 | 名称 | 描述 |
% | 百分号 | 匹配0个或者多个任意字符 |
_ | 下划线 | 匹配单个任意字符 |
查看张姓的人
select *from 表名
where 姓名 like '张%';
查看不姓张的人
select *from 表名
where 姓名 not like '张%';
查看姓张或者名字中有张的人
select *from 表名
where 姓名 like '%张%';
regexp
通配符 | 名称 | 描述 |
^ | 插入号 | 匹配字符串的开始部分 |
$ | 美元 | 匹配字符串的结束部分 |
. | 点 | 匹配字符串(包括回车和新行) |
* | 乘号 | 匹配-0个或多个任意字符 |
+ | 加号 | 匹配单个或多个任意字符 |
? | 问号 | 匹配0个或单个任意字符 |
() | 括号 | 匹配括号里面的内容 |
大括号 | 匹配括号前的内容出现n次的序列 |
查看姓张的人
select *from 表名
where 姓名 regexp '^张';
select *from 表名
where 姓名 regexp '张*';
6.范围查询(between and)
查询80分到100分之间的学生
select *from 表名
where 成绩 between 80 and 100;
- in语句指定列表查询条件
select *from 表名
where 开课学期 in('1','2');
7.逻辑运算符查询
运算符 | 说明 |
not | 否定,逻辑非 |
and | 连接,都满足时返回真,类似逻辑与&& |
or | 类似逻辑或 |
xor | 只有一个满足时返回真,两个都满足或不满足返回假 |
使用逻辑运算符查看成绩在80以上和100以下的学生信息
select *from 表名
where 成绩>=80 and 成绩<=100;
8.order by 子语句(排序)
asc升序,desc降序,默认为升序
查询选修了07003课程的学生成绩,以降序排序
select *from 表名
where 课程号='07003'
order by 成绩 desc;
- 单列排序
select *from 表名 order by 字段名1;
- 多列排序
select *from 表名 order by 字段名1,字段名2;
- 指定排序方向
select *from 表名 order by 字段名1,字段名2 desc;
会对字段1进行默认的升序排序,当有重复的值时候,会对字段2进行排序,因为字段2已经指定了排序方式为降序。
所以字段1默认的升序排序,字段2指定的降序排序
9.group by 子语句(聚合函数)
函数名 | 功能 |
sum() | 返回一个数值列或计算列的总和 |
avg() | 返回一个数值列或计算列的平均值 |
min() | 返回一个数值列或计算列的最小值 |
max() | 返回一个数值列或计算列的最大值 |
count() | 返回满足select语句中指定条件的记录数 |
count(*) | 返回找到的行数 |
- 进行分组 |
select 要分组的字段名 from 表名 group by 要分组的字段名;
select 要分组的字段名 as 别名 from 表名 group by 要分组的字段名;
count()的用法
如果里面是*号,会返回所有的行包括空值。
如果里面是具体的字段名,然会返回行数,不包括空值
select count(*) from 表名;
select count(字段名) from 表名;
- 分组查询
select 性别,count(*) from 表名 group by 性别;
select 性别 as 人数,count(*) as 人数 from 表名 group by 性别;
如果性别字段中有空值,还可以用这种方式
select 性别 as 人数,count(性别) as 人数 from 表名 group by 性别;
它会对性别进行分组,但是对于空值的那一组不会返回数值
having(过滤)
select 性别 from 表名 group by 性别 having xb is not null;
对字段“性别”进行分组,但是不对空值进行分组
select 性别 from 表名 group by 性别 having 性别 is null;
对字段“性别”进行分组,只对空值进行分组