【PHP & MySQL】✔️数据库专题✔️ 第九课 自连接

  • 概述
  • 自连接
  • 子查询 in
  • 子查询 EXISTS

概述

从今天开始, 小白我将带领大家一起来补充一下 数据库的知识.

自连接

自连接 (Self Join) 是一种特殊的表连接. 自连接指相互连接的表在物理上同为一张表, 但是逻辑上是多张表. 自连接通常用于表中的数据有层次结构, 如区域表, 菜单表, 商品分类表等.

格式:

SELECT A.列名, B.列名 FROM 表A, 表B WHERE A.列名 = B.列名

数据:

例子: (过滤城市)

<?php$conn = mysqli_connect("localhost", "root","admin","study");if ($conn) {echo "数据库链接成功\n";
} else {echo mysqli_connect_error();
}# SQL语句
$SQL = "SELECT * FROM location WHERE pid <> 0";# 执行
$result = mysqli_query($conn, $SQL);# 查看是否执行成功
if ($result) {echo "SQL 语句执行成功!\n";
}else {echo mysqli_error($conn);
}# 调试输出
while ($line = mysqli_fetch_assoc($result)) {print_r($line);
}# 关闭连接
mysqli_close($conn);?>

输出结果:

数据库链接成功
SQL 语句执行成功!
Array
([id] => 2[pid] => 1[location] => 杭州
)
Array
([id] => 3[pid] => 1[location] => 萧山
)
Array
([id] => 5[pid] => 2[location] => 广州
)
Array
([id] => 6[pid] => 2[location] => 台山
)

子查询 in

子查询又称为内部查询或嵌套查询. 它允许我们在 WHERE 子句中过滤某个字段的多个值.

格式:

SELECT 列名 FROM 表名
WHERE 列名 IN ( SELECT 列名 FROM 表名 [条件])

数据 (table1):

数据 (table2):

例子:

<?php$conn = mysqli_connect("localhost", "root","admin","study");if ($conn) {echo "数据库链接成功\n";
} else {echo mysqli_connect_error();
}# SQL语句
$SQL = "SELECT table1.* FROM table1WHERE table1.name in (SELECT table2.name FROM table2)";# 执行
$result = mysqli_query($conn, $SQL);# 查看是否执行成功
if ($result) {echo "SQL 语句执行成功!\n";
}else {echo mysqli_error($conn);
}# 调试输出
while ($line = mysqli_fetch_assoc($result)) {print_r($line);
}# 关闭连接
mysqli_close($conn);?>

输出结果:

数据库链接成功
SQL 语句执行成功!
Array
([id] => 1[name] => 杨富贵[age] => 18
)
Array
([id] => 2[name] => 杨美丽[age] => 19
)
Array
([id] => 3[name] => 杨建国[age] => 20
)

子查询 EXISTS

EXISTS 是子查询中用于测试内部查询是否返回任何行的布尔运算符.

格式:

SELECT 列名 FROM 表名
WHERE EXISTS

例子:

<?php$conn = mysqli_connect("localhost", "root","admin","study");if ($conn) {echo "数据库链接成功\n";
} else {echo mysqli_connect_error();
}# SQL语句
$SQL = "SELECT table1.* FROM table1WHERE EXISTS (SELECT table2.name FROM table2 WHERE table1.name = table2.name)";# 执行
$result = mysqli_query($conn, $SQL);# 查看是否执行成功
if ($result) {echo "SQL 语句执行成功!\n";
}else {echo mysqli_error($conn);
}# 调试输出
while ($line = mysqli_fetch_assoc($result)) {print_r($line);
}# 关闭连接
mysqli_close($conn);?>

输出结果:

数据库链接成功
SQL 语句执行成功!
Array
([id] => 1[name] => 杨富贵[age] => 18
)
Array
([id] => 2[name] => 杨美丽[age] => 19
)
Array
([id] => 3[name] => 杨建国[age] => 20
)

【PHP MySQL】数据库专题 第九课 自连接相关推荐

  1. 【PHP MySQL】数据库专题 第二课 创建数据库 表

    [PHP & MySQL]✔️数据库专题✔️ 第二课 创建数据库 & 表 概述 MySQL 安装 MySQL 命令行 数据库创建 创建表 概述 从今天开始, 小白我将带领大家一起来补充 ...

  2. 打造扛得住的MySQL数据库架构-第一课--影响数据库性能的因素

    连接数,并发量 500 服务器连接错误 磁盘IO: 网卡流量: 1000MB 什么的表才叫大表??? 超过千万行,10G 大表的影响: 大表对DDL操作的影响 修改表的结构需要长时间锁表 5.5和版本 ...

  3. 学习笔记(05):Mysql数据库基础入门视频教程-自连接

    立即学习:https://edu.csdn.net/course/play/9885/210119?utm_source=blogtoedu -- 子查询     -- 一个select语句包含另一个 ...

  4. 【PHP MySQL】数据库专题 第八课 表连接

    [PHP & MySQL]✔️数据库专题✔️ 第八课 表连接 概述 表连接 内连接 左连接 右连接 全连接 概述 从今天开始, 小白我将带领大家一起来补充一下 数据库的知识. 表连接 表连接 ...

  5. 高并发大流量专题---10、MySQL数据库层的优化

    高并发大流量专题---10.MySQL数据库层的优化 一.总结 一句话总结: mysql先考虑做分布式缓存,过了缓存后就做mysql数据库层面的优化 1.mysql数据库层的优化的前面一层是什么? 数 ...

  6. eclipse连接mysql_专题一、flask构建mysql数据库正确姿势

    每周壹总结,一起共同充电第121篇 应用程序最核心的就是数据,每天我们写程序其实也是在处理数据的过程,那么很有必要系统性的讲讲和梳理python的flask框架是如何进行数据交互操作的. 趁这3天假期 ...

  7. QT五子棋游戏课设及源码(连接mysql数据库含打开并运行程序的教程)

    gdut大一下学期c++课设(得分:95) 实验报告及源码压缩包百度云下载: 链接:https://pan.baidu.com/s/1zO5ofMz09fiWihxCcZcFbg 提取码:ddav 首 ...

  8. 计算机毕业设计Java高校排课管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java高校排课管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java高校排课管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 ...

  9. Java系列技术之MySql数据库-钟洪发-专题视频课程

    Java系列技术之MySql数据库-66人已学习 课程介绍         在Java系列的技术体系中,数据库是必不可少的核心知识,任何稍稍复杂一点的应用系统,都不可能少的了数据库的支持,将MySQL ...

最新文章

  1. 闪灯什么意思_开车碰见别人闪灯知道是什么意思吗?看不懂不要说自己会开车哦...
  2. ppct各代表什么_半导体50指数_股票大盘分时图中白线和黄线各代表什么?
  3. Glide-Android下高效加载多媒体文件
  4. K-means均值聚类算法的原理与实现
  5. 用 Java 语言,写一个植物大战僵尸简易版!
  6. 【“零起点”--百度地图手机SDK】如何创建一张地图
  7. zabbix使用ICMP ping监控网络状态
  8. ASO优化的盲点:Apple ID权重必须考量
  9. IT行业,一年最痛苦的事莫过于没有年终奖
  10. 07169软件开发工具与环境考试大纲
  11. 计算机的四屏故障维修,计算机应用之显卡故障维修技巧
  12. php中的where用法,ThinkPHP中where()使用方法详解
  13. ABP框架系列之三十:(Javascript-API-Javascript-API)
  14. 服务器上搭建git仓库
  15. Autonomous automobile trajectory tracking for off-road driving翻译学习
  16. LLD-LLVM链接器
  17. 闭关修炼(一)多线程
  18. 全国计算机一级a还是b,计算机一级证和一级B证的区别是什么
  19. 【智能家居市场】华为hilink
  20. 重庆大学计算机学院新生综合,重庆大学

热门文章

  1. 软件架构设计---架构设计
  2. halcon中怎么降低图像亮度_图像亮度调整
  3. 重装系统之linux的ubuntu系统(服务器版)
  4. git安装及使用教程
  5. 侯捷C++八部曲笔记(四、C++2.0新特性)
  6. redis集群模式登陆
  7. 解决互斥锁lock,报tpp.c:63: __pthread_tpp_change_priority: Assertion异常
  8. ai不同形状的拼版插件_Illustrator(AI)自动拼版脚本 V1.5下载(编组对象的复制位移)...
  9. 2021亚太杯A|B|C题全网最全解题思路+数据分享
  10. 铁威马NAS媒体索引设置教程