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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 列的完整性约束——主键约束

前言

       完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不再执行用户的操作。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(索引名));

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
安全 数据库
通过E-R理解 主键和外键的关系
实例 现有课程和教师两个实体,课程实体的属性有课程名称、课程编号、课程属性、考试类型;教师实体的属性包括姓名、工号、职称;一门课程可以有多个教师,且每一位教师可以教授多门课程。教师每教授一门课有课序号。
3767 1
通过E-R理解 主键和外键的关系
|
3月前
|
存储 关系型数据库 MySQL
MySQL约束 【主键约束丨唯一约束丨非空约束丨外键级联】
MySQL约束 【主键约束丨唯一约束丨非空约束丨外键级联】
55 0
|
4月前
|
存储 关系型数据库 MySQL
⑦【MySQL】什么是约束?如何使用约束条件?主键、自增、外键、非空....
⑦【MySQL】什么是约束?如何使用约束条件?主键、自增、外键、非空....
47 0
|
8月前
|
关系型数据库 MySQL
MySQL查询之 如何删除主键和添加主键等修饰词
MySQL查询之 如何删除主键和添加主键等修饰词
|
9月前
|
存储 关系型数据库 MySQL
主键与外键
主键与外键
248 0
|
10月前
|
数据库
列的完整性约束——调整列的完整性约束
列的完整性约束——调整列的完整性约束
|
10月前
|
SQL 关系型数据库 MySQL
列的完整性约束——设置表字段的非空约束(NOT NULL, NK)
列的完整性约束——设置表字段的非空约束(NOT NULL, NK)
|
存储 SQL 数据可视化
约束,MySQL约束,非空默认值,主键外键唯一自增,完整详细可收藏
约束,MySQL约束,非空默认值,主键外键唯一自增,完整详细可收藏
459 2
约束,MySQL约束,非空默认值,主键外键唯一自增,完整详细可收藏
|
关系型数据库 MySQL 索引
【MySQL8.0学习笔记】约束:主键约束、自增长约束、非空约束、唯一性约束、默认约束与零填充约束
文章目录 1 MySQL约束简介 2 主键约束 2.1 主键约束的操作 2.1.1 添加单列主键 2.1.2 添加多列联合主键 2.1.3 通过修改表结构的方式添加主键 2.1.4 删除主键 3 自增长约束 3.1 指定自增长字段的初始值 3.1.1 delete和truncate在删除后自增列的变化 4 非空约束 5 唯一约束 6 默认约束 7 零填充约束(zerofill)
|
关系型数据库 MySQL 索引
MySQL约束——添加主键约束(联合主键)、删除主键约束
MySQL约束——添加主键约束(联合主键)、删除主键约束
1099 0