mysql数据库查询语句_mysql-数据库查询语句汇总

更新时间:2023-06-19 06:30:46 阅读: 评论:0

mysql数据库查询语句_mysql-数据库查询语句汇总数据库查询语句 *****
mysql 多表关系 查询语句 索引
添加数据补充:
将⼀个查询结果插⼊到另⼀张表中
create table student(name char(10),gender int);
inrt into student values("jack",1);
inrt into student values("ro",0);
create table student_man(name char(10),gender int);
inrt into student_man lect * from student where gender = 1;
所有的lect 关键字
lect distinct * from table_name
砂锅
where
group by
having
order by
limit a,b
必须存在的有:
lect
* 可以换成任意的⼀个或多个字段名称
from
table_name
#注意: 关键字的顺序是固定的不能随意变化
where 条件
lect * from table_name
where
where 后⾯可以是
1.⽐较运算符
> < >= <= = !=
2.成员运算符
in not in 后⾯是⼀个t
3.逻辑运算符
and or not
not 要放在表达式的前⾯ and 和 or 放到两个表达式中间
4.模糊查询
like
% 表⽰ 任意个数的任意字符
_ 表⽰⼀个任意字符
#
请查询 姓⼩的 数学⼩于 80 分 并且 英语 > 20分 的⼈的 数学成绩
lect math,name from stu where math < 80 and english > 20 and name like "⼩%"; distinct 去除重复记录
lect distinct * from stu;
# 注意仅当查询结果中所有字段全都相同时 才算重复的记录
指定字段
1.星号表⽰所有字段
2.⼿动指定需要查询的字段
3.还可也是四则运算
4.聚合函数
#请查询 英语及格的⼈的 平均分
lect name,(math+english) / 2 平均分 from stu where english >= 60;
取别名
lect name,math+english as 总分 from stu where name = "赵云";
as 可以省略
统计函数
也称之为聚合函数
将⼀堆数据经过计算得出⼀个结果
求和 sum(字段名)
平均数 avg(字段名)
广告英语最⼤值 max(字段名)
最⼩值 min(字段名)
个数 count(字段名) # 字段名称可以使⽤* 代替 另外如果字段为空会被忽略
可以⽤在 字段的位置 或是分组的后⾯
例如: 查询所有⼈的平均⼯资
lect avg(salary) from emp
错误案例: 查询⼯资最⾼的⼈的姓名
lect name,max(salary) from emp;
#默认显⽰的第⼀个name 因为name有很多⾏ ⽽max(salary) 只有⼀⾏ 两列的⾏数不匹配
# 不应该这么写 逻辑错误
lect name from emp where salary = max(salary);
# 报错
# 原因: 伪代码
for line in file:
if salary = max(salary) #
#分析 where 读取满⾜条件的⼀⾏ ,max()先要拿到所有数据 才能求最⼤值,
#这⾥由于读取没有完成所有⽆法 求出最⼤值
#结论 where 后⾯不能使⽤聚合函数
group by
group 是分组的意思 即将⼀个整体按照某个特征或依据来分为不同的部分
为什么要分组 分组是为了统计,例如统计男性有⼏个 ⼥性有⼏个
语法:
lect xxx from table_name group by 字段名称;
需求:统计每个性别有⼏个⼈
lect x,count(*) from emp group by x;
需求: 查询每个性别有⼏个 并且显⽰名字
lect name,x,count(*) from emp group by x;
# mysql 5.6下 查询的结果是name仅显⽰该分组下的第⼀个
# 5.7以上则直接报错 ,5.6也可以⼿动开启这个功能油条怎么做的
# 我们可以⽤group_concat 将分组之外的字段 做⼀个拼接 ,但是这是没有意义
# 如果要查询某个性别下的所有信息 直接使⽤where 即可
法国全称
#结论: 只有出现在了group by 后⾯得字段才能出现在lect的后⾯
having
⽤于过滤,但是与where不同的是,having使⽤在分组之后
搞笑足球案例:
# 求出平均⼯资⼤于500的部门信息
lect dept,avg(salary) from emp group by dept having avg(salary) > 5000;
#查询 部门⼈数少于3的 部门名称 ⼈员名称 ⼈员个数
lect dept,group_concat(name),count(*) from emp group by dept having count(*) < 3; order
优优影像根据某个字段排序
语法:
lect * from table_name order by 字段名称;
# 默认是升序
# 改为降序
lect * from table_name order by 字段名称 desc;
# 多个字段 第⼀个相同在按照第⼆个 asc 表⽰升序
lect * from table_name order by 字段名称1 desc,字段名称2 asc;
案例:
lect * from emp order by salary desc,id desc;
limit (主要⽤于数据分页)
⽤于限制要显⽰的记录数量
语法1:
lect * from table_name limit 个数;
语法2:
lect * from table_name limit 起始位置,个数;
# 查询前三条
一招消积食
lect * from emp limit 3;
# 从第三条开始 查询3条 3-5
lect * from emp limit 2,3;
# 注意:起始位置 从0开始
# 经典的使⽤场景:分页显⽰
1.每⼀页显⽰的条数 a = 3
2.明确当前页数 b = 2
3.计算起始位置 c = (b-1) * a
lect * from emp limit 0,3;
lect * from emp limit 3,3;
lect * from emp limit 6,3;
# django 提供了现成的分页组件 但是它是先查询所有数据 丢到列表中 再取出数据 这样如果数据量太⼤可能会有问题⼦查询
将⼀个查询语句的结果作为另⼀个查询语句的条件或是数据来源
当我们⼀次性查不到想要数据时就需要使⽤⼦查询
in 关键字⼦查询
当内层查询 (括号内的) 结果会有多个结果时, 不能使⽤ = 必须是in ,另外⼦查询必须只能包含⼀列数据
需求: 指定⼀个部门名称,获取改部门下的所有员⼯信息
1.查询出 平均年龄 ⼤于25的部门编号
lect dept_id from emp group by dept_id having avg(age) > 25;
2.再根据编号查询部门的名称
lect name from dept where id in (lect dept_id from emp group by dept_id having avg(age) > 25);
⼦查询的思路:
1.要分析 查到最终的数据 到底有哪些步骤
2.根据步骤写出对应的sql语句
3.把上⼀个步骤的sql语句丢到下⼀个sql语句中作为条件
exists 关键字⼦查询
当内层查询 有结果时 外层才会执⾏
案例:
lect* from dept where exists (lect * from dept where id = 1);
# 由于内层查询产⽣了结果 所以 执⾏了外层查询dept的所有数据
多表查询
笛卡尔积查询
lect * from table1,table2,......
# 笛卡尔积查询的结果会出现⼤量的错误数据即,数据关联关系错误!
添加过滤条件 从表外键值 等于 主表的主键值
# 并且会产⽣重复的字段信息 例如员⼯⾥的 部门编号 和 部门表的id字段
在lect 后指定需要查询的字段名称
案例:
lect dept.name 部门 ,dept.id 部门编号,emp.name 姓名,emp.id 员⼯编号,x from emp ,dept where dept.id = dept_id;内连接查询:
海马s3本质上就是笛卡尔积查询
语法:
lect * from table1 inner join table2;
案例:
lect * from emp inner join dept where dept_id = dept.id;
inner可以省略
lect * from emp join dept where dept_id = dept.id;
左外连接查询
左边的表⽆论是否能够匹配都要完整显⽰
右边的仅展⽰匹配上的记录
需求: 要查询所有员⼯以及其所属的部门信息
lect * from emp left join dept on dept_id = dept.id;
注意: 在外连接查询中不能使⽤where 关键字 必须使⽤on专门来做表的对应关系

本文发布于:2023-06-19 06:30:46,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/989006.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:查询   数据   语句
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图