主键的作用:
1)保证实体的完整性;
2)加快数据库的操作速度
3)在表中添加新记录时,数据库会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。
4) 数据库自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

主键不是非要不可,可以从:

1.是否满足业务要求

2.数据查询效率(主键可以提高查询效率,当然合理的索引替代也可以)

这两个角度权衡是否需要主键。

这要看表的功能. 利用来存储大量数据,并需要经常查询的,建立主键可以加快查询效率从而降低服务器的负担. 如无此需求,建立反而多耗用服务器资源. 

设置不设置主键主要看业务或者需求来说
如果你就是简单的对单表操作的话,实在没有必要。
对多张没有关联的表操作的话,不设置也没有什么影响
主键只是说对一种表和表关系的关联而已,还有就是在建主键的时候会自动添加个索引,某些情况下可以增加查询速度

原文出自:https://www.cnblogs.com/yangwujun/p/7132623.html

转载于:https://www.cnblogs.com/cfss/p/10529848.html

SQL 一个表中可不可以没有主键相关推荐

  1. 一个表对应另一个表中多个主键的查询方法(把一个表当成两个表用)

    表t_Record PID(主键)   SendUserID(发送人)   ReceiveUserID(接收人)    1              1                      2 ...

  2. sql一个表中两个字段合并求和

    sql一个表中两个字段,合并求和 SELECT SUM(字段a+'.'+字段b) as total  from TABLE 转载于:https://www.cnblogs.com/lovewyc131 ...

  3. mysql 联结主键_联结表中的复合主键 - Sequelize

    使用Sequelize和MySQL数据库,我试图在联结表中实现复合主键组合,但遗憾的是没有结果 . 我有 table : 它们与许多人有很多关系 . 在联结表user_has_project中,我想要 ...

  4. 如何在sqlserver数据库表中建立复合主键

    主键是数据库表的一个重要属性,建立主键可以避免表中存在完全相同的记录,也就是说主键在一张表中的记录值是唯一的. 建立主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立 ...

  5. phpmyadmin不允许一个表创建多个主键的解决办法

    在phpmyadmin中执行建表语句 CREATE TABLE `user3` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(2 ...

  6. 在一表中设置组合主键(两个字段组合成一个主键)

    首先一个表是不能有两个主键的.但是可以有两个字段组合成一个主键,这就是为什么有时候表里为什么会有两个字段都有主键的标志,那是因为他们组合成了一个主键了.          我们可以先删除了原来的主键再 ...

  7. sql更新表的字段和主键

    /*不能在设计表中直接添加键的约束*/ /*添加主键时,如果主键可为空,则必须首先设置表的主键字段不为空*/ ALTER TABLE s_User2Subject alter column User2 ...

  8. SQL一个表中多个字段对应另一个表的同一字段

    譬如:我存的时候表有俩个仓库ID字段,但查询时需要拿仓库名字 select OutStoreID,InStoreID from a 这时可以用inner join  分别连接两个字段 例: selec ...

  9. SQL Server中的联合主键、聚集索引、非聚集索引、mysql 联合索引

    我们都知道在一个表中当需要2列以上才能确定记录的唯一性的时候,就需要用到联合主键,当建立联合主键以后,在查询数据的时候性能就会有很大的提升,不过并不是对联合主键的任何列单独查询的时候性能都会提升,但我 ...

最新文章

  1. MyBatis学习 之 二、SQL语句映射文件(1)resultMap
  2. 双11稳定性负责人叔同讲述:九年双11的云化架构演进和升级
  3. JAVA复习5(TreeSet)
  4. junit规则_jUnit:规则
  5. Facebook 正在大规模重构 React Native
  6. ip、子网掩码、默认网关以及传输过程
  7. mysql 前10条 平均数_mysql – 每组最新N条记录的平均值
  8. spring中的@Bean是否一定要与@Configuration一起用
  9. nginx 过滤请求URL参数及重定向
  10. app抓包工具_【旧版IPA抓包教程2】超便捷苹果旧版本APP抓包/轻松抓取你想要的版本,旧版app任意下载...
  11. 《缠中说禅108课》27: 盘整背驰与历史性底部
  12. 执行Hive SQL时报错:Map operator initialization failed
  13. matlab2016 dll,VS2012Matlab2016b dll文件混合编
  14. 哪种耳机危害最小?推荐这种骨传导耳机
  15. python判断是否为变位词_[python]变位词的判别与分类
  16. 损失函数 -交叉熵损失函数
  17. 四川地震最新播报(截至17日14时汶川地震死亡28881人)
  18. Linux下离线或在线安装libreoffice
  19. php服务宕机,PHP漏洞|一张GIF图片就能让服务器宕机的PHP漏洞
  20. labview中的移位寄存器、循环隧道,自动索引隧道的区别

热门文章

  1. mysql服务2013错误_错误2013(HY000):在“读取授权数据包”时丢失与MySQL服务器的连接,系统错误:0...
  2. python如何表示代码块_如何在Python中重复代码块
  3. KICAD | 分享一个必须安装的插件Interactive HTML BOM plugin for KiCad
  4. 【ES6(2015)】Map
  5. MySQL笔记-group by和聚合函数的使用
  6. Spring Boot文档阅读笔记-构建Restful风格的WebService
  7. Qt文档阅读笔记-QPropertyAnimation官方解析及实例
  8. Qt实现全屏下玫瑰花(含详细注释)
  9. linux apache目录权限配置,Linux下Apache网站目录读写权限的设置
  10. android locknow,java – Android DevicePolicyManager lockNow()