当前位置: 首页> 技术文章> 浅谈mysql多表练习题经验

浅谈mysql多表练习题经验

浅谈mysql多表练习题经验总结

一、聚合函数不可以与其他字段一起使用比如:name,因为name不排序,默认选择第一个。分开使用单独求出 max的值,可用 in  =

错误场景一:Select    name  , sex  ,max(age)  from  emp ;

错误原因:name和sex  默认去第一行

错误场景二:Select    name  , sex  ,max(age)  from  emp  group  sex;

错误原因:name 默认去第一行,sex ,max(age)字段匹配

正确场景三:

Select   sex  ,max(age)  from  emp  group  sex;

Select   max(age)  from  emp  group  sex;

二、取最大值或最小值时 使用max或min命令。也可以order by 排序asc,或desc  ,得到第一行为最大或最小的, 然后使用limit命令,取第一行

三、注意区别 内连接 左连接 右连接  的内容不一样

根据实际情况:

场景一:左链接

显示部门表的所有最高工资

Select dept_name,max(incoming)  from  dept left join  emp on dept1=dept2 gtoup  by  dept_name;

如果使用内连接,我们的104,行政部门就不显示

四、Group by 条件 后面可以接 order by  表示 分组后排序  也可以接 having

五、having 后面可以直接使用聚合函数

场景一:

SELECT

dept_name from dept LEFT JOIN emp on dept.dept1=emp.dept2  GROUP BY   dept_name   HAVING   COUNT(dept2)>1     

六、括号括起来的语句必须可执行,当做临时表运用

1. SELECT dept_name from

(SELECT count(name) b,dept_name,name from emp right JOIN dept on dept.dept1=emp.dept2 GROUP BY dept_name)  as a where b>1;    

七、聚合函数count(name)再次使用时要取别名 

SELECT SUM(incoming) as a,dept_name FROM emp INNER JOIN dept ON emp.dept2 = dept.dept1 GROUP BY dept_name;

八、每一个表都可以取别名 ,在form后面用()括起来,

()括号中可以是单表,多表,已经筛选出来的表;

场景一:

固定格式:

SELECT  需要展示的字段  FROM  SELECT * FROM )a包含全部字段的联合表,并进行分组以及排序将联合表

WHERE

条件字段


九、数据库中字符一定要加引号,末尾一定要加分号


十、找出最低收入的数据根据销售部,但是得到数以后再去两个表的合表中找对应的数据,还要加上销售部,让数据准确无误;


场景:找出销售部收入最低的员工的入职时间;


select woektime_start from emp,dept where dept.dept1=emp.dept2 and


incoming in (select min(incoming)  from   emp  where dept2=(select  dept1 from  dept where  dept_name="销售")) and  dept_name ="销售" ;


注意:一般同学就根据筛选的数去匹配出来,有误差,如果有好几个相同工资的数据就不准确


 建表语句:

 

#建表

CREATE table dept1(dept1 VARCHAR(6),dept_name VARCHAR(20));
 INSERT into dept VALUES ('101','财务');

-- INSERT into dept VALUES ('102','销售');

-- INSERT into dept VALUES ('103','IT技术');

-- INSERT into dept VALUES ('104','行政');

-- INSERT into  dept  VALUES  ('104','销售');

CREATE table emp (sid VARCHAR(20),name VARCHAR(20),age TINYINT(2),woektime_start VARCHAR(10),incoming SMALLINT(10),dept2 VARCHAR(6));

 

insert into emp VALUES ('1789','张三',35,'1980/1/1',4000,'101');

 

insert into emp VALUES ('1674','李四',32,'1983/4/1',3500,'101');

 

insert into emp VALUES ('1776','王五',24,'1990/7/1',2000,'101');

 

insert into emp VALUES ('1568','赵六',57,'1970/10/11',7500,'102');

 

insert into emp VALUES ('1564','荣七',64,'1963/10/11',8500,'102');

 

insert into emp VALUES ('1879','牛八',55,'1971/10/20',7300,'103');


 


 



 


上一篇: 一道经典的python题目【多测师_王sir】【软件测试培训】【www.duoceshi.cn】

下一篇: 软件测试之手工测试人员如何转测试开发?

QQ技术交流群

多测师官方学习交流
556733550

加入群聊