视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
如何使用mysql语句创建联结
2020-11-09 09:01:05 责编:小采
文档
为什么要使用联结

正如所述,分解数据为多个表能更有效地存储,更方便地处理,并且具有更大的可伸缩性。但这些好处是有代价的。

如果数据存储在多个表中,怎样用单条 SELECT 语句检索出数据?

答案是使用联结。简单地说,联结是一种机制,用来在一条 SELECT语句中关联表,因此称之为联结。使用特殊的语法,可以联结多个表返回一组输出,联结在运行时关联表中正确的行。

维护引用完整性 重要的是,要理解联结不是物理实体。换句话说,它在实际的数据库表中不存在。联结由MySQL根据需要建立,它存在于查询的执行当中。

在使用关系表时,仅在关系列中插入合法的数据非常重要。回到这里的例子,如果在 products 表中插入拥有非法供应商ID(即没有在 vendors 表中出现)的供应商生产的产品,则这些产品是不可访问的,因为它们没有关联到某个供应商。

为防止这种情况发生,可指示MySQL只允许在 products 表的供应商ID列中出现合法值(即出现在 vendors 表中的供应商)。

这就是维护引用完整性,它是通过在表的定义中指定主键和外键来实现的。

创建联结

联结的创建非常简单,规定要联结的所有表以及它们如何关联即可。请看下面的例子:

输入:

select vend_name,prod_name,prod_price from vendors,products where vendors.vend_id= products.vend_id order by vend_name,prod_name;

输出:

分析:我们来考察一下此代码。 SELECT 语句与前面所有语句一样指定要检索的列。这里,最大的差别是所指定的两个列( prod_name和 prod_price )在一个表中,而另一个列( vend_name )在另一个表中。

现在来看 FROM 子句。与以前的 SELECT 语句不一样,这条语句的 FROM子 句列出了两个表,分别是 vendors 和 products 。它们就是这条 SELECT语句联结的两个表的名字。这两个表用 WHERE 子句正确联结, WHERE 子句指示MySQL匹配 vendors 表中的 vend_id 和 products 表中的 vend_id 。

可 以 看 到 要 匹 配 的 两 个 列 以 vendors.vend_id 和 products.vend_id 指定。这里需要这种完全限定列名,因为如果只给出 vend_id ,则MySQL不知道指的是哪一个(它们有两个,每个表中一个)。

完全限定列名 在引用的列可能出现二义性时,必须使用完全限定列名(用一个点分隔的表名和列名)。如果引用一个没有用表名的具有二义性的列名,MySQL将返回错误。

【相关推荐】

1.什么是mysql子查询?如何利用子查询进行过滤?

2.mysql创建计算字段使用子查询

3.mysql中什么是联结和关系表?

4.MySQL中WHERE子句重要性和如何联结多个表

下载本文
显示全文
专题