数据库的连接查询与自关联

连接查询

连接查询是同时涉及多个表的查询。连接是关系型数据库的重要特点,也是区别于其他类型数据库管理系统的标志。
关系型数据库中,创建表时数据之间的关系不必确定,完全可以将一个事物的所有信息存放在一个表中。而当查询数据时只需要通过连接查询就能查询到多个表中的不同事物的信息,这样数据库的使用者就能随意增加新的数据类型,为不同事物创建新的表,然后连接查询。
连接分为三种:内连接,外连接和交叉连接

内连接

内连接是使用比较运算符进行表间数据的比较操作,并列出这些表中与连接条件匹配的数据行。
查询班级对应的学生信息

select * from class inner join students on class.id=students.cls_id;
select class.name,students.name from class inner join students on class.id=students.cls_id;

外连接

外连接分为左连接,右连接和全连接。
外连接与内连接不同之处在于:外连接不只列出与连接条件相匹配的行,而是列出主表中所有符合条件的数据行。
左连接是以左边表为基准,条件对应不上的显示null
右连接是以右边表为基准,条件对应不上的显示null

select * from class left join students on class.id=students.cls_id;
select * from class right join students on class.id=students.cls_id;

交叉连接

交叉连接不进行表间数据的比较,而是返回被连接的两个表所有数据行的笛卡尔积,查询结果的数据行数等于两个表中符合查询条件的数据行数的积。

自关联

自关联常用于存储级联信息

select province.id as '行政编号',province.name as '省',city.name as '市' from area as province inner join area as city on province.id=city.pid having province.id=2;

子查询

select * from area where pid=(select id from area where name='河北省');
select * from area where pid in (select id from area where name='河北省');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值