SQL表继承场景下关联User的Student、Lecture表增查语句求助
插入数据操作
因为你用的是类表继承的实现方式,子表的UserID依赖父表User的主键,所以必须先插入父表记录,再插入对应子表记录,父表的type字段可以用来标记用户类型,比如约定1=学生、2=讲师,避免数据混乱。
插入学生记录示例
-- 先插入User父表 INSERT INTO User (UserID, Name, type) VALUES (1, '张三', 1); -- 再插入Student子表,UserID要和父表一致 INSERT INTO Student (UserID, marks) VALUES (1, 92);
插入讲师记录示例
-- 先插入User父表 INSERT INTO User (UserID, Name, type) VALUES (2, '王教授', 2); -- 再插入Lecture子表,UserID要和父表一致 INSERT INTO Lecture (UserID, salary) VALUES (2, 15000);
提示:如果你的数据库把
User识别为保留关键字,表名需要用反引号包裹,例如INSERT INTO `User` (...)
查询数据操作
查询所有学生的完整信息
SELECT u.UserID, u.Name, s.marks FROM User u INNER JOIN Student s ON u.UserID = s.UserID WHERE u.type = 1;
查询所有讲师的完整信息
SELECT u.UserID, u.Name, l.salary FROM User u INNER JOIN Lecture l ON u.UserID = l.UserID WHERE u.type = 2;
同时查询所有用户(区分类型展示对应字段)
SELECT u.UserID, u.Name, CASE u.type WHEN 1 THEN '学生' WHEN 2 THEN '讲师' END AS 身份, s.marks AS 学生成绩, l.salary AS 讲师薪资 FROM User u LEFT JOIN Student s ON u.UserID = s.UserID LEFT JOIN Lecture l ON u.UserID = l.UserID;
内容的提问来源于stack exchange,提问作者Melvin
相关产品推荐
相关产品推荐

