连接
交叉连接
连接的最简单类型就是交叉连接,它是对涉及到表相乘创建一个包含所有内容的产物。
例子:
select * from student,person;//结果是两张表的结合体
两张表的所有列结合起来产生了一个包含所有可能组合的结果集。这种类型成为交叉连接,而且连接后的结果表的行数和用于 连接的每个表的行数乘积相同。
上面那样的交叉连接会对数据库服务器的性能产生很大的影响,所以在连接中使用where子句过滤掉一些记录是不错的选择。
内连接/外连接
内连接是最普通的连接类型,而且是最均匀的,因为它要求构成连接的每一部分的每个表的匹配,不匹配的行将会被 排除在最后的结果集之外
内连接最常见的的例子是相等连接,也就是连接后的表中的某个字段与每个表中的都相同。这种情况,最后的结果集只包含 参加连接的表中与指定字段相符的行。
外连接是不对称的,连接的一方的所有行都包含在最后的记录中,不管它们是否与连接的另外一方的行匹配
根据连接的哪一方被保留,sql定义了左外连接和右外连接。在左外连接中,与where子句相匹配的连接左部的表的所有记录 都将出现在最后结果集中。在右外连接中,与where子句相匹配的连接的右部的表的所有记录都将出现在最后结果集中。
左外连接:解释为“从连接的左部选择所有的行,对于选中的每一行,或者从右部显示相匹配的值,或者显示为null的一行”。 这种类型的连接称为左连接,或者称为左外连接。右连接或者右外连接刚好与次相反。
自连接
这种类型的连接把一个表与它自身进行连接 ,它通常用来取出表中彼此包含内连接的记录。
除了连接,MySQL4.0以及更高的版本还支持union运算符,它用来把多个select查询的输出连接成一个单独的结果集。 大多数情况下,这个运算符用来把查询产生的结果集添加到不同的表中,同时创建包括所有结果的一个单独表。
使用union运算符组合尽可能多的select查询,但是必须具备两个基本条件:
首先,每个select查询返回的字段 的个数必须相同。
其次,每个select查询的字段的数据类型必须互相符合。
union运算符将会自动从组合结果集中消除重复的行!
子查询
where/having查询
MySQL可以在where子句或者having子句中包含子查询。包含在圆括号内的子查询,优先级高于比较和逻辑操作符、in操作符或者 exists操作符。
也可以在一个having子句中的比较运算符前使用子查询,从而用它对父查询创建的组进行过滤。
in/exists/from查询
只有子查询返回的结果列包含一个值时,比较运算符才适用。假如一个子查询返回的结果集是值的列表, 这时比较运算符就必须用in运算符代替。
in运算符可以检测结果集中是否存在某个特定的值,如果检测成功就执行外部的查询。
exists运算符可以用来查询一个子查询是否产生了结果,这使得可以只在exists检测返回真时才执行外部的查询
还可以在一个select语句的from子句中把子查询产生的结果作为一个表。
所以,内查询产生的结果表用在外查询的from子句中。这样的表在sql中成为到导出表。
需要注意的是,当以这种方式使用子查询的结果时,内查询产生的结果表必须首先另取一个表名,否则MySQL不知道如何参照其中的列。
以上是深入理解MySQL进阶漂流记(四)的详细内容。更多信息请关注PHP中文网其他相关文章!

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

在mysql中,可利用“ALTER TABLE 表名 DROP INDEX unique key名”语句来删除unique key;ALTER TABLE语句用于对数据进行添加、删除或修改操作,DROP INDEX语句用于表示删除约束操作。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Dreamweaver CS6
视觉化网页开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具