
楼上的几位都解释了主键的作用,我主要说下设和不设有啥区别:
比如:
张三的身份z号为123456
李四的身份z号为012345
设置身份z号为主键后,那么数据库就约束你身份z号不能重复,不能为空,那么:
你向数据库表插入王五的身份z号为123456,则提示你主键不能重复之类的错误;
也许你要问,那就是保证不重复吗?主键可以保证不重复,并且不能为空,如果仅仅保证不重复的效果,可以只设置为索引就行了;
最后,主键可以是单字段主键,也可以2个或多个字段合并在一起形成联合主键。
现在的数据库大部分都是关系型数据库,既然是关系型数据库。那么一定会有一定的标识来表示数据库之间的关系。这个关系就是以主外键来标识的。关系主要分一对一,一对多,和多对多的关系
。一对一的关系就是一个两个表,一个存的是登陆信息表。另一个存人员信息表。假定一个人只有一个登陆账号,那么两个表就是一对一的关系。那么最简单的设置约束的方式就是另一张表的主键也是外键。这样就一对一对应起来。但是大部分的关系都是一对多和多对多。先回答你的问题,一张表如果某一列是外键,那么他相对引用的另一张表的列中的数据
一定是唯一的。很简单的道理,如果不唯一,数据库不知道具体关联到是哪个行,哪条数据。大部分在设计数据库时,除非对数据库有特殊要求,基本都是不设置主外键的(项目中)。因为设置主外键后,数据库进行更改就会受到限制。这种关系完全可以在程序中来体现
自动编号字段不需要你写入,你只要添加其它字段就行了,自动编号字段系统会自动添加的
对补充的答复:
出现你所说的问题,说明你在做库结构设计的时候,仅设置了主键不能为空,并没有设为自动编号
不是一句SQL能够做到,而需要写个脚本,通过循环使用index_col函数测试字段是否属于主键来实现,具体写法可以参考sp_helpindex学习得到。 use sybsystemprocs execute sp_helptext sp_helpindex 列出sp_helpindex的原始脚本
以上就是关于数据库表中的主键有什么作用设和不设有什么区别全部的内容,包括:数据库表中的主键有什么作用设和不设有什么区别、SQL数据库主外键问题(数据库表的主外键)、asp 表单写入数据库的主键是自动编号的字段等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)