展现形式:用两个表(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
查询结果: