数据库 select查询

(1)select
1、select 查询内容
查询所有字段 select * from 表名;*通配符:表示所有字段

查询部分字段 select 字段名 from 表名

在MySQL表中,每个字段的数据可以当做变量处理。
查询所需的某个字段数据处理后的结果:select 字段处理方式 from 表名
select age-3 from test;

2、where 表达式 (按条件查询)
select 查询内容 from 表名 where 表达式
关系运算符:
= 等于
<> 不等于
!= 不等于
< 小于

大于
<= 小于等于
= 大于等于

3、带in的关键字查询
查询某个指定集合内的记录 select 查询内容 from 表名 where 条件 in(指定内容);
select * from test where age in (5, 12);

4、带有between and 关健字查询
查询某个在给定范围内的记录 select 查询内容 from 表名 where 条件 between 值1 and 值2

5、查询某些为空NULL 或 非空的记录 select 查询内容 from 表名 where 条件 is(not) NULL

6、在查询时过滤掉重复的值:select distinct 字段名 from 表名;字段名表示要过滤重复记录的字段
select num from a;
+——+
| num |
+——+
| 5 |
| 10 |
| 15 |
| 10 |
| 15 |
| 5 |
| 10 |
+——+
7 rows in set (0.00 sec)
mysql> select distinct num from a;
+——+
| num |
+——+
| 5 |
| 10 |
| 15 |
+——+
3 rows in set (0.00 sec)
在使用distinct指定多个字段时,只有被指定的这些字段的值都相同,才会被认为是重复的

7、在查询具有一类相同特征的数据时,需要用到模糊查询,这是就需要使用like关键字select 查询内容 from 表名 where 内容 (not) like ‘匹配的字符串’
百分号通配符 %:表示匹配任意长度的任意字符串
select name from name;
+——+
| name |
+——+
| 1112 |
| 1122 |
| 1222 |
| 2111 |
+——+
4 rows in set (0.00 sec)
mysql> select name from name where name like ‘11%’;
+——+
| name |
+——+
| 1112 |
| 1122 |
+——+
2 rows in set (0.00 sec)

8、下划线通配符 _ :表示匹配任意单个字符,如果需要匹配多个字符,则需要使用多个 _
mysql> select name from name where name like ‘11__’;
+——+
| name |
+——+
| 1112 |
| 1122 |
+——+

9、如果需要查询带有 % 或 _ 的数据,由于 % 和 _ 是通配符,则需要使用 \ 进行转义\% 表示 %,\ _ 表示 _

10、有时在查询时为了查询结果更加精确,需要多个限条件,这时就需要 and(&&) 来连接条件
有时在查询时,只需要数据满足某些条件中的某一个,这时就需要使用 or(||) 来连接条件
注意:在查询时,and 的优先级高于 or

11、聚合函数:
count()函数:统计记录条数 select count(记录) from 表名
mysql> select * from test;
+——+——+——+
| id | name | age |
+——+——+——+
| 1 | A | 4 |
| 2 | B | 7 |
| 3 | C | 5 |
| 4 | D | 12 |
| 5 | E | 0 |
| 6 | F | NULL |
+——+——+——+
6 rows in set (0.01 sec)
mysql> select count(name) from test;
+————-+
| count(name) |
+————-+
| 6 |
+————-+
1 row in set (0.09 sec)

12、sum()函数:计算表中某个字段值的总和,select sum(字段名) from 表名

13、avg()函数:计算表中某个字段的平均值 select avg(字段名) from 表名

14、max()函数:返回表中某个字段中的最大值

15、min()函数:返回表中某个字段中的最小值

(2)分组查询:
在对数据表中的数据进行统计时,需要将数据按照一定的特征分组统计,此时就需
要使用分组查询 select 查询内容 from 表名 group by 分组依据 [having表达式条件]
select * from test;
+——+——+——+——-+
| id | name | age | class |
+——+——+——+——-+
| 1 | A | 4 | 1 |
| 2 | B | 7 | 1 |
| 3 | C | 5 | 1 |
| 4 | D | 12 | 2 |
| 5 | E | 0 | 2 |
| 6 | F | 8 | 3 |
+——+——+——+——-+
6 rows in set (0.00 sec)
select max(age) from test group by class;
+———-+
| max(age) |
+———-+
| 7 |
| 12 |
| 8 |
+———-+
3 rows in set (0.03 sec)

(3)对查询结果进行排序
select 查询内容 from 表名 order by 排序条件 asc/desc,asc表示升序 desc表示降序
select name, age from test order by age asc;
+——+——+
| name | age |
+——+——+
| E | 0 |
| A | 4 |
| C | 5 |
| B | 7 |
| F | 8 |
| D | 12 |
+——+——+
6 rows in set (0.00 sec)

(4)限制查询:
在查询时,可能需要只显示部分数据,这是需要限制查出来的数据数量
select 查询内容 from 表名 limit 偏移量m 记录数n,表示从第m+1个记录开始查询出n条记录
select name, age from test order by age asc limit 2, 2;
+——+——+
| name | age |
+——+——+
| C | 5 |
| B | 7 |
+——+——+
2 rows in set (0.00 sec)

(5)where 与 having:
where 与 having关键字都用于设置条件表达式对查询结果进行过滤,区别是having后面可以跟聚合函数,而where不能,通常having关键字都与group by 一起使用,表示对分组后的数据进行过滤

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值