diff --git a/sql.java/DataStatus/.classpath b/sql.java/DataStatus/.classpath new file mode 100644 index 0000000..cf3f97f --- /dev/null +++ b/sql.java/DataStatus/.classpath @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/sql.java/DataStatus/.project b/sql.java/DataStatus/.project new file mode 100644 index 0000000..abce0b2 --- /dev/null +++ b/sql.java/DataStatus/.project @@ -0,0 +1,31 @@ + + + DataStatus + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.jdt.core.javanature + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/sql.java/DataStatus/.settings/.jsdtscope b/sql.java/DataStatus/.settings/.jsdtscope new file mode 100644 index 0000000..76c2d63 --- /dev/null +++ b/sql.java/DataStatus/.settings/.jsdtscope @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/sql.java/DataStatus/.settings/org.eclipse.core.resources.prefs b/sql.java/DataStatus/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..881da42 --- /dev/null +++ b/sql.java/DataStatus/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/webapp/WEB-INF/devices.jsp=UTF-8 +encoding//src/main/webapp/WEB-INF/devicesForm.jsp=UTF-8 +encoding/=UTF-8 diff --git a/sql.java/DataStatus/.settings/org.eclipse.jdt.core.prefs b/sql.java/DataStatus/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..23fa13b --- /dev/null +++ b/sql.java/DataStatus/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=21 +org.eclipse.jdt.core.compiler.compliance=21 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=21 diff --git a/sql.java/DataStatus/.settings/org.eclipse.wst.common.component b/sql.java/DataStatus/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..129b077 --- /dev/null +++ b/sql.java/DataStatus/.settings/org.eclipse.wst.common.component @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/sql.java/DataStatus/.settings/org.eclipse.wst.common.project.facet.core.xml b/sql.java/DataStatus/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..88a232b --- /dev/null +++ b/sql.java/DataStatus/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/sql.java/DataStatus/.settings/org.eclipse.wst.jsdt.ui.superType.container b/sql.java/DataStatus/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ b/sql.java/DataStatus/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/sql.java/DataStatus/.settings/org.eclipse.wst.jsdt.ui.superType.name b/sql.java/DataStatus/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..05bd71b --- /dev/null +++ b/sql.java/DataStatus/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git a/sql.java/DataStatus/build/classes/dao/DeviceDAO.class b/sql.java/DataStatus/build/classes/dao/DeviceDAO.class new file mode 100644 index 0000000..5e6deb9 Binary files /dev/null and b/sql.java/DataStatus/build/classes/dao/DeviceDAO.class differ diff --git a/sql.java/DataStatus/build/classes/db/DBUtils.class b/sql.java/DataStatus/build/classes/db/DBUtils.class new file mode 100644 index 0000000..60f5cca Binary files /dev/null and b/sql.java/DataStatus/build/classes/db/DBUtils.class differ diff --git a/sql.java/DataStatus/build/classes/model/Device.class b/sql.java/DataStatus/build/classes/model/Device.class new file mode 100644 index 0000000..f8fd37d Binary files /dev/null and b/sql.java/DataStatus/build/classes/model/Device.class differ diff --git a/sql.java/DataStatus/build/classes/test/TestDeviceDAO.class b/sql.java/DataStatus/build/classes/test/TestDeviceDAO.class new file mode 100644 index 0000000..66f9632 Binary files /dev/null and b/sql.java/DataStatus/build/classes/test/TestDeviceDAO.class differ diff --git a/sql.java/DataStatus/src/main/java/dao/DeviceDAO.java b/sql.java/DataStatus/src/main/java/dao/DeviceDAO.java new file mode 100644 index 0000000..5f288da --- /dev/null +++ b/sql.java/DataStatus/src/main/java/dao/DeviceDAO.java @@ -0,0 +1,96 @@ +package dao; + +import db.DBUtils; +import model.Device; + +import java.sql.*; +import java.util.ArrayList; +import java.util.List; + +public class DeviceDAO { + // 插入设备信息 + public void insertDevice(String deviceCode, String status, String performanceEfficiency, double utilization, String deviceId) { + String sql = "INSERT INTO 设备 (设备编号, 状态, 性能与效率, 利用率, 供应编号) VALUES (?, ?, ?, ?, ?)"; + try (Connection conn = DBUtils.getConnection(); + PreparedStatement pstmt = conn.prepareStatement(sql)) { + pstmt.setString(1, deviceCode); + pstmt.setString(2, status); + pstmt.setString(3, performanceEfficiency); + pstmt.setDouble(4, utilization); + pstmt.setString(5, deviceId); + pstmt.executeUpdate(); + } catch (SQLException e) { + + } + } + + // 查询所有设备信息 + public List findAllDevices() { + List devices = new ArrayList<>(); + String sql = "SELECT * FROM 设备"; + try (Connection conn = DBUtils.getConnection(); + Statement stmt = conn.createStatement(); + ResultSet rs = stmt.executeQuery(sql)) { + while (rs.next()) { + Device device = new Device( + rs.getString("设备编号"), + rs.getString("状态"), + rs.getString("性能与效率"), + rs.getDouble("利用率"), + rs.getString("供应编号") // 假设数据库中的编号字段是字符串类型 + ); + devices.add(device); + } + } catch (SQLException e) { + + } + return devices; + } + + // 更新设备信息 + public void updateDevice(Device device) { + // 确保SQL语句中的字段名与数据库中的字段名一致 + String sql = "UPDATE 设备 SET 设备编号 = ?, 状态 = ?, 性能与效率 = ?, 利用率 = ?, 供应编号 = ? WHERE 设备编号 = ?"; + try (Connection conn = DBUtils.getConnection(); + PreparedStatement pstmt = conn.prepareStatement(sql)) { + pstmt.setString(1, device.getDeviceCode()); // 设备编号 + pstmt.setString(2, device.getStatus()); // 状态 + pstmt.setString(3, device.getPerformanceEfficiency()); // 性能与效率 + pstmt.setDouble(4, device.getUtilization()); // 利用率 + pstmt.setString(5, device.getDeviceId()); // 编号 + pstmt.setString(6, device.getDeviceCode()); + pstmt.executeUpdate(); + } catch (SQLException e) { + + } + } + + // 删除设备信息 + public void deleteDevice(String deviceCode) { + String sql = "DELETE FROM 设备 WHERE 设备编号 = ?"; + try (Connection conn = DBUtils.getConnection(); + PreparedStatement pstmt = conn.prepareStatement(sql)) { + pstmt.setString(1, deviceCode); + pstmt.executeUpdate(); + } catch (SQLException e) { + + } + } + + // 插入设备信息,使用Device对象 + public void insertDevice(Device device) { + // 确保SQL语句中的字段名与数据库中的字段名一致,并且每个字段只出现一次 + String sql = "INSERT INTO 设备 (设备编号, 状态, 性能与效率, 利用率, 供应编号) VALUES (?, ?, ?, ?, ?)"; + try (Connection conn = DBUtils.getConnection(); + PreparedStatement pstmt = conn.prepareStatement(sql)) { + pstmt.setString(1, device.getDeviceCode()); // 设备编号 + pstmt.setString(2, device.getStatus()); // 状态 + pstmt.setString(3, device.getPerformanceEfficiency()); // 性能与效率 + pstmt.setDouble(4, device.getUtilization()); // 利用率 + pstmt.setString(5, device.getDeviceId()); // 供应编号 + pstmt.executeUpdate(); + } catch (SQLException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/sql.java/DataStatus/src/main/java/db/DBUtils.java b/sql.java/DataStatus/src/main/java/db/DBUtils.java new file mode 100644 index 0000000..a2bb630 --- /dev/null +++ b/sql.java/DataStatus/src/main/java/db/DBUtils.java @@ -0,0 +1,15 @@ +package db; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +public class DBUtils { + private static final String URL = "jdbc:mysql://localhost:3306/equipment"; + private static final String USER = "root"; + private static final String PASSWORD = "LCX51840"; + + public static Connection getConnection() throws SQLException { + return DriverManager.getConnection(URL, USER, PASSWORD); + } +} \ No newline at end of file diff --git a/sql.java/DataStatus/src/main/java/model/Device.java b/sql.java/DataStatus/src/main/java/model/Device.java new file mode 100644 index 0000000..8661da9 --- /dev/null +++ b/sql.java/DataStatus/src/main/java/model/Device.java @@ -0,0 +1,64 @@ +package model; + +public class Device { + private String deviceCode; + private String status; + private String performanceEfficiency; + private double utilization; + private String deviceId; + + public Device() { + } + + // 全参数构造函数 + public Device(String deviceCode, String status, String performanceEfficiency, double utilization, String deviceId) { + + this.deviceCode = deviceCode; + this.status = status; + this.performanceEfficiency = performanceEfficiency; + this.utilization = utilization; + this.deviceId = deviceId; + } + + public String getDeviceCode() { + return deviceCode; + } + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + public String getStatus() { + return status; + } + public void setStatus(String status) { + this.status = status; + } + public String getPerformanceEfficiency() { + return performanceEfficiency; + } + public void setPerformanceEfficiency(String performanceEfficiency) { + this.performanceEfficiency = performanceEfficiency; + } + public double getUtilization() { + return utilization; + } + public void setUtilization(double utilization) { + this.utilization = utilization; + } + public String getDeviceId() { + return deviceId; + } + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + public String toString() { + return "Device{" + + + " deviceCode='" + deviceCode + '\'' + + ", status='" + status + '\'' + + ", performanceEfficiency='" + performanceEfficiency + '\'' + + ", utilization=" + utilization + + ", deviceId=" + deviceId + + '}'; + } + +} \ No newline at end of file diff --git a/sql.java/DataStatus/src/main/java/test/TestDeviceDAO.java b/sql.java/DataStatus/src/main/java/test/TestDeviceDAO.java new file mode 100644 index 0000000..76e7375 --- /dev/null +++ b/sql.java/DataStatus/src/main/java/test/TestDeviceDAO.java @@ -0,0 +1,28 @@ +package test; + +import java.util.List; + +import dao.DeviceDAO; +import model.Device; + +public class TestDeviceDAO { + public static void main(String[] args) { + DeviceDAO deviceDAO = new DeviceDAO(); + + // 插入设备 + Device device1 = new Device( "DEV012", "在线", "优秀", 0.9, "SUP001"); + deviceDAO.insertDevice(device1); + System.out.println("设备插入成功:" + device1); + + deviceDAO.deleteDevice("DEV011"); + + // 查询所有设备 + List devices = deviceDAO.findAllDevices(); + System.out.println("所有设备:"); + for (Device device : devices) { + System.out.println(device); + } + + + } +} \ No newline at end of file diff --git a/sql.java/DataStatus/src/main/webapp/META-INF/MANIFEST.MF b/sql.java/DataStatus/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/sql.java/DataStatus/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/sql.java/DataStatus/src/main/webapp/WEB-INF/devices.jsp b/sql.java/DataStatus/src/main/webapp/WEB-INF/devices.jsp new file mode 100644 index 0000000..221f20b --- /dev/null +++ b/sql.java/DataStatus/src/main/webapp/WEB-INF/devices.jsp @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + +
设备编号状态性能与效率利用率编号操作
${device.deviceCode}${device.status}${device.performanceEfficiency}${device.utilization}${device.deviceId} + 编辑 + 删除 +
\ No newline at end of file diff --git a/sql.java/DataStatus/src/main/webapp/WEB-INF/devicesForm.jsp b/sql.java/DataStatus/src/main/webapp/WEB-INF/devicesForm.jsp new file mode 100644 index 0000000..b16ccd2 --- /dev/null +++ b/sql.java/DataStatus/src/main/webapp/WEB-INF/devicesForm.jsp @@ -0,0 +1,10 @@ + +
+ + 设备编号:
+ 状态:
+ 性能与效率:
+ 利用率:
+ 编号:
+ +
\ No newline at end of file diff --git a/sql.java/DataStatus/src/main/webapp/WEB-INF/lib/mysql-connector-j-8.3.0.jar b/sql.java/DataStatus/src/main/webapp/WEB-INF/lib/mysql-connector-j-8.3.0.jar new file mode 100644 index 0000000..5c720ab Binary files /dev/null and b/sql.java/DataStatus/src/main/webapp/WEB-INF/lib/mysql-connector-j-8.3.0.jar differ diff --git a/sql.java/DataStatus/src/main/webapp/WEB-INF/web.xml b/sql.java/DataStatus/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..f8f5238 --- /dev/null +++ b/sql.java/DataStatus/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,20 @@ + + + DataStatus + + index.html + index.jsp + index.htm + default.html + default.jsp + default.htm + + + DeviceServlet + servlet.DeviceServlet + + + DeviceServlet + /DeviceServlet + + \ No newline at end of file diff --git a/sql脚本/仓库.sql b/sql脚本/仓库.sql new file mode 100644 index 0000000..c2b6220 --- /dev/null +++ b/sql脚本/仓库.sql @@ -0,0 +1,3 @@ +INSERT INTO `仓库`(`仓库编号`, `仓库名称`) VALUES (1, '仓库A'); +INSERT INTO `仓库`(`仓库编号`, `仓库名称`) VALUES (2, '仓库B'); +INSERT INTO `仓库`(`仓库编号`, `仓库名称`) VALUES (3, '仓库C'); diff --git a/sql脚本/仓库记录.sql b/sql脚本/仓库记录.sql new file mode 100644 index 0000000..a23e445 --- /dev/null +++ b/sql脚本/仓库记录.sql @@ -0,0 +1,19 @@ +CREATE TABLE 仓库记录 ( + 仓库记录编号 INT AUTO_INCREMENT PRIMARY KEY, + 设备编号 VARCHAR(50) NOT NULL, + 出入库类型 ENUM('入库', '出库') NOT NULL, + 出入库时间 DATETIME NOT NULL, + 仓库编号 INT NOT NULL, + FOREIGN KEY (设备编号) REFERENCES 设备(设备编号), + FOREIGN KEY (仓库编号) REFERENCES 仓库(仓库编号) +); +INSERT INTO `仓库记录`(`仓库记录编号`, `设备编号`, `出入库类型`, `出入库时间`, `仓库编号`) VALUES (1, 'DEV001', '入库', '2023-10-05 12:34:56', 1); +INSERT INTO `仓库记录`(`仓库记录编号`, `设备编号`, `出入库类型`, `出入库时间`, `仓库编号`) VALUES (2, 'DEV002', '入库', '2023-10-11 12:35:16', 1); +INSERT INTO `仓库记录`(`仓库记录编号`, `设备编号`, `出入库类型`, `出入库时间`, `仓库编号`) VALUES (3, 'DEV003', '出库', '2023-10-10 12:35:36', 2); +INSERT INTO `仓库记录`(`仓库记录编号`, `设备编号`, `出入库类型`, `出入库时间`, `仓库编号`) VALUES (4, 'DEV004', '入库', '2023-10-12 12:35:14', 1); +INSERT INTO `仓库记录`(`仓库记录编号`, `设备编号`, `出入库类型`, `出入库时间`, `仓库编号`) VALUES (5, 'DEV005', '出库', '2024-05-21 12:36:16', 3); +INSERT INTO `仓库记录`(`仓库记录编号`, `设备编号`, `出入库类型`, `出入库时间`, `仓库编号`) VALUES (6, 'DEV006', '入库', '2023-02-10 12:36:36', 1); +INSERT INTO `仓库记录`(`仓库记录编号`, `设备编号`, `出入库类型`, `出入库时间`, `仓库编号`) VALUES (7, 'DEV007', '出库', '2023-06-05 12:36:56', 1); +INSERT INTO `仓库记录`(`仓库记录编号`, `设备编号`, `出入库类型`, `出入库时间`, `仓库编号`) VALUES (8, 'DEV008', '入库', '2023-05-09 12:37:16', 2); +INSERT INTO `仓库记录`(`仓库记录编号`, `设备编号`, `出入库类型`, `出入库时间`, `仓库编号`) VALUES (9, 'DEV009', '入库', '2023-06-30 12:37:36', 1); +INSERT INTO `仓库记录`(`仓库记录编号`, `设备编号`, `出入库类型`, `出入库时间`, `仓库编号`) VALUES (10, 'DEV010', '入库', '2018-02-05 10:37:56', 3); diff --git a/sql脚本/供应商.sql b/sql脚本/供应商.sql new file mode 100644 index 0000000..73bca06 --- /dev/null +++ b/sql脚本/供应商.sql @@ -0,0 +1,17 @@ +CREATE TABLE `供应商` ( + `供应编号` VARCHAR(10) NOT NULL, + `供应商` VARCHAR(100) NOT NULL, + `联系电话` VARCHAR(15) NOT NULL, + `供应量` INT NOT NULL, + PRIMARY KEY (`供应编号`) +); +INSERT INTO `供应商`(`供应编号`, `供应商`, `联系电话`, `供应量`) VALUES ('SUP001', '供应商A', '1234567890', 100); +INSERT INTO `供应商`(`供应编号`, `供应商`, `联系电话`, `供应量`) VALUES ('SUP002', '供应商B', '0987654321', 150); +INSERT INTO `供应商`(`供应编号`, `供应商`, `联系电话`, `供应量`) VALUES ('SUP003', '供应商C', '1122334455', 200); +INSERT INTO `供应商`(`供应编号`, `供应商`, `联系电话`, `供应量`) VALUES ('SUP004', '供应商D', '5566778899', 250); +INSERT INTO `供应商`(`供应编号`, `供应商`, `联系电话`, `供应量`) VALUES ('SUP005', '供应商E', '9988776655', 300); +INSERT INTO `供应商`(`供应编号`, `供应商`, `联系电话`, `供应量`) VALUES ('SUP006', '供应商F', '5544332211', 100); +INSERT INTO `供应商`(`供应编号`, `供应商`, `联系电话`, `供应量`) VALUES ('SUP007', '供应商G', '1199887766', 150); +INSERT INTO `供应商`(`供应编号`, `供应商`, `联系电话`, `供应量`) VALUES ('SUP008', '供应商H', '5533221199', 200); +INSERT INTO `供应商`(`供应编号`, `供应商`, `联系电话`, `供应量`) VALUES ('SUP009', '供应商I', '7788990011', 250); +INSERT INTO `供应商`(`供应编号`, `供应商`, `联系电话`, `供应量`) VALUES ('SUP010', '供应商J', '3344556677', 300); diff --git a/sql脚本/在线设备信息(视图).sql b/sql脚本/在线设备信息(视图).sql new file mode 100644 index 0000000..e868ba4 --- /dev/null +++ b/sql脚本/在线设备信息(视图).sql @@ -0,0 +1,10 @@ +CREATE VIEW 在线设备信息 AS +SELECT 设备编号, 状态, 性能与效率, 利用率 +FROM 设备 +WHERE 状态 = '在线'; +INSERT INTO `在线设备信息`(`设备编号`, `状态`, `性能与效率`, `利用率`) VALUES ('DEV001', '在线', '优秀', 0.95); +INSERT INTO `在线设备信息`(`设备编号`, `状态`, `性能与效率`, `利用率`) VALUES ('DEV003', '在线', '一般', 0.60); +INSERT INTO `在线设备信息`(`设备编号`, `状态`, `性能与效率`, `利用率`) VALUES ('DEV005', '在线', '优秀', 0.85); +INSERT INTO `在线设备信息`(`设备编号`, `状态`, `性能与效率`, `利用率`) VALUES ('DEV007', '在线', '一般', 0.65); +INSERT INTO `在线设备信息`(`设备编号`, `状态`, `性能与效率`, `利用率`) VALUES ('DEV009', '在线', '优秀', 0.95); +INSERT INTO `在线设备信息`(`设备编号`, `状态`, `性能与效率`, `利用率`) VALUES ('DEV012', '在线', '优秀', 0.90); diff --git a/sql脚本/查询语句汇总.sql b/sql脚本/查询语句汇总.sql new file mode 100644 index 0000000..b952dbb --- /dev/null +++ b/sql脚本/查询语句汇总.sql @@ -0,0 +1,54 @@ +SELECT * FROM 设备 WHERE 状态 = '在线'; + +-- 查询维修成本大于600的维修记录 +SELECT * FROM 维修 WHERE 维修成本 > 600; + +-- 集合比较查询 +-- 查询由“张三”或“李四”维修的设备 +SELECT * FROM 维修 WHERE 维修人员 IN ('张三', '李四'); + +-- 查询供应商为“供应商A”或“供应商B”的供应记录 +SELECT * FROM 供应 WHERE 供应商 IN ('供应商A', '供应商B'); + +-- 范围比较查询 +-- 查询维修时间在2023年1月1日至2023年1月5日之间的维修记录 +SELECT * FROM 维修 WHERE 维修时间 BETWEEN '2023-01-01' AND '2023-01-05'; + +-- 查询设备编号在DEV001到DEV005之间的设备 +SELECT * FROM 设备 WHERE 设备编号 BETWEEN 'DEV001' AND 'DEV005'; + +-- 字符串相似比较查询 +-- 查询设备编号以“DEV00”开头的设备 +SELECT * FROM 设备 WHERE 设备编号 LIKE 'DEV00%'; + +-- 查询维修人员姓名中包含“四”字的维修记录 +SELECT * FROM 维修 WHERE 维修人员 LIKE '%四%'; + +-- 多表连接查询 +-- 查询设备的维修记录,包括设备信息和维修人员信息 +SELECT 设备.*, 维修.维修人员, 维修.维修时间, 维修.维修成本 +FROM 设备 +JOIN 维修 ON 设备.设备编号 = 维修.设备编号; + +-- 查询设备的供应商信息,包括设备信息和供应商信息 +SELECT 设备.*, 供应.供应商, 供应.联系电话 +FROM 设备 +JOIN 供应 ON 设备.供应编号 = 供应.供应编号; + +-- 嵌套查询 +-- 查询维修成本最高的维修记录 +SELECT * FROM 维修 +WHERE 维修成本 = (SELECT MAX(维修成本) FROM 维修); + +-- 查询有维修记录的设备编号 +SELECT 设备编号 FROM 维修 +WHERE 设备编号 IN (SELECT 设备编号 FROM 设备); + +-- EXISTS查询 +-- 查询有维修记录的设备信息 +SELECT * FROM 设备 +WHERE EXISTS (SELECT 1 FROM 维修 WHERE 维修.设备编号 = 设备.设备编号); + +-- 查询没有报废记录的设备信息 +SELECT * FROM 设备 +WHERE NOT EXISTS (SELECT 1 FROM 报废 WHERE 报废.设备编号 = 设备.设备编号); \ No newline at end of file diff --git a/sql脚本/维修.sql b/sql脚本/维修.sql new file mode 100644 index 0000000..d40497b --- /dev/null +++ b/sql脚本/维修.sql @@ -0,0 +1,18 @@ +CREATE TABLE `维修` ( + `维修编号` VARCHAR(10) NOT NULL, + `设备编号` VARCHAR(10) NOT NULL, + `维修人员` VARCHAR(50) NOT NULL, + `维修时间` DATE NOT NULL, + `维修成本` DECIMAL(10, 2) NOT NULL, + PRIMARY KEY (`维修编号`) +); +INSERT INTO `维修`(`维修编号`, `设备编号`, `维修人员`, `维修时间`, `维修成本`) VALUES ('REP001', 'DEV001', '张三', '2023-01-01', 550.00); +INSERT INTO `维修`(`维修编号`, `设备编号`, `维修人员`, `维修时间`, `维修成本`) VALUES ('REP002', 'DEV002', '李四', '2023-01-02', 600.00); +INSERT INTO `维修`(`维修编号`, `设备编号`, `维修人员`, `维修时间`, `维修成本`) VALUES ('REP003', 'DEV003', '王五', '2023-01-03', 700.00); +INSERT INTO `维修`(`维修编号`, `设备编号`, `维修人员`, `维修时间`, `维修成本`) VALUES ('REP004', 'DEV004', '赵六', '2023-01-04', 800.00); +INSERT INTO `维修`(`维修编号`, `设备编号`, `维修人员`, `维修时间`, `维修成本`) VALUES ('REP005', 'DEV005', '张三', '2023-01-05', 550.00); +INSERT INTO `维修`(`维修编号`, `设备编号`, `维修人员`, `维修时间`, `维修成本`) VALUES ('REP006', 'DEV006', '李四', '2023-01-06', 650.00); +INSERT INTO `维修`(`维修编号`, `设备编号`, `维修人员`, `维修时间`, `维修成本`) VALUES ('REP007', 'DEV007', '王五', '2023-01-07', 750.00); +INSERT INTO `维修`(`维修编号`, `设备编号`, `维修人员`, `维修时间`, `维修成本`) VALUES ('REP008', 'DEV008', '赵六', '2023-01-08', 850.00); +INSERT INTO `维修`(`维修编号`, `设备编号`, `维修人员`, `维修时间`, `维修成本`) VALUES ('REP009', 'DEV009', '张三', '2023-01-09', 500.00); +INSERT INTO `维修`(`维修编号`, `设备编号`, `维修人员`, `维修时间`, `维修成本`) VALUES ('REP010', 'DEV010', '李四', '2023-01-10', 600.00); diff --git a/sql脚本/维修人员负责记录视图.sql b/sql脚本/维修人员负责记录视图.sql new file mode 100644 index 0000000..2f537cf --- /dev/null +++ b/sql脚本/维修人员负责记录视图.sql @@ -0,0 +1,8 @@ +CREATE VIEW 维修人员负责记录 AS +SELECT 维修人员, COUNT(*) AS 维修次数, SUM(维修成本) AS 总维修成本 +FROM 维修 +GROUP BY 维修人员; +INSERT INTO `维修人员负责记录`(`维修人员`, `维修次数`, `总维修成本`) VALUES ('张三', 3, 1600.00); +INSERT INTO `维修人员负责记录`(`维修人员`, `维修次数`, `总维修成本`) VALUES ('李四', 3, 1850.00); +INSERT INTO `维修人员负责记录`(`维修人员`, `维修次数`, `总维修成本`) VALUES ('王五', 2, 1450.00); +INSERT INTO `维修人员负责记录`(`维修人员`, `维修次数`, `总维修成本`) VALUES ('赵六', 2, 1650.00); diff --git a/sql脚本/视图.sql b/sql脚本/视图.sql new file mode 100644 index 0000000..1e0ab2c --- /dev/null +++ b/sql脚本/视图.sql @@ -0,0 +1,8 @@ +CREATE VIEW 维修成本较高记录 AS +SELECT * +FROM 维修 +WHERE 维修成本 > (SELECT AVG(维修成本) FROM 维修); +INSERT INTO `维修成本较高记录`(`维修编号`, `设备编号`, `维修人员`, `维修时间`, `维修成本`) VALUES ('REP003', 'DEV003', '王五', '2023-01-03', 700.00); +INSERT INTO `维修成本较高记录`(`维修编号`, `设备编号`, `维修人员`, `维修时间`, `维修成本`) VALUES ('REP004', 'DEV004', '赵六', '2023-01-04', 800.00); +INSERT INTO `维修成本较高记录`(`维修编号`, `设备编号`, `维修人员`, `维修时间`, `维修成本`) VALUES ('REP007', 'DEV007', '王五', '2023-01-07', 750.00); +INSERT INTO `维修成本较高记录`(`维修编号`, `设备编号`, `维修人员`, `维修时间`, `维修成本`) VALUES ('REP008', 'DEV008', '赵六', '2023-01-08', 850.00); diff --git a/sql脚本/设备.sql b/sql脚本/设备.sql new file mode 100644 index 0000000..d369067 --- /dev/null +++ b/sql脚本/设备.sql @@ -0,0 +1,19 @@ +CREATE TABLE `设备` ( + `设备编号` VARCHAR(10) NOT NULL, + `状态` VARCHAR(50) NOT NULL, + `性能与效率` VARCHAR(50) NOT NULL, + `利用率` DECIMAL(3, 2) NOT NULL, + `供应编号` VARCHAR(10) NOT NULL, + PRIMARY KEY (`设备编号`) +); +INSERT INTO `设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV001', '在线', '优秀', 0.95, 'SUP001'); +INSERT INTO `设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV002', '下线', '良好', 0.70, 'SUP002'); +INSERT INTO `设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV003', '在线', '一般', 0.60, 'SUP003'); +INSERT INTO `设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV004', '报废', '差', 0.30, 'SUP001'); +INSERT INTO `设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV005', '在线', '优秀', 0.85, 'SUP004'); +INSERT INTO `设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV006', '下线', '良好', 0.75, 'SUP005'); +INSERT INTO `设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV007', '在线', '一般', 0.65, 'SUP005'); +INSERT INTO `设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV008', '报废', '差', 0.35, 'SUP006'); +INSERT INTO `设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV009', '在线', '优秀', 0.95, 'SUP007'); +INSERT INTO `设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV010', '维修', '良好', 0.80, 'SUP008'); +INSERT INTO `设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV012', '在线', '优秀', 0.90, 'SUP001'); diff --git a/sql脚本/设备供应商.sql b/sql脚本/设备供应商.sql new file mode 100644 index 0000000..34b0c2f --- /dev/null +++ b/sql脚本/设备供应商.sql @@ -0,0 +1,18 @@ +CREATE TABLE `设备供应商` ( + `设备供应商编号` INT NOT NULL AUTO_INCREMENT, + `设备编号` VARCHAR(10) NOT NULL, + `供应编号` VARCHAR(10) NOT NULL, + PRIMARY KEY (`设备供应商编号`), + FOREIGN KEY (`设备编号`) REFERENCES `设备`(`设备编号`), + FOREIGN KEY (`供应编号`) REFERENCES `供应商`(`供应编号`) +); +INSERT INTO `设备供应商`(`设备供应商编号`, `设备编号`, `供应编号`) VALUES (1, 'DEV001', 'SUP001'); +INSERT INTO `设备供应商`(`设备供应商编号`, `设备编号`, `供应编号`) VALUES (2, 'DEV002', 'SUP002'); +INSERT INTO `设备供应商`(`设备供应商编号`, `设备编号`, `供应编号`) VALUES (3, 'DEV003', 'SUP003'); +INSERT INTO `设备供应商`(`设备供应商编号`, `设备编号`, `供应编号`) VALUES (4, 'DEV004', 'SUP004'); +INSERT INTO `设备供应商`(`设备供应商编号`, `设备编号`, `供应编号`) VALUES (5, 'DEV005', 'SUP005'); +INSERT INTO `设备供应商`(`设备供应商编号`, `设备编号`, `供应编号`) VALUES (6, 'DEV006', 'SUP006'); +INSERT INTO `设备供应商`(`设备供应商编号`, `设备编号`, `供应编号`) VALUES (7, 'DEV007', 'SUP007'); +INSERT INTO `设备供应商`(`设备供应商编号`, `设备编号`, `供应编号`) VALUES (8, 'DEV008', 'SUP008'); +INSERT INTO `设备供应商`(`设备供应商编号`, `设备编号`, `供应编号`) VALUES (9, 'DEV009', 'SUP009'); +INSERT INTO `设备供应商`(`设备供应商编号`, `设备编号`, `供应编号`) VALUES (10, 'DEV010', 'SUP010'); diff --git a/sql脚本/设备供应商信息(视图).sql b/sql脚本/设备供应商信息(视图).sql new file mode 100644 index 0000000..3e26f17 --- /dev/null +++ b/sql脚本/设备供应商信息(视图).sql @@ -0,0 +1,15 @@ +CREATE VIEW 设备供应商信息 AS +SELECT 设备.*, 供应商.供应商, 供应商.联系电话 +FROM 设备 +JOIN 供应商 ON 设备.供应编号 = 供应商.供应编号; +INSERT INTO `设备供应商信息`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`, `供应商`, `联系电话`) VALUES ('DEV001', '在线', '优秀', 0.95, 'SUP001', '供应商A', '1234567890'); +INSERT INTO `设备供应商信息`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`, `供应商`, `联系电话`) VALUES ('DEV002', '下线', '良好', 0.70, 'SUP002', '供应商B', '0987654321'); +INSERT INTO `设备供应商信息`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`, `供应商`, `联系电话`) VALUES ('DEV003', '在线', '一般', 0.60, 'SUP003', '供应商C', '1122334455'); +INSERT INTO `设备供应商信息`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`, `供应商`, `联系电话`) VALUES ('DEV004', '报废', '差', 0.30, 'SUP001', '供应商A', '1234567890'); +INSERT INTO `设备供应商信息`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`, `供应商`, `联系电话`) VALUES ('DEV005', '在线', '优秀', 0.85, 'SUP004', '供应商D', '5566778899'); +INSERT INTO `设备供应商信息`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`, `供应商`, `联系电话`) VALUES ('DEV006', '下线', '良好', 0.75, 'SUP005', '供应商E', '9988776655'); +INSERT INTO `设备供应商信息`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`, `供应商`, `联系电话`) VALUES ('DEV007', '在线', '一般', 0.65, 'SUP005', '供应商E', '9988776655'); +INSERT INTO `设备供应商信息`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`, `供应商`, `联系电话`) VALUES ('DEV008', '报废', '差', 0.35, 'SUP006', '供应商F', '5544332211'); +INSERT INTO `设备供应商信息`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`, `供应商`, `联系电话`) VALUES ('DEV009', '在线', '优秀', 0.95, 'SUP007', '供应商G', '1199887766'); +INSERT INTO `设备供应商信息`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`, `供应商`, `联系电话`) VALUES ('DEV010', '维修', '良好', 0.80, 'SUP008', '供应商H', '5533221199'); +INSERT INTO `设备供应商信息`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`, `供应商`, `联系电话`) VALUES ('DEV012', '在线', '优秀', 0.90, 'SUP001', '供应商A', '1234567890'); diff --git a/sql脚本/设备日志(触发器).sql b/sql脚本/设备日志(触发器).sql new file mode 100644 index 0000000..8d080d2 --- /dev/null +++ b/sql脚本/设备日志(触发器).sql @@ -0,0 +1,19 @@ +①DELIMITER // +CREATE TRIGGER after_device_insert +AFTER INSERT ON 设备 +FOR EACH ROW +BEGIN + INSERT INTO 设备日志 (日志内容, 操作时间) + VALUES (CONCAT('新设备插入,设备编号:', NEW.设备编号), NOW()); +END; + +// +INSERT INTO `设备日志`(`日志ID`, `日志内容`, `操作时间`) VALUES (1, '新设备插入,设备编号:DEV011', '2024-12-21 20:08:33'); +INSERT INTO `设备日志`(`日志ID`, `日志内容`, `操作时间`) VALUES (2, '新设备插入,设备编号:DEV012', '2024-12-24 19:21:48'); +INSERT INTO `设备日志`(`日志ID`, `日志内容`, `操作时间`) VALUES (3, '新设备插入,设备编号:DEV011', '2024-12-24 20:08:05'); +INSERT INTO `设备日志`(`日志ID`, `日志内容`, `操作时间`) VALUES (4, '新设备插入,设备编号:DEV011', '2024-12-24 20:19:59'); +INSERT INTO `设备日志`(`日志ID`, `日志内容`, `操作时间`) VALUES (5, '新设备插入,设备编号:DEV012', '2024-12-24 20:21:53'); +INSERT INTO `设备日志`(`日志ID`, `日志内容`, `操作时间`) VALUES (6, '新设备插入,设备编号:DEV011', '2024-12-24 20:35:18'); +INSERT INTO `设备日志`(`日志ID`, `日志内容`, `操作时间`) VALUES (7, '新设备插入,设备编号:DEV012', '2024-12-24 20:36:35'); +INSERT INTO `设备日志`(`日志ID`, `日志内容`, `操作时间`) VALUES (8, '新设备插入,设备编号:DEV011', '2024-12-24 21:03:14'); +INSERT INTO `设备日志`(`日志ID`, `日志内容`, `操作时间`) VALUES (9, '新设备插入,设备编号:DEV012', '2024-12-24 21:03:53'); diff --git a/sql脚本/设备维护记录顺序.sql b/sql脚本/设备维护记录顺序.sql new file mode 100644 index 0000000..df3f6c9 --- /dev/null +++ b/sql脚本/设备维护记录顺序.sql @@ -0,0 +1,18 @@ +CREATE TABLE `设备维护记录顺序` ( + `维护编号` INT NOT NULL AUTO_INCREMENT, + `设备编号` VARCHAR(20) NOT NULL, + `开始时间` DATE NOT NULL, + `结束时间` DATE NOT NULL, + `维护内容` TEXT NOT NULL, + PRIMARY KEY (`维护编号`) +); +INSERT INTO `设备维护记录顺序`(`维护编号`, `设备编号`, `开始时间`, `结束时间`, `维护内容`) VALUES (1, '设备DEV001', '2023-10-1', '2023-10-2', '春季全面检查,包括清洁和润滑'); +INSERT INTO `设备维护记录顺序`(`维护编号`, `设备编号`, `开始时间`, `结束时间`, `维护内容`) VALUES (2, '设备DEV002', '2023-10-2', '2023-10-2-12', '更换磨损部件,校准传感器'); +INSERT INTO `设备维护记录顺序`(`维护编号`, `设备编号`, `开始时间`, `结束时间`, `维护内容`) VALUES (3, '设备DEV003', '2023-10-1', '2023-10-3', '软件更新,测试新功能'); +INSERT INTO `设备维护记录顺序`(`维护编号`, `设备编号`, `开始时间`, `结束时间`, `维护内容`) VALUES (4, '设备DEV004', '2023-11-1-4', '2023-11-1-14', '检查安全装置,进行必要的维修'); +INSERT INTO `设备维护记录顺序`(`维护编号`, `设备编号`, `开始时间`, `结束时间`, `维护内容`) VALUES (5, '设备DEV005', '2023-12-1', '2023-12-5', '调整设备参数,优化性能'); +INSERT INTO `设备维护记录顺序`(`维护编号`, `设备编号`, `开始时间`, `结束时间`, `维护内容`) VALUES (6, '设备DEV006', '0000', '0000', ''); +INSERT INTO `设备维护记录顺序`(`维护编号`, `设备编号`, `开始时间`, `结束时间`, `维护内容`) VALUES (7, '设备DEV007', '0000', '0000', ''); +INSERT INTO `设备维护记录顺序`(`维护编号`, `设备编号`, `开始时间`, `结束时间`, `维护内容`) VALUES (8, '设备DEV008', '0000', '0000', ''); +INSERT INTO `设备维护记录顺序`(`维护编号`, `设备编号`, `开始时间`, `结束时间`, `维护内容`) VALUES (9, '设备DEV009', '0000', '0000', ''); +INSERT INTO `设备维护记录顺序`(`维护编号`, `设备编号`, `开始时间`, `结束时间`, `维护内容`) VALUES (10, '设备DEV010', '0000', '0000', ''); diff --git a/sql脚本/高利用率设备(视图).sql b/sql脚本/高利用率设备(视图).sql new file mode 100644 index 0000000..95916fa --- /dev/null +++ b/sql脚本/高利用率设备(视图).sql @@ -0,0 +1,11 @@ +-- 视图:设备利用率高于0.7的设备 +CREATE VIEW 高利用率设备 AS +SELECT * +FROM 设备 +WHERE 利用率 >0.7; +INSERT INTO `高利用率设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV001', '在线', '优秀', 0.95, 'SUP001'); +INSERT INTO `高利用率设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV005', '在线', '优秀', 0.85, 'SUP004'); +INSERT INTO `高利用率设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV006', '下线', '良好', 0.75, 'SUP005'); +INSERT INTO `高利用率设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV009', '在线', '优秀', 0.95, 'SUP007'); +INSERT INTO `高利用率设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV010', '维修', '良好', 0.80, 'SUP008'); +INSERT INTO `高利用率设备`(`设备编号`, `状态`, `性能与效率`, `利用率`, `供应编号`) VALUES ('DEV012', '在线', '优秀', 0.90, 'SUP001');