系列文章
MySQL安装教程(详细)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126037520
MySQL卸载教程(详细)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129279265
【MySQL】group by分类汇总,如何增加“总计”字段?
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128217837
文章目录
- 系列文章
- 前言
- 一、技术介绍
- 二、测试用例
- 2.1 数据准备
- 2.1.1 用户信息表
- 2.1.2 用户权限表
- 2.1.3 app功能菜单表
- 2.2 执行脚本
- 2.2.1 角色--物理检验员
- 2.2.2 角色--管理员
- 三、用法总结
前言
本专栏为【数据库】,主要介绍SQL的功能与特点、SQL数据定义语言(表、视图、索引、约束)、SQL数据操作语言(数据检索、数据插入、数据删除、数据更新)、创建与删除触发器、SQL数据控制语言(安全性和授权、事务处理)以及嵌入式SQL。
如果你对本专辑感兴趣,持续关注吧。大家有任何问题,也可以评论区反馈,私信我。
一、技术介绍
利用SQL短路,解决无数据表连接问题
二、测试用例
2.1 数据准备
2.1.1 用户信息表
/*
Navicat Premium Data Transfer
Source Server : 本地连接
Source Server Type : MySQL
Source Server Version : 80013
Source Host : localhost:3306
Source Schema : dl_mes
Target Server Type : MySQL
Target Server Version : 80013
File Encoding : 65001
Date: 30/06/2023 11:14:11
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for 用户信息表
-- ----------------------------
DROP TABLE IF EXISTS `用户信息表`;
CREATE TABLE `用户信息表` (
`用户编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`用户姓名` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`用户性别` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '男',
`用户年龄` tinyint(4) NOT NULL DEFAULT 0,
`用户头像` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`公司编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`公司名称` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`工厂名称` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`工作部门` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`工作场所` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`工作班次` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`用户工号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`用户角色` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`外网权限` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '否',
`软件版本` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`登录地址` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`在线状态` tinyint(4) NOT NULL DEFAULT 0,
`心跳包` tinyint(4) NOT NULL DEFAULT 0,
PRIMARY KEY (`用户编号`) USING BTREE,
INDEX `AK_Key_CompanyID`(`公司编号` ASC) USING BTREE,
INDEX `AK_Key_FactoryName`(`工厂名称` ASC) USING BTREE,
INDEX `AK_Key_Department`(`工作部门` ASC) USING BTREE,
INDEX `AK_Key_WorkRoom`(`工作场所` ASC) USING BTREE,
INDEX `AK_Key_Role`(`用户角色` ASC) USING BTREE,
INDEX `AK_Key_UserWorkID`(`用户工号` ASC) USING BTREE,
INDEX `AK_Key_Shift`(`工作班次` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '0-1-基础信息' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of 用户信息表
-- ----------------------------
INSERT INTO `用户信息表` VALUES ('developA', '吴国宝', '男', 0, '空', 'Z', '鼎禄', '一期', 'IT服务部', 'IT办公室', '空', 'developA', '管理员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('developB', '耿飚', '男', 0, '空', 'Z', '鼎禄', '一期', 'IT服务部', 'IT办公室', '空', 'developB', '管理员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('developC', '葛游成', '男', 0, '空', 'Z', '鼎禄', '一期', 'IT服务部', 'IT办公室', '空', 'developC', '管理员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000001', '郑坤坤', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '生产车间办公室', 'W1', '000001', '粗丝车间经理', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000016', '陈国洪', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '粗丝车间_M', 'W1', '000016', '粗丝车间操作员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000018', '李佳宁', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '粗丝车间_M', 'W1', '000018', '粗丝车间操作员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000021', '文仁平', '男', 0, '空', 'Z', '鼎禄', '一期', '仓库', '仓库', 'W1', '000021', '库管员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000023', '唐杨', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '模具车间', 'W1', '000023', '模具车间操作员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000036', '唐刚', '男', 0, '空', 'Z', '鼎禄', '一期', '仓库', '仓库', 'W1', '000036', '库管员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000044', '唐益龙', '男', 0, '空', 'Z', '鼎禄', '一期', '质量部', '物理检验室', 'W1', '000044', '物理检验员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000052', '吴祥林', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '粗丝车间_M', 'W1', '000052', '粗丝车间操作员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000053', '刘松', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '粗丝车间_M', 'W1', '000053', '粗丝车间操作员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000070', '雷小庆', '男', 0, '空', 'Z', '鼎禄', '一期', '质量部', '物理检验室', 'W1', '000070', '物理检验员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000075', '雷松', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '粗丝车间_M', 'W1', '000075', '粗丝车间操作员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000080', '敬云兵', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '细丝车间_D', 'W1', '000080', '润滑液操作员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000093', '陈杰', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '细丝车间_D', 'W1', '000093', '润滑液操作员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000096', '蒋强', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '粗丝车间_M', 'W1', '000096', '粗丝车间操作员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000106', '叶栋荧', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '粗丝车间_M', 'W1', '000106', '粗丝车间操作员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000107', '李朋涛', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '粗丝车间_M', 'W1', '000107', '粗丝车间操作员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000112', '邱建国', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '细丝车间_D', 'W1', '000112', '润滑液操作员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000170', '邓超', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '细丝车间_D', 'W1', '000170', '润滑液操作员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000189', '薛铁山', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '细丝车间_D', 'W1', '000189', '润滑液操作员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000192', '徐阳菊', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '细丝车间_D', 'W1', '000192', '润滑液操作员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000195', '陈晓英', '男', 0, '空', 'Z', '鼎禄', '一期', '生产部', '细丝车间_D', 'W1', '000195', '润滑液操作员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000201', '张红琼', '男', 0, '空', 'Z', '鼎禄', '一期', '仓库', '仓库', 'W1', '000201', '库管员', '是', '空', '空', 0, 0);
INSERT INTO `用户信息表` VALUES ('Z000202', '李峰雷', '男', 0, '空', 'Z', '鼎禄', '一期', '仓库', '仓库', 'W1', '000202', '库管员', '是', '空', '空', 0, 0);
SET FOREIGN_KEY_CHECKS = 1;
2.1.2 用户权限表
CREATE TABLE `用户权限表` (
`AutoID` bigint(20) NOT NULL AUTO_INCREMENT,
`公司编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`用户编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`用户姓名` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`用户角色` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`模组名称` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`模块名称` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`权限名称` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '空',
`权限使能` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '否',
PRIMARY KEY (`AutoID`) USING BTREE,
INDEX `AK_Key_CompanyID`(`公司编号` ASC) USING BTREE,
INDEX `AK_Key_UserID`(`用户编号` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3770 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '0-1-基础信息' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of 用户权限表
-- ----------------------------
INSERT INTO `用户权限表` VALUES (1714, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '管理员', '用户管理', '空', '否');
INSERT INTO `用户权限表` VALUES (1715, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '管理员', '数据采集', '空', '否');
INSERT INTO `用户权限表` VALUES (1716, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '管理员', '代码测试', '空', '否');
INSERT INTO `用户权限表` VALUES (1717, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '仓库', '钨条打标', '空', '否');
INSERT INTO `用户权限表` VALUES (1718, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '仓库', '粗丝打标', '空', '否');
INSERT INTO `用户权限表` VALUES (1719, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '仓库', '采购入库', '空', '否');
INSERT INTO `用户权限表` VALUES (1720, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '仓库', '产成品入库', '空', '否');
INSERT INTO `用户权限表` VALUES (1721, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '仓库', '领用出库', '空', '否');
INSERT INTO `用户权限表` VALUES (1722, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '仓库', '材料退库', '空', '否');
INSERT INTO `用户权限表` VALUES (1723, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '仓库', '销售退货', '空', '否');
INSERT INTO `用户权限表` VALUES (1724, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '仓库', '采购退货', '空', '否');
INSERT INTO `用户权限表` VALUES (1725, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '仓库', '销售发货', '空', '否');
INSERT INTO `用户权限表` VALUES (1726, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '仓库', '发货扫码', '空', '否');
INSERT INTO `用户权限表` VALUES (1727, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '仓库', '隔离入库', '空', '否');
INSERT INTO `用户权限表` VALUES (1728, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '仓库', '隔离出库', '空', '否');
INSERT INTO `用户权限表` VALUES (1729, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '模具车间', '模具检验', '空', '否');
INSERT INTO `用户权限表` VALUES (1730, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '模具车间', '模具打标', '空', '否');
INSERT INTO `用户权限表` VALUES (1731, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '模具车间', '模具入库', '空', '否');
INSERT INTO `用户权限表` VALUES (1732, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '模具车间', '模具领用', '空', '否');
INSERT INTO `用户权限表` VALUES (1733, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '模具车间', '模具台账', '空', '否');
INSERT INTO `用户权限表` VALUES (1734, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '粗丝车间', '钨条断开', '空', '否');
INSERT INTO `用户权限表` VALUES (1735, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '粗丝车间', '钨条焊接', '空', '否');
INSERT INTO `用户权限表` VALUES (1736, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '粗丝车间', '钨条报废', '空', '否');
INSERT INTO `用户权限表` VALUES (1737, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '粗丝车间', '粗丝报废', '空', '否');
INSERT INTO `用户权限表` VALUES (1738, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝车间', '断口取样', '空', '否');
INSERT INTO `用户权限表` VALUES (1739, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝车间', '粗丝报废', '空', '否');
INSERT INTO `用户权限表` VALUES (1740, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝车间', '成品报废', '空', '否');
INSERT INTO `用户权限表` VALUES (1741, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '物理检验室', '钨条样', '空', '否');
INSERT INTO `用户权限表` VALUES (1742, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '物理检验室', '钨条金相样', '空', '否');
INSERT INTO `用户权限表` VALUES (1743, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '物理检验室', '钨条力学样', '空', '否');
INSERT INTO `用户权限表` VALUES (1744, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '物理检验室', '退火镜像样', '空', '否');
INSERT INTO `用户权限表` VALUES (1745, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '物理检验室', '粗丝探伤', '空', '否');
INSERT INTO `用户权限表` VALUES (1746, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '物理检验室', '粗丝样', '空', '否');
INSERT INTO `用户权限表` VALUES (1747, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '物理检验室', '退火下机样', '空', '否');
INSERT INTO `用户权限表` VALUES (1748, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '物理检验室', '调试样', '空', '否');
INSERT INTO `用户权限表` VALUES (1749, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '物理检验室', '下机样', '空', '否');
INSERT INTO `用户权限表` VALUES (1750, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '物理检验室', '清洗下机样', '空', '否');
INSERT INTO `用户权限表` VALUES (1751, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '物理检验室', '断口样', '空', '否');
INSERT INTO `用户权限表` VALUES (1752, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '物理检验室', '让步放行', '空', '否');
INSERT INTO `用户权限表` VALUES (1753, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '物理检验室', '样品数据修改', '空', '否');
INSERT INTO `用户权限表` VALUES (1754, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '统计报表', '产品数据', '空', '否');
INSERT INTO `用户权限表` VALUES (1755, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '统计报表', '样品数据', '空', '否');
INSERT INTO `用户权限表` VALUES (1756, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '统计报表', '工艺数据', '空', '否');
INSERT INTO `用户权限表` VALUES (1757, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '统计报表', '润滑液信息', '空', '否');
INSERT INTO `用户权限表` VALUES (1758, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '统计报表', '库存管理', '空', '否');
INSERT INTO `用户权限表` VALUES (1759, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '统计报表', '维修数据', '空', '否');
INSERT INTO `用户权限表` VALUES (1760, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '统计报表', '生产统计', '空', '否');
INSERT INTO `用户权限表` VALUES (1761, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '统计报表', '绩效考核', '空', '否');
INSERT INTO `用户权限表` VALUES (1762, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '工艺改进', '生产线产能', '空', '否');
INSERT INTO `用户权限表` VALUES (1763, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '工艺改进', '工艺监控', '空', '否');
INSERT INTO `用户权限表` VALUES (1764, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '工艺改进', '工艺设定', '空', '否');
INSERT INTO `用户权限表` VALUES (1765, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '生产看板', '车间看板', '空', '否');
INSERT INTO `用户权限表` VALUES (1766, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '粗丝前段', '零号旋锻上机', '空', '是');
INSERT INTO `用户权限表` VALUES (1767, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '粗丝前段', '零号旋锻下机', '空', '是');
INSERT INTO `用户权限表` VALUES (1768, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '粗丝前段', '四号旋锻', '空', '是');
INSERT INTO `用户权限表` VALUES (1769, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '粗丝前段', '一号退火', '空', '是');
INSERT INTO `用户权限表` VALUES (1770, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '粗丝前段', '三号旋锻', '空', '是');
INSERT INTO `用户权限表` VALUES (1771, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '粗丝后段', '二号旋锻', '空', '是');
INSERT INTO `用户权限表` VALUES (1772, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '粗丝后段', '二号退火', '空', '是');
INSERT INTO `用户权限表` VALUES (1773, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '粗丝后段', '一号旋锻', '空', '是');
INSERT INTO `用户权限表` VALUES (1774, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '粗丝后段', '大转盘', '空', '是');
INSERT INTO `用户权限表` VALUES (1775, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '粗丝后段', '小转盘', '空', '是');
INSERT INTO `用户权限表` VALUES (1776, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '粗丝后段', '气七模下盘', '空', '是');
INSERT INTO `用户权限表` VALUES (1777, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝前段', '退火调试', '空', '否');
INSERT INTO `用户权限表` VALUES (1778, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝前段', '退火开机', '空', '否');
INSERT INTO `用户权限表` VALUES (1779, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝前段', '退火下机', '空', '否');
INSERT INTO `用户权限表` VALUES (1780, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝前段', '涂润滑油上机', '空', '否');
INSERT INTO `用户权限表` VALUES (1781, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝前段', '涂润滑油下机', '空', '否');
INSERT INTO `用户权限表` VALUES (1782, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝前段', '拉拔上盘', '空', '否');
INSERT INTO `用户权限表` VALUES (1783, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝前段', '调试取样', '空', '否');
INSERT INTO `用户权限表` VALUES (1784, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝前段', '生产开机', '空', '否');
INSERT INTO `用户权限表` VALUES (1785, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝前段', '成品下盘', '空', '否');
INSERT INTO `用户权限表` VALUES (1786, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝后段', '改拉上盘', '空', '否');
INSERT INTO `用户权限表` VALUES (1787, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝后段', '改拉调试', '空', '否');
INSERT INTO `用户权限表` VALUES (1788, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝后段', '改拉开机', '空', '否');
INSERT INTO `用户权限表` VALUES (1789, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝后段', '改拉下盘', '空', '否');
INSERT INTO `用户权限表` VALUES (1790, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝后段', '矫直上机', '空', '否');
INSERT INTO `用户权限表` VALUES (1791, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝后段', '矫直下盘', '空', '否');
INSERT INTO `用户权限表` VALUES (1792, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝后段', '清洗调试', '空', '否');
INSERT INTO `用户权限表` VALUES (1793, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝后段', '清洗开机', '空', '否');
INSERT INTO `用户权限表` VALUES (1794, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝后段', '原料下盘', '空', '否');
INSERT INTO `用户权限表` VALUES (1795, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '细丝后段', '清洗下盘', '空', '否');
INSERT INTO `用户权限表` VALUES (1796, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '润滑液', '润滑液开缸', '空', '否');
INSERT INTO `用户权限表` VALUES (1797, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '润滑液', '润滑液分析', '空', '否');
INSERT INTO `用户权限表` VALUES (1798, 'Z', 'Z000075', '雷松', '粗丝车间操作员', '润滑液', '润滑液补加', '空', '否');
2.1.3 app功能菜单表
CREATE TABLE `app功能菜单表` (
`AutoID` int(20) NOT NULL AUTO_INCREMENT,
`fun_guid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`url` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`img_src` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`menu_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`visible` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`AutoID`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of app功能菜单表
-- ----------------------------
INSERT INTO `app功能菜单表` VALUES (2, 'Quality_1_TBarSample1', 'Quality_1_TBarSample1.html', '../image/yangpin.png', '钨条样', '是');
INSERT INTO `app功能菜单表` VALUES (3, 'Thick_1_XDZeroOn', 'Thick_1_XDZeroOn.html', '../image/shangji.png', '零号旋锻上机', '是');
INSERT INTO `app功能菜单表` VALUES (4, 'Thick_2_XDZeroDown', 'Thick_2_XDZeroDown.html', '../image/xiaji.png', '零号旋锻下机', '是');
INSERT INTO `app功能菜单表` VALUES (5, 'Thick_3_XDFour', 'Thick_3_XDFour.html', '../image/xuanduan.png', '四号旋锻', '是');
INSERT INTO `app功能菜单表` VALUES (6, 'Thick_4_THOne', 'Thick_4_THOne.html', '../image/tuihuo.png', '一号退火', '是');
INSERT INTO `app功能菜单表` VALUES (7, 'Thick_5_XDThree', 'Thick_5_XDThree.html', '../image/xuanduan.png', '三号旋锻', '是');
INSERT INTO `app功能菜单表` VALUES (8, 'Thick_6_XDTwo', 'Thick_6_XDTwo.html', '../image/xuanduan.png', '二号旋锻', '是');
INSERT INTO `app功能菜单表` VALUES (9, 'Thick_7_THTwo', 'Thick_7_THTwo.html', '../image/tuihuo.png', '二号退火', '是');
INSERT INTO `app功能菜单表` VALUES (10, 'Thick_8_XDOne', 'Thick_8_XDOne.html', '../image/xuanduan.png', '一号旋锻', '是');
INSERT INTO `app功能菜单表` VALUES (11, 'Thick_9_BigTurn', 'Thick_9_BigTurn.html', '../image/zhuanpan.png', '大转盘', '是');
INSERT INTO `app功能菜单表` VALUES (12, 'Thick_10_SmallTurn', 'Thick_10_SmallTurn.html', '../image/zhuanpan.png', '小转盘', '是');
INSERT INTO `app功能菜单表` VALUES (13, 'Thick_11_AirSevenDown', 'Thick_11_AirSevenDown.html', '../image/xiaji.png', '气七模下盘', '是');
INSERT INTO `app功能菜单表` VALUES (14, 'Thick_12_TBarScrap', 'Thick_12_TBarScrap.html', '../image/baofei.png', '钨条报废', '是');
INSERT INTO `app功能菜单表` VALUES (15, 'Thick_13_ThickScrap', 'Thick_13_ThickScrap.html', '../image/baofei.png', '粗丝报废', '是');
2.2 执行脚本
2.2.1 角色–物理检验员
执行脚本:
SELECT c.fun_guid,c.url,c.img_src,c.menu_name,
a.用户编号,a.用户角色,b.模组名称,b.权限使能
FROM dl_mes.用户信息表 a
LEFT JOIN dl_mes.用户权限表 b ON a.用户编号=b.用户编号
INNER JOIN dl_mes.app功能菜单表 c ON c.visible='是' AND (b.模块名称=c.menu_name OR a.用户角色='管理员')
WHERE a.用户编号='Z000044' AND (b.权限使能='是' OR a.用户角色='管理员');
执行结果:
程序效果:
2.2.2 角色–管理员
执行脚本:
SELECT c.fun_guid,c.url,c.img_src,c.menu_name,
a.用户编号,a.用户角色,b.模组名称,b.权限使能
FROM dl_mes.用户信息表 a
LEFT JOIN dl_mes.用户权限表 b ON a.用户编号=b.用户编号
INNER JOIN dl_mes.app功能菜单表 c ON c.visible='是' AND (b.模块名称=c.menu_name OR a.用户角色='管理员')
WHERE a.用户编号='developB' AND (b.权限使能='是' OR a.用户角色='管理员');
执行结果:
程序效果:
三、用法总结
利用OR SQL短路,SQL注入采用类似方式。