连接查询之内连接

#进阶7连接查询
/*
当查询字段涉及到多个多个表时,就设计到连接查询

#------------------SQL92语法------------------------------

#一、内连接

#1)等值连接
/*

语法
      select 查询列表
      from 表名1 别名一,表名2 别名二,...
      where等值连接的连接条件`department_id`
特点
       1、为了解决多表中的字段名重名问题,往往为表起别名,提高了语义性
       2、表的顺序无要求
       
*/
#例子:查询员工名和部门名#一旦起别名,就只认识别名了!!!!!
SELECT employees.last_name,departments.department_name
FROM employees,departments
WHERE employees.`department_id`=departments.`department_id`;


#案例一:
SELECT `department_name`,city
FROM departments d,locations l
WHERE d.`location_id`=l.`location_id`
AND d.department_id>100;
#添加分组+筛选
#例子:查询每个城市的部门数
SELECT COUNT(*) 部门个数,l.`city`
FROM departments d,locations l
WHERE d.`location_id`=l.`location_id`
GROUP BY l.`city`;
#2)非等值连接

#3)自连接

#-------------------sql99语法------------------------------
#一、内连接
#语法:
SELECT 查询列表
FROM 表名1 别名
【INNERJOIN 表名2 别名
ON 连接条件
WHERE 筛选条件
GROUP BY分组列表
ORDER BY排序列表

sql92和sql99的区别
sql99使用JOIN关键字代替了之前的逗号,并且将连接条件和筛选条件进行了分离,提高了阅读性
 
#1、等值

#例子1:

SELECT last_name,department_name
FROM  departments d 
INNER JOIN employees e
ON e.department_id=d.department_id;

#例子2:查询每个城市的部门个数
SELECT l.`city`,COUNT(*)
FROM departments d
JOIN locations l
ON  d.`location_id`=l.`location_id`
GROUP BY city;


#例子3:查询部门中员工数>10的部门名,并且按照部门名降序

SELECT d.`department_name`,COUNT(*) 员工人数
FROM departments d
JOIN employees e
ON d.`department_id`=e.`department_id`
GROUP BY d.department_id
HAVING COUNT(*)>10
ORDER BY COUNT(*) DESC; 



#2、非等值
#3、自连接




#二、外连接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值