mysql博客主键拘束_大战MySQL主键及其操作

9b40b1315bb55a8b531284b02b7ce101.png

点击上方蓝字关注"程序员Bob"

3b381d74f7f5e4b174220f18ad0e2061.png

毅力和自控力是很可怕的东西,因为99%的人根本不具备这种品质,拥有它你就比大多数人要强。

996f147ba88f2f4dccacd7244e312fd2.png

趣味杂谈

《原则》原文:但我不敢确信这场转型会顺利,因为我没有经历过这样的事情。我做事的方式是试错:犯错,找出错误原因,总结出新的原则,最终成功。而我觉得应该以同样的态度对待这场转型。

本书主人公瑞从自己切身体会谈自己,胜过国内大多数鸡汤。就国内教育体系来看,普通人能接受犯错的成本是很高的,而且随着年龄的增长,这种成本只会越来越高。就好比有的犯错成本会让你直接无法翻身,很多时候就算知道了原因,也很难再次尝试,或许这也是强人和普通人的区别,面对自己的错误是个很痛苦的过程,剥离出情绪来理智面对这一点,也已经很强大了。当然,厉害的人也知道,失败才是人生路上的常态,成功是路上偶然出现的美景。

还有一点就是:犯错并不可怕,可怕的是,不去纠正导致将错就错。

简忆上次所学知识:MySQL的记录长度为65535个字节,而varchar是达不到它的理论长度的,NULL占用一个字节,text文本不占用记录长度,因为它本身就占据十个字节。

这里继续学习与MySQL列属性相关知识:关于主键的增,改,删。

主键

主键:primary key (一张表中最多只能有一个主键)

主键,简而言之为主要的键,一张表中只能有一个字段可以使用对应的键,用来约束该字段里面的数据,不能重复,被称之为主键 。

增加主键:SQL操作中有多种方式可以给表增加主键,大体上分为三种:

一.在创建表时,直接写在字段之后(优点:非常直接,缺点:只能使用一个字段作为主键)

相关语句:

create table my_pril(name varchar (20) not null comment '姓名',number char (10) primary key comment '学号: itcast +0000,不能重复')charset utf8;

执行后查看创建结果:

fa17c6d1a4fd73ef4341de0a22650751.png

运行结果:PRI代表主键(大部分时候),NULL为no,即主键本身不为空

二.创建表的时候,在字段之后,可以使用primary key(主键字段列表)来创建(如果有多个字段作为主键,可以称之为复合主键)

相关语句:

-- 复合主键create table my_pri2(number char(10) comment '学号: itcast + 0000',course char(10) comment '课程代码:01 + 0000',score tinyint unsigned default 60 comment '成绩',-- 增加主键限制:学号和课程号是对应的,具有唯一性primary key (number,course))charset utf8;

执行后查看创建结果:

b93a1b30d29a3a7eead9a34ef819049c.png

三.当表已经创建好之后,额外追加主键:可以通过修改字段属性,也可以直接追加Alter table 表名 add primary key(字段列表);

前提:表中字段对应的数据本身是独立的(即不重复)

相关语句:

-- 追加主键create table my_pri3(course char(10) not null comment '课程编号:001+0000',name varchar(10) not null comment '课程名字')charset utf8;-- 添加的两种方法:1:alter table my_pri3 modify course char(10) primary key comment '课程编号:001+0000' ;2:alter table my_pri3 add primary key (course);

执行后查看结果:

09f93f197ba73bd50cc171140784b9de.png

主键约束(修改数据)

主键对应的字段中的数据不允许重复:一旦重复,数据操作就会失败(增和改)

相关语句:

-- 向表中插入数据insert into my_pril values ('小明','itcast0001'),('小Bob','itcast0002');insert into my_pri2 values ('itcast0001','010000',90),('itcast0001','011000',95),('itcast0002','010000',90);-- 主键冲突(重复)insert into my_pril values('小白','itcast0002'); -- 主键冲突(保证数据唯一性)insert into my_pri2 values ('itcast0001','010000',100);-- 冲突

执行后查看报错信息:

ed546a724d36634d449e862ef377f99e.png

删除主键

因为主键无法更新:所以只能先删除,再增加。

语句示例:alter table 表名 drop primary key;

相关语句:

删除主键alter table my_pri3 drop primary key;

执行后查看删除信息:

b5aefa99fdf7748872d7ca7f66650743.png

85d8db58ad4bf4d8b743c07d79972905.png

往期推荐:

为你,千千万万遍.

关注程序员Bob公众号,与你一起终生学习

4ed938d1273dd4009a56e12280edb741.png

一键三连,就差你了

18ab920d6a0982ed149a69ae90134ced.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值