热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

mysql设置主键有什么用

mysql设置主键的作用是:1、唯一地标识表中的每一行,通过它可强制表的实体完整性;2、主要是用于其他表的外键关联,以及本记录的修改与删除。

mysql设置主键的作用是:1、唯一地标识表中的每一行,通过它可强制表的实体完整性;2、主要是用于其他表的外键关联,以及本记录的修改与删除。

【相关学习推荐:mysql教程】

mysql设置主键的作用是:

1、什么是主键

  数据库主键,指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性。主键主要是用于其他表的外键关联,以及本记录的修改与删除。

2、主键的作用

  主键是能确定一条记录的唯一标识,主键字段必须唯一,必须非空,一个表中只能有一个主键,主键可以包含一个或多个字段。

  打个比方,一条记录包括身份正号,姓名,年龄,学校,国籍,性别等。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

3、MySQL创建一张没有主键的表

[root@node110 ~]# mysql -uroot -pyinzhengjie
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.14 MySQL Community Server - GPL
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> 
mysql> 
mysql> CREATE DATABASE devops CHARACTER SET = utf8;
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> 
mysql> 
mysql> use devops
Database changed
mysql> show tables;
Empty set (0.00 sec)
mysql> 
mysql> CREATE TABLE students(stu_id INT(11),stu_name VARCHAR(50),gender INT(11));      #首先,我们这里只是创建了一张极为普通的表。
Query OK, 0 rows affected (0.01 sec)
mysql> 
mysql> INSERT INTO students VALUES(1,'jason',10);                          #插入第一条数据
Query OK, 1 row affected (0.00 sec)
mysql> 
mysql> INSERT INTO students VALUES(2,'danny',20);                          #插入第二条数据
Query OK, 1 row affected (0.01 sec)
mysql> 
mysql> INSERT INTO students VALUES(1,'jenny',30);                           #插入第三条数据,注意!这个id和第一条插入的数据是相同的,别问我为什么这么干,我是故意这样搞的!
Query OK, 1 row affected (0.00 sec)
mysql>
mysql> SELECT * FROM students;                                      #我们查询咱们刚刚插入的三条数据
+--------+----------+--------+
| stu_id | stu_name | gender |
+--------+----------+--------+
|      1 | jason    |     10 |
|      2 | danny    |     20 |
|      1 | jenny    |     30 |
+--------+----------+--------+
3 rows in set (0.00 sec)
mysql>

4、创建一张含有主键的表(student_primary)

mysql> CREATE TABLE student_primary(stu_id INT(11) PRIMARY KEY AUTO_INCREMENT,stu_name VARCHAR(50),gender INT(11));        #仔细一下这个建表语句,除了和上面的表名不同,我还为stu_id字段加了主键属性,以及自动增长的属性!
Query OK, 0 rows affected (0.01 sec)
mysql> 
mysql> INSERT INTO student_primary VALUES(1,'json',10);                 #这里我们插入第一条数据
Query OK, 1 row affected (0.00 sec)
mysql> 
mysql> INSERT INTO student_primary VALUES(2,'danny',20);                #这里我们插入第二条数据
Query OK, 1 row affected (0.01 sec)
mysql> 
mysql> INSERT INTO student_primary VALUES(1,'jenny',30);                  #这里我们插入第三条数据时,报错啦!提示主键重复!
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> 
mysql> 
mysql> SELECT * FROM student_primary;                            #我们查看表中的数据,果不其然,只有两条数据!第三条数据没有被插入进来,因为它不符合我们定义的主键规则!主键必须唯一且非空!
+--------+----------+--------+
| stu_id | stu_name | gender |
+--------+----------+--------+
|      1 | json     |     10 |
|      2 | danny    |     20 |
+--------+----------+--------+
2 rows in set (0.00 sec)
mysql>

5、在创建一张含有主键的表(course)

mysql> CREATE TABLE course(id INT(11) PRIMARY KEY AUTO_INCREMENT,course_name VARCHAR(30));          
Query OK, 0 rows affected (0.02 sec)
mysql> 
mysql> INSERT INTO course VALUES(1,'Chinese');                                     #插入第一条数据
Query OK, 1 row affected (0.01 sec)
mysql> 
mysql> INSERT INTO course VALUES(2,'English'); 
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO course VALUES(3,'Mathematics'),(4,'Physics'),(5,'Chemistry'),(6,'Biology');        #咱们可以同时插入多条数据
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0
mysql> 
mysql> SELECT * FROM course;
+----+-------------+
| id | course_name |
+----+-------------+
|  1 | Chinese     |
|  2 | English     |
|  3 | Mathematics |
|  4 | Physics     |
|  5 | Chemistry   |
|  6 | Biology     |
+----+-------------+
6 rows in set (0.00 sec)
mysql>

以上就是mysql设置主键有什么用的详细内容,更多请关注其它相关文章!


推荐阅读
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 目前有哪些主流的编程语言呢?1、Java:应用广泛,Android的编程,大部分是用Java;相关岗位:软件工程师,软件架构师和DevOps工程师。2、Python:简单易学,软件 ... [详细]
  • Azure devops更新json文件Powershell脚本
    我创建了powershell脚本来使用变量更新json文件。Json文件位于Azuredevops存储库中,json文件名为v ... [详细]
  • 移动云_搭乘“云原生”硬核实践之舟,移动云助力开发者畅游未来创新之旅
    本文由编程笔记#小编为大家整理,主要介绍了搭乘“云原生”硬核实践之舟,移动云助力开发者畅游未来创新之旅相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 解析rainbond以应用为中心的架构设计原理_java
    这篇文章主要为大家介绍了rainbond以应用为中心的架构设计实现及原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多 ... [详细]
  • 分布式服务框架和原理简章
    应用架构演进这里的架构演进应该是从服务化的角度来说,应该说随着业务发展,应用规模扩大,系统的一些公共服务就会抽取出来,独立开发,部署,维护,用来解决并发,扩展,维护的问题。传统垂直 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • express工程中的json调用方法
    本文介绍了在express工程中如何调用json数据,包括建立app.js文件、创建数据接口以及获取全部数据和typeid为1的数据的方法。 ... [详细]
  • 软考项目经理目前个人挂靠已经没有了,企业资质也不再需要项目经理数量,看来基本泛滥了,据说可能一些投标需要项目经理的数量,不过根据我参与的一些it项目的投标来看,基本没有见到过了,不 ... [详细]
  • 怎么查看php是否安装了symfony_为什么开发人员讨厌PHP???
    PHP是世界上使用最广泛的Web开发语言,它也是最令人讨厌的编程语言。嗯嗯,这纯粹是拉仇恨,PHP是世界上最好的语言!但是& ... [详细]
author-avatar
戴劳力士_484
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有