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; ##第二步执行
05-11 15:21
查看更多