`
445822357
  • 浏览: 739465 次
文章分类
社区版块
存档分类
最新评论

MySql连接查询精解

 
阅读更多

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

数据准备,包括两个表,tuserttabletuserttable1对多关系。

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;结果如下:

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

2、右外连接

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

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

3、内连接

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

以笛卡尔积的方式展现。设AB为集合,用A中的元素x作第一元素,B中的元素y作第二元素,构成有序对,所有这样的有序对组成的集合,叫做AB的笛卡儿积,记做A×B
在数据库中,设有关系A <学号、姓名> ,具体内容为{ <1,张三> , <2,李四> };关系B <学号、年龄> ,具体内容为{ <120> <222> }

A×B={ <1,张三,120> <1,张三,222> <2,李四,120> <2,李四,2
22> }
如果再做第一列=第三列的选择,再做只保留第一、第二、第三列的投影,即得{ <1,张三,20> , <2,李四,22> }这样,通过关系代数的三个运算,我们查到了每个人的年龄。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics