MySQL(3)-表的完整性约束
admin
2023-04-18 18:01:56
0

   

表的完整性约束作用 : 用于保证数据的完整性


常见的表的约束有 : PRIMARY  KEY(PK主键) , FOREIGN  KEY(FK外键) , NOT  NULL , UNIQUE  KEY(唯一键) , AUTO_INCREMENT , DEFAULT(默认值)


 一 . DEFAULT , NOT  NULL

      

说明 : default : 指定默认值

          not  null : 不允许为空 , 就类似我们在网上注册账号时 , 有些内容必须要填写 , 空着就提交不了


例 : 创建  school 数据库 , 在 school 数据库中创建 student 表 , 字段有学号id , 姓名name , 性别sex ; 设置 id , name不允许为空 ,sex不允许为空 , 且sex默认设置为男 .

MySQL(3)-表的完整性约束

创建表后查看student表的结构 , 可以看到null都为no , default选项sex字段默认为m

MySQL(3)-表的完整性约束

现在插入一条数据 , 如 : insert  into  student  value(1,'jack','m');

MySQL(3)-表的完整性约束

从上图可以看出成功插入 , 再次插入一条数据 : insert  into  student(id,name)  value(1,'lucy');

MySQL(3)-表的完整性约束

只插入两个字段 , sex字段没有数据插入 , 但因为该字段不允许为空且默认值设为m , 所以会默认记录为m


二 . 设置唯一约束 UNIQUE

              

唯一约束 : 控制此列的值不允许重复 , 必须是唯一的一个值


例 : 创建student2表 , 在student表的基础上把id字段设为unique 

create table student2( id int  unique, name varchar(50) not null, sex enum('m','f')default 'm' not null);

MySQL(3)-表的完整性约束   

可以看到id字段key为UNI , 这时插入两条记录

MySQL(3)-表的完整性约束

可以看出 , 因为id字段设置了unique , 插入两条记录的id值都为1 , 所以插入数据报错

 

三 . 设置主键约束 PRIMARY  KEY

              

primary key 字段的值是不允许重复 , 且不允许为空 , 即 UNIQUE + NOT NULL 

主键有单列主键多列主键(复合主键) ,多列主键即两条或两条以上的字段设置为主键

例 : 创建student3表 , 将字段 id 设为主键

create  table  student3(id  int  primary  key ,name  varchar(50) not null ,sex enum('m','f')); 

MySQL(3)-表的完整性约束

设置主键之后 , 插入数据时id字段的值不能为空且不能出现相同时 , 才能插入成功

(复合主键同理 , 即多个字段设置primary key 或 not null  unique)

 

四 . 设置外键约束 FOREIGN  KEY

      

外键功能 : 设置字表与父表 , 对父子表进行同步更新 , 同步删除

实例 : 在test表中创建一张员工(employees)表 , 一张工资(payroll)表 , 将两张表设置外键

员工表(父表) :

MySQL(3)-表的完整性约束

工资表(子表)   

MySQL(3)-表的完整性约束

查看这两张表结构:

MySQL(3)-表的完整性约束

创建完两张表后 , 在父表employees中插入tom , jack 的记录 

MySQL(3)-表的完整性约束

在字表中插入一条Lucy的记录 , 从下图看出插入数据Lucy会报错 , 因为做了外键 , 并且父表中没有Lucy的信息

MySQL(3)-表的完整性约束

再在payroll表中插入tom ,jack字段 :insert  into   payroll(id,pname,payroll) values (1,'tom',15.6), (2,'jack',100.5);

MySQL(3)-表的完整性约束

插入值之后 , 将父表employees中的tom改为tomer , 再看看字表中的变化 , 子表的tom也变成了tomer

MySQL(3)-表的完整性约束

      

结论:
       0、外键的作用就是实现在子表中引用父表中某列的值,这样子表中外键的值是依赖于父表的。
       1、父表中的主键才能作为子表中的外键。
       2、当父表中某个员工的记录修改时,子表也会同步修改  
       3、当父表中删除某个员工的记录,子表也会同步删除


五 . 设置自增字段值 AUTO_INCREMENT

              

例 : 在test库中创建一张zhi表 ,将id设置成自增

MySQL(3)-表的完整性约束

创建表之后插入数据 : insert into zhi(name,age) values('tom',18),('jack',19),('lucy',20);  #可以看出插入的数据没有id自段

MySQL(3)-表的完整性约束

插入上述字段可以看出 , id 字段自动一自增的形式自动补全数据

       MySQL(3)-表的完整性约束

       


        

相关内容

热门资讯

伊媒披露伊美新一轮谈判5个先决... 当地时间5月12日,据伊朗法尔斯通讯社援引知情人士消息报道,伊朗对与美国新一轮谈判提出的5个先决条件...
英国将向霍尔木兹海峡多国护航行... 当地时间12日,总台记者从英国国防部获悉,英国将向在霍尔木兹海峡执行任务的多国护航行动提供无人机、战...
强化技术引领场景培育政策保障 ... 5月11日,省长叶建春就脑机接口技术与产业创新工作开展专题调研。他强调,脑机接口是培育未来产业发展新...
上海交大王如竹教授领衔撰写的“... 4月30日,国际制冷学会(IIR,International Institute of Refrig...
非人类身份蔓延:智能体AI真正... 长期以来,企业依赖服务账户、API密钥、OAuth令牌等各类非人类身份凭证,使不同服务能够在数字环境...
脑机接口“狂飙” 从病房走向多... (记者 陈锦锋)当大脑的神经信号能够直接与外部设备对话,“心想事成”便从科幻走向现实。近日,中南大学...
中巴外长通话,王毅:希望巴方保... 2026年5月12日晚,中共中央政治局委员、外交部长王毅同巴基斯坦副总理兼外长达尔通电话。达尔介绍了...
美参议院投票批准凯文·沃什出任... △凯文·沃什(资料图)当地时间5月12日,美国参议院投票批准凯文·沃什出任美联储主席,目前相关投票程...
缺油!日本快撑不住了 日本零食巨头卡乐比为节省油墨竟将原本漂亮的包装改成了黑白两色,从“喜食”变得看上去像“丧食”。日本石...
英国首相斯塔默再遭逼宫,在内阁... 【文/观察者网 熊超然】在上周经历地方选举惨败后,作为执政党领袖的英国首相斯塔默于当地时间5月11日...