查询的纪律
查询语句限制条件越多,查询局限越小;
1.整个表
Select * From 库名.表名
2.整个表的某字段内
Select id From 库名.表名
3.整个表某字段的局限内
Select * From 库名.表名 Where id<50;
4.整个表某字段的局限内在限制条目数
Select * From 库名.表名 Where id<50 Limit 0,10;
总结:
局限的巨细对照关系如下
1.>2.>3.>4.
Select指定表和字段查询局限
指定整个表
* 是通配符;
Select * From 库名.表名
指定某几个字段
Select id,name From 库名.表名
Where指定字段查询局限
Where 后面可以添加许多查询条件,常用的查询条件如下,在现实中详细使用哪种看应用场景;
运用关系运算符确定局限查询
操作符
形貌
实例
=
等号,检测两个值是否相等,若是相等返回true
(A = B) 返回false。
<>, !=
不即是,检测两个值是否相等,若是不相等返回true
(A != B) 返回 true。
>
大于号,检测左边的值是否大于右边的值, 若是左边的值大于右边的值返回true
(A > B) 返回false。
<
小于号,检测左边的值是否小于右边的值, 若是左边的值小于右边的值返回true
(A < B) 返回 true。
>=
大于即是号,检测左边的值是否大于或即是右边的值, 若是左边的值大于或即是右边的值返回true
(A >= B) 返回false。
<=
小于即是号,检测左边的值是否小于于或即是右边的值, 若是左边的值小于或即是右边的值返回true
(A <= B) 返回 true。
Example:
Select * From 库名.表名 Where id<50;
In 包罗判断查询
select * from secondweek.test1_tb where id in(1,2);
id not in(1,2)不查括号内里包罗的
select * from secondweek.test1_tb where id not in(1,2);
字符串包罗 example:
select * from secondweek.test1_tb where addr in("北京");
Between X and Y相符延续数值局限内查询
select * from secondweek.test1_tb where id between 1 and 3;
Is NULL 空值判断查询
Mysql列中的空值(NULL)不同于0,也不同于空字符串;
可以使用 Not 关键字;
select * from secondweek.test1_tb where regTime is Null;
Distinct 去重查询
假设有多个重复,那么他留存唯一的尺度是什么?留第一条;
使用distinct下令时需要放在查询条件的开头;
原本表结构:
select distinct password,email from secondweek.test1_tb;
去重后的表结构:
若是是使用了多个列字段,就凭据一行与一行来对照,不是单个;若是只是单列去重,那么和Group By 字段名;没啥区别;
Group By 单列去重
单字段去重效果好,由于Group By sex, sex列就作为分组尺度,男为一组,女为一组,效果就会只显示男、女两组。可以作为单列去重使用;
原表:
去重后:
select password,email from secondweek.test1_tb Group By password;
Distinct 去重后:
select Distinct password,email from secondweek.test1_tb;
Group By连系聚合统计函数\Having查询
Group By 字段; 这列字段就会被作为分组,不能有重复;分组之后可以求字段中最大、最小、平均值、每组数目…
example:
select Count(sex),sex from secondweek.test1_tb Group By sex;
连系Having 关键字:
Having 和 Where类似都是对查询效果举行过滤用;
区别在于,Having后面可以随着聚合函数,而Where不能;
Having一样平常都和Group By一起使用,对分组后的效果举行过滤;
select Avg(salary),sex from secondweek.test1_tb Group By sex having Avg(salary)>=5900;
Like 模糊查询
模糊查询支持使用通配符;常用通配符有*、%、_、…
% example:
% 百分号通配符可以匹配随便长度的字符,包罗空字符串;
# 知道牢固头
select * from secondweek.test1_tb where username Like "zhao%";
# 知道牢固尾
select * from secondweek.test1_tb where username Like "%qi";
模糊搜索example:
_ 单个字符匹配example:
_下划线通配符只能匹配单个字符,要想匹配多个,就得用多个下划线;
select * from secondweek.test1_tb where username Like "lis_";
And 并列多条件查询
Select * From 库名.表名 Where id<50 and sex=0;
Or 或条件查询
Select * From 库名.表名 Where name="lisi" or sex=0;
Limit 限制查询效果的数目
Select * From 库名.表名 Where id<50 Limit M[,N];
# M 是偏移变量,默认从0最先,若是指定查询效果为 lisi,wangwu,zhaoliu,chenqi, lisi是0,若是M=2,就从zhouliu最先;
# N 是纪录数,示意显示出几条数据;
Select * From 库名.表名 Where id<50 Limit 0,10;
复合条件查询
凭据应用场景,将上述查询条件语句举行嵌套、并列一起使用,叫做复合条件查询;
# 聚合(统计)函数 > 枚举一些常用聚合函数;一样平常和Order by 连系使用;
AVG() — 求某一列平均值
COUNT() — 统计总行数
SUM() — 盘算列总和
MIN() — 求某一列的最小值
MAX() — 求某一列的最大值
# Order By对查询效果排序 > 先确定以某列为基准举行排列;
可以使用Order By将某列定为基准,然后排序;
ASC 升序
select * from secondweek.test1_tb Order By salary ASC;
DESC 降序
select * from secondweek.test1_tb Order By salary DESC;
# 查询时使用别名 > as 可以省略;
为表取别名
查询时使用表名的别名,可以省略写全称的贫苦,在多表操作的时刻需要写多个表名时,有点应用场景;
select id,username,password from secondweek.test1_tb as tb where tb.id > 2;
# or
select id,username,password from secondweek.test1_tb tb where tb.id > 2;
为字段取别名
原本查询出来的列名都是建立时界说好的,查询时可以使用别名展示出来;
表原来结构:
select id,username myuaer,password as ps from secondweek.test1_tb;
修改成别名展示:
原文链接:https://www.cnblogs.com/mysticbinary/p/12865746.html
本站声明:网站内容来源于网络,若有侵权,请联系我们,我们将及时处理。