Mysql-select 查询语句介绍
in PHP with 0 comment

Mysql-select 查询语句介绍

in PHP with 0 comment

说明

说明:MySQL 查询是指从一张表的数据中查询所需的数据,主要有查询所有字段、查询指定字段、查询指定记录、查询空值、多条件的查询、对查询结果进行排序等。本文就给大家介绍mysql中的查询语句。


SELECT 基本语法

基本格式
SELECT
{* | <字段列名>}
[
FROM <表 1>, <表 2>…
[WHERE <表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]

{*|<字段列名>}包含星号通配符的字段列表,表示查询的字段,其中字段列至少包含一个字段名称,如果要查询多个字段,多个字段之间要用逗号隔开,最后一个字段后不要加逗号。
FROM <表 1>,<表 2>…,表 1 和表 2 表示查询数据的来源,可以是单个或多个。
WHERE 子句是可选项,如果选择该项,将限定查询行必须满足的查询条件。
GROUP BY< 字段 >,该子句告诉 MySQL 如何显示查询出来的数据,并按照指定的字段分组。
[ORDER BY< 字段 >],该子句告诉 MySQL 按什么样的顺序显示查询出来的数据,可以进行的排序有升序(ASC)和降序(DESC)。
[LIMIT[<offset>,]<row count>],该子句告诉 MySQL 每次显示查询出来的数据条数。
使用示例
1.’*‘号查询表里的所有信息
SELECT * FROM tb_students_info;
2.查询表里部分数据。
SELECT id,name,dept_id,age,sex,height,login_date FROM tb_students_info;
distinct 去重

mysql中可以使用distinct过滤重复数据

 SELECT  DISTINCT age FROM tb_students_info;
desc 查询表结构

mysql中可以desc来查看表结构

desc tb_students_info;
查询表的创建语句
show create table tb_students_info;

where条件中的运算符

比较运算符 > < <= >= = <> != 大于、小于、大于(小于)等于、不等于
between ...AND... 显示在某一区间的值
in(set) 显示在in列表中的值,例:in(100,200)
like ''、not like '' 模糊查询(%表示0到多个字符,_表示任意单个字符)
is null 、 is not null 判断是否为空
逻辑运算符 and 多个条件同时成立
or 多个条件任一成立
not 不成立,例:where not(salary>10)
使用举例
1.查询name等于zhangsan,phone等于17000102201的数据
select * from user where name='zhangsan' and phone='17000102201';
2.查询name以任意字符开头,后续是hang的数据
select * from user where name like "_hang";
3.查询年龄在20到40之间的数据
select * from user where age between 20 and 40;
4.查询id 是10、20、30的数据
select * from user where id in(10,20,30);
5.查询年龄为null的数据
select * from user where age is null;
6.查询年龄不是null的数据
select * from user where age is not null;

order by子句

说明

order by 子句是用于排序的

1.order by 一般来说是放在sql语句的最后.
2.order by 字段名 [asc|desc], asc 表示升序排序,desc 表示降序排序,默认是升序排序.
3.order by也可以对多个字段进行排序
order by 字段名1 [asc|desc], 字段名1 [asc|desc]....
示例
1.根据user_id 进行正序排序
select * from user order by user_id ASC;
等同于 select * from user order by user_id;
2.根据user_id 进行倒序排序
select * from user order by user_id desc;
3.先根据角色正序排列再根据工号进行倒序排序
select * from user order by role_id asc,work_num desc;

limit分页查询

当我们数据量很多,需要进行分页时,就需要用到limit语法。

基本语法

select 列名 from 表名 LIMIT ($pageNow-1) * $pageSize , $pageSize;

分页查询有两个重要的参数 $pageSize 表示一页显示几条记录
分页查询有两个重要的参数 $pageNow 表示显示第几页
说明: mysql 的limit 的 ($pageNow-1) * $pageSize 是从0开始计算,因此如果 limit 0, 2 表示从第一记录开始取,取2条.
案例说明

核心:select 列名 from 表名 LIMIT ($pageNow-1) * $pageSize , $pageSize;

mysql> select user_id,login_name from user limit 0,3;
+---------+------------+
| user_id | login_name |
+---------+------------+
|       1 | admin      |
|       2 | guanli2    |
|       3 | Terry      |
+---------+------------+
3 rows in set (0.00 sec)

mysql> select user_id,login_name from user limit 3,3;
+---------+------------+
| user_id | login_name |
+---------+------------+
|       4 | Leo        |
|       5 | Amy        |
|       6 | Bruce      |
+---------+------------+
3 rows in set (0.00 sec)

group by 和 having子句

注意:GROUP BY 子句中的各选择列必须也是 SELECT 语句的选择列清单中的一项。

group by
GROUP BY 子句可以包含任意数目的列,使其可以对分组进行嵌套,为数据分组提供更加细致的控制。
GROUP BY 子句列出的每个列都必须是检索列或有效的表达式,但不能是聚合函数。若在 SELECT 语句中使用表达式,则必须在 GROUP BY 子句中指定相同的表达式。
除聚合函数之外,SELECT 语句中的每个列都必须在 GROUP BY 子句中给出。
若用于分组的列中包含有 NULL 值,则 NULL 将作为一个单独的分组返回;若该列中存在多个 NULL 值,则将这些 NULL 值所在的行分为一组。
having

HAVING 子句和 WHERE 子句非常相似,HAVING 子句支持 WHERE 子句中所有的操作符和语法,但是两者存在几点差异:

WHERE 子句主要用于过滤数据行,而 HAVING 子句主要用于过滤分组,即 HAVING 子句基于分组的聚合值而不是特定行的值来过滤数据,主要用来过滤分组。
WHERE 子句不可以包含聚合函数,HAVING 子句中的条件可以包含聚合函数。
HAVING 子句是在数据分组后进行过滤,WHERE 子句会在数据分组前进行过滤。WHERE 子句排除的行不包含在分组中,可能会影响 HAVING 子句基于这些值过滤掉的分组。
示例:
1.查询所有的角色id
select role_id from user group by role_id;
2.查询所有的角色id,及角色下的相关人
select role_id,GROUP_CONCAT(login_name) from user group by role_id;
3.查询大于10的角色id
select role_id,GROUP_CONCAT(login_name) from user group by role_id having role_id>10;

示例练习

总结

以上就是对php中函数的相关介绍,大家有什么问题可以给博主留言。

结尾

腹有诗书气自华,最是书香能致远。

Responses