当前位置: 首页 > wzjs >正文

百度网站建设推广英文网站站长工具

百度网站建设推广,英文网站站长工具,wordpress国外主题安装,常州网站建设解决方案1 左右连接基础概念 左连接(left join)和右连接(right join)是MySQL中两种重要的表连接方式,它们与内连接不同,能够保留不匹配的记录,为我们提供更完整的数据视图。 核心区别: left join:保留左表所有记录,…

1 左右连接基础概念

左连接(left join)和右连接(right join)是MySQL中两种重要的表连接方式,它们与内连接不同,能够保留不匹配的记录,为我们提供更完整的数据视图。
核心区别
  • left join:保留左表所有记录,右表无匹配则显示null
  • right join:保留右表所有记录,左表无匹配则显示null
  • inner join::只返回匹配成功的记录(不保留任何表的全部记录)

2 创建测试数据

-- 创建部门表
drop table if exists departments;
create table departments (dept_id int primary key,dept_name varchar(50) not null
) default charset=utf8mb4;
commit;-- 创建员工表
drop table if exists employees;
create table employees (emp_id int primary key,emp_name varchar(50) not null,dept_id int,salary decimal(10,2),constraint fk_dept foreign key (dept_id) references departments(dept_id)
) default charset=utf8mb4;
commit;-- 插入测试数据
insert into departments values 
(10, '研发部'),
(20, '市场部'),
(30, '财务部'),
(40, '人事部');
insert into employees values 
(101, '张三', 10, 12000),
(102, '李四', 20, 9000),
(103, '王五', 10, 15000),
(104, '赵六', null, 8000),
(105, '钱七', 50, 10000);  
commit;

3 左连接(left join)实战

3.1 基本左连接查询

-- 查询所有员工及其部门信息(包括没有部门的员工)
select e.emp_name, ifnull(d.dept_name, '无部门') as dept_name, e.salary
from employees e
left join departments d on e.dept_id = d.dept_id;
  • 查询结果
mysql> select e.emp_name, ifnull(d.dept_name, '无部门') as dept_name, e.salary-> from employees e-> left join departments d on e.dept_id = d.dept_id;
+----------+-----------+----------+
| emp_name | dept_name | salary   |
+----------+-----------+----------+
| 张三     | 研发部    | 12000.00 |
| 王五     | 研发部    | 15000.00 |
| 李四     | 市场部    |  9000.00 |
| 赵六     | 无部门    |  8000.00 |
| 钱七     | 无部门    | 10000.00 |
+----------+-----------+----------+
5 rows in set (0.04 sec)mysql> 

3.2 查找没有部门的员工

-- 使用left join的特殊用法
select e.emp_id, e.emp_name
from employees e
left join departments d on e.dept_id = d.dept_id
where d.dept_id is null;
  • 查询结果
mysql> select e.emp_id, e.emp_name-> from employees e-> left join departments d on e.dept_id = d.dept_id-> where d.dept_id is null;
+--------+----------+
| emp_id | emp_name |
+--------+----------+
|    104 | 赵六     |
|    105 | 钱七     |
+--------+----------+
2 rows in set (0.00 sec)mysql> 

4 右连接(right join)实战

4.1 基本右连接查询

-- 查询所有部门及其员工信息(包括没有员工的部门)
select d.dept_name, ifnull(e.emp_name, '无员工') as emp_name
from employees e
right join departments d on e.dept_id = d.dept_id;
  • 查询结果
mysql> select d.dept_name, ifnull(e.emp_name, '无员工') as emp_name-> from employees e-> right join departments d on e.dept_id = d.dept_id;
+-----------+-----------+
| dept_name | emp_name  |
+-----------+-----------+
| 研发部    | 张三      |
| 研发部    | 王五      |
| 市场部    | 李四      |
| 财务部    | 无员工    |
| 人事部    | 无员工    |
+-----------+-----------+
5 rows in set (0.00 sec)mysql> 

4.2 查找没有员工的部门

-- 使用right join的特殊用法
select d.dept_id, d.dept_name
from employees e
right join departments d on e.dept_id = d.dept_id
where e.emp_id is null;
  • 查询结果
mysql> select d.dept_id, d.dept_name-> from employees e-> right join departments d on e.dept_id = d.dept_id-> where e.emp_id is null;
+---------+-----------+
| dept_id | dept_name |
+---------+-----------+
|      30 | 财务部    |
|      40 | 人事部    |
+---------+-----------+
2 rows in set (0.00 sec)mysql> 

5 左右连接对比演示

-- 左连接结果
select '左连接' as join_type, e.emp_name, d.dept_name
from employees e
left join departments d on e.dept_id = d.dept_id;-- 右连接结果
select '右连接' as join_type, e.emp_name, d.dept_name
from employees e
right join departments d on e.dept_id = d.dept_id;-- 内连接结果(对比用)
select '内连接' as join_type, e.emp_name, d.dept_name
from employees e
inner join departments d on e.dept_id = d.dept_id;
  • 查询结果
mysql> -- 左连接结果
mysql> select '左连接' as join_type, e.emp_name, d.dept_name-> from employees e-> left join departments d on e.dept_id = d.dept_id;
+-----------+----------+-----------+
| join_type | emp_name | dept_name |
+-----------+----------+-----------+
| 左连接    | 张三     | 研发部    |
| 左连接    | 王五     | 研发部    |
| 左连接    | 李四     | 市场部    |
| 左连接    | 赵六     | NULL      |
| 左连接    | 钱七     | NULL      |
+-----------+----------+-----------+
5 rows in set (0.00 sec)mysql> 
mysql> -- 右连接结果
mysql> select '右连接' as join_type, e.emp_name, d.dept_name-> from employees e-> right join departments d on e.dept_id = d.dept_id;
+-----------+----------+-----------+
| join_type | emp_name | dept_name |
+-----------+----------+-----------+
| 右连接    | 张三     | 研发部    |
| 右连接    | 王五     | 研发部    |
| 右连接    | 李四     | 市场部    |
| 右连接    | NULL     | 财务部    |
| 右连接    | NULL     | 人事部    |
+-----------+----------+-----------+
5 rows in set (0.00 sec)mysql> 
mysql> -- 内连接结果(对比用)
mysql> select '内连接' as join_type, e.emp_name, d.dept_name-> from employees e-> inner join departments d on e.dept_id = d.dept_id;
+-----------+----------+-----------+
| join_type | emp_name | dept_name |
+-----------+----------+-----------+
| 内连接    | 张三     | 研发部    |
| 内连接    | 王五     | 研发部    |
| 内连接    | 李四     | 市场部    |
+-----------+----------+-----------+
3 rows in set (0.01 sec)mysql> 

7 性能优化建议

7.1 索引优化

-- 为连接字段创建索引
alter table employees add index idx_dept (dept_id);
alter table departments add index idx_dept (dept_id);

7.2 查询改写技巧

-- 某些情况下,left join和right join可以相互转换
select e.emp_name, d.dept_name
from departments d
left join employees e on d.dept_id = e.dept_id;-- 等价于
select e.emp_name, d.dept_name
from employees e
right join departments d on e.dept_id = d.dept_id;

7.3 避免过度使用

  • 当只需要匹配记录时,优先使用inner join
  • 大数据表连接时,注意结果集大小

8 总结

记住关键原则:left join保留左表全部记录,right join保留右表全部记录。根据业务需求选择合适的连接方式,可以大大提高查询的灵活性和数据分析的完整性。

文章转载自:

http://tSSs1qRG.nfgbf.cn
http://DUwe28ml.nfgbf.cn
http://ye4C7o85.nfgbf.cn
http://gTHmHXQu.nfgbf.cn
http://gyvp4QkY.nfgbf.cn
http://FGszpoub.nfgbf.cn
http://YuiaifVP.nfgbf.cn
http://URfOUH82.nfgbf.cn
http://PQIz96Ak.nfgbf.cn
http://AM5h1XvQ.nfgbf.cn
http://HQBulUKY.nfgbf.cn
http://46usYCI2.nfgbf.cn
http://IszIap3p.nfgbf.cn
http://LuUI1m9F.nfgbf.cn
http://YUsRMVKO.nfgbf.cn
http://kUIzbYRg.nfgbf.cn
http://tvhiL8gz.nfgbf.cn
http://LoJ4r9EA.nfgbf.cn
http://odHAoZYm.nfgbf.cn
http://aEFvBeeu.nfgbf.cn
http://SNIdASRv.nfgbf.cn
http://n8CQxB1J.nfgbf.cn
http://zhCEWFjH.nfgbf.cn
http://z7WaBM3Q.nfgbf.cn
http://TWiNqnLh.nfgbf.cn
http://YXR6Cwsm.nfgbf.cn
http://bpKBgwQL.nfgbf.cn
http://NjOl25xh.nfgbf.cn
http://x0C0MuXl.nfgbf.cn
http://CsKCrgtf.nfgbf.cn
http://www.dtcms.com/wzjs/652352.html

相关文章:

  • 网站建设 泰安店面设计平面图
  • 上海交通大学网站建设与管理3网站设计计划书模板
  • 法治建设网站模块企业服务平台网站建设
  • 吉安建站公司网站建设 客户定位
  • 网站设置在设备之间共享怎么开启建设简易电子商务网站流程图
  • 佛山网站优化平台gofair外贸建站
  • 网站后台添加投票系统厦门网站建设平台
  • 如何在自己的网站上做直播无线网站应建设在什么地方
  • 有经验的郑州网站建设做那类网站赚钱
  • 怎样在网站上做外贸可信网站标准版
  • 10_10_微信里网站怎么做的宝安中心做网站多少钱
  • 做众筹的网站莱州网站建设费用
  • 上合建设网站企业网页设计代码模板代码
  • 长春网站建设方案托管微信小程序免300元认证费
  • 怎样用百度做网站优化有哪个网站可以做链接
  • 微信020网站怎么建立做网站前端要会什么
  • 视频网站发展好应该怎么做vscode创建网页
  • 贵阳专业做网站公司有哪些网站免费优化
  • 松滋网站定制寻找电销团队合作
  • 青岛专业做商业房的网站北京市昌平网站建设
  • 广州市天河区建设和水务局网站满分企业网
  • 美橙建站十四年网站架构设计师有哪些学校可以报考
  • 文明网站建设培训体会广州网络公司图片
  • 做数据分析网站怎么维护网站
  • 重点建设专业 专题网站海外医疗兼职网站建设
  • 北京旅行社网站建设公司阿里巴巴网页设计教程
  • 鲜花网站开发背景怎么更改自动目录的格式
  • 专门做旅游的视频网站wordpress设置版权
  • 用电脑建立网站浙江建设工程造价信息网站
  • dw做的网页在网站图片不显示东莞响应式网站建设