WEB开发网
开发学院数据库MSSQL Server SQL循序渐进(17) -JOIN子句 阅读

SQL循序渐进(17) -JOIN子句

 2007-11-13 15:26:55 来源:WEB开发网   
核心提示: ·SQL循序渐进(15)IN 和 BETWEEN 条件运·SQL循序渐进(16)数学运算符·SQL循序渐进(5)插入数据到表·SQL循序渐进(11)GROUP BY子句·SQL循序渐进(9)SELECT语句·SQL循序渐进(23)UNION 和 外部连接·SQL循序渐进(12)HAVING子句·SQL循序渐进(22)
    ·SQL循序渐进(15)IN 和 BETWEEN 条件运
    ·SQL循序渐进(16)数学运算符
    ·SQL循序渐进(5)插入数据到表
    ·SQL循序渐进(11)GROUP BY子句
    ·SQL循序渐进(9)SELECT语句
    ·SQL循序渐进(23)UNION 和 外部连接
    ·SQL循序渐进(12)HAVING子句
    ·SQL循序渐进(22)EXISTS 和 ALL
    ·SQL循序渐进(1)介绍SQL
    ·SQL循序渐进(14)组合条件和布尔运算符
为了避免”多余数据”,一个最好的方法:让数据库有两个表: 其中一个用来对顾客保持跟踪;另外一个用来对他们买什么东西保持跟踪。 即有"Customer_info" 表和"Purchases" 表:

"Customer_info" 表为:


customer_number


firstname


lastname


address


city


state


zip



"Purchases" 表为:


customer_number


date


item


price



现在开始,不管顾客什么时候进行重复的购物,只有第二个表"Purchases" 需要更新。这样我们就减少了多余的数据,也就是说我们规格化了这个数据库。

你仔细点就会发现两个表中还是有一个"cusomer_number"列是相同的。这个列包含了单独的顾客号,它将用来JOIN(连接)两个表。下面举个例子来使用这两个表,假如你想搜索顾客的名字以及他们所买的东西,你可以使用以下的语句来实现:

SELECT customer_info.firstname, customer_info.lastname, purchases.item

FROM customer_info, purchases

WHERE customer_info.customer_number = purchases.customer_number;

特殊的"Join"有为"Inner Join" 或者"Equijoin",这是一个最常见的"Join"类型,以后我们经常用使用到或者看到。

这里要注意每列总是在表名之前,这却也不是必需的。这是一个好的练习对于帮助你澄清列后面跟着表的认识有很大帮助。如果两个表之间有一个相同的列,它就是必须的。我这里推荐在使用JOIN的时候最好在所有列之后加上表名。

注意;上面描述的这个语法将在绝大多数的数据库系统起作用,本教程的也是一样。但是结果你会发现你上面的语句并不起作用,请仔细检查一下吧。

当然你可以试一试修改以上的代码,你可以使用JOIN(ANSI SQL-92语法规范中的INNER JOIN):

SELECT customer_info.firstname, customer_info.lastname, purchases.item

FROM customer_info INNER JOIN purchases

ON customer_info.customer_number = purchases.customer_number;

再举另外一个例子:

SELECT employee_info.employeeid, employee_info.lastname, employee_sales.comission

FROM employee_info, employee_sales

WHERE employee_info.employeeid = employee_sales.employeeid;

这个例子将从employee_info和employee_sales表中选择当employee_info表的employeeid等于employee_sales表的employeeid的employeeid 、emplyee_info表中lastname以及employee_sales表中的comission数值。

从上面的例子中可以发现利用JION的语句比价简练。既然有这样的有点,我们何乐而不为呢?

下一课我们来学习:索引。

上一页  1 2 

Tags:SQL 循序渐进 JOIN

编辑录入:coldstar [复制链接] [打 印]
赞助商链接