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" 表为:
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的语句比价简练。既然有这样的有点,我们何乐而不为呢?
下一课我们来学习:索引。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接