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

超炫个人业务网站源码网页游戏开服表弹窗

超炫个人业务网站源码,网页游戏开服表弹窗,wordpress图片合成,asp模版网站如何做优化文章目录 MySQL复合查询和内外连接1. 复合查询1.1 多表查询1.2 自连接1.3 子查询单行子查询多行子查询多列子查询from中使用子查询合并查询 2. 内外连接1. INNER JOIN2. LEFT JOIN3. RIGHT JOIN4. FULL JOIN5. CROSS JOIN MySQL复合查询和内外连接 1. 复合查询 1.1 多表查询 …

文章目录

  • MySQL复合查询和内外连接
  • 1. 复合查询
    • 1.1 多表查询
    • 1.2 自连接
    • 1.3 子查询
      • 单行子查询
      • 多行子查询
      • 多列子查询
      • from中使用子查询
      • 合并查询
  • 2. 内外连接
      • 1. INNER JOIN
      • 2. LEFT JOIN
      • 3. RIGHT JOIN
      • 4. FULL JOIN
      • 5. CROSS JOIN


MySQL复合查询和内外连接

1. 复合查询

1.1 多表查询

select * from `tb_1`, `tb_2`where dept.deptno = emp.deptno;

不加过滤条件,得到的结果被称为笛卡尔积。本质是取主表的每一条记录拼接上从表的每一条记录。

多表查询中一定会包含where条件,将主键和外键对应,可以将无意义的记录抛弃。

1.2 自连接

同一张表自己和自己拼接的叫做自连接。给两张相同的表起别名,就可以放到一起。

select * from emp wkr, emp ldr;where wkr.mgr = ldr.empno;

自连接的话,需要根据实际需求筛去不满足条件的数据。

1.3 子查询

子查询也称嵌套查询,也就是将select的结果作为另一个select的条件。

单行子查询

返回一行记录的查询称为单行子查询。

select * from emp where deptno=(select deptno from emp where ename='SMITH');

多行子查询

返回多行记录的查询称为多行子查询。关键字有:inallany

  • in 表示是否存在于集合中,存在即满足条件。
  • all 表示整个集合的每一个结果
  • any 表示集合中的任意一个结果
# 显示和10号部门具有的工作岗位相同的员工
select * from emp where job in (select distinct job from emp where deptno=10);
# 显示工资比10号部门所有人工资都高的员工
select * from emp where sal > all (select distinct sal from emp where deptno=10);
# 显示工资比10号部门任意员工工资高的员工
select * from emp where sal > any (select distinct sal from emp where deptno=10);

不管是单行还是多行子查询,都叫做单列子查询,返回的都是单列的一个字段的数据。

多列子查询

# 查询和SMITH的部门和岗位完全相同的所有雇员
select * from emp where (deptno, job)=(select deptno, job from emp where ename='SMITH');

from中使用子查询

from跟是的表名,既然我们查询出来的记录都可以看作表结构。这里就是一个数据查询的技巧,把子查询当作临时表使用。

# 显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资
select ename, emp.deptno, sal, myavgfrom emp, (select deptno, avg(sal) as myavg from emp group by deptno) as avg_tbwhere emp.deptno=avg_tb.deptno and sal>myavg;# 显示每个部门的部门名,编号,地点和人员数量
select dname, dept.deptno, loc, cntfrom emp, dept, (select deptno, count(*) cnt from emp group by deptno) as cnt_tbwhere cnt_tb.deptno=emp.deptno and cnt_tb.deptno=dept.deptno;

合并查询

合并查询是就是合并多个 select 的查询结果,可使用集合操作符 unionunion all

关键字解释
union取并集,将多个 select 结果合并到一起,自动去掉重复行
union all取并集,将多个 select 结果合并到一起,但不去重
select * from emp where sal > 2500 union     select * from emp where job='MANAGER';
select * from emp where sal > 2500 union all select * from emp where job='MANAGER';

OJ连接

  • https://www.nowcoder.com/practice/23142e7a23e4480781a3b978b5e0f33a
  • https://www.nowcoder.com/practice/355036f7f0c8429a85281f7ac05b457a
  • https://www.nowcoder.com/practice/32c53d06443346f4a2f2ca733c19660c
  • https://www.nowcoder.com/practice/e50d92b8673a440ebdf3a517b5b37d62

 

2. 内外连接

通过不同类型的表连接,可以将多个表中的数据有效地组合在一起,以满足复杂的查询需求。将详细介绍MySQL中常见的表连接方式,分别是 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 和 CROSS JOIN,并通过具体的表格数据展示它们的用法和特点。
下表总结了各种表连接方式的主要特点:

连接方式结果匹配条件不满足时备注
INNER JOIN返回符合连接条件的行不返回结果最常用的连接方式
LEFT JOIN返回左表中所有行,以及右表中符合条件的行右表列为NULL适用于需要左表所有行的情况
RIGHT JOIN返回右表中所有行,以及左表中符合条件的行左表列为NULL适用于需要右表所有行的情况
FULL JOIN返回左右表中所有行,不管是否有匹配的行NULL值适用于需要两个表所有行的情况
CROSS JOIN返回两个表的笛卡尔积适用于需要生成所有组合的情况

我们将使用以下两个示例表格进行表连接操作:

表格:employees

employee_idemployee_namedepartment_id
1Alice1
2Bob2
3CharlieNULL
4David1

表格:departments

department_iddepartment_name
1HR
2IT
3Finance

1. INNER JOIN

INNER JOIN 是最常见的表连接方式,它返回两个表中符合连接条件的行。

**示例查询及结果:**查询员工及其所在部门(基于employees和departments表格)。

SELECT e.employee_id, e.employee_name, d.department_name
FROM employees e
INNER JOIN departments d ON e.department_id = d.department_id;
employee_idemployee_namedepartment_name
1AliceHR
2BobIT
4DavidHR

2. LEFT JOIN

LEFT JOIN 返回左表中的所有行,以及右表中与左表中行匹配的行。如果右表中没有匹配的行,则会返回 NULL 值。

**示例查询及结果:**查询所有员工及其所在部门(基于employees和departments表格)。

SELECT e.employee_id, e.employee_name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.department_id;
employee_idemployee_namedepartment_name
1AliceHR
2BobIT
3CharlieNULL
4DavidHR

3. RIGHT JOIN

RIGHT JOIN 返回右表中的所有行,以及左表中与右表中行匹配的行。如果左表中没有匹配的行,则会返回 NULL 值。

**示例查询及结果:**查询所有部门及其员工(基于employees和departments表格)。

SELECT e.employee_id, e.employee_name, d.department_name
FROM employees e
RIGHT JOIN departments d ON e.department_id = d.department_id;
employee_idemployee_namedepartment_name
1AliceHR
2BobIT
4DavidHR
NULLNULLFinance

4. FULL JOIN

FULL JOIN 返回左右两个表中的所有行,如果某个表中没有匹配的行,则返回 NULL 值。

**示例查询及结果:**查询所有员工及其所在部门,包括没有部门的员工和没有员工的部门(基于employees和departments表格)。

SELECT e.employee_id, e.employee_name, d.department_name
FROM employees e
FULL JOIN departments d ON e.department_id = d.department_id;
employee_idemployee_namedepartment_name
1AliceHR
2BobIT
3CharlieNULL
4DavidHR
NULLNULLFinance

5. CROSS JOIN

CROSS JOIN 返回两个表的笛卡尔积,即左表中的每一行与右表中的每一行组合在一起。

如果执行一个简单的 CROSS JOIN 操作,假设表 orders 和表 products,它们分别有以下数据:

表格:orders

order_idorder_name
1Order A
2Order B

表格:products

product_idproduct_name
101Product X
102Product Y
103Product Z

执行如下的 CROSS JOIN 查询:

SELECT o.order_id, p.product_id, p.product_name
FROM orders o
CROSS JOIN products p;

将会得到以下结果,这是两个表的笛卡尔积:

order_idproduct_idproduct_name
1101Product X
1102Product Y
1103Product Z
2101Product X
2102Product Y
2103Product Z

这个结果显示了 orders 表中每个订单与 products 表中每个产品的所有组合。笛卡尔积操作是一种非常基础但强大的数据组合方式,通常用于需要生成所有可能组合的场景。

OJ练习

  • https://leetcode.com/problems/rank-scores/
  • https://leetcode.com/problems/exchange-seats/description/
http://www.yayakq.cn/news/738009/

相关文章:

  • 如何做镜框 网站抖音带运营
  • 网站建站 在线制作邢台123贴吧
  • 河北省建设厅注册中心网站首页网站开发属于哪一类
  • 汕头设计网站建设爱网课
  • 做网站的背景照自己设计logo的软件
  • 怎么自己的电脑做网站物联网网站开发
  • 普通网站与营销型网站有什么区别wordpress公司门户
  • 安徽中颐建设投资有限公司网站北京网站建设公司分形
  • wordpress设置网站首页石家庄房产
  • 阿里云做网站选择服务器国外做彩票网站违法吗
  • 湖南微信网站营销百度热点排行榜
  • 合肥浦发建设集团网站网上房地产官网
  • 网站建设岗位工作范围wordpress专用主机
  • 服装网站建设目标淘宝客自建网站做还是用微信qq做
  • 宁乡网站开发做网站用百度地图和天地图
  • 无代码网站开发平台邮箱注册网站
  • 西安广告网站制作欧美在线网站设计教程
  • 中华住房和城乡建设局网站商务网站建设理论依据
  • 网站代运营服务内容有可以和朋友合资做网站吗
  • 站酷网站源码土巴兔这种网站怎么做
  • 个人做众筹网站合法吗黄骅广信建设集团网站
  • 企业建设网站对客户的好处报个计算机培训班多少钱
  • 电商网站域名规则建网站是永久的吗
  • 3m网站源码乒乓球网站建设目标
  • 网站推广的基本手段英特尔nuc做网站服务器
  • 门户网站案例弹性盒子做自适应网站
  • 深圳企业注销wordpress如何优化
  • 用ps怎么做网站背景wordpress twenty twelve1.4
  • 网站蓝色配色爱剪辑
  • 简述商业网站建设的流程深圳市在建项目