✨✨ 欢迎大家来到景天科技苑✨✨
🎈🎈 养成好习惯,先赞后看哦~🎈🎈
🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。所属的专栏:MySQL数据库入门,进阶应用实战必备
景天的主页:景天科技苑
文章目录
mysql约束
在mysql中对编辑的数据进行类型的限制,不满足约束条件的报错
unsigned : 无符号
not null : 不为空
default : 默认值
unique : 唯一值,加入唯一索引
(索引相当于字典目录,索引的提出是为了加快速度,一味地乱加索引不会提高查询效率)
primary key: 主键
auto_increment: 自增加一 ,必须设置了主键才能设置该参数
zerofill : 零填充
foreign key: 外键
约束在写sql时,放在数据类型的后面,如下,放在int的后面
字段名 类型 约束
unsigned 无符号
createtable t3(id intunsigned);insertinto t3 values(-1); error
insertinto t3 values(4000000000); success
设置无符号位约束,插入负值就报错
not null : 不为空
createtable t4(id intnotnull, name varchar(11));insertinto t4 values(1,"张宇");insertinto t4 values(null,"张宇"); error
insertinto t4(name)values("李四"); error
设置不为空约束,插入空就报错
NULL值是处于0和1之间的某个值,他也表示一个值,只不过这个值是NULL值,而不是0。
在进行计算的时候,1与NULL则结果为NULL。而0与NULL则结果为0。
1或NULL则结果为1,0或NULL则结果为NULL;可见NULL值是介于0和1之间的值。
另外非NULL既不是1也不是0,还是NULL
default : 默认值
createtable t5(id intnotnull, name varchar(11)default"沈思雨");insertinto t5 values(1,null);insertinto t5(id)values(2);
设置了默认值后,插入时填入值,就是设置的值,非全列插入时,不写该字段的值,就用默认值
createtable t5_2(id intnotnulldefault"1111", name varchar(11)default"沈思雨");insertinto t5_2 values();# 在values里面不写值,默认使用默认值;
unique: 唯一约束
加入唯一索引(索引的提出是为了加快速度,一味地乱加索引不会提高查询效率,索引是有一个文件来存索引)
唯一 可为null 标记成: UNI
createtable t6(id intunique, name char(10)default"赵万里");insertinto t6(id)values(1);insertinto t6(id)values(1); error
insertinto t6(id)values(null);insertinto t6(id)values(null);# id变成了多个null
如果要删除null的字段,可以用 where 字段 is null 来删
唯一性约束,可以有多个null值,不违背唯一性约束
primary key: 主键
[ 唯一 + 不为null ] PRI 标记数据的唯一特征
一个表中,只能设置一个字段为一个主键,unique唯一约束可以设置多个
创建主键
createtable t7(id intprimarykey, name varchar(10)default"赵沈阳");insertinto t7(id)values(1);insertinto t7(id)values(1); error
insertinto t7(id)values(null); error
设了主键,该字段不能重复,不能为空
unique + not null => PRI
createtable t8(id intuniquenotnull, name varchar(10)default"赵沈阳");
设置了唯一性约束,且不为null,功能就跟primary key一样了
如果没有设置primary key,设置了unique not null ,默认把unique +not null 设置的字段设为主键
primary key / unique + not null => 优先把primary key 作为主键;
createtable t9(id1 intuniquenotnull, id2 intprimarykey);
同时设置了unique +not null 和 primary key 。优先把primary key 作为主键
一个表只能设置单个字段为一个主键;
createtable t10(id1 intprimarykey, id2 intprimarykey); error
auto_increment: 自增加一
一般配合 主键或者unique 使用
createtable t11(id intprimarykeyauto_increment, name varchar(255)default"敬文栋");insertinto t11 values(1,"张三");insertinto t11 values(null,"李四");insertinto t11(id)values(null);# 使用默认值或者自增插入数据insertinto t11 values();
删除数据,这是删除所有数据
delete from t11;
删除数据 + 重置id
truncate table t11;
主键自增,可以用0,null,default占位
删除一条数据后,如果再添加不想主键从下一个开始,需要在添加之前,复位主键
删除数据后,执行下面的sql
如果是中途删除,先查看一下目前的auto_increment
showcreatetable student;| student |CREATETABLE`student`(`id`intNOTNULLAUTO_INCREMENT,`name`varchar(20)NOTNULL,`age`intNOTNULL,`birthday`dateDEFAULTNULL,`is_del`tinyintDEFAULT'0',`height`decimal(3,2)DEFAULTNULL,`cls_id`varchar(6)NOTNULL,PRIMARYKEY(`id`),KEY`fk_class`(`cls_id`),CONSTRAINT`fk_class`FOREIGNKEY(`cls_id`)REFERENCES`class`(`id`))ENGINE=InnoDBAUTO_INCREMENT=20DEFAULTCHARSET=utf8 |
AUTO_INCREMENT=几 下次插入时就从几开始递增
ALTER TABLE (表名) AUTO_INCREMENT = 1;
zerofill : 零填充 (配合int使用,不够5位拿0来填充)
createtable t12(id int(5) zerofill);insertinto t12 values(1234567);
位数超了之后,按写入的数据直接插入
insertinto t12 values(12);
位数不足,前面补0
版权归原作者 景天科技苑 所有, 如有侵权,请联系我们删除。