首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

MySql联接查询精解

2012-08-07 
MySql连接查询精解出于对知识的总结和分享,对常见的查询做了练习和总结。数据准备,包括两个表,tuser和ttabl

MySql连接查询精解

出于对知识的总结和分享,对常见的查询做了练习和总结。

数据准备,包括两个表,tuser和ttable。tuser和ttable为1对多关系。

tuser表结构如下:

名称

类型

备注

id                                                                       

Integer                                                     

主键                                                         

name

Varchar(50)

用户名称

password

Varchar(50)

用户密码

Sex

Varchar(20)

用户性别

 

ttable表机构如下:

名称

类型

备注

id                                                                       

Integer                                                     

主键                                                          

name

Varchar(50)

名称

userid

Integer 

用户id

 

建表语句:

Create table tuser(id Integer primary key,   name varchar(50),    password varchar(50),   sex  varchar(20)   );Create table ttable(id Integer primary key,      name varhcar(50),   userid Integer);


 

插入数据语句
Insert into tuser(id, name, password,sex)values(1,’中文’,’测试’,’m’);Insert into tuser(id, name, password,sex)values(2,’中文’,’测试’,’m’);Insert into ttable(id,name, userid)values(1,’1’,1);Insert into ttable(id,name, userid)values(2,’2’,2);Insert into ttable(id,name, userid)values(3,’2’,2);

 


 

1、  左外连接

select * from ttablet left join tuser u on t.userid=2 and t.userid=u.id;结果如下:

MySql联接查询精解

以左侧表(ttable)为基础,满足条件数据全部查询出来,右表(tuser)不满足条件出现null补齐

 

2、右外连接

 select * from ttable t right join tuser u on t.userid=2 and t.userid=u.id出现如下结果:

MySql联接查询精解

以右表为基础(tuser)满足条件的数据全部查询出来,左表(ttable)不满足条件出现null补齐

 

3、内连接

select * from ttable,tuser;出现结果如下:

MySql联接查询精解

以笛卡尔积的方式展现。设A、B为集合,用A中的元素x作第一元素,B中的元素y作第二元素,构成有序对,所有这样的有序对组成的集合,叫做A和B的笛卡儿积,记做A×B。
在数据库中,设有关系A为 <学号、姓名>,具体内容为{ <1,张三> , <2,李四> };关系B为 <学号、年龄>,具体内容为{ <1,20> <2,22> }。
则A×B={ <1,张三,1,20>, <1,张三,2,22>, <2,李四,1,20>, <2,李四,2,22> }
如果再做第一列=第三列的选择,再做只保留第一、第二、第三列的投影,即得{ <1,张三,20> , <2,李四,22> }这样,通过关系代数的三个运算,我们查到了每个人的年龄。

 

 

5楼happy09li5小时前
见识了,,还没这样查过
Re: lb858585855小时前
回复happy09lin谢谢,有问题请指出
4楼smszhuang168前天 19:19
顶起来
Re: lb85858585昨天 22:24
回复smszhuang168n谢谢,有问题请指出
3楼liutengteng130前天 09:31
师哥加油,顶[e01]
Re: linjingj前天 09:31
回复liutengteng130n谢谢
2楼han_yankun2009前天 08:16
师哥加油
1楼lfmilaoshi前天 08:15
总结,,,才见功夫。。。米老师

热点排行