数据库中3个表(只是个例子)
1表中有 学号、姓名、年龄、性别、班级、班主任
2表中有 学号、姓名、班级、语文分数、数学分数、英语分数、
3表中有 学好、姓名、班级、综合科目分数SQL中何种功能可以达到:
1.在向1号表中增加数据时,如2和3表中有对应的学号则自动在2,3表中填写姓名,班级。最基础的方法是在3张表中同时写入姓名,班级,但肯定慢。那么这样的操作如何完成?
2.在向1号表中增加新数据时,如果不允许加入重复数据的话,如何操作?难道先读遍1表?select里面发现有这条数据通知客户端?我印象中可以写触发时间来完成这样的功能吧?两个都是基础问题,麻烦占用各位一点点时间解答,最好给段事例代码。谢谢各位!
1表中有 学号、姓名、年龄、性别、班级、班主任
2表中有 学号、姓名、班级、语文分数、数学分数、英语分数、
3表中有 学好、姓名、班级、综合科目分数SQL中何种功能可以达到:
1.在向1号表中增加数据时,如2和3表中有对应的学号则自动在2,3表中填写姓名,班级。最基础的方法是在3张表中同时写入姓名,班级,但肯定慢。那么这样的操作如何完成?
2.在向1号表中增加新数据时,如果不允许加入重复数据的话,如何操作?难道先读遍1表?select里面发现有这条数据通知客户端?我印象中可以写触发时间来完成这样的功能吧?两个都是基础问题,麻烦占用各位一点点时间解答,最好给段事例代码。谢谢各位!
查询的时候如何操作。
比如我想查学号是001学生的全部成绩。
我现在的操作是分别select3个表。然后填到一个控件中。正确的运行速度最快的方式是什么?
select a.学号, a.姓名, b.班级, b.语文分数, b.数学分数, b.英语分数, c.综合科目分数
from 表1 a, 表2 b, 表3 c
where a.学号 = b.学号 and a.学号 = c.学号
select a.学号, a.姓名, b.班级, b.语文分数, b.数学分数, b.英语分数, c.综合科目分数
from 表1 a, 表2 b, 表3 c
where a.学号 = b.学号 and a.学号 = c.学号 and a.学号 = 001
1.create trigger tri_trm on 表1
for insert
as
update 表2 set 表2.姓名=a.姓名.... from 表2 join inserted a
on 表2.学号=a.学号
update 表3 set 表3.姓名=a.姓名.... from 表3 join inserted a
on 表3.学号=a.学号2.insert into 表1 select distinct * from 数据表
(两个数据字段和类型都要一致)
create trigger tg on 表1
for insert,update
as
update 表2
set 表2.姓名=a.姓名,
set 表2.班级=a.班级
from 表2
left join inserted a
on 表2.学号=a.学号 update 表3
set 表3.姓名=a.姓名,
set 表3.班级=a.班级
from 表3
left join inserted a
on 表3.学号=a.学号第2个问题可以添加主键约束来限制字段是唯一的.