MySQL 複数テーブル関連付けクエリ

複数テーブルのクエリ

テーブル間の関係を含む複数のテーブルを作成します。

ユーザーテーブル
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for sys_admin
-- ----------------------------
DROP TABLE IF EXISTS `sys_admin`;
CREATE TABLE `sys_admin`  (
  `user_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '登录账号',
  `password` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '登录密码',
  `datetime` datetime(0) NULL DEFAULT NULL COMMENT '添加时间\r\n',
  `username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '管理员姓名',
  `salt` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '盐',
  PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of sys_admin
-- ----------------------------
INSERT INTO `sys_admin` VALUES ('123456', 'be5b9922e3392dc42153f9c9870b7e78', '2022-06-05 12:12:59', '三禾', 'Idq29*0uAY');
INSERT INTO `sys_admin` VALUES ('263561', '8df16f91f1139510d0266791ce78acde', '2022-05-31 23:26:52', '胡歌', 'Qa#8uA!KwC');
INSERT INTO `sys_admin` VALUES ('茶凡', 'c7e9768beca397fb4db195b2204b01ec', '2022-06-08 20:33:44', 'Matrix', 'KmXcY)jNOO');

SET FOREIGN_KEY_CHECKS = 1;

ユーザー役割テーブル
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_user_role
-- ----------------------------
DROP TABLE IF EXISTS `t_user_role`;
CREATE TABLE `t_user_role`  (
  `id` int(6) NOT NULL,
  `userid` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `roleid` int(6) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of t_user_role
-- ----------------------------
INSERT INTO `t_user_role` VALUES (1, '263561', 1);
INSERT INTO `t_user_role` VALUES (2, '123456', 2);
INSERT INTO `t_user_role` VALUES (3, '茶凡', 1);

SET FOREIGN_KEY_CHECKS = 1;

キャラクターシート
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_role
-- ----------------------------
DROP TABLE IF EXISTS `t_role`;
CREATE TABLE `t_role`  (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of t_role
-- ----------------------------
INSERT INTO `t_role` VALUES (1, 'admin');
INSERT INTO `t_role` VALUES (2, 'user');
INSERT INTO `t_role` VALUES (3, 'product');

SET FOREIGN_KEY_CHECKS = 1;

権限テーブル
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_perms
-- ----------------------------
DROP TABLE IF EXISTS `t_perms`;
CREATE TABLE `t_perms`  (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `name` varchar(80) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of t_perms
-- ----------------------------
INSERT INTO `t_perms` VALUES (1, 'user:*:*', NULL);
INSERT INTO `t_perms` VALUES (2, 'product:*:01', NULL);
INSERT INTO `t_perms` VALUES (3, 'order:*:*', NULL);

SET FOREIGN_KEY_CHECKS = 1;
ロール権限テーブル
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_role_perms
-- ----------------------------
DROP TABLE IF EXISTS `t_role_perms`;
CREATE TABLE `t_role_perms`  (
  `id` int(6) NOT NULL,
  `roleid` int(6) NULL DEFAULT NULL,
  `permsid` int(6) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of t_role_perms
-- ----------------------------
INSERT INTO `t_role_perms` VALUES (1, 1, 1);
INSERT INTO `t_role_perms` VALUES (2, 1, 2);
INSERT INTO `t_role_perms` VALUES (3, 2, 1);
INSERT INTO `t_role_perms` VALUES (4, 3, 2);
INSERT INTO `t_role_perms` VALUES (5, 1, 3);

SET FOREIGN_KEY_CHECKS = 1;
テーブル間の関係

MySQL接続

結合を使用して、複数のテーブルのデータをクエリします。

SELECT
	table1.COLUMN,
	table2.COLUMN 
FROM
	table1,
	table2 
WHERE
	table1.column1 = table2.column2;
  • WHERE句に結合条件を記述します。

  • テーブル内に同一の列が存在する場合は、列名の前にテーブル名のプレフィックスを追加します。

関連クエリユーザーテーブルとユーザーロールテーブル
SELECT s.user_id,s.username,t.roleid FROM `sys_admin` s,t_user_role t WHERE s.user_id = t.userid;

--------------------------------------------------
结果:
123456		三禾	    2
15681026356	胡歌	     1
茶凡		  Matrix	1
--------------------------------------------------
関連クエリ ユーザー テーブル、ユーザー ロール テーブル、およびロール テーブル
SELECT
	s.user_id,
	s.username,
	tur.roleid,
	tr.name
FROM
	`sys_admin` s
	JOIN t_user_role tur ON s.user_id = tur.userid
	JOIN t_role tr ON tur.roleid = tr.id;
	
--------------------------------------------------
结果:
15681026356	胡歌	    1	admin
茶凡	      Matrix	1	admin
123456	    三禾	    2	user
--------------------------------------------------
複数のテーブルの結合

n 個のテーブルを結合するには、少なくとも n-1 個の結合条件が必要です。たとえば、3 つのテーブルを結合するには、少なくとも 2 つの結合条件が必要です。

デカルト集合

2 つのテーブルを関連付ける場合、左側のテーブルの列と右側のテーブルの列はデカルト積の形式で表現されます。

外部結合
左外部結合: 左結合

2 つのテーブルが関連付けられている場合、左側のテーブルはすべて保持されますが、右側のテーブルを関連付けることができない場合は、null がそのことを示します。

select * from t1 left join t2 on t1.id = t2.id

ここに画像の説明を挿入します

右外部結合: 右結合

2 つのテーブルに関連がある場合、右側のテーブルは完全に保持され、左側のテーブルに関連がない場合は、null がそのことを示します。

select * from t1 right join t2 on t1.id = t2.id

ここに画像の説明を挿入します

内部結合: 内部結合

2 つのテーブルは関連付けられており、2 つのテーブルの交差レコードは保持されます。

select * from t1 inner join t2 on t1.id = t2.id;

ここに画像の説明を挿入します

その他の接続

ここに画像の説明を挿入します

ブログリファレンス(メッセージ 3 件) MySQL テーブル接続方法_Zhayi のブログ-CSDN ブログ_mysql テーブル接続方法

ブログ参照: Shang Silicon Valley mysql チュートリアル

Supongo que te gusta

Origin blog.csdn.net/weixin_45833112/article/details/125288330
Recomendado
Clasificación