图解Mysql 内连接、左右外连接

展现形式:用两个表(user,fraction),关联字段user.id,fraction.user_id,一对多

数据库表:user,fraction

建表语句

/*
 Navicat Premium Data Transfer

 Source Server         : JCqcby
 Source Server Type    : MySQL
 Source Server Version : 50649
 Source Host           : localhost:3306
 Source Schema         : test

 Target Server Type    : MySQL
 Target Server Version : 50649
 File Encoding         : 65001

 Date: 24/11/2021 11:53:47
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for fraction
-- ----------------------------
DROP TABLE IF EXISTS `fraction`;
CREATE TABLE `fraction`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `subject` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
  `score` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
  `user_id` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of fraction
-- ----------------------------
INSERT INTO `fraction` VALUES (1, 'math', '90', 1);
INSERT INTO `fraction` VALUES (2, 'english', '89', 1);
INSERT INTO `fraction` VALUES (3, 'chinese', '99', 1);
INSERT INTO `fraction` VALUES (4, 'chinese', '98', 2);
INSERT INTO `fraction` VALUES (5, 'math', '87', 2);
INSERT INTO `fraction` VALUES (6, 'english', '70', 3);
INSERT INTO `fraction` VALUES (7, 'math', '100', NULL);
INSERT INTO `fraction` VALUES (8, 'chinese', '100', NULL);
INSERT INTO `fraction` VALUES (9, 'english', '100', NULL);

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'aaa', 'AAA');
INSERT INTO `user` VALUES (2, 'bbb', 'BBB');
INSERT INTO `user` VALUES (3, 'ccc', 'CCC');
INSERT INTO `user` VALUES (4, 'ddd', 'DDD');
INSERT INTO `user` VALUES (5, 'eee', 'EEE');

SET FOREIGN_KEY_CHECKS = 1;

表测试数据

user表:

fraction表:

 一、内连接

只查询仅包含符合连接条件的数据

关键字: inner join on

图例:

语句: SELECT * FROM user INNER JOIN fraction ON user.id = fraction.user_id

查询结果:

二、左外连接

查询左表所有数据和符合连接条件的数据

关键字:left join on

图例:

语句: SELECT * FROM user LEFT JOIN fraction ON user.id = fraction.user_id

查询结果:

三、右外连接 

查询右表所有数据和符合连接条件的数据

关键字:right join on

图例:

 语句: SELECT * FROM user RIGHT JOIN fraction ON user.id = fraction.user_id

查询结果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值