mysql 廖雪峰_mysql查询(廖雪峰sql教程学习摘录)

mysql默认不区分大小写

条件查询

select * from students                                                                -- 查询students表的所有数据

select * from students where score>=80;                                   -- 查询score大于等于80的数据

select * from students where score>=80 and gender='m';          -- 查询score大于等于80且gender为m的数据

select * from students where score>=80 or gender='m';             -- 查询score大于等于80或gender为m的数据

select * from students where not class_id=2;

select * from students where class_id!=2;                                   -- 查询class_id不为2的数据(用<>也可以)

select * from students where(score<80 or score >90) and gender='M';    --复合查询

投影查询

select id, score, name from students;                                                -- 显示id,score,name列

select id, score points, name from students;                                     -- 显示查询时将score重命名为points

select id, score points, name from students where gender = 'M';      -- 复合查询

排序

默认根据主键排序

select id, name, gender, score from students order score;               -- 将查询结果根据score从低到高显示(默认升序ASC可省略)

select id, name, gender, score from students order score desc;       -- 倒序,将查询结果根据score从高到低显示

select id, name, gender, score from students order by score desc, gender;      -- 先按score升序排序,相同的按gender倒序排序

select * from students where class_id = 1 order score desc;            -- 复合查询

分页

select * from students limit 3 offset 0;                            -- 查询结果每页最多3条,显示第1面(注意索引从0开始)

select * from students limit 4 offset 1;                            -- 查询结果每页最多4条,显示第2面

聚合查询

使用聚合函数进行查询,就是聚合查询

聚合函数

SUM    计算某一列的合计值,该列必须为数值类型

AVG     计算某一列的平均值,该列必须为数值类型

MAX    计算某一列的最大值(不限于数值类型)

MIN     计算某一列的最小值(不限于数值类型)

select count(*) from students;                                                      -- 查询students表中一共有多少记录

select count(*) num from students;                                              -- 给列名count设置一个别名num

select count(*) from students where gender='m';                         -- 查询gender为m的记录数量

select avg(score) from sudents where gender='m'                       -- 查询男生的平均成绩

注意:如果聚合查询的WHERE条件没有匹配到任何行,COUNT()会返回0,而MAX()、MIN()、MAX()和MIN()会返回NULL

select avg(score) average from students where gender = 'X';

分组

select count(*) from students group by gender;                                 -- 根据gender进行分组显示数量

select count(*),class_id from students group by class_id;                 -- 根据class_id进行分组显示数量和class_id

select count(*),gender,class_id from students group by class_id,gender;      -- 根据多个条件进行分组(先根据class_id分组,后根据gender分组)

多表查询

注意查询行数是所选表的乘积

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

select * from students,classes; --同时从students和classes表中查询

selectstudents.id sid,

students.name,

students.gender,

students.score,

classes.id cid,

classes.name cnamefrom students, classes; --查询时设置别名

selects.id sid,

s.name,

s.gender,

s.score,

c.id cid,

c.name cnamefrom students s, classes c; --查询时为表设置别名

selects.id sid,

s.name,

s.gender,

s.score,

c.id cid,

c.name cnamefromstudents s, classes cwhere s.gender = 'M' AND c.id = 1; --使用where语句

View Code

961ddebeb323a10fe0623af514929fc1.png

连接查询

SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score

FROM students s

INNER JOIN classes c

ON s.class_id = c.id;

注意INNER JOIN查询的写法是:

先确定主表,仍然使用FROM 的语法;

再确定需要连接的表,使用INNER JOIN 的语法;

然后确定连接条件,使用ON ,这里的条件是s.class_id = c.id,表示students表的class_id列与classes表的id列相同的行需要连接;

可选:加上WHERE子句、ORDER BY等子句。

这是内查询INNER JOIN,只返回同时存在于两张表的行数据

还有外查询,外查询分为RIGHT OUTER JOIN,LEFT OUTER JOIN和FULL OUTER JOIN。它们的区别是:

RIGHT OUTER JOIN返回右表都存在的行。如果某一行仅在右表存在,那么结果集就会以NULL填充剩下的字段。

LEFT OUTER JOIN则返回左表都存在的行。如果某一行仅在左表存在,那么结果集就会以NULL填充剩下的字段。

FULL OUTER JOIN会把两张表的所有记录全部选择出来,并且,自动把对方不存在的列填充为NULL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值