首页 > 运维 > 知识 > 数据库主键用哪些,Access数据库主键类型

数据库主键用哪些,Access数据库主键类型

来源:整理 时间:2024-07-01 15:24:56 编辑:黑码技术 手机版

本文目录一览

1,Access数据库主键类型

主键就是表中能够唯一标识一个记录的字段,它不允许为空,也不允许重复。
打开数据库文件,然后在表上点右键,选择 设计视图 然后在点右键就可以设置主键了

Access数据库主键类型

2,请问数据库中的主键是啥东东唯一标识一行具体是什么

主键 内容1 abc2 def3 ghi已经有 2 这个主键了下面的数据就不会再出现2这个主键了...比如你要找一条数据....可表里有1万多条..怎么办呢..找这个主键就行了..因为他是唯一的...这个数字就代表了这行数据
就是插入的内容只能唯一,其他表行的这一列的数据不能和它重复,且它也不能为空,它的作用大多做为一个标识符,就象身份证号码一样,身份证号码有重复的吗?而且也没有空的
就是区别这一行数据和其他行数据的标识,简单点说,这一行数据和其他行数据可能会有很多重复的数据,如果不用一个唯一标识符来标识的话,就没办法区分你要用的要查询的是哪一行数据。就像人一样,很多同名同姓的人,甚至在同一个学校同一个班同一个小组,这怎么区分呢,就用学号来区分,学号就是学生的唯一标识符,就是学生信息的主键啦。
数据类型选择,自动编号新值选择:递增

请问数据库中的主键是啥东东唯一标识一行具体是什么

3,实际大网站中mysql的主键用int还是guid

使用INT做主键的优点: 1、需要很小的数据存储空间,仅仅需要4 byte 。 2、insert和update操作时使用INT的性能比GUID好,所以使用int将会提高应用程序的性能。 3、index和Join 操作,int的性能最好。 4、容易记忆。 5、支持通过函数获取最新的值,如:Scope_Indentity() 。使用INT做主键的缺点 1、如果经常有合并表的操作,就可能会出现主键重复的情况。 2、使用INT数据范围有限制。如果存在大量的数据,可能会超出INT的取值范围。 3、很难处理分布式存储的数据表。使用GUID做主键的优点: 1、它是独一无二的。 2、出现重复的机会少。 3、适合大量数据中的插入和更新操作。 4、跨服务器数据合并非常方便。使用GUID做主键的缺点: 1、存储空间大(16 byte),因此它将会占用更多的磁盘大小。 2、很难记忆。join操作性能比int要低。 3、没有内置的函数获取最新产生的guid主键。 4、GUID做主键将会添加到表上的所以其他索引中,因此会降低性能。总结: 上面列出了GUID和INT两种数据类型做主键优缺点。我觉得,对于大数据量,建议使用guid做主键。而使用int会得到最佳的性能。

实际大网站中mysql的主键用int还是guid

4,数据库中什么字段可设为主键

主键是数据表的唯一索引,比如学生表里有学号和姓名,姓名可能有重名的,但学号确是唯一的,你要从学生表中搜索一条纪录如查找一个人,就只能根据学号去查找,这才能找出唯一的一个,这就是主键主键值可以改变 但是不能重复!
在我看来,这种设计,是为了保证,在各种数据库上面,都兼容.因为对于 自增id 的处理。各个厂商的实现方式都不一样例如 sql server 是 identity 实现自增oracle 是 sequence + 触发器 实现自增mysql 是 auto_increment 实现自增对于一家软件公司来说,如果他的产品,仅仅只能运行在 sql server 数据库上。那么如果客户已经购买了 oracle , 你要客户购买你的软件,然后再买套 sql server。是不现实的。如果你的设计中,过分的使用了数据库的特性,那么,对于你的产品。比如 for sql server 版的 与 for oracle 版的。差异的地方,就很多,代码修改量也大。出错率也高。比如某个功能 sql server 上面运行正常。但是 oracle 上面出错了。结果很可能就是sql server 里面的 identity 处理正常。很可能 oracle 那里,触发器 或者 sequence 忘记创建, 或者创建失败了。最后导致错误。但是每个表字段id不设置为主键 建立一个tableid 有个2个字段 tablename , id这种方式,对所有的 数据库, 都支持。不需要特别的设定。我的印象中,好像 java 开发中,使用的 hibernate 里面, 就是这么设定的。有个表专门存储 表名 与 id 的。而且 hibernate 有它特有的处理机制的。如果非常频繁的插入操作。比如现在 a 表的 id 是 100然后同一时刻,插入了 20条记录那么 处理完毕后, a表的 id 直接由 100 变为 120而不是 从 100 开始,检索20次,更新 20次, 更新到 120。这样也没有性能方面上的问题。
使用primary key(字段1, 字段2, ...)的语句进行设置。一个表中最多只能有一个主键,也可以没有。一个主键既可以是单一的字段构成,也可以是多个字段联合构成,如果是单一字段,只需在该字段后面标记primary key即可,如果是多个字段联合构成,则需要采用最开始介绍的那种方式设置。在部分数据库的图形化工具中(如access、sql server等),在表设计的界面上,可以按住ctrl键,然后选择要设置为联合主键的字段,都选好之后再按右键选择“设置为主键”。

5,mysql数据库表用什么做主键

关系型数据库的特点在于多个表之间使用关系联系起来这样可以显著降低数据库的容量,并提高维护效率主键并不是必须的但是增加主键对单表查询的效率提升很高所以从原理上来说只要该字段绝对不会重复那么使用任何类型的字段,比如你上面所说的人名也是可以的但是如果考虑到与其它表的相互连接使用人名的可操作性就不是很好所以,第一点,建议你另外增加一个自动编号的字段作为id,用来做主键第二点,关系型数据库的特点就是多表之间有冗余,但是实际上是降低了整个数据库的维护难度,鉴于你看起来对关系型数据库原理不清楚更建议你先把关系型数据库原理再看看
1、主键定义 表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。2、主键作用 1)保证实体的完整性; 2)加快数据库的操作速度 3) 在表中添加新记录时,数据库会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。 4) 数据库自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。3、主键的必要性 在有些数据库中,虽然主键不是必需的,但最好为每个表都设置一个主键,不管是单主键还是复合主键。它存在代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,以及本记录的修改与删除。4、主键的选择 1)编号作主键 此方法就是采用实际业务中的唯一字段的“编号”作为主键设计,这在小型的项目中是推荐这样做的,因为这可以使项目比较简单化,但在使用中却可能带来一些麻烦,比如要进行“编号修改”时,可能要涉及到很多相关联的其他表 2)自动编号主键 这种方法也是很多人在使用的,就是新建一个ID字段,自动增长,非常方便也满足主键的原则 a、优点:数据库自动编号,速度快,而且是增量增长,聚集型主键按顺序存放,对于检索非常有利;数字型的,占用空间小,易排序,在程序中传递也方便;如果通过非系统增加记录(比如手动录入,或是用其他工具直接在表里插入新记录,或老系统数据导入)时,非常方便,不用担心主键重复问题。 b、缺点:其实缺点也就是来自其优点,就是因为自动增长,在手动要插入指定ID的记录时会显得麻烦,尤其是当系统与其他系统集成时,需要数据导入时,很难保证原系统的ID不发生主键冲突(前提是老系统也是数字型的);如果其他系统主键不是数字型那就麻烦更大了,会导致修改主键数据类型了,这也会导致其他相关表的修改,后果同样很严重;就算其他系统也是数字型的,在导入时,为了区分新老数据,可能想在老数据主键前统一加一个“o”(old)来表示这是老数据,那么自动增长的数字型又面临一个挑战。 3)Max加一 由于自动编号存在那些问题,所以有些人就采用自己生成,同样是数字型的,只是把自动增长去掉了,采用在Insert时,读取Max值后加一,这种方法可以避免自动编号的问题,但也存在一个效率问题,如果记录非常大的话,那么Max()也会影响效率的;更严重的是并发性问题,如果同时有两人读到相同的Max后,加一后插入的ID值会重复,这已经是有经验教训的了。 4)自制加一 考虑Max加一的效率后,有人采用自制加一,也就是建一个特别的表,字段为:表名,当前序列值。这样在往表中插入值时,先从此表中找到相应表的最大值后加一,进行插入,有人可能发现,也可能会存在并发处理,这个并发处理,可以采用lock线程的方式来避免,在生成此值的时,先Lock,取到值以后,再unLock出来,这样不会有两人同时生成了。这比Max加一的速度要快多了。但同样存在一个问题:在与其他系统集成时,脱离了系统中的生成方法后,很麻烦保证自制表中的最大值与导入后的保持一致,而且数字型都存在上面讲到的“o”老数据的导入问题。因此在“自制加一”中可以把主键设为字符型的。字符型的自制加一中应该字符型主键可以应付很多我们意想不到的情况。 5)GUID主键 目前一个比较好的主键是采用GUID,推荐主键还是字符型的,但值由GUID生成,GUID是可以自动生成,也可以程序生成,而且键值不可能重复,可以解决系统集成问题,几个系统的GUID值导到一起时,也不会发生重复,就算有“o”老数据也可以区分,而且效率很高,在.NET里可以直接使用System.Guid.NewGuid()进行生成,在SQL里也可以使用NewID()生成。优点是:同IDENTITY 列相比,uniqueidentifier 列可以通过NewID() 函数提前得知新增加的行ID,为应用程序的后续处理提供了很大方便。a、优点:便于数据库移植,其它数据库中并不一定具有IDENTITY 列,而Guid 列可以作为字符型列转换到其它数据库中,同时将应用程序中产生的GUID 值存入数据库,它不会对原有数据带来影响。便于数据库初始化,如果应用程序要加载一些初始数据,IDENTITY 列的处理方式就比较麻烦,而uniqueidentifier 列则无需任何处理,直接用T-SQL 加载即可。便于对某些对象或常量进行永久标识,如类的ClassID,对象的实例标识,UDDI 中的联系人、服务接口、tModel标识定义等。b:缺点是:GUID 值较长,不容易记忆和输入,而且这个值是随机、无顺序的GUID 的值有16 个字节,与其它那些诸如4 字节的整数相比要相对大一些。这意味着如果在数据库中使用uniqueidentifier 键,可能会带来两方面的消极影响:存储空间增大;索引时间较慢。
可以用自动标示做。每增加1个人的名字,自动标示就自动增加数字1,永远都不会重复,就算你把其中一个删除掉了,它的标示数字也不会在出现,做到了永远不重复。
$con=mysql_connect("localhost","user1","testing");if(!$con)if(mysql_query("create database my_db",$con))echo "创建数据库成功";}else$table="create table person(personid int not null auto_increment,primery key(personid),fristname varchar(15),lastname varchar(15),age int)";mysql_query($table,$con);>利用$table创建主键后 ,运行时候在数据库中 无法建立表 ,没有加主键可以建立表?那位可以解决一下。
文章TAG:数据库主键用哪些Access数据库主键类型

最近更新

相关文章

677