当前位置: 首页 > news >正文

Mysql列的完整性约束详解(主键约束)

文章目录

  • 前言
  • 一、设置表字段的主键约束(PRIMARY KEY,PK)
    • 1.单字段主键
    • 2.多字段主键
  • 总结


前言

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


设置表字段的主键约束(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');  #插入成功

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

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');  #插入成功

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


总结

多字段主键格式:

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

单字段主键格式:

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

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

http://www.lryc.cn/news/61778.html

相关文章:

  • 母婴市场竞争激烈,如何通过软文营销脱颖而出
  • java--线程池
  • asp.net765数码手机配件租赁系统
  • 有关态势感知(SA)的卷积思考
  • Docker快速部署springboot项目
  • Linux命令rsync增量同步目录下的文件
  • 项目管理---(1)项目管理一般知识
  • 超过50多个热门的免费可用 API 分享
  • 记一次死锁问题
  • Bean 作⽤域和⽣命周期
  • SVN通过备份、过滤、再导入的方式彻底删除废弃目录
  • golang支持优雅关闭和core错误记录
  • Basics of Container Isolation 容器隔离的实现原理
  • EBS R12.1 注册客户化应用的步骤
  • 算法记录 | Day38 动态规划
  • PMP项目管理-[第六章]进度管理
  • Python变量
  • 准备换工作的看过来~
  • 免费AI人工智能在线写作伪原创-百度ai自动写文章
  • 互联网摸鱼日报(2023-04-21)
  • 5.3、web服务器简介HTTP协议
  • 【观察】华为:新一代楼宇网络,使能绿建智慧化
  • 【C# .NET】chapter 13 使用多任务改进性能和可扩展性
  • CA(证书颁发机构)
  • 辛弃疾最有代表性的十首词
  • MC9S12G128开发板—实现按键发送CAN报文指示小车移动功能
  • 尚融宝22-提交借款申请
  • 机器学习在生态、环境经济学中的实践技术应用及论文写作
  • Android硬件通信之 WIFI通信
  • 面试官:“请描述一下Android系统的启动流程”