例如: INNER JOIN,OUTER JOIN,LEFT INNER JION,LEFT OUTER JION,
请各位举个数据表的例子吧。
请各位举个数据表的例子吧。
解决方案 »
- 请教一个vb调用delphi编写的dll问题
- 求好用的第三方控件
- Borland 的中文网站都没有了?
- 在程序启动后怎么才能隐藏桌面上的图标?
- 我在用创建文件夹时遇到的问题
- 今天得红眼病了,酷吗? 心情不爽,散分!!!!!!!!!!!!!!
- exe动态加载Bpl,怎么使用Bpl文件里面的全局变量
- 為什麼我用formatdatetime('yyyy-mm-dd hh:tt:ss',now);保存到數據表中的結果是這個樣子﹕’2002-07-02﹕下午 0‘我設置的字段長度是60﹐
- GetAsyncKeyState 一直困扰我的问题!
- 大虾们请出手
- 播放wav文件显示图形的问题, 文件很大为啥WaveOutProc调用很少?
- 如何对dbgrid列求和?
什么是左连接,右连接,外连接,内连接。其实很简单,你首先要把概念搞清楚。你只需要理解用什么连接的时候,两个表里面的数据是怎么被查询出来的,你已比较就非常清楚了
其格式如下:
SELECT COLUMN_NAME,C O L U M N _ N A M E [ , . . . n ]
FROM TA B L E _ N A M E,TA B L E _ N A M E [ , . . . n ]
WHERE TABLE_NAME.COLUMN_NAME JOIN_OPERATOR TA B L E _ N A M E . C O L U M N _ N A M E
上述的连接操作符(J O I N _ O P E R ATO R)可以是:=、>、<、> =、< =、! =、< >、! >、! <、
= *、* =。
在A N S I中,“=”连接应该写成Inner Join;“* =”连接应该写成LEFT OUT JOIN;
“= *”连接应该写成“ RIGHT OUT JOIN”。
在SQL SERVER中,这些写法都可以用。但是,
A N S I规定的写法是INNER JOIN等标志。一般而言,在任何连接中,都使用“主键=外键”的连接查询条件。
---------------------------------------------------------------------------------非限制连接(CROSS JOIN),就是指不带W H E R E子句的查询。在数学上,就是表的笛卡
尔积。若R表和S表非限制连接,而且R表有X行,S表有Y行,那么结果集是X * Y行。即:R表
的一行对应着S表的所有行。在应用中,非限制连接产生的是无意义结果集,但在数据库的数
学模式上有重要的作用。
-------------------------------------------------------------------------
自然连接(INNER JOIN)也叫内连接。我们先看下面的例子:SELECT PUB_NAME,TITLE
FROM TITLES,PUBLISHERS
WHERE TITLES.PUB_ID=PUBLISHERS.PUB_ID
或写成:
SELECT PUB_NAME,TITLE
FROM TITLES INNER JOIN PUBLISHERS
ON TITLES.PUB_ID=PUBLISHERS.PUB_ID
其中,INNER JOIN是SQL Server的缺省连接,可简写为J O I N。在J O I N后面指定哪些表
作连接。O N后面指定了连接的条件。
以上操作的过程如下:
1) 从T I T L E S表中取出一条符合其条件的记录。
2) 扫描P U B L I S H E R S表,分别检查每条记录是否在连接属性上同表T I T L E S取出的记录相
3) 相等就显示信息。继续从表T I T L E S中取下一条记录,重复步骤2。
其实,两个或多个表要做连接,那么这些表之间必然存在着主键和外键的关系。所以,
只需要将这些键的关系列出,就可以得出表连接的结果。如上例中, P U B _ I D是P U B L I S H E R S
表的主键, P U B_ I D又是TI T L E S表的外键,参照P U B L I S H E R S表中的P U B _ I D .所以,这两个表
的连接条件就是T I T L E S.PUB_ID=PUBLISHERS. PUB_ID。
-----------------------------------------------------------------------
外连接(OUTER JOIN)允许限制一张表中的行,而不限制另一张表中的行。
下面举两个例子来说明外连接的用法。请比较这两个例子。
例显示所有的书名(无销售记录的书也包括在内,“*”在左边表示不限制左边表的数
SELECT TITLES.TITLE_ID,title=convert(char(38),TITLE),QTY
FROM TITLES,SALES
WHERE TITLES.TITLE_ID *= SALES.TITLE_ID
或写为:
SELECT TITLES.TITLE_ID,title=convert(char(38),TITLE),QTY
FROM TITLES LEFT OUTER JOIN SALES
ON TITLES.TITLE_ID = SALES.TITLE_ID外连接的方法有两种:
• A *= B 包括第一张表A的所有行在内,而不考虑语句限制(如: A . t i t l e _ i d = B . t i t l e _ i d)。
相当于LEFT OUT JOIN。
• A =* B 包括第二张表B的所有行在内,而不考虑语句限制(如: A . t i t l e _ i d = B . t i t l e _ i d)。
相当于RIGHT OUT JOIN。
创建外连接规则:
1) 外连接显示外部表中的所有行,包括与相关表不相配的行在内。
2) 外连接只能在两张表之间进行。
3) 不能在内部表上使用IS NULL检索条件。
//其实联机帮助写的最清楚