2014-10-18 47 views
0

警告:这是一个相当新秀的软问题,来自刚刚几天刚刚开始修补SQL的人。SQL - JOIN和比较不同表中的两行之间的区别是什么?

所以我试图自己教一些基本的SQL使用SQL小提琴(http://sqlfiddle.com/)。这只是一个基本的SQL表制造商,它允许我测试一些查询。如果您愿意,可以使用它来快速查看我的表格。

我正在使用MySQL 5.5.32。

现在,我的表看起来如下:

CREATE TABLE masters (

    name VARCHAR(15), 
    num INT, 
    riches VARCHAR(15), 
    age INT, 

    PRIMARY KEY (num) 

); 

CREATE TABLE slaves (

    slavename VARCHAR(15), 
    num INT, 
    slaveage INT, 

    FOREIGN KEY (num) REFERENCES masters(num) 

); 


INSERT INTO masters 
VALUES ("Pharao", 0, "Somewhat", 51); 

INSERT INTO masters 
VALUES ("Cleo", 10, "Loads", 29); 

INSERT INTO masters 
VALUES ("Dracula", 15, "Nice estate", 847); 


INSERT INTO slaves 
VALUES ("LoneSlave", 0, 29); 

INSERT INTO slaves 
VALUES ("SexyMan", 10, 21); 
INSERT INTO slaves 
VALUES ("SexyWoman", 10, 19); 

INSERT INTO slaves 
VALUES ("Zombie", 15, 72); 
INSERT INTO slaves 
VALUES ("Wolfman", 15, 51); 
INSERT INTO slaves 
VALUES ("Frankenstein", 15, 51); 

现在,我刚开始学习JOIN。

这是我的问题;有什么区别:...

SELECT * FROM masters, slaves WHERE masters.num = slaves.num; 

SELECT * FROM masters JOIN slaves ON masters.num = slaves.num; 

而且据我所知,这些产生完全相同的结果。

有人可以向我解释这些结果之间的区别是什么?

我的意思是,这只是一个偏好的事情,还是有一个优势明显的优势?

(PS:我会用soft-question标签,但显然这是高背叛,直到我有1500 REP)

+1

可能重复的[INNER JOIN ON VS WHERE子句](http://stackoverflow.com/questions/1018822/inner-join-on-vs-where-clause) – 2014-10-18 11:57:08

+1

可能复制:http://stackoverflow.com/questions/44917/explicit-vs-implicit-sql-joins – Esse 2014-10-18 11:57:18

+1

看看这个 - http://stackoverflow.com/questions/1018822/inner-join-on-vs-在哪里条款 – 2014-10-18 11:57:20

回答

1

他们的工作是一样的(即使性能是相同的)。

第一个被称为“显式连接”,第二个被称为“隐式连接”。但考虑到它们的效果和性能是一样的。

的更多信息在这里:的Explicit vs implicit SQL joins

+0

哦,那很完美。你在9分钟内得到最好的答案! – ViRALiC 2014-10-18 11:59:49

1

后者是第一,没有更多的简写。有些人可能会争辩说,这更可读,更人性化。

+0

好,快速回答。谢谢! – ViRALiC 2014-10-18 12:02:31

相关问题