成都网站建设设计

将想法与焦点和您一起共享

mysql怎么查询领导 如何查领导

内链接查询返回几条记录

当我们需要用多张表联合起来查询数据时,称为连接查询。

创新互联主要从事网站设计制作、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务绿春,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

连接查询可以分为内连接、外连接和全连接。其中内连接分为等值连接、非等值连接和自连接。外连接分为左外连接(左连接)和右外连接(右连接)。

笛卡尔积:当两张表进行连接查询,没有任何条件限制的时候,最终查询结果条数是两张表条数的乘积,这种现象被称为笛卡尔积现象。

通过添加条件限制,可以筛选出我们需要的数据。

一、内连接

在内连接中,两张表是平等的。

dept(部门)表:

emp(员工)表:

salgrade(薪资)表:

1.等值连接

等值连接,即条件是一个等值关系。

eg.查询每个员工所在部门名称,显示员工名和部门名。

员工表和部门表连接,通过emp.deptno=dept.deptno

//SQL92语法(不推荐):

mysql select ename,dname

- from dept,emp

- where dept.deptno=emp.deptno;

登录后复制

//SQL99语法(推荐):

mysql select ename,dname

- from emp

- (inner) join dept

- on emp.deptno=dept.deptno;

join表示连接两表,on表示条件,inner表示内连接,可省略

登录后复制

为什么不推荐使用92:

在我们查找数据时,连接条件后面可能还要再加筛选条件,如(where dept.deptno=emp.deptno and …(条件)。

在92语法中,连接条件和筛选条件糅杂在where中,使得结构不清晰。

而99语法中,通过on表示连接条件,后面可以继续加where语句进行筛选:

select…

on emp.deptno=dept.deptno

where …

2.非等值连接

非等值连接,即条件不是一个等值关系。

eg.找出每个员工的薪资等级,要求显示员工名、薪资、薪资等级。

mysql select ename,sal,grade

- from emp

- (inner) join salgrade

- on emp.sal between losal and hisal;

登录后复制

3.自连接

将一张表看成两张表进行查询。

eg.查询员工的上级领导,要求显示员工名和对应的领导名。

mysql select a.ename empname,b.ename leadername

- from emp a join emp b

- on a.mgr=b.empno;

登录后复制

只有13条记录,没有显示老板KING的领导名,因为为NULL。

二、外连接

在外连接中,两张表有主次关系,一主一次。

1.右(外)连接

eg.

select e.ename,d.dname

from emp e

right (outer) join dept d

on e.deptno=d.deptno;

//outer可以省略

登录后复制

解释:表示将join关键字右边的这张表看成主表,主要是为了将这张表的数据全部查询出来,顺便关联查询左边的表。

2.左(外)连接

将join左边的表看成主表。

任何一个右连接都有左连接的写法;

任何一个左连接都有右连接的写法。

eg.查询每个员工的上级领导,要求显示所有员工的名字和领导名(将老板KING的领导名也显示 出来)。

mysql select a.ename empname,b.ename leadername

- from emp a left join emp b

- on a.mgr=b.empno;

登录后复制

补充:三张表、四张表如何进行连接?

语法:

select

...

from

a

join

b

on

a和b的连接条件

join

c

on

a和c的连接条件

right join

d

on

a和d的连接条件

登录后复制

一条SQL中内连接和外连接可以混合,都可以出现。

eg.找出每个员工的部门名称以及工资等级,要求显示员工名、部门名、薪资、薪资等级。

mysql select ename,dname,sal,grade

- from emp

- join dept

- on emp.deptno=dept.deptno

- join salgrade

- on emp.sal between losal and hisal;

登录后复制

三、全连接

两张表有主次关系,但两张表都是主表。

全连接实际用的比较少,这里就不展开描述了。

Mysql查询详解(条件查询、子查询、模糊查询、连接查询。。。)

Mysql练习题,可对本章学习的内容进行巩固

dept.sql

emp.sql

salgrade.sql

查询每个员工的工资

给查询列起别名

条件查询需要用到where语句,where语句必须放到from语句后面。

==语法格式如下==

==条件查询支持以下运算符==

==查询工资为5000的员工姓名==

==搭配%使用==

(1)

(2)

(3)

==搭配_使用==

==注意事项==

==连接查询分类==

查询每个员工的部门名称,要求显示员工名和部门名

找出每个员工的工资等级,要求显示员工名、工资、工资等级

找出每个员工的上级领导,要求显示员工名和对应的领导名称

外连接分类

==1、where后面嵌套子查询==

==2、from后面嵌套子查询==

列出各种工作的最低工资及从事此工作的雇员姓名

3、select后面嵌套子查询

查询每个员工所在部门名称

觉得不错的小伙伴可以点赞关注和收藏哦!如有错误可以指出来。

font size="4"Java学习路线目录索引/font

mysql怎么查询树形结构的所有上级

java版的实际例子。类同你说的情况

private void findChildList(AssetType parent,ListAssetType list){

String hql = "from AssetType a where a.parentAssetType.assetTypeId=? ORDER BY a.sort,a.assetTypeName asc";

ListAssetType childList = this.assetTypeDao

.getEntityManager()

.createQuery(hql)

.setParameter(1, parent.getAssetTypeId())

.getResultList();

int size = childList.size();

if(size0){

for (int i = 0; i size; i++) {

AssetType assetType = childList.get(i);

ListAssetType childs = assetType.getChildAssetType();

if(childs.size()0){

list.addAll(childs);

this.findChildList(assetType, list);//递归查询节点的子节点

}

}

}

}

MySQL子查询(六)

定义:查询中嵌套查询就是子查询

子查询的本质:

找出工资大于Mark的员工名字和工资

分析:

1.查询出Mark的工资是多少

2.查询出高于1450工资的人

整合成子查询

子查询的特点:

为什么相关子查询的效率极其低下?

结论:

性能排序/优先使用

关联/分组查询无关子查询相关子查询

1. 找出工资比'BLAKE'多的员工

2. 列出薪金高于公司平均薪金的所有员工,所在部门

3. 查询出工资最低的员工的姓名,工作,工资

4. 列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称

或者

5.查找出职位和'MARTIN' 或者'SMITH'一样的员工的平均工资

6. 列出薪金比“BLAKE”或“WARD”多的所有员工的编号、姓名、部门名称、其领导姓名。

7. 找出各个部门中大于他所在部门平均工资的员工名和工资

8. 查找出收入(工资加上奖金),下级比自己上级还高的员工编号,员工名字,员工收入

9. 得到每个月工资总数最少的那个部门的部门编号,部门名称,部门位置

10. 查找出部门10和部门20中,工资最高第3名到工资第5名的员工的员工名字,部门名字,部门位置

11. 以职位分组,找出平均工资最高的两种职位

12. 查询出各部门总薪资,平均薪资,总人数,显示部门编号,部门名称与部门总薪资(没有员工的部门也需要统计)

MySQL连接查询

Hello,写的语言格式有些丑

练习题目:

3、多表连接(等值连接)

①案例1 :查询员工名、部门名

②为表起别名

# ③添加筛选条件

# 案例:查询 工资5000 的工种名和员工名、工资

④添加分组和筛选

#01 案例:查询每个部门的员工个数和部门名

⑤排序

#01 案例:查询每个部门的员工个数和部门名

⑥ 三表连接

# 案例:查询员工名、部门名和所在城市

4、多表连接(等值连接)练习

传统模式的多表连接

1. 显示所有员工的姓名,部门号和部门名称。

2. 查询90 号部门员工的job_id 和90 号部门的location_id

3. 选择所有有奖金的员工的last_name  , department_name , location_id , city 

----------- 三表连查

4. 选择city 在Toronto 工作的员工的

last_name  , job_id , department_id , department_name     ----------- 三表连查

5. 查询每个工种、每个部门的部门名、工种名和最低工资  ----------- 三表连查

6. 查询每个国家下的部门个数大于2 的国家编号

5、非等值查询

2.非等值连接

#案例1:查询员工的工资以及对应的工资级别

#案例2:查询名字中第三个字符为a,第五个字符为e的员工的工资以及对应的工资级别

6、内连接

#案例1 :查询员工名、部门名

案例2:查询有奖金的员工名、部门名

案例3:查询城市名、员工名和部门名

9、练习

一、查询编号3的女神的男朋友信息,如果有则列出详细,如果没有,用null填充

#二、查询哪个城市没有部门

三、查询部门名为SAL或IT的员工信息

#四、选择指定员工的姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式

/*

employees       Emp#       manager    Mgr#

kochhar            101       king         

100

*/

10、单行子查询

案例1:谁的工资比Abel高

①查询Abel的工资

②查询员工的信息满足工资①的结果

案例2:题目:返回job_id与141号员工相同,salary比143号员工多的员工 的姓名,job_id 和工资

①查询141的job_id

②查询143的salary

③查询  姓名,job_id 和工资,满足job_id=①并且salary②

案例3:返回公司工资最少的员工的last_name,job_id和salary

①查询最低工资

②查询员工的last_name,job_id和salary满足 salary=①

案例4:查询最低工资大于50号部门最低工资的部门id和其最低工资

①查询50号部门的最低工资

②查询每个部门的最低工资

③筛选最低工资①

11、多行子查询

二、多行子查询

案例1:返回location_id是1400或1700的部门中的所有员工姓名

①查询location_id是1400或1700的部门编号

②查询department_id满足①结果的员工姓名

案例2:返回其它部门中比job_id为‘IT_PROG’部门任意工资低的员工的员

工号、姓名、job_id 以及salary

①查询job_id为‘IT_PROG’部门工资

②返回其它部门中,工资any ①的结果

题目:返回其它部门中比job_id为‘IT_PROG’部门所有工资都低的员工

#的员工号、姓名、job_id 以及salary

12、子查询练习题

#1. 查询和Zlotkey 相同部门的员工姓名和工资

#2. 查询工资比公司平均工资高的员工的员工号,姓名和工资。

#①查询公司平均工资

② 查询工资①的员工的员工号,姓名和工资。

#3. 查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资

①查询各部门的平均工资

②查询员工的员工号, 姓名和工资,满足本部门并且工资①

4. 查询姓名中包含字母u 的员工在相同部门的员工的员工号和姓名

①查询姓名中包含字母u的员工的部门

② 部门=①的员工的员工号和姓名

5. 查询在部门的location_id 为1700 的部门工作的员工的员工号

①查询loaction_id =1700的部门编号

② 查询员工号,满足部门号=①

#6. 查询管理者是King 的员工姓名和工资

①查询员工名是king的编号

#② 查询员工姓名和工资,领导的编号=①

#7. 查询工资最高的员工的姓名,要求first_name 和last_name 显示为一列,列名为 姓. 名

①查询最高工资

②查询姓名,工资=①

14、子查询巩固练习

# 1 、查询工资最低的员工信息

#①查询公司的最低工资

②查询员工信息,满足 salary=①

2. 查询平均工资最低的部门信息

①查询每个部门的平均工资

②查询①结果中avg(salary) 字段中的最低值

# ③查询部门编号,满足平均工资= ②结果

④查询部门信息,满足  department_id= ③

3*. 查询平均工资最低的部门信息和该部门的平均工资

4. 查询平均工资最高的 job 信息

①查询每个job的平均工资

②查询①结果中的 avg(salary)的最高值

③查询每个工种的平均工资,满足 平均工资=②

④工种表和③连接  , 查询平均工资最高的 job 信息  

# 5. 查询平均工资高于公司平均工资的部门有哪些?

#①查询公司的平均工资

②查询每个部门的平均工资,并且平均工资①

6. 查询平均工资最高的部门的  manager 的详细信息:

①查询平均工资最高的部门编号

②查询部门编号=①的manager的详细信息

mysql怎么查询树形结构的所有上级,你这个问题是怎么解决的?求指导

java版的实际例子。类同你说的情况

private void findChildList(AssetType parent,ListAssetType list){

String hql = "from AssetType a where a.parentAssetType.assetTypeId=? ORDER BY a.sort,a.assetTypeName asc";

ListAssetType childList = this.assetTypeDao

.getEntityManager()

.createQuery(hql)

.setParameter(1, parent.getAssetTypeId())

.getResultList();

int size = childList.size();

if(size0){

for (int i = 0; i size; i++) {

AssetType assetType = childList.get(i);

ListAssetType childs = assetType.getChildAssetType();

if(childs.size()0){

list.addAll(childs);

this.findChildList(assetType, list);//递归查询节点的子节点

}


标题名称:mysql怎么查询领导 如何查领导
标题来源:http://chengdu.cdxwcx.cn/article/doddhcd.html