首页 > 数据库 >无涯教程-SQL - CARTESIAN JOIN函数

无涯教程-SQL - CARTESIAN JOIN函数

时间:2024-01-17 10:34:20浏览次数:30  
标签:10 00 CARTESIAN JOIN 08 无涯 2019 2018 20

CARTESIAN JOIN或CROSS JOIN从两个或多个联接表中返回记录集的笛卡尔积。

CARTESIAN JOIN - 语法

CARTESIAN JOIN 或 CROSS JOIN 的基本语法如下-

SELECT table1.column1, table2.column2...
FROM  table1, table2 [, table3 ]

CARTESIAN JOIN - 示例

请考虑以下两个表。

表1 -CUSTOMERS表如下。

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Learnfk    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

表2:ORDERS表如下-

+-----+---------------------+-------------+--------+
|OID  | DATE                | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2019-10-08 00:00:00 |           3 |   3000 |
| 100 | 2019-10-08 00:00:00 |           3 |   1500 |
| 101 | 2019-11-20 00:00:00 |           2 |   1560 |
| 103 | 2018-05-20 00:00:00 |           4 |   2060 |
+-----+---------------------+-------------+--------+

现在,让无涯教程使用CARTESIAN JOIN联接这两个表,如下所示:

SQL> SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS, ORDERS;

这将产生以下输出-

+----+----------+--------+---------------------+
| ID | NAME     | AMOUNT | DATE                |
+----+----------+--------+---------------------+
|  1 | Ramesh   |   3000 | 2019-10-08 00:00:00 |
|  1 | Ramesh   |   1500 | 2019-10-08 00:00:00 |
|  1 | Ramesh   |   1560 | 2019-11-20 00:00:00 |
|  1 | Ramesh   |   2060 | 2018-05-20 00:00:00 |
|  2 | Khilan   |   3000 | 2019-10-08 00:00:00 |
|  2 | Khilan   |   1500 | 2019-10-08 00:00:00 |
|  2 | Khilan   |   1560 | 2019-11-20 00:00:00 |
|  2 | Khilan   |   2060 | 2018-05-20 00:00:00 |
|  3 | kaushik  |   3000 | 2019-10-08 00:00:00 |
|  3 | kaushik  |   1500 | 2019-10-08 00:00:00 |
|  3 | kaushik  |   1560 | 2019-11-20 00:00:00 |
|  3 | kaushik  |   2060 | 2018-05-20 00:00:00 |
|  4 | Chaitali |   3000 | 2019-10-08 00:00:00 |
|  4 | Chaitali |   1500 | 2019-10-08 00:00:00 |
|  4 | Chaitali |   1560 | 2019-11-20 00:00:00 |
|  4 | Chaitali |   2060 | 2018-05-20 00:00:00 |
|  5 | Hardik   |   3000 | 2019-10-08 00:00:00 |
|  5 | Hardik   |   1500 | 2019-10-08 00:00:00 |
|  5 | Hardik   |   1560 | 2019-11-20 00:00:00 |
|  5 | Hardik   |   2060 | 2018-05-20 00:00:00 |
|  6 | Komal    |   3000 | 2019-10-08 00:00:00 |
|  6 | Komal    |   1500 | 2019-10-08 00:00:00 |
|  6 | Komal    |   1560 | 2019-11-20 00:00:00 |
|  6 | Komal    |   2060 | 2018-05-20 00:00:00 |
|  7 | Learnfk    |   3000 | 2019-10-08 00:00:00 |
|  7 | Learnfk    |   1500 | 2019-10-08 00:00:00 |
|  7 | Learnfk    |   1560 | 2019-11-20 00:00:00 |
|  7 | Learnfk    |   2060 | 2018-05-20 00:00:00 |
+----+----------+--------+---------------------+

参考链接

https://www.learnfk.com/sql/sql-cartesian-joins.html

标签:10,00,CARTESIAN,JOIN,08,无涯,2019,2018,20
From: https://blog.51cto.com/u_14033984/9287113

相关文章

  • 无涯教程-SQL - FULL JOIN函数
    SQLFULLJOIN组合了左右外部联接的输出,联接的表将包含两个表中的所有记录,并为任一侧缺少的匹配项填充NULL。FULLJOIN-语法FULLJOIN的基本语法如下-SELECTtable1.column1,table2.column2...FROMtable1FULLJOINtable2ONtable1.common_field=table2.common_fie......
  • 无涯教程-SQL - RIGHT JOIN函数
    SQLRIGHTJOIN返回右表中的所有行,即使左表中没有匹配项也是如此,这意味着右连接返回右表中的所有值,再加上左表中的匹配值,如果没有匹配则返回NULL。RIGHTJOIN-语法RIGHTJOIN的基本语法如下。SELECTtable1.column1,table2.column2...FROMtable1RIGHTJOINtable2O......
  • 无涯教程-SQL - Create Table Using another Table.函数
    可以使用CREATETABLE语句和SELECT语句的组合来创建现有表的副本。新表具有相同的列定义。可以选择所有列或特定列。当您使用现有表创建新表时,将使用旧表中的现有值填充新表。语法从另一个表创建表的基本语法如下:CREATETABLENEW_TABLE_NAMEASSELECT[column1,colu......
  • 无涯教程-SQL - Injection(注入)
    如果您通过网页输入用户输入并将其插入到SQL数据库中,则可能会遇到因SQL注入而引起的安全问题。本章将教您如何防止这种情况的发生,并帮助您保护服务器端脚本(如PERL脚本)中的脚本和SQL语句。在下面的示例中,名称限于字母数字字符加下划线,并且长度介于8到20个字符之间(根据需要修......
  • 无涯教程-SQL - Sequences(序列)
    序列是按需生成的一组整数1、2、3,...。序列在数据库中经常使用,因为许多应用程序要求表中的每一行都包含唯一值。本章介绍如何在MySQL中使用序列。AUTO_INCREMENT列MySQL中使用序列的最简单方法是将一列定义为AUTO_INCREMENT,其余部分留给MySQL处理。试试下面的例子,这将创建一......
  • 无涯教程-SQL - SubQueries(子查询)
    子查询或内部查询或嵌套查询是另一个SQL查询中的查询,并嵌入在WHERE子句中。SubQueries-语法子查询最常与SELECT语句一起使用。基本语法如下-SELECTcolumn_name[,column_name]FROMtable1[,table2]WHEREcolumn_nameOPERATOR(SELECTcolumn_name[,column......
  • 无涯教程-SQL - Transactions(事务)
    事务是将一个或多个更改打包在一起保存到数据库,事务对于确保数据完整性和处理数据库错误很重要。事务性质事务具有以下四个标准属性,通常以首字母缩写ACID表示。原子性-确保工作单元内的所有操作均成功完成,否则,事务将在失败时中止,并且所有先前的操作都将还原到以前的状态......
  • 无涯教程-SQL - Views(视图)
    视图只不过是存储在数据库中且具有关联名称的SQL语句,视图实际上是以预定义的SQL查询的形式组成的临时表。创建视图数据库视图是使用CREATEVIEW语句创建的,可以从单个表,多个表或另一个视图创建视图。基本的CREATEVIEW语法如下-CREATEVIEWview_nameASSELECTcolumn1,......
  • 无涯教程-SQL - Truncate(清空表)
    SQLTRUNCATETABLE命令用于从现有表中删除完整数据。Truncate-语法TRUNCATETABLE命令的基本语法如下。TRUNCATETABLEtable_name;Truncate-示例考虑具有以下记录的CUSTOMERS表-+----+----------+-----+-----------+----------+|ID|NAME|AGE|ADDRES......
  • 无涯教程-SQL - Alter(更改表)
    SQLALTERTABLE命令用于添加,删除或修改现有表中的列,您还应该使用ALTERTABLE命令在现有表上添加和删除各种约束。Alter-语法在现有表中添加NewColumn的ALTERTABLE命令的基本语法如下。ALTERTABLEtable_nameADDcolumn_namedatatype;现有表中DROPCOLUMN的ALTE......