mysql - 数据库:如何创建更新级联表并查询数据?

标签 mysql database cascade

我想创建一个有两个表的数据库。我想在两个表之间创建更新级联关系。如果 EMPLOYEE 中的 SNAME 发生更改,那么 WORKREPORT 也会更改他的 SNAME。

EMPLOYEE:
SNO      SNAME           SPASSWORD     SEX      BDATE           HEIGHT    BTITLE
2014      boss            12345        male      1987-06-02       180       Manager
2015      Tom             1234567      male      1987-06-05       180       Employee


WORKREPORT
   SNO       SNAME             SDATA         SCHECKLIST       SIMAGE
   2014      boss            1987-06-02      abc               afafafaf
   2015      Tom             1987-06-05      affafa            afafafaf

我的代码运行得很好。我的问题是:我不知道如何从“WORKREPORT”中只查询员工的信息(而不是经理),假设有很多员工。我应该怎么办?我关于设计“WORKREPORT”的说法正确吗? 这是我的代码:

CREATE database  if not exists cm360_cm360_1;
use cm360_cm360_1;
CREATE TABLE IF NOT EXISTS EMPLOYEE(SNO VARCHAR(7) NOT NULL,  SNAME VARCHAR(8) NOT NULL,  SPASSWORD VARCHAR(11) NOT NULL,SEX VARCHAR(8) NOT NULL,  BDATE DATETIME NOT NULL,  HEIGHT DEC(5,2) DEFAULT 000.00,BTitle VARCHAR(15) NOT NULL,  PRIMARY KEY(SNO), UNIQUE KEY (SNAME))ENGINE=InnoDB ;

SET SQL_SAFE_UPDATES=0;
INSERT INTO EMPLOYEE VALUES (2014,'boss','12345','male','2014-6-10 11:00:00',160.00,'Manager');
INSERT INTO EMPLOYEE VALUES (2015,'Tom','1234567','male','2014-6-10 12:00:00',160.00,'Employee');
SELECT * FROM EMPLOYEE;


CREATE TABLE IF NOT EXISTS WORKREPORT(SNO VARCHAR(7) NOT NULL,  SNAME VARCHAR(8) NOT NULL,SDATA DATETIME ,  SCHECKLIST VARCHAR(150),SIMAGE VARCHAR(20),FOREIGN KEY (SNO) REFERENCES EMPLOYEE (SNO) ON UPDATE CASCADE,FOREIGN KEY(SNAME) REFERENCES EMPLOYEE (SNAME) ON UPDATE CASCADE ) ENGINE=InnoDB;


INSERT INTO WORKREPORT VALUES (2014,'boss',' 2014-6-10 14:38:59','abc','afdsfdfds');
INSERT INTO WORKREPORT VALUES (2015,'Tom',' 2014-6-10 15:38:59','abc','afdsfdfds');
SELECT * FROM  WORKREPORT order by SDATA ASC;

UPDATE WORKREPORT SET SCHECKLIST='elevator;floor' WHERE SNAME='hanlu2';
delete from workreport WHERE  SIMAGE='N/A' AND SNAME='enlan';

最佳答案

如果您想获取员工工作报告信息,下面的查询应该有效。

SELECT WORKREPORT.* 
FROM WORKREPORT, EMPLOYEE 
WHERE EMPLOYEE.SNO = WORKREPORT.SNO 
AND EMPLOYEE.BTITLE = "Employee"

关于mysql - 数据库:如何创建更新级联表并查询数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24467025/

相关文章:

c++ - 在 blackberry 10 cascade 上创建一个 http 通信

java - JPA+Hibernate - 实体关系中的循环 - 级联策略

mysql - sql查询从记录中删除 "/"斜杠

mysql - 在 Firebase 中发送通知之前 Node Js 查询 MySql

mysql - 在数据库与文件系统中存储图像(这是一个有效的用例吗?)

php - codeigniter 加密在新服务器上返回错误

SQL Server : update new record on insert

mysql - mysql db 用户的用户权限

java - 如何在 Realm 中获取父对象

database - Django:级联 on_delete 选项不起作用