数据库表中的主键有什么作用设和不设有什么区别

数据库表中的主键有什么作用设和不设有什么区别,第1张

数据库主键

主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。

作用:

1)保证实体的完整性;

2)加快数据库的 *** 作速度

3) 在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。

4) ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

在有些数据库中,虽然主键不是必需的,但最好为每个表都设置一个主键,不管是单主键还是复合主键。它存在代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,以及本记录的修改与删除。

主键的无意义性

在开发过程中,读者可能会看到将一些表使用有意义的字段表示主键,例如“用户登录信息表”将“登录名”(英文名)作为主键,“订单表”中将“订单编号”作为主键,如此设计主键一般都是没什么问题,因为将这些主键基本不具有“意义更改”的可能性。但是,也有一些例外的情况,例如“订单表”需要支持需求“订单可以作废,并重新生成订单,而且订单号要保持原订单号一致”,那将“订单编号”作为主键就满足不了要求了。因此读者在使用具有实际意义的字段作为主键时,需要考虑是否存在这种可能性。

主键的选择

①编号作主键

此方法就是采用实际业务中的唯一字段的“编号”作为主键设计,这在小型的项目中是推荐这样做的,因为这可以使项目比较简单化,但在使用中却可能带来一些麻烦,比如要进行“编号修改”时,可能要涉及到很多相关联的其他表,就像黎叔说的“后果很严重”;还有就是上面提到的“业务要求允许编号重复时”,我们再那么先知,都无法知道业务将会修改成什么

②自动编号主键

这种方法也是很多朋友在使用的,就是新建一个ID字段,自动增长,非常方便也满足主键的原则,优点是:数据库自动编号,速度快,而且是增量增长,聚集型主键按顺序存放,对于检索非常有利;数字型的,占用空间小,易排序,在程序中传递也方便;如果通过非系统增加记录(比如手动录入,或是用其他工具直接在表里插入新记录,或老系统数据导入)时,非常方便,不用担心主键重复问题。

缺点:其实缺点也就是来自其优点,就是因为自动增长,在手动要插入指定ID的记录时会显得麻烦,尤其是当系统与其他系统集成时,需要数据导入时,很难保证原系统的ID不发生主键冲突(前提是老系统也是数字型的);如果其他系统主键不是数字型那就麻烦更大了,会导致修改主键数据类型了,这也会导致其他相关表的修改,后果同样很严重;就算其他系统也是数字型的,在导入时,为了区分新老数据,可能想在老数据主键前统一加一个“o”(old)来表示这是老数据,那么自动增长的数字型又面临一个挑战。

describe table name

sample

mysql> describe shop ;

+---------+--------------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+---------+--------------------------+------+-----+---------+-------+

| article | int(4) unsigned zerofill | NO | PRI | 0000 | |

| dealer | char(20) | NO | PRI | | |

| price | double(16,0) | NO | MUL | 0 | |

+---------+--------------------------+------+-----+---------+-------+

3 rows in set (000 sec)

一般比较规范的建表顺序,都把主键放第一行,当然例外也很多

主键一般在

应用数据库中以

xx_id

命名

一般在数据库中

主键type是

primary

如果实在区分不了,备份好表结构和数据

以后

一个个删,最后剩下的不是主键就是外键

数据库主键的意思是指一个列或者是多列的组合,它的值能唯一地标识表中的每一行,它的作用是可强制表的实体完整性。主键用于其他表的外键关联,以及本记录的修改与删除。在创建以及更改表的时候可以通过定义 PRIMARY KEY 约束来进行主键的创建。

扩展资料:

数据库主键的作用如下:

1、可以保证实体的完整性。

2、加快数据库的 *** 作速度。

3、在表中添加新记录时,DBMS会自动检查新记录的主键值。

4、DBMS自动按主键值的顺序显示表中的记录。

参考资料:

百度百科-数据库主键

每张表理论中都有一个主键值ID,也可以作为索引,

使用T-SQL语句创建SQL Server索引的语法:

CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]

INDEX index_name

ON table_name (column_name…)

[WITH FILLFACTOR=x]

1、UNIQUE表示唯一索引,可选

2、CLUSTERED、NONCLUSTERED表示聚集索引还是非聚集索引,可选

3、FILLFACTOR表示填充因子,指定一个0到100之间的值,该值指示索引页填满的空间所占的百分比

没太明白你AB的具体设置 还有表里数据的设置 不过你的意思我明白了 这样吧 假设你有两张表 表AA和表BB 然后X和Y是两个表里都有的属性 假设符合两表的X相等并且Y也相等这个条件时,能唯一确定一条记录 那么就可以写

select AX,AY,BX,BY from AA A,BB B

where AX=BX and AY=BY;

select里也可以加别的表里的属性段 你想查的东东~

以上就是关于数据库表中的主键有什么作用设和不设有什么区别全部的内容,包括:数据库表中的主键有什么作用设和不设有什么区别、如何查看mysql中一张表的主键、字段是否为空等信息、数据库中的 如何判断哪个字段是主键等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9877122.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存