mysql-sq199语法
mysql-sq199语法
语法
select 查询列表
from 表1 别名 【连接类型】
join 表2 别名
on 连接条件
【where 筛选条件】
【group by 分组】
【having 筛选条件】
【order by 排序列表】
分类
内连接(☆):inner
外连接
左外(☆):left【outer】
右外(☆):right【outer】
全外: full 【outer】
交叉连接:cross
1.内连接
/*
语法:
select 查询列表
from 表1 别名
inner join 表2 别名
on 连接条件
分类:
等值连接
非等值连接
自连接
*/
1.1、等值连接
案例1.查询员工名、部门名
SELECT last_name,department_name FROM departments d INNER JOIN employees e ON e.'department_id' = d.'department_id';
案例2.查询名字中包含e的员工名和工种名(添加筛选)
SELECT last_name,job_tltle FROM employees e INNER JOIN jobs j ON e.'job_id' = j.'job_id'
WHERE e.'last_name' like '%e%';
案例3.查询部门个数>3的城市名和部门个数(添加分组+筛选)
SELECT city,COUNT(*) 部门个数 FROM departments d INNER JOIN locations l ON d.'location_id' = l.'location_id' GROUP BY city HAVING CONT(*)>3;
案例4.查询哪个部门的员工个数>3的部门名和员工个数,并按个数降序排名(添加排序)
#1.查询每个部门的员工个数 SELECT COUNT(*),department_name FROM employees e INNER JOIN departments d ON e.'department_id'=d.'department_id' GROUP BY department_name #2.在1的结果上筛选员工个数>3的记录,并排序 SELECT COUNT(*),department_name FROM employees e INNER JOIN departments d ON e.'department_id'=d.'department_id' GROUP BY department_name HAVING COUNT(*)>3 ORDER BY COUNT(*) DESC;
1.2、非等值连接
案例1.查询员工的工资级别
SELECT salary,grade_level FROM employees e JOIN job_grades g ON e.'salary' BETWEEN g.'lowest_sal' AND g.'highest_sal';
案例2.查询每个工资级别的个数>20的个数,并按工资级别降序排序
SELECT COUNT(*),grade_level FROM employees e JOIN job_grades g ON e.'salary' BETWEEN g.'lowest_sal' AND g.'highest_sal' GROUP BY grade_level HAVING COUNT(*)>20 ORDER BY grade_level DESC;
1.3、自连接
案例.查询员工的名字、上级的名字
SELECT e.last_name,m.last_name FROM employees e JOIN employees m ON e.'manager_id' = m.'employee_id';
2.外连接
/*
应用场景:用于查询一个表中有,另一个表中没有的记录
特点:
a.外连接的查询结果为主表中的所有记录
如果从表中有和它匹配的,则显示匹配的值
如果从表中没有和它匹配的,则显示null
外连接查询结果=内连接结果+主表中有而从表没有的记录
b.左外连接,left join 左边的是主表
右外连接,right join 右边的是主表
c.左外和右外交换两个表的顺序,实现同样的效果
d.全外连接=内连接的结果+表1中有但表2没有的+表2中有但表1没有的
*/
2.1、左外连接
案例.查询哪个部门没有员工
SELECT d.*,e.employee_id FROM departments d LEFT OUTER JOIN employees e ON d.'department_id' = e.'department-id' WHERE e.'employee_id' IS NULL;
2.2、右外连接
案例.查询哪个部门没有员工
SELECT d.*,e.employee_id FROM employees e RIGHT OUTER JOIN departments d ON d.'department_id' = e.'department-id' WHERE e.'employee_id' IS NULL;
2.3、全外连接
3.交差连接
原文地址:https://www.cnblogs.com/xiao-yuge/p/12582955.html
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 数据库应用技术系列第一讲 创建数据库和表
- 怎样让数据库再快一点?
- 大数据场景下,如何快速将Linux 大文件处理小
- Mysql系列第十六讲 变量详解
- Mysql系列第十七讲 流程控制语句(高手进阶)
- 私藏的5个好用的Pandas函数!
- 漫画:如何在数组中找到和为 “特定值” 的两个数?
- 当你在百度搜索关键字的时候,哪个网站会排在最前面?今天给大家科普一下“网站SEO”
- Mysql系列第十九讲 异常捕获及处理详解
- 【原创】经验分享:一个小小emoji尽然牵扯出来这么多东西?
- jQuery 事件对象,拷贝对象,多库共存
- jQuery 事件注册与事件处理
- v-charts 修改文本颜色
- 使用 jsDelivr 免费加速 GitHub Pages 博客的静态资源(二)
- 竞赛比完,代码、模型怎么处理?Kaggle大神:别删,这都是宝藏