《mysql》数据库查询汇总 ->不断更新

本文深入解析SQL查询的高级技巧,包括数据去重、限制查询结果、排序、搜索条件设置、模糊查询、分组及多表查询等核心操作,帮助读者提升数据库管理效率。

查询结果去重


SELECT DISTINCT 列名 FROM 表名;

限制查询结果条数


LIMIT 开始行, 限制条数;

对查询结果排序(默认按照ASC升序排序)

ORDER BY 列名 ASC|DESC

asc:升序

desc:降序

按照多个列的值进行排序(用,分割)

ORDER BY 列1 ASC|DESC, 列2 ASC|DESC ...

排序和限制同时使用

ORDER BY 列名 LIMIT 限制数目

简单搜索条件(查询单个值)

需要把搜索条件放在WHERE子句中

SELECT * FROM student_info WHERE 条件(比如name = “大头”)

条件:

大于:>   ,

小于:< ,

不等于:!=  ,

之间:BETWEEN  1 AND 10

简单搜索条件(查询多个值中的一个)

需要把搜索条件放在WHERE子句中

SELECT * FROM 表名 WHERE 条件 IN(匹配条件一,匹配条件二)

例:查询user表中 名字为张三或者李四的用户

SELECT * FROM user WHERE name IN("张三",“李四”)

判断是否是NULL数据

SELECT * FROM 表名 WHERE 条件 IS NULL

例:查询user表中name为null的用户

SELECT * FROM user WHERE name IS NULL

 

多个条件联合查询

且:用AND连接

例:查询user表名字为张三且成绩大于75分的用户

SELECT * FROM user WHERE name = "张三" AND score > 75;

或:用OR连接

例:查询user表名字为张三或成绩大于75分的用户

SELECT * FROM user WHERE name = "张三" OR score > 75;

当AND 和OR一起用时 AND的优先级大于OR

 

模糊查询

关键词:LIKE

通配符:不能完整描述要查询的信息,那就用某个符号来替代这些模糊的信息

1: “%“”:代表一个字符串

 例:查询user表 姓 “”张“的用户(张三丰啊分)  /  查询user表 有 “”三“的用户

SELECT * FROM user WHERE name LIKE "张%";

SELECT * FROM user WHERE name LIKE "%三%";

 

 2:_:代表任意一个字符

 例:查询user表 姓 “”张“的用户(张三)  /  查询user表 有 “”三“的用户

SELECT * FROM user WHERE name LIKE "张_";

SELECT * FROM user WHERE name LIKE "%三%";

 

转义通配符

如果待匹配的字符串中本身就包含普通字符'%'或者'_'该咋办,怎么区分它是一个通配符还是一个普通字符呢?

答:如果匹配字符串中需要普通字符'%'或者'_'的话,需要在它们前边加一个反斜杠\来和通配符区分开来,也就是说:

  • '\%'代表普通字符'%'
  • '\_'代表普通字符'_'

 例:查询user表 姓 “”张“的用户(张%或者张_)

SELECT * FROM user

 WHERE name LIKE "张\_";

 

分组数据

理解:比如一条语句中同时查询全校的各科目的平均分

示例语句:SELECT subject, AVG(score) FROM student_score GROUP BY subject;

| subject      |      AVG(score) | +-----------------------------+------------+

|   数学       |       73.0000 |

|   语文       |       73.2500 |

+-----------------------------+------------+

SELECT [DISTINCT] 查询列表

[FROM 表名]

[WHERE 布尔表达式]

[GROUP BY 分组列表 ]

[HAVING 分组过滤条件]

[ORDER BY 排序列表]

[LIMIT 开始行, 限制条数]

多表查询

子查询:

栗子:

查询张三的分数:SELECT * FROM student_score WHERE number = (SELECT number FROM student_info WHERE name = '张三');

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值