mysql查询操作1

##1、在已有的表中插入一行记录

insert into tb_name values("",""...);

##2、查询语句的框架和用法

select  字段名
from    表名
where  查询条件
group by  字段名
having  条件
order by [ASC|DESC]
limit  [距离第一行的偏移量|返回的行数]

 ##as表示给字段名起别名


##3、找出比公司平均薪水高的员工的姓名和工资(子查询,子查询语句与条件里面)
第一步:找出公司的平均薪水

select avg(sql) from emp;

第二部:找出薪水大于平均薪水的员工的信息

select ename,sal from emp where sal>(select avg(sql) from emp);

##4、找出每个部门的平均薪水,并且要求显示平均薪水的薪水等级。(子查询,子查询语句在from里面)
##from后面,将查询结果当临时表
第一步:找出每个部门的平均薪水

select deptno,avg(sal) as avgsal 
from emp 
group by
deptno;


第二步:将上面的查询结果当做临时表t,t表和salgrade s表进行
连接。

select
t.deptno,t.avgsal,s.grade
from
(select deptno,avg(sal) as avgsal 
from emp 
group by
deptno)t        ##from后面只能跟表
join
salgrade s    ##字段 新创建的临时表
on               ##on 的用法??
t.avgsal between s.losal and s.hisal;

 说明:on是用于多表连接查询的,一般是join on ,左右连接或内连接

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

##聚合函数不可以在where后面??为什么?(百度一下)

##where后面接查询条件,而select后面才是接聚合函数的,主要用于对条件进行计算;

##编译器最先执行from找表,再根据where找条件,再根据select找具体内容。


##5、distinct 去除重复记录,它在字段名前面

select distinct job from emp;

##对于job这一列的字段,重复信息去掉显示,并未修改表

select distinct deptno,job from emp;

##对于此表部门编号、职位组成的行不能重复
##distinct前面不能出现字段

select count(distinct job) from emp;

6、分组查询

1).分组查询涉及的两个子句是
-group by
-having
2.group by


2.1) 
order by##[表示通过哪个或哪些字段进行排序]
group by##[表示通过哪个或哪些字段进行分组]
2.2例子:找出每个工作岗位的最高薪水【先分组,在用max】

select
max(sal)   ##第三步执行
from 
emp         ##第一步执行
group by
job;         ##第二步执行
成年人的世界没有那么多的童话,也没有那么多的逆袭。
原文地址:https://www.cnblogs.com/shijinglu2018/p/8735934.html