1.最基本的通用查询:查询全表数据,SELECT * FROM 表名;实际开发中,写sql的时候,不能书写*
MySQL 条件查询 limit、in、between and、like等等
1、and (并且)
语法格式:
SELECT 字段1,字段2… FROM <表名> WHERE 字段名=值 and 字段名=值
SELECT * FROM test_user WHERE id=4 and username='终极it菜鸡';
2、or (满足其一)
语法格式:
SELECT 字段1,字段2… FROM <表名> WHERE 字段名=值 or 字段名=值
SELECT * FROM test_user WHERE id=2 or username='终极it菜鸡';
3、like (匹配查询)
语法格式
SELECT 字段1,字段2… FROM <表名> WHERE 字段名 LIKE 条件
这里牵扯到一个通配符 和LIKE 一起使用的有 ” %“ 和”__“;
-
百分号 (%) 可以匹配任意长度的字符。
照常举个栗子 两边都放是前后都可以匹配任意长度的字符。 可以只在一边加
select * from test_user where username like ”%学%“;
下划线(__) 和 % 的用法相同 区别是% 可以匹配多个字符 而 (_ _ ) 只能匹配一个字符。 两边加是为了匹配两边 加一边加两边 根据实际需求来。
select * from test_user where username like ”_学_“;
4、limit (分页)
显示前N 行 简而言之 就是要查出几行数据。
SELECT * FROM <表名> LIMIT [位置偏移量] 行数
SELECT * FROM test_user LIMIT 1,3;
通过这三条查询数据 应该能够看出位移偏移量是什么了吧,还有行数的意思应该也懂啦吧。
位移偏移量 就是 要从第几行开始查起 0 才表示 第一行数据
行数 : 就是从位移偏移量开始往后查 这个行数。
5、in (指定范围查询)
语法格式
SELECT 字段1,字段2… FROM <表名> WHERE 字段名 IN (值1,值2…)
SELECT * FROM test_user WHERE id IN (1,2,3);
6、between and (范围查询)
语法格式 这个是要查 这个范围的值 。
SELECT 字段1,字段2… FROM 表名 WHERE 字段名 BETWEEN 值1 AND 值2 ;
也可以 在前面加上 NOT 表示不查这个范围的值
SELECT 字段1,字段2… FROM 表名 WHERE 字段名 BETWEEN 值1 AND 值2 ;
SELECT * FROM test_user WHERE id BETWEEN 1 AND 5 ;
7、is null (查询空值)
语法表 可以查询某字段内容为空的记录。
SELECT 字段名1,字段名2… FROM 表名 WHERE 字段名 IS NULL
8.分组函数
求和:sum()、均值:avg()、最大值:max()、最小值:min()、求数目:count()、求日期差(天):datediff()
9.条件查询
select
查询列表
from
表名
where
筛选条件
执行顺序 from 表名 where 筛选条件 select 查询列表
分类:
一:按条件表达式筛选
条件运算符:> < != <>(不等于的意思和!=同一个意思) >= <=
语法:
select
查询列表
from
表名
where
筛选条件
执行顺序 from 表名 where 筛选条件 select 查询列表
二:按逻辑表达式筛选
作用:用于连接条件表达式
逻辑运算符: && || ! and or not
&&和and:两个条件都为true,结果为true,反之为false
||或or: 只要有一个为true,结果为true,反之为false
!或not:如果连接的条件本身为false,结果为true,反之为false
三:模糊查询
like
特点:
1:一般和通配符搭配使用
通配符
% 任意多个字符,包含0个字符
_ 任意单个字符,即一个字符
between and in
is null | is not null
四:排序查询
语法:
select 查询列表
from 表
【where 筛选条件】
order by 排序列表 【asc|desc】;
排序查询特点:
1:asc代表的是升序,desc代表的是降序 如果不写,默认是升序
2:order by子句可以支持 单个字段,别名,表达式,函数,多个字段
3:order by 子句在查询语句的最后面,除了limit子句。
10.条件表达式
WHERE表达式
条件表达式即是,对记录进行过滤,满足条件进行显示。如果没有指定WHERE子句,则显示所有记录;在WHERE表达式中,可以使用MySQL支持的函数或者运算符。
root@localhost test>SELECT id,username FROM user WHERE id % 2 = 0;
2、GROUP...BY...
此外还可以进行分组,分组的时候即可以指定列名也可以指定列的位置,查询结果分组:
[GROUP BY {col_name | position } [ASC | DESC],...]
3、分组条件HAVING...
还可以带有分组条件HAVING
[HAVING where_condition]
现在来对sex进行分组,由于sex中只有两种“类型”,是0和NULL类型,因此会有两种分组
root@localhost test>SELECT sex FROM user GROUP BY sex;
11.Mysql中的统计函数(聚合函数)
max()
返回某列最大值min()
返回某列最小值count()
返回某列的行数sum()
返回某列值和avg()
返回某列的平均值
在使用count时,如果指定列名,则指定列的值为空的行被忽略,但如果COUNT函数中用的是星号(*),则不忽略。