关于自然连接

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

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

自然连接的定义

    自然连接(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
结果为

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

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

SELECT * FROM D_STUDENT2 NATURAL JOIN D_SUBJECT2


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

转载于:https://my.oschina.net/jieF/blog/135099

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值