Mysql_单表字段操作_查询

本文深入解析SQL查询语句的构造与应用,涵盖SELECT、WHERE、IN、BETWEEN、IS NULL、DISTINCT、GROUP BY、HAVING、LIKE、AND、OR、LIMIT、ORDER BY等关键语法,以及聚合函数如AVG、COUNT、SUM、MIN、MAX的使用方法,通过实例演示如何高效筛选、排序和统计数据库中的信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


查询的规律

查询语句限定条件越多,查询范围越小;

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 库名.表名

1552062-20190811160229672-722377719.png

指定某几个字段

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);

1552062-20190811165430806-498734814.png

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("北京");

1552062-20190811165733078-826178697.png

Between X and Y符合连续数值范围内查询

select * from secondweek.test1_tb where id between 1 and 3;

1552062-20190811170250595-1477670785.png

Is NULL 空值判断查询

Mysql列中的空值(NULL)不同于0,也不同于空字符串;
可以使用 Not 关键字;

select * from secondweek.test1_tb where regTime is Null;

1552062-20190811170555303-1158711465.png

Distinct 去重查询

假设有多个重复,那么他留存唯一的标准是什么?留第一条;
使用distinct命令时需要放在查询条件的开头;

原本表结构:
1552062-20190811175045901-890627546.png

select distinct password,email from secondweek.test1_tb;

去重后的表结构:
如果是使用了多个列字段,就根据一行与一行来比较,不是单个;如果只是单列去重,那么和Group By 字段名;没啥区别;
1552062-20190811175446852-828870298.png

Group By 单列去重

单字段去重效果好,因为Group By sex, sex列就作为分组标准,男为一组,女为一组,结果就会只显示男、女两组。可以作为单列去重使用;

原表:
1552062-20190811175906723-844004574.png

去重后:

select password,email from secondweek.test1_tb Group By password;

1552062-20190811175929597-914082954.png

Distinct 去重后:

select Distinct password,email from secondweek.test1_tb;

1552062-20190811180005002-801943955.png

Group By结合聚合统计函数\Having查询

Group By 字段; 这列字段就会被作为分组,不能有重复;分组之后可以求字段中最大、最小、平均值、每组数量...

example:

select Count(sex),sex from secondweek.test1_tb Group By sex;

1552062-20190811184057953-941655178.png

结合Having 关键字:
Having 和 Where类似都是对查询结果进行过滤用;

区别在于,Having后面可以跟着聚合函数,而Where不能;

Having一般都和Group By一起使用,对分组后的结果进行过滤;

select Avg(salary),sex from secondweek.test1_tb Group By sex having Avg(salary)>=5900;

1552062-20190811185126617-1395507864.png

Like 模糊查询

模糊查询支持使用通配符;常用通配符有*%_、...

% example:
% 百分号通配符可以匹配任意长度的字符,包括空字符串;

# 知道固定头
select * from secondweek.test1_tb where username Like "zhao%";

# 知道固定尾
select * from secondweek.test1_tb where username Like "%qi";

1552062-20190811182020543-310219426.png

模糊搜索example:
1552062-20190811182444826-1697329822.png

_ 单个字符匹配example:
_下划线通配符只能匹配单个字符,要想匹配多个,就得用多个下划线;

select * from secondweek.test1_tb where username Like "lis_";

1552062-20190811182245661-950269638.png

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;

1552062-20190811180840489-1605678636.png

复合条件查询

根据应用场景,将上述查询条件语句进行嵌套、并列一起使用,叫做复合条件查询;


聚合(统计)函数

列举一些常用聚合函数;

AVG():求某一列平均值

COUNT():统计总行数

SUM():计算列总和

MIN():求某一列的最小值

MAX():求某一列的最大值


Order By对查询结果排序

先确定以某列为基准进行排列;

可以使用Order By将某列定为基准,然后排序;

ASC 升序

select * from secondweek.test1_tb Order By salary ASC;

1552062-20190811190543735-253426472.png

DESC 降序

select * from secondweek.test1_tb Order By salary DESC;

1552062-20190811190620522-674255842.png


查询时使用别名

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;

1552062-20190811164402784-1045886477.png

为字段取别名

原本查询出来的列名都是创建时定义好的,查询时可以使用别名展示出来;

表原来结构:
1552062-20190811163830724-2074361562.png

select id,username myuaer,password as ps from secondweek.test1_tb;

修改成别名展示:
1552062-20190811163912154-938290605.png

1552062-20190811164206004-1807428990.png

转载于:https://www.cnblogs.com/mysticbinary/articles/11335100.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值