关于自然连接

最近在学数据库,逃课的人伤不起啊,只能自己啃书别。

废话不多说,开始正题吧。

自然连接的定义

    自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。而等值连接并不去掉重复的属性列。自然连接自动判断相同名称的列,而后形成匹配。缺点是,虽然可以指定查询结果包括哪些列,但不能人为地指定哪些列被匹配。另外,自然连接的一个特点是连接后的结果表中匹配的列只有一个

然后开始建了两张表:

CREATE TABLE D_SUBJECT2 (
	CLASSID      VARCHAR(10)  NOT NULL,
	CLASSNAME    VARCHAR(10)  NOT NULL,
	PRIMARY KEY(CLASSID)
)

CREATE TABLE D_STUDENT2 (
	ID   		VARCHAR(10) 	NOT NULL,
	NAME 		VARCHAR(10) 	NOT NULL,
	CLASSID 	VARCHAR(10)		NOT NULL,
	PRIMARY KEY(ID),
	FOREIGN KEY (CLASSID) REFERENCES D_SUBJECT2 (CLASSID)
)

再插入数据

INSERT INTO D_SUBJECT1(CLASSID, CLASSNAME) SELECT '2','ENGLISH' FROM DUAL UNION ALL SELECT '3','CHINESE' FROM DUAL

INSERT INTO D_STUDENT1(ID, NAME, CLASSID) SELECT '2','liang','2' FROM DUAL UNION ALL SELECT '3', 'zhang', '3' FROM DUAL
查询下表得




然后执行查询
SELECT * FROM D_STUDENT2, D_SUBJECT2
结果为
关于自然连接_第1张图片

这个和预料中的不一样啊,都变成笛卡尔积了,不过书本上是这样写的,纠结了好久,还在社区提问的。后来问了个师兄才知道。

默认这中情况是笛卡尔积的,要自然连接是要这样的:

SELECT * FROM D_STUDENT2 NATURAL JOIN D_SUBJECT2


被书本坑死啦!!!!尽信书不如无书,古人诚不欺我也。

你可能感兴趣的:(sql)