MySQL数据查询(上)

select 语句介绍

语法

select selection_list
from 数据表名
where 字句   //查询时必须满足的条件,行必须满足的条件
group by字句 //如何对结果进行分组
order by字句 //如何对结果进行排序
having 字句 //对分组进行过滤
limit 字句 //限制结果的数量

一、单表查询

1、查询所有字段
select * from 数据表名;
mysql> select * from user;
+----+----------+----------+------------+
| id | username | password | email      |
+----+----------+----------+------------+
|  2 | AFeng    | 123      | 123.qq.com |
|  3 | Jing     | 456      | 456.qq.com |
|  4 | Chao     | 789      | 789.qq.com |
+----+----------+----------+------------+
3 rows in set (0.06 sec)
2、查询指定字段
select 字段名 from 数据表名;

如果查询多个字段用逗号“,”分隔。

mysql> select username from user;
+----------+
| username |
+----------+
| AFeng    |
| Jing     |
| Chao     |
+----------+
3 rows in set (0.03 sec)
3、查询指定数据(使用where字句进行过滤)
mysql> select * from user where username = 'AFeng';
+----+----------+----------+------------+
| id | username | password | email      |
+----+----------+----------+------------+
|  2 | AFeng    | 123      | 123.qq.com |
+----+----------+----------+------------+
1 row in set (0.09 sec)
4、带有in关键字的查询

in关键字可以判断某个字段的值是否在指定的集合中

select * from 数据表名 where 字段名 [not] in (元素1,元素2...,元素n);
mysql> select * from user where username in ('AFeng','Jing');
+----+----------+----------+------------+
| id | username | password | email      |
+----+----------+----------+------------+
|  2 | AFeng    | 123      | 123.qq.com |
|  3 | Jing     | 456      | 456.qq.com |
+----+----------+----------+------------+
2 rows in set (0.05 sec)
5、带between and的范围查询

between and 关键字可以判断某个字段的值是否在指定的范围内

select * from 数据表名 where 字段名 between 取值1 and 取值2
mysql> select * from user where id between 2 and 3;
+----+----------+----------+------------+
| id | username | password | email      |
+----+----------+----------+------------+
|  2 | AFeng    | 123      | 123.qq.com |
|  3 | Jing     | 456      | 456.qq.com |
+----+----------+----------+------------+
2 rows in set (0.00 sec)
6、带有like的字符串匹配查询

link属于比较常用的比较运算符,常用于实现模糊匹配
%:实现匹配0个或多个字符;
_:实现匹配一个字符。

select * from 数据表名 where 字段名 like 实现匹配的字符串
mysql> select * from user where username like '%n%';
+----+----------+----------+------------+
| id | username | password | email      |
+----+----------+----------+------------+
|  2 | AFeng    | 123      | 123.qq.com |
|  3 | Jing     | 456      | 456.qq.com |
+----+----------+----------+------------+
2 rows in set (0.06 sec)

mysql> select * from user where username like '%n_';
+----+----------+----------+------------+
| id | username | password | email      |
+----+----------+----------+------------+
|  2 | AFeng    | 123      | 123.qq.com |
|  3 | Jing     | 456      | 456.qq.com |
+----+----------+----------+------------+
2 rows in set (0.00 sec)
7、用is null 关键字查询空值

用来判断某个字段是否为空

select * from 数据表名 where 字段名 is [not] null;
mysql> select * from user where username is not null;
+----+----------+----------+------------+
| id | username | password | email      |
+----+----------+----------+------------+
|  2 | AFeng    | 123      | 123.qq.com |
|  3 | Jing     | 456      | 456.qq.com |
|  4 | Chao     | 789      | 789.qq.com |
+----+----------+----------+------------+
3 rows in set (0.00 sec)
8、带and 的多条件查询

只有满足所有查询条件的记录才会被查询出来。

select * from 数据表名 where 条件1 and 条件2 [...and 条件n];
mysql> select * from user where username = 'AFeng' and password = '123';
+----+----------+----------+------------+
| id | username | password | email      |
+----+----------+----------+------------+
|  2 | AFeng    | 123      | 123.qq.com |
|  5 | AFeng    | 123      | 135qq.com  |
+----+----------+----------+------------+
2 rows in set (0.00 sec)
9、带有or 的条件查询

只要满足其中的一个条件,那么次记录就会被查询出来。

select * from 数据表名 where 条件1 or 条件2 [...or 条件n];
mysql> select * from user where password = '123'or username = 'AFeng';
+----+----------+----------+------------+
| id | username | password | email      |
+----+----------+----------+------------+
|  2 | AFeng    | 123      | 123.qq.com |
|  5 | AFeng    | 123      | 135qq.com  |
+----+----------+----------+------------+
2 rows in set (0.05 sec)
10、用distinct 关键字去除结果中的重复行
select distinct 字段名 from 数据表名;
mysql> select distinct username from user;
+----------+
| username |
+----------+
| AFeng    |
| Jing     |
| Chao     |
+----------+
3 rows in set (0.08 sec)
11、用order by 关键字对查询结果进行排序
order by 字段名 [asc | desc];
mysql> select * from user order by id desc;
+----+----------+----------+------------+
| id | username | password | email      |
+----+----------+----------+------------+
|  5 | AFeng    | 123      | 135qq.com  |
|  4 | Chao     | 789      | 789.qq.com |
|  3 | Jing     | 456      | 456.qq.com |
|  2 | AFeng    | 123      | 123.qq.com |
+----+----------+----------+------------+
4 rows in set (0.00 sec)
12、用 group by 关键字分组查询
mysql> select id,username from user group by username;
+----+----------+
| id | username |
+----+----------+
|  2 | AFeng    |
|  4 | Chao     |
|  3 | Jing     |
+----+----------+
//分组以后也进行了默认排序(字母升序)
3 rows in set (0.00 sec)
13、用limit 限制查询结果的数量
mysql> select * from user order by id limit 2;
+----+----------+----------+------------+
| id | username | password | email      |
+----+----------+----------+------------+
|  2 | AFeng    | 123      | 123.qq.com |
|  3 | Jing     | 456      | 456.qq.com |
+----+----------+----------+------------+
2 rows in set (0.00 sec)

使用limit 还可以取查询结果的中间部分值,指定两个参数(第一个起始位置,默认从0开始,第二个参数:返回多少个数据)

mysql> select * from user order by id limit 0,1;
+----+----------+----------+------------+
| id | username | password | email      |
+----+----------+----------+------------+
|  2 | AFeng    | 123      | 123.qq.com |
+----+----------+----------+------------+
1 row in set (0.00 sec)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值