mysql 左右连接

结构:




create database testdb;



use testdb;


create table `stuinfo`(
`stuid` int not null auto_increment,
    `stuname` varchar(50) not null,
    `stuage` int not null ,
    primary key(`stuid`)
);


create table classinfo(
classid int not null auto_increment,
    claaname varchar(50) not null ,
    classscore int not null,
    primary key(`classid`)
);


create table stuchooseclassinfo(
id int not null auto_increment,
    classis int not null,
    stuid int not null,
    primary key(id)
);


#生成数据库,生成指定表格。已经通过workbench添加外键
insert into stuinfo (stuid,stuname,stuage) values (1,"wwf",33);


delete from stuinfo where stuid=1;


insert into stuinfo (stuname,stuage) values ("2e",33);
#主键自增,自填补,所以不写主键也行,其他都标了not null,所以 不可以不写


  
select * from classinfo inner join stuchooseclassinfo on classinfo.classid=stuchooseclassinfo.classis;


select * from stuchooseclassinfo;


select * from classinfo;


#可见内连接,根据on 关键字,要是其一表中没有某个其二表中有的数据,那么结果集不显示那数据有关的数据、


select * from stuchooseclassinfo left join classinfo on stuchooseclassinfo.classis =classinfo.classid;


select * from stuchooseclassinfo;


select * from classinfo;


select * from stuchooseclassinfo right join classinfo on stuchooseclassinfo.classis=classinfo.classid;


/*对于左右连接(不是left out join 或者right out join ),个人理解,左连接的话,以 left join 左边的表
为 主要,反正就是左边 的表要全部显示,不管你右边的表有没有。alter
例子:
      (第一条leftJoin语句。)
stuchooseclassinfo 表 的classId 只有 2 跟4 值,但是classinfo表有1234几个值。那我显示完 stuchooseclassinfo
      就好了,所以可见结果集中的classId只有2跟4 两个值。alter


      (第一条 right join 语句)
以 classinfo 为主要的,里面的 键classId有值1234.但是 stuchooseclassinfo 只有2 4 的值。总之要把 classinfo
      表的值显示完。那么 stuchooseclassinfo 表里只有 classId为2,4 的值,其他没有。所在在结果集中,classId为
      1 跟 3 的值(对应 stuchooseclassinfo 是空的。)
      
      左连接右连接,两个表合起来,显示方式侧重不同 */

    
 use testdb;


select * from classinfo left outer join stuchooseclassinfo on classinfo.classid=stuchooseclassinfo.classis;


select * from classinfo left   join stuchooseclassinfo on classinfo.classid=stuchooseclassinfo.classis;


select * from classinfo right   join stuchooseclassinfo on classinfo.classid=stuchooseclassinfo.classis;


select * from classinfo right  outer join stuchooseclassinfo on classinfo.classid=stuchooseclassinfo.classis;


# 有outer 跟没outer 结果一样


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值