MySQL查询语句最强总结

1.基础查询

where 条件查询

select * from table_name where 条件;

# 比较运算符查询
等于: =
大于: >
大于等于: >=
小于: <
小于等于: <=
不等于: !=<>

select * from students where id > 3;
select * from students where name != 'xx';
select * from sutdents where gender = 0;

# 逻辑运算符查询
and
or
not

select * from students where id > 3 and gender=0;
select * from students where id < 4 or is_delete=0;
select * from students where not (age >=10 and age <=15); 

# 模糊查询
like是模糊查询关键字
%表示任意多个任意字符
_表示一个任意字符

select * from students where name like '黄%';
select * from students where name like '黄_';
select * from students where name like '黄%' or name like '%靖';

# 范围查询
between .. and .. 表示在一个连续的范围内查询
in 表示在一个非连续的范围内查询

select * from students where id between 3 and 8;
select * from students where (not id between 3 and 8) and gender='男';

# 空判断查询
判断为空使用: is null
判断非空使用: is not null

select * from students where height is null;

排序查询

# 先按照列1进行排序,如果列1的值相同时,则按照列2 排序,以此类推
select * from 表名 order by 字段1 asc|desc [,字段2 asc|desc, ...]

select * from students where gender =1 and is_delete=0 order by id desc;
select * from students order by age desc,height desc;

分页查询

limit 是分页查询关键字
start 表示开始行索引,默认是0
count 表示查询条数

select * from 表名 limit start,count;

select * from students where gender=1 limit 3;
# 已知每页显示m条数据,查询第n页显示的数据
select * from students where m*(n-1),m;

聚合查询

count(col): 表示求指定列的总行数
max(col): 表示求指定列的最大值
min(col): 表示求指定列的最小值
sum(col): 表示求指定列的和
avg(col): 表示求指定列的平均值

select count(*) from students;
select max(id) from students where gender=1;
select min(height) from students where gender=1;
select sum(money) from students;
select avg(age) from students;

# todo:
ifnull

分组查询
分组查询就是将查询结果按照指定字段进行分组,字段中数据相等的分为一组。

列名: 是指按照指定字段的值进行分组。
HAVING 条件表达式: 用来过滤分组后的数据。
WITH ROLLUP:在所有记录的最后加上一条记录,显示select查询时聚合函数的统计和计算结果

select * from table_name where 条件 group by 字段 [having 条件表达式][with rollup]

# group by的使用
select gender from students group by gender;
# 根据name和gender字段进行分组
select name, gender from students group by name, gender;

# group_concat()使用
# group_concat(字段名): 统计每个分组指定字段的信息集合,每个信息之间使用逗号进行分割
select gender,group_concat(name) from students group by gender;

# group by + 聚合函数的使用
select gender,avg(age) from students group by gender;

# having的使用
select gender,count(*) from students group by gender having count(*) > 2;

# with rollup的使用
-- with rollup的作用是:在最后记录后面新增一行,显示select查询时聚合函数的统计和计算结果
-- 根据gender字段进行分组,汇总总人数
select gender,count(*) from students group by gender with rollup;
-- 根据gender字段进行分组,汇总所有人的年龄
select gender,group_concat(age) from students group by gender with rollup;
2.连接查询

内连接查询
查询两个表中符合条件的共有记录

select 字段 from1 inner join2 on1.字段1 =2.字段2

select * from students as stu inner join classes as cls on stu.cls_id;

左连接查询
以左表为主根据条件查询右表数据,如果根据条件查询右表数据不存在使用null值填充

select 字段 from1 left join2 on1.字段1 =2.字段2

select * from students as s left join classes as c on s.cls_id = c.id;

右连接查询
以右表为主根据条件查询左表数据,如果根据条件查询左表数据不存在使用null值填充

select 字段 from1 right join2 on1.字段1 =2.字段2

select * from students as s right join classes as c on s.cls_id = c.id;

自连接查询
左表和右表是同一个表,根据连接查询条件查询两个表中的数据。

-- 查询省的名称为“山西省”的所有城市
select c.id, c.title, c.pid, p.title from areas as c inner join areas as p on c.pid = p.id where p.title = '山西省';
3.子查询

在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句,外部那个select语句则称为主查询.

主查询和子查询的关系
1.子查询是嵌入到主查询中
2.子查询是辅助主查询的,要么充当条件,要么充当数据源
3.子查询是可以独立存在的语句,是一条完整的 select 语句

-- 查询大于平均年龄的学生
select * from studnets where age > (select avg(age) from students;)

-- 查询学生在班的所有班级名字
select name from classes where id in (select cls_id from students where cls_id is not null);

-- 查找年龄最大,身高最高的学生
select * from students where age, height (select max(age), max(height) from studnets);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL是一种常用的关系型数据库管理系统,它支持使用SQL语言进行数据的查询、插入、更新和删除等操作。以下是一些常见的MySQL查询语句: 1. SELECT语句:用于从数据库中检索数据。 示例:SELECT * FROM 表名; 2. WHERE子句:用于在SELECT语句中添加条件筛选。 示例:SELECT * FROM 表名 WHERE 条件; 3. ORDER BY子句:用于对查询结果进行排序。 示例:SELECT * FROM 表名 ORDER BY 列名 ASC/DESC; 4. LIMIT子句:用于限制查询结果的数量。 示例:SELECT * FROM 表名 LIMIT 数量; 5. JOIN语句:用于在多个表之间建立关联。 示例:SELECT * FROM 表1 JOIN 表2 ON 表1.列 = 表2.列; 6. GROUP BY子句:用于对查询结果进行分组。 示例:SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名; 7. HAVING子句:用于在GROUP BY子句后添加条件筛选。 示例:SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名 HAVING 条件; 8. INSERT INTO语句:用于向数据库中插入新的数据。 示例:INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2); 9. UPDATE语句:用于更新数据库中的数据。 示例:UPDATE 表名 SET 列名 = 值 WHERE 条件; 10. DELETE FROM语句:用于从数据库中删除数据。 示例:DELETE FROM 表名 WHERE 条件; 这些只是MySQL查询语句的一部分,还有很多其他的语句和功能可以用于满足不同的需求。如果你有具体的问题或者需要更详细的介绍,请告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值