cross join、 outer join和inner 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;
- DataGridView显示数据库的数据,一般不通过添加列的方式更改数据库的字段。
- 数据库连接对象是内存中的类的实例,有对象生命周期的说法,但是连接对象的打开和关闭不等同对象在内存中的生成和销毁。
- 常见SQL语句
查询select
插入insert
删除delete
更新update