码迷,mamicode.com
首页 > 数据库 > 详细

数据库高级查询的使用 201409005

时间:2014-09-09 11:59:38      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   使用   数据   2014   div   sp   log   

一、连接查询

将多个表格列出来,不是SQL国际标准方法,但适用于每个表,是表格中列的扩展,表格横着铺开.

1.连接查询的方法:

1)形成笛卡尔积

select * from Info

bubuko.com,布布扣
select * from nation

bubuko.com,布布扣

笛卡尔积:

select info.code,info.name,info.sex,nation.name as nation,info.birthday

from INFO,nation --显示info表中的code,name,sex列,并且将nation表中的name列替换info表中的nation列(用"as"或空格改列名),再显示info表中的birthday列.

nationg列会对code列一一对应,所以原本4行的记录对应四次nation即变成了16行.

bubuko.com,布布扣

where Nation.Code=INFO.Nation     -- nation列显示code列的值时,即不会重复一一对应.

PS:因两个表格中列名有重复的,所以要在列名前写表明,如表格之间无列明重复者可直接写列名.

bubuko.com,布布扣

2)筛选

内连接:表名 join 表名 on  --查询的列如为NULL值,筛选时则忽略不计,亦不显示;如需将NULL值一起统计可使用外连接.

select * from INFO

bubuko.com,布布扣

select * from nation

bubuko.com,布布扣

select * from INFO join nation on INFO.nation = nation.code
where nation.name=‘汉族‘ --显示民族为汉族的值.用where也可操作:

select * from INFO,nation where info.nation = nation.code and nation.name=‘汉族‘ --查询结果与上同.

bubuko.com,布布扣

外连接:

A.左连接 --以左边为主

select * from INFO left join nation on INFO.nation = nation.code --左边表格INFO的数据必须全部显示,即使左边表有NULL值也会显示.

bubuko.com,布布扣

B.右连接 --以右边为主

select * from INFO right join nation on INFO.nation = nation.code --右边边表格nation的数据必须全部显示,即使右边表有NULL值也会显示.

bubuko.com,布布扣

C.全连接 --左右两边全部显示

select * from INFO full join nation on INFO.nation = nation.code--左右两边的表格全部显示
bubuko.com,布布扣
二、联合查询
表格中行的扩展
select Name from info --显示info表中的Name列
bubuko.com,布布扣
union --联合,同类型列名才可使用union.
select Name from Family -- 显示员工及家属两表格的姓名为一列
bubuko.com,布布扣
三、子查询(嵌套查询)

select * from INFO

bubuko.com,布布扣

select * from Work where InfoCode=
(
select code from Info where Name=‘胡军‘
)  --查询有关胡军的所有简历

bubuko.com,布布扣

 

 

数据库高级查询的使用 201409005

标签:blog   http   io   使用   数据   2014   div   sp   log   

原文地址:http://www.cnblogs.com/DORCASQING/p/3961918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!