当前位置:   article > 正文

MySql SQL语句练习(二) 内连接 左连接 右连接,三表连接查询_三表内连接查询sql语句

三表内连接查询sql语句

不懂SQL基本语法的小伙伴可以看我本系列的上篇文章

话不多说 直接开始
首先建立三个表用来测试

/*
SQLyog Ultimate v11.27 (32 bit)
MySQL - 5.5.55 : Database - csqltest
*********************************************************************
*/


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`csqltest` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `csqltest`;

/*Table structure for table `user` */

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
  `userId` int(10) NOT NULL AUTO_INCREMENT,
  `userName` varchar(20) DEFAULT NULL,
  `userPwd` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`userId`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

/*Data for the table `user` */

insert  into `user`(`userId`,`userName`,`userPwd`) values (1,'123',NULL),(2,'阿斯顿',NULL),(3,'小明',NULL);

/*Table structure for table `usereat` */

DROP TABLE IF EXISTS `usereat`;

CREATE TABLE `usereat` (
  `uEatId` int(10) NOT NULL AUTO_INCREMENT,
  `userId` int(10) DEFAULT NULL,
  `uEatName` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`uEatId`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

/*Data for the table `usereat` */

insert  into `usereat`(`uEatId`,`userId`,`uEatName`) values (1,1,'爱心'),(2,2,'靓图'),(3,3,'麦斯登'),(4,3,'阿娥'),(5,2,' 阿斯顿'),(6,2,NULL);

/*Table structure for table `userinfo` */

DROP TABLE IF EXISTS `userinfo`;

CREATE TABLE `userinfo` (
  `uInfoId` int(10) NOT NULL AUTO_INCREMENT,
  `userId` int(10) NOT NULL,
  `uInfoGd` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`uInfoId`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

/*Data for the table `userinfo` */

insert  into `userinfo`(`uInfoId`,`userId`,`uInfoGd`) values (1,1,'跳舞'),(2,1,'玩游戏'),(3,3,'大带你玩');

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69

这里我就直接拿我自己练习的表来演示了
这是三个表的意思为:
user:用户表
userInfo:兴趣爱好表
userEat:喜欢吃的东西
(每个用户可以有多个兴趣爱好和多个喜欢吃的东西)

1.内连接

关键字:inner join on
语句:select a.userId,a.userName.b.uInfoGd from user a inner join userinfo b on a.userId = b.userId;

结果:内连接

组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的有交集的部分。
内连接还有中写法,可以省略关键字

select a.userId,a.userName.b.uInfoGd from user a , userinfo b where a.userId = b.userId;
他们的效果是相同的

2.左连接
关键字:left join on

语句:SELECT a.userId,a.userName,b.uInfoGd FROM user a left join userinfo b ON a.userId = b.userId;

结果:
左连接

组合两个表,左表为主表,查询右表中和左表关联字段相符的记录,如果没有则为NULL
在这句语句里面user就是左表为主表,userinfo就是右表为附表

3.右连接
关键字:right join on

语句:SELECT a.userId,a.userName,b.uInfoGd FROM user a right join userinfo b ON a.userId = b.userId;

结果:
右连接
右连接和左连接相反,以右表为主表查找左表中相匹配的记录,和左连接相对比我们可以发现,右连接少了一条user表中的数据 因为我们是以userinfo表为主表来匹配user表中的数据

看到这里,想必对于左右表连接以及内连接 你已经有了基础的认识。(不过还是推荐自己动手练习一下。)

那现在在这里出个问题,来检验一下你的学习成果:
查出所有用户的id,名称,爱好和喜欢吃的东西

快来晃晃你的小脑袋瓜,把里面的水晃出来吧!奥利给!
下面会有答案,但还是推荐自己想哦:






.




























SELECT t1.userName, t1.`userId`, t2.`uEatName`, t3.`uInfoGd` 
FROM `user` t1 
LEFT JOIN `usereat` t2 ON t1.`userId` = t2.`userId` 
LEFT JOIN `userinfo` t3 ON t1.`userId` = t3.`userId`
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
所有你写出来了嘛?

–author:哦哦一人

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/189019
推荐阅读
相关标签
  

闽ICP备14008679号