mysql主键非空约束怎么设置?

mysql中可以通过在“CREATE TABLE”语句中,使用“ PRIMARY KEY [默认值]”语句来设置主键约束,使用“ NOT NULL”语句来设置非空约束。

mysql主键非空约束怎么设置?

mysql主键约束

主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束。一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个主键。

使用主键应注意以下几点:

每个表只能定义一个主键。

主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在有相同主键值的两行数据。这是唯一性原则。

一个字段名只能在联合主键字段表中出现一次。

联合主键不能包含不必要的多余字段。当把联合主键的某一字段删除后,如果剩下的字段构成的主键仍然满足唯一性原则,那么这个联合主键是不正确的。这是最小化原则。

在创建表时设置主键约束

在创建数据表时设置主键约束,既可以为表中的一个字段设置主键,也可以为表中多个字段设置联合主键。但是不论使用哪种方法,在一个表中主键只能有一个。下面分别讲解设置单字段主键和多字段联合主键的方法。

1)设置单字段主键

在 CREATE TABLE 语句中,通过 PRIMARY KEY 关键字来指定主键。

在定义字段的同时指定主键,语法格式如下:

  PRIMARY KEY [默认值]

例 1

在 test_db 数据库中创建 tb_emp3 数据表,其主键为 id,SQL 语句和运行结果如下。

mysql> CREATE TABLE tb_emp3    -> (    -> id INT(11) PRIMARY KEY,    -> name VARCHAR(25),    -> deptId INT(11),    -> salary FLOAT    -> );Query OK, 0 rows affected (0.37 sec)mysql> DESC tb_emp3;+--------+-------------+------+-----+---------+-------+| Field  | Type        | Null | Key | Default | Extra |+--------+-------------+------+-----+---------+-------+| id     | int(11)     | NO   | PRI | NULL    |       || name   | varchar(25) | YES  |     | NULL    |       || deptId | int(11)     | YES  |     | NULL    |       || salary | float       | YES  |     | NULL    |       |+--------+-------------+------+-----+---------+-------+4 rows in set (0.14 sec)

或者是在定义完所有字段之后指定主键,语法格式如下:

[CONSTRAINT ] PRIMARY KEY [字段名]

例 2

在 test_db 数据库中创建 tb_emp4  数据表,其主键为 id,SQL 语句和运行结果如下。

mysql> CREATE TABLE tb_emp4    -> (    -> id INT(11),    -> name VARCHAR(25),    -> deptId INT(11),    -> salary FLOAT,    -> PRIMARY KEY(id)    -> );Query OK, 0 rows affected (0.37 sec)mysql> DESC tb_emp4;+--------+-------------+------+-----+---------+-------+| Field  | Type        | Null | Key | Default | Extra |+--------+-------------+------+-----+---------+-------+| id     | int(11)     | NO   | PRI | NULL    |       || name   | varchar(25) | YES  |     | NULL    |       || deptId | int(11)     | YES  |     | NULL    |       || salary | float       | YES  |     | NULL    |       |+--------+-------------+------+-----+---------+-------+4 rows in set (0.14 sec)

2)在创建表时设置联合主键

所谓的联合主键,就是这个主键是由一张表中多个字段组成的。

比如,设置学生选课数据表时,使用学生编号做主键还是用课程编号做主键呢?如果用学生编号做主键,那么一个学生就只能选择一门课程。如果用课程编号做主键,那么一门课程只能有一个学生来选。显然,这两种情况都是不符合实际情况的。

实际上设计学生选课表,要限定的是一个学生只能选择同一课程一次。因此,学生编号和课程编号可以放在一起共同作为主键,这也就是联合主键了。

主键由多个字段联合组成,语法格式如下:

PRIMARY KEY [字段1,字段2,…,字段n]

注意:当主键是由多个字段组成时,不能直接在字段名后面声明主键约束。

一键抠图 一键抠图

在线一键抠图换背景

一键抠图 30 查看详情 一键抠图

例 3

创建数据表 tb_emp5,假设表中没有主键 id,为了唯一确定一个员工,可以把 name、deptId 联合起来作为主键,SQL 语句和运行结果如下。

mysql> CREATE TABLE tb_emp5    -> (    -> name VARCHAR(25),    -> deptId INT(11),    -> salary FLOAT,    -> PRIMARY KEY(id,deptId)    -> );Query OK, 0 rows affected (0.37 sec)mysql> DESC tb_emp5;+--------+-------------+------+-----+---------+-------+| Field  | Type        | Null | Key | Default | Extra |+--------+-------------+------+-----+---------+-------+| name   | varchar(25) | NO   | PRI | NULL    |       || deptId | int(11)     | NO   | PRI | NULL    |       || salary | float       | YES  |     | NULL    |       |+--------+-------------+------+-----+---------+-------+3 rows in set (0.14 sec)

在修改表时添加主键约束

主键约束不仅可以在创建表的同时创建,也可以在修改表时添加。但是需要注意的是,设置成主键约束的字段中不允许有空值。

在修改数据表时添加主键约束的语法格式如下:

ALTER TABLE  ADD PRIMARY KEY();

查看 tb_emp2 数据表的表结构,SQL 语句和运行结果如下所示。

mysql> DESC tb_emp2;+--------+-------------+------+-----+---------+-------+| Field  | Type        | Null | Key | Default | Extra |+--------+-------------+------+-----+---------+-------+| id     | int(11)     | NO   |     | NULL    |       || name   | varchar(30) | YES  |     | NULL    |       || deptId | int(11)     | YES  |     | NULL    |       || salary | float       | YES  |     | NULL    |       |+--------+-------------+------+-----+---------+-------+4 rows in set (0.14 sec)

例 4

修改数据表 tb_emp2,将字段 id 设置为主键,SQL 语句和运行结果如下。

mysql> ALTER TABLE tb_emp2    -> ADD PRIMARY KEY(id);Query OK, 0 rows affected (0.94 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> DESC tb_emp2;+--------+-------------+------+-----+---------+-------+| Field  | Type        | Null | Key | Default | Extra |+--------+-------------+------+-----+---------+-------+| id     | int(11)     | NO   | PRI | NULL    |       || name   | varchar(30) | YES  |     | NULL    |       || deptId | int(11)     | YES  |     | NULL    |       || salary | float       | YES  |     | NULL    |       |+--------+-------------+------+-----+---------+-------+4 rows in set (0.12 sec)

通常情况下,当在修改表时要设置表中某个字段的主键约束时,要确保设置成主键约束的字段中值不能够有重复的,并且要保证是非空的。否则,无法设置主键约束。

mysql非空约束

MySQL 非空约束(NOT NULL)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空。

比如,在用户信息表中,如果不添加用户名,那么这条用户信息就是无效的,这时就可以为用户名字段设置非空约束。

在创建表时设置非空约束

创建表时可以使用 NOT NULL 关键字设置非空约束,具体的语法格式如下:

  NOT NULL

例 1

创建数据表 tb_dept4,指定部门名称不能为空,SQL 语句和运行结果如下所示。

mysql> CREATE TABLE tb_dept4    -> (    -> id INT(11) PRIMARY KEY,    -> name VARCHAR(22) NOT NULL,    -> location VARCHAR(50)    -> );Query OK, 0 rows affected (0.37 sec)mysql> DESC tb_dept3;+----------+-------------+------+-----+---------+-------+| Field    | Type        | Null | Key | Default | Extra |+----------+-------------+------+-----+---------+-------+| id       | int(11)     | NO   | PRI | NULL    |       || name     | varchar(22) | NO   |     | NULL    |       || location | varchar(50) | YES  |     | NULL    |       |+----------+-------------+------+-----+---------+-------+3 rows in set (0.06 sec)

在修改表时添加非空约束

如果在创建表时忘记了为字段设置非空约束,也可以通过修改表进行非空约束的添加。

修改表时设置非空约束的语法格式如下:

ALTER TABLE CHANGE COLUMN   NOT NULL;

例 2

修改数据表 tb_dept4,指定部门位置不能为空,SQL 语句和运行结果如下所示。

mysql> ALTER TABLE tb_dept4    -> CHANGE COLUMN location    -> location VARCHAR(50) NOT NULL;Query OK, 0 rows affected (0.15 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> DESC tb_dept4;+----------+-------------+------+-----+----------+-------+| Field    | Type        | Null | Key | Default  | Extra |+----------+-------------+------+-----+----------+-------+| id       | int(11)     | NO   | PRI | NULL     |       || name     | varchar(22) | NO   |     | NULL     |       || location | varchar(50) | NO   |     | NULL     |       |+----------+-------------+------+-----+----------+-------+3 rows in set (0.00 sec)

推荐教程:mysql视频教程

以上就是mysql主键非空约束怎么设置?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/357972.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月6日 01:37:34
下一篇 2025年11月6日 01:38:43

相关推荐

  • php长连接什么

    PHP长连接指在常驻内存环境中复用数据库或缓存连接,减少频繁创建开销。1. 传统FPM模式每次请求重建连接,效率低;2. 长连接通过持久化连接实现复用,常见于Swoole、Workerman等环境;3. MySQL可通过PDO或mysqli持久连接,Redis可在协程中复用连接;4. 结合协程与连接…

    2025年12月13日
    000
  • php源码上传到空间怎么用_用空间php源码操作指引【教程】

    首先确认主机支持PHP环境,通过上传test.php并访问查看phpinfo信息验证;接着使用FTP将PHP源码完整上传至根目录,确保入口文件路径正确;然后设置目录权限为755或777、配置文件权限为644;再修改config.php等文件中的数据库连接参数,匹配当前空间的数据库信息;之后通过浏览器…

    2025年12月13日
    000
  • php源码下载后怎么上传到空间_传php源码到空间步骤

    首先确认服务器支持所需PHP版本,再通过FTP或主机面板上传源码文件至根目录,接着配置数据库连接信息并调整文件权限,最后访问域名完成部署。 如果您已经下载了PHP源码,需要将其部署到Web服务器空间以使网站正常运行,则必须通过正确的步骤将文件上传并配置。以下是具体操作流程: 一、确认主机环境支持PH…

    2025年12月13日
    000
  • php源码中怎么查看数据库名_查php源码数据库名技巧

    首先查找配置文件如config.php或.env,再搜索mysqli_connect或PDO等函数参数,结合框架特定路径如Laravel的.env中DB_DATABASE字段确定数据库名。 如果您需要分析PHP源码以确定程序连接的数据库名称,通常可以通过查找数据库连接配置部分来定位相关信息。以下是几…

    2025年12月13日
    000
  • php源码上传到空间以后怎么安装_空间装php源码安装步骤

    首先确认服务器支持PHP环境,通过创建test.php文件并访问验证PHP配置;接着登录控制面板创建数据库并导入SQL文件;然后修改config.php等配置文件中的数据库连接信息;再设置upload、cache等目录权限为755或777,并确保文件路径正确;最后访问域名启动安装向导,填写信息完成初…

    2025年12月13日
    000
  • 网站源码php怎么打开_网站源码php打开查看与编辑法【教程】

    可通过文本编辑器、IDE、本地服务器或在线%ignore_a_1%打开和查看PHP源码。一、用Notepad++等文本编辑器可快速查看与修改,支持语法高亮;二、使用PhpStorm或VS Code等IDE能获得智能提示与调试功能,适合深度开发;三、通过XAMPP等本地服务器环境运行PHP文件,需将文…

    2025年12月13日
    000
  • 怎么删除源码php_php源码删除残留与安全清理

    删除服务器上所有PHP源码文件,包括隐藏文件,防止信息泄露;2. 清理关联数据库,移除旧项目数据;3. 删除Web服务器中相关虚拟主机配置并重启服务;4. 清除日志、会话与缓存文件,避免敏感信息残留;5. 修复文件权限,确保目录和文件权限符合安全规范。 如果您在服务器上删除了PHP源码文件,但可能存…

    2025年12月13日
    000
  • php抖音矩阵源码怎么用_用php抖音矩阵源码方法【指南】

    使用PHP抖音矩阵源码需先配置PHP 7.4+、MySQL 5.7+及必要扩展,上传源码并设置Web服务器;创建数据库并导入表结构,配置数据库连接信息;在抖音开放平台注册应用,获取AppID与AppSecret,设置回调地址并完成账号授权,获取access_token;通过crontab配置定时任务…

    2025年12月13日
    000
  • 有php源码怎么做网页_用php源码做网页教程【指南】

    首先搭建PHP运行环境,可选择本地XAMPP或远程服务器;接着上传源码至htdocs或服务器根目录,并启动Apache服务;然后配置数据库,创建数据库并导入SQL文件,修改config.php中的连接参数;之后设置文件权限,如chmod 644 config.php,确保安全;最后测试网页功能,检查…

    2025年12月13日
    000
  • php源码写的怎么样_评php源码编写质量【解析】

    评估PHP源码质量需依次检查:一、是否遵循PSR-1/PSR-12规范,使用PHP_CodeSniffer检测并用phpcbf修复;二、是否采用依赖注入与接口抽象,具备高测试覆盖率(≥80%);三、数据库操作是否使用PDO预处理和参数绑定,杜绝SQL注入;四、是否优化性能,如消除循环查询、启用OPc…

    2025年12月13日
    000
  • php响应式网站源码怎么架设_架设php响应式网站源码步骤【教程】

    首先配置PHP服务器环境并部署源码至根目录,接着创建数据库并导入数据,修改配置文件连接参数;然后完成网站基础设置如安装向导和伪静态规则;再通过开发者工具测试多端响应式效果;最后绑定域名并上传至公网服务器上线。 如果您希望搭建一个基于PHP的响应式网站,但对如何正确部署源码感到困惑,可能是由于缺少服务…

    2025年12月13日
    000
  • 怎么吧php源码转换为asp_php源码转asp转换法【技巧】

    需将PHP转ASP因服务器不支持PHP。可手动重写逻辑,用VBScript重构变量、输出、条件及数据库操作;或用正则工具辅助转换简单结构;亦可迁移到ASP.NET用C#重写逻辑;还可保留PHP为API,ASP通过HTTP请求获取数据实现解耦。 如果您需要将PHP源码转换为ASP兼容的格式,可能是因为…

    2025年12月13日
    000
  • 下载了个php源码包 怎么使用_用下载php源码包指引【教程】

    首先确认系统已安装PHP或使用集成环境如XAMPP;将解压的源码放入htdocs或www目录;如有数据库需求,通过phpMyAdmin导入.sql文件并配置连接信息;确保服务器开启读取和重写权限;最后通过http://localhost/项目名访问页面,遇错查看日志排查。 如果您下载了一个PHP源码…

    2025年12月13日
    000
  • 有php源码怎么建网站_用php源码建网站教程【指南】

    首先搭建PHP运行环境,选择服务器并安装LAMP或LNMP组件;接着将源码上传至Web根目录,设置文件权限;然后创建数据库并导入SQL文件,修改配置文件中的数据库连接信息;之后配置虚拟主机和域名解析;最后启动相关服务并测试访问,确保网站正常运行。 如果您已经拥有一套完整的PHP源码,并希望将其部署为…

    2025年12月13日
    000
  • php源码后台在虚拟主机怎么运行_运虚拟主机php源码后台

    首先确认虚拟主机支持PHP环境并选择兼容版本,启用必要扩展;接着通过FTP将源码上传至网站根目录,确保入口文件正确放置;然后在控制面板创建MySQL数据库并导入SQL结构;随后修改配置文件中的数据库连接信息,包括地址、名称、用户名和密码;最后设置默认首页为index.php,上传.htaccess文…

    2025年12月13日
    000
  • php源码怎么上线pc客户端_上php源码到pc客户端法

    可通过ExeOutput将PHP编译为exe,或打包PHP+服务器为便携应用,亦可结合Electron调用本地PHP服务实现PC端运行。 如果您已经开发完成PHP源码,并希望将其功能部署到PC客户端环境运行,由于PHP是服务器端脚本语言,通常依赖Web服务器运行,因此需要通过特定方式将PHP项目打包…

    2025年12月13日
    000
  • php源码在本机上怎么运行_本机运行php源码步骤解析【教程】

    要运行PHP源码需先搭建本地服务器环境,具体步骤如下:一、安装XAMPP并启动Apache服务,访问http://localhost确认运行正常;二、将源码放入htdocs目录,通过http://localhost/项目名访问;三、若使用MySQL,在phpMyAdmin中创建数据库并导入.sql文…

    2025年12月13日
    000
  • 飞飞php影视系统源码怎么改_改飞飞php影视源码方法

    需修改飞飞PHP影视系统源码以满足特定需求,可从五方面入手:一、修改config.php中site_name、seo_keywords等参数优化SEO;二、复制template/目录下模板文件夹并重命名,调整HTML与CSS后在后台启用新模板;三、在player.php或inc/player.con…

    2025年12月13日
    000
  • php源码怎么在服务器上使用_用服务器php源码指南

    首先确认服务器已安装PHP环境,通过php -v验证版本,并安装必要扩展;接着配置Apache或Nginx以解析.php文件,确保Web服务器正确集成PHP处理器;然后将源码上传至Web根目录并设置文件权限为644、目录权限为755;之后修改config.php等配置文件中的数据库连接参数,确保与实…

    2025年12月13日
    000
  • 下载后的php源码怎么改动_改下载php源码方法

    可直接编辑PHP源码以满足需求。一、用VS Code等编辑器修改文件,保存后上传至服务器;二、通过PHPStorm等IDE导入项目,利用搜索与语法检查功能修改并同步代码;三、替换核心模块时先备份原文件,编写兼容接口的新代码覆盖或重定向;四、优先修改config.php等配置文件中的数据库与路径参数,…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信