Mysql 对于SQL中的内部联接和外部联接,我可以给出什么基本示例?
请帮助我理解并为我的问题提供最好的例子 我无法理解如何创建对象并使用它们Mysql 对于SQL中的内部联接和外部联接,我可以给出什么基本示例?,mysql,Mysql,请帮助我理解并为我的问题提供最好的例子 我无法理解如何创建对象并使用它们 谢谢你给她一些超级简单的东西: 准备数据库: CREATE TABLE `table1` ( `id` int(11) NOT NULL DEFAULT 0, `value` text not null DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB; CREATE TABLE `table2` ( `id` int(11) NOT NULL DEFAULT
谢谢你给她一些超级简单的东西: 准备数据库:
CREATE TABLE `table1` (
`id` int(11) NOT NULL DEFAULT 0,
`value` text not null DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
CREATE TABLE `table2` (
`id` int(11) NOT NULL DEFAULT 0,
`value` text not null DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
INSERT INTO table1 VALUES
(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four'), (5, 'five');
INSERT INTO table2 VALUES
(3, 'three'), (4, 'four'), (5, 'five'), (6, 'six'), (7, 'seven');
执行查询:
SELECT t1.*, t2.* FROM table1 t1 JOIN table2 t2 on t1.id = t2.id;
SELECT t1.*, t2.* FROM table1 t1 INNER JOIN table2 t2 on t1.id = t2.id;
+----+-------+----+-------+
| id | value | id | value |
+----+-------+----+-------+
| 3 | three | 3 | three |
| 4 | four | 4 | four |
| 5 | five | 5 | five |
+----+-------+----+-------+
SELECT t1.*, t2.* FROM table1 t1 LEFT JOIN table2 t2 on t1.id = t2.id;
SELECT t1.*, t2.* FROM table1 t1 LEFT OUTER JOIN table2 t2 on t1.id = t2.id;
+----+-------+------+-------+
| id | value | id | value |
+----+-------+------+-------+
| 1 | one | NULL | NULL |
| 2 | two | NULL | NULL |
| 3 | three | 3 | three |
| 4 | four | 4 | four |
| 5 | five | 5 | five |
+----+-------+------+-------+
假设您有两张桌子:
ID Name
1 Smith
2 Novak
3 Tarantino
第二张桌子呢
ID Cash
2 300
3 490
4 500
内部联接
将联接两个表中都匹配的记录,即在结果表中只包括ID
2和3,因为它们具有匹配项。
结果如下所示:
ID Name Cash
2 Novak 300
3 Tarantino 490
ID Name Cash
1 Smith NULL
2 Novak 300
3 Tarantino 490
4 NULL 500
另一方面,外部联接将匹配所有内容,无论它们是否匹配。如果记录没有匹配项,则对应于某一行的值将为NULL
,即Smith将在Cash
列中有NULL
,而Cash
列中对应于500的记录将在Name
列中有NULL
。
结果如下所示:
ID Name Cash
2 Novak 300
3 Tarantino 490
ID Name Cash
1 Smith NULL
2 Novak 300
3 Tarantino 490
4 NULL 500
非常感谢你