列的完整性约束——主键约束

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: 列的完整性约束——主键约束

前言

       完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不再执行用户的操作。MySQL中基本的完整性约束条件如表3-11所示。下表是完整性约束条件:

6d166d68a34c4ee99ccf36ff4746c7b9.png

设置表字段的主键约束(PRIMARY KEY,PK)

主键是表的一个特殊字段,能唯一标识该表中的每条信息。主键和记录的关系,如同身份证和人的关系。主键用来标识每个记录,每个记录的主键值都不同。身份证用来表明人的身份,每个人都具有唯一的身份证号。设置表的主键是指在创建表时设置表的某个字段为该表的主键。


       主键的主要目的是帮助数据库管理系统以最快的速度查找到表的某一条信息。主键必须满足的条件就是主键必须是唯一的,表中任意两条记录的主键字段的值不能相同,并且是非空值。主键可以是单一的字段,也可以是多个字段的组合。


1.单字段主键

单字段主键的语法规则如下:


CREATE TABLE tablename(


   propName propType PRIMARY KEY, ......


);



CREATE TABLE tablename(


   propName propType , ......


PRIMARY KEY(propType)


);


创建表school,设置id字段为PK约束,再查看class表信息,SQL语句如下


mysql> create database school;   #创建数据库school


mysql> use school;   #选择数据库school


mysql> create table class(id int PRIMARY KEY, name varchar(128), teacher varchar(64));         #创建表class


mysql> desc class ;  #查询表class 的定义, describe class 效果等同


mysql> show create table class ;  #同样可以实现查询表class 的定义


mysql> insert into class VALUES(1,'一班','martin');  #插入成功


mysql> insert into class VALUES(1,'二班','rock');    #因主键约束,插入失败


Mysql 支持给主键设置名字:


CREATE TABLE tablename(


   propName propType , ......


CONSTRAINT pk_name PRIMARY KEY(propType)


);


给id字段的PK约束设置一个名字,可以执行SQL语句CONSTRAINT。创建表class:

mysql> create database school;   #创建数据库school


mysql> use school;   #选择数据库school


mysql> create table class(id int , name varchar(128), teacher varchar(64), CONSTRAINT id_pk PRIMARY KEY (id));         #创建表class


mysql> desc class ;  #查询表class 的定义, describe class 效果等同


mysql> show create table class ;  #同样可以实现查询表class 的定义


mysql> insert into class VALUES(1,'一班','martin');  #插入成功

2.多字段主键


主键是由多个属性组合而成时,在属性定义完之后统一设置主键。语法规则如下:


CREATE TABLE tablename(


   propName1 propType ,


   propName2 propType ,


   ......                    


[CONSTRAINT pk_name]PRIMARY KEY(propName1, propName2)


);


多字段主键的设置。

mysql> create database school;   #创建数据库school


mysql> use school;   #选择数据库school


mysql> create table class3(id int, name varchar(128), teacher varchar(64), CONSTRAINT id_pk PRIMARY KEY(id,name));         #创建表class3,设置联合主键


mysql> desc class3 ;  #查询表class3 的定义, describe class3 效果等同


mysql> insert into class VALUES(1,'一班','martin');  #插入成功

总结


多字段主键格式:


create table tablename(字段名  数据类型 ...... primary key(字段名,字段名);


单字段主键格式:


create table tablename( 字段名 数据类型 primary key (索引名)......);



create table tablename(字段名  数据类型 ,......,primary key(索引名));

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 算法 NoSQL
6 种常见分布式唯一ID生成策略及它们的优缺点对比
全局唯一的 ID 几乎是所有系统都会遇到的刚需。这个 id 在搜索, 存储数据, 加快检索速度 等等很多方面都有着重要的意义
6 种常见分布式唯一ID生成策略及它们的优缺点对比
域名优惠包使用帮助文档
本文详细介绍域名优惠包的使用步骤,让您在优惠包使用过程中操作更便捷。
447 2
域名优惠包使用帮助文档
|
11月前
|
存储 弹性计算 固态存储
阿里云服务器配置怎么选择?根据用户类型及使用场景配置推荐
如何选择阿里云服务器配置?2025年全解析!个人用户可选68元/年的轻量应用服务器(2核2G、200M带宽),企业用户推荐199元/年的ECS通用算力型u1实例(2核4G、5M带宽)。针对不同需求,还有内存型、计算型、高主频型及GPU服务器等多规格实例。带宽选择需根据访问量,小流量应用3M即可,高流量建议10M起步。存储方面,系统盘40GB够用,数据盘按需选择ESSD或SSD云盘,确保I/O性能满足业务需求。阿小云为你整理最新攻略,助你高效选型!
|
Go
Golang生成随机数案例实战
关于如何使用Go语言生成随机数的三个案例教程。
437 91
Golang生成随机数案例实战
|
SQL 缓存 JavaScript
PageHelper 使用中的一些坑
PageHelper 使用中的一些坑
PageHelper 使用中的一些坑
|
数据采集 机器学习/深度学习 算法
|
缓存 JavaScript API
vue再次进入页面不会再次调用接口请求
vue再次进入页面不会再次调用接口请求
vue再次进入页面不会再次调用接口请求
|
前端开发 easyexcel 关系型数据库
EasyExcel处理Mysql百万数据的导入导出案例,秒级效率,拿来即用!
【5月更文挑战第11天】EasyExcel处理Mysql百万数据的导入导出案例,秒级效率,拿来即用!
783 1
|
存储 NoSQL 算法
MongoDB设置主键自增
【5月更文挑战第10天】
472 0
|
网络安全 Shell