【转载】SQL经验小记

cross join outer joininner join用法上的区别

举个简单的例子吧,从结果来理解比较具体些。

 

a表

name sex

张三 男

李四 女

 

b表

name age

李四 30

王五 23

 

(1)全外连接

select a.name,a.sex,b.name,b.age

from   a full outer join  b on a.name=b.name

结果如下,

name sex name age

张三 男 NULL NULL

李四 女 李四 30

NULL NULL 王五 23

关联字段name,左表有而右表没有的,如张三,b.name,b.age都为NULL,加上左右两边都有的就是左连接的结果;而右表有而左表表没有的,如王五,a.name,a.sex都为NULL,加上左右两边都有的就是右连接的结果;左右两边都有的如,李四,这就是内连接。相见如下

(2)左

select a.name,a.sex,b.name,b.age

from   a left outer join  b on a.name=b.name

结果如下

name sex name age

张三 男 NULL NULL

李四 女 李四 30

(3)右

select a.name,a.sex,b.name,b.age

from   a right outer join  b on a.name=b.name

结果如下

name sex name age

李四 女 李四 30

NULL NULL 王五 23

(4)内联

select a.name,a.sex,b.name,b.age

from   a inner join  b on a.name=b.name

结果如下

name sex name age

李四 女 李四 30

(5)交叉

select a.name,a.sex,b.name,b.age

from   a cross join  b on a.name=b.name

结果如下

name sex name age

张三 男 李四 30

李四 女 王五 23

张三 男 王五 23

李四 女 李四 30

(6)个人使用心得:

People表主键People_id,作为PeopleSender表的外键

当People表增加一条记录,进行多表联合查询采用Inner Join时候,新增的记录无法显示。

SELECT * FROM People INNER JOIN PeopleSender ON People.People_id = PeopleSender.People_id

INNER JOIN   WorkType ON People.Worktype_id = WorkType.Worktype_id

INNER JOIN   Department ON People.Dept_id = Department.Dept_id

INNER JOIN   Rank ON People.Rank_id = Rank.Rank_id;

修改为SELECT * FROM People left outer join PeopleSender ON People.People_id = PeopleSender.People_id

INNER JOIN   WorkType ON People.Worktype_id = WorkType.Worktype_id

INNER JOIN   Department ON People.Dept_id = Department.Dept_id

INNER JOIN   Rank ON People.Rank_id = Rank.Rank_id;

  1. DataGridView显示数据库的数据,一般不通过添加列的方式更改数据库的字段。
  2. 数据库连接对象是内存中的类的实例,有对象生命周期的说法,但是连接对象的打开和关闭不等同对象在内存中的生成和销毁。
  3. 常见SQL语句

查询select

插入insert

删除delete

更新update

 

posted @ 2012-09-21 09:37  太一吾鱼水  阅读(145)  评论(0编辑  收藏  举报