表的更新是不是只能通过主键来更新,如果不设主键,那么更新是依据哪个字段呢?
这可能是一个初级问题,但是我确实不明白.
按道理说,表的更新是通过主键来进行的,因为主键的作用就是惟一性,只有惟一性的字段才能做为更新的标识字段.
但是
1.当表没有设置主键时,是依据哪个字段来更新的呢?
2.如果一个表设置了一个主键,同时又设置一个惟一索引字段,这时更新时依据哪个字段呢?
3.如果一个表设置了一个聚集索引字段(但是这个字段不做主键),同时又设了一个主键(主键所依据的索引是非聚集索引),这是一种特别的情况,但是也有可能出现呀,这种情况下,更新记录时,依据的是哪个字段呢?
这可能是一个初级问题,但是我确实不明白.
按道理说,表的更新是通过主键来进行的,因为主键的作用就是惟一性,只有惟一性的字段才能做为更新的标识字段.
但是
1.当表没有设置主键时,是依据哪个字段来更新的呢?
2.如果一个表设置了一个主键,同时又设置一个惟一索引字段,这时更新时依据哪个字段呢?
3.如果一个表设置了一个聚集索引字段(但是这个字段不做主键),同时又设了一个主键(主键所依据的索引是非聚集索引),这是一种特别的情况,但是也有可能出现呀,这种情况下,更新记录时,依据的是哪个字段呢?
你更新的条件可以看where 后面的条件比如说 在学生表里 学号是主键 里面还是姓名 课程 以及对应的课程号
我现在想更新所有学生的英语成绩为90fen
我只要这样
update student
set grade=90
where cname='英语'--看这
这个例子就没用到主键
2.还是根据where子句决定的。
3.还是根据where子句决定的。
最直观的方法查看一下执行计划就知道了,多换几个条件多看几次。
无主键表更新数据时,首先看你要更新哪些数据--where子句的限定效果。
2.还是看你写的条件是什么.
3.还是那句话,条件,也就是WHERE后面的条件,没有WHERE条件就是更新SET后面字段的全部内容.
如果在企业管理器中删除一条记录,则必须要有一个惟一字段,否则是无法更新成功的,这种情况下,我估计是以簇集索引字段,其实以哪个字段都无所谓,能确定惟一性就可以。