这篇文章主要介绍了MySQL数据库中数据约束的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。

#数据约束

#五种完整性约束:#NOTNULL:非空约束,指定某列不能为空;#UNIQUE:唯一约束,指定某列或者几列组合不能重复#PRIMARYKEY:主键,指定该列的值可以唯一地标识该列记录#FOREIGNKEY:外键,指定该行记录从属于主表中的一条记录,主要用于参照完整性#CHECK:检查,指定一个布尔表达式,用于指定对应的值必须满足该表达式(mysql不支持check约束)#--------------------------------NOTNULL非空约束---------------------------createtabletest4(#建立非空约束idintnotnull,namevarchar(55)default'ABCD'notnull,#默认值就是nullageintnull);#取消非空约束altertabletest4modifynamevarchar(55)default'ABCD'notnull,#增加非空约束altertabletest4modifyageintnotnull;#--------------------------------UNIQUE:唯一约束--------------------------------#列级约束语法建立约束createtabletest_unique(#建立行级唯一约束idintnotnullunique,ageint);#表级约束语法格式createtableunique_test3(test6_idintnotnull,test6_namevarchar(255),test6_passvarchar(255),#使用表级约束语法建立唯一约束,指定test6_id和test6_name两列组合不能重复constrainttest6_uniqueunique(test6_id,test6_name),#使用表级约束语法建立唯一约束,约束名为test6_unique_2,test6_pass不能重复constrainttest6_unique_2unique(test6_pass));#add关键字增加唯一约束altertabletest4addunique(id,name,age);#modify关键字删除或者增加唯一约束altertabletest4modifyagevarchar(255)notnull;altertabletest4modifyagevarchar(255)notnullunique;#对大部分数据库而言,删除约束使用:altertable表名dropconstraint约束名#但是Mysql不采取此方式,而是:altertable表名dropindex约束名#--------------------------------PRIMARYKEY:主键约束--------------------------------#主键约束相当于非空约束和唯一约束。#每个表只允许拥有一个主键,但是这个主键可以由多个数据列组成,这些列组合不能重复#标准SQL允许给主键自行命名,但是对于Mysql来说自己的名字没有任何作用,总是默认名为PRIMARYcreatetableprimary_test(#使用列级语法建立主键约束test_idintprimarykey,test_namevarchar(255));#使用表级语法建立主键约束createtableprimary_test2(test_idintnotnull,test_namevarchar(255),test_passvarchar(255),#指定主键约束名为test2_pk,对大部分数据库有效,但是对mysql无效,此主键约束名仍为PRIMARYconstrainttest2_pkprimarykey(test_id));#以多列组合创立主键createtableprimary_test3(test_idint,test_namevarchar(255),primarykey(test_id,test_name));#使用列级约束语法altertableprimary_test3modifytest_idintprimarykey();#使用表级约束语法altertableprimary_test3addprimarykey(test_id,test_name);#删除主键约束:altertable表名dropprimarykey;#主键列自增长特性:如果某个数据列的类型是整型,而且该列作为主键列,则可指定该列具有自增长功能#mysql使用auto_increment来设置自增长,向该表插入记录时可不为该列指定值,由系统生成createtableprimary_test3(//建立主键约束、设置自增长test_idintauto_incrementprimarykey,test_namevarchar(255));#外键约束FOREIGNKEY#Mysql中只有表级语法建立的外键约束才可以生效#为保证参照主表的存在,先建立主表createtableteacher_tb(t_idintauto_increment,t_namevarchar(255),primarykey(t_id));createtablestudent_tb(s_idintauto_incrementprimarykey,s_namevarchar(255)notnull,t_javaint,foreignkey(t_java)referencesteacher_tb(t_id));#如果使用表级约束语法,则需要使用foreignkey指定本表的外键列,如果创建外键约束时没有指定约束名,#则mysql会为该外键约束命名为table_name_ibfk_n,其中table_name是从表的表名,n是从1开始的整数createtableteacher_tb2(t_idintauto_increment,t_namevarchar(255),primarykey(t_id));createtablestudent_tb2(s_idintauto_incrementprimarykey,s_namevarchar(255)notnull,t_javaint,constraintstudent_teacher_fkforeignkey(t_java)referencesteacher_tb2(t_id));#建立多列组合外键约束createtableteacher_tb5(t_namevarchar(255),t_passvarchar(255),primarykey(t_name,t_pass));createtablestudent_tb5(s_idintauto_incrementprimarykey,s_namevarchar(255)notnull,t_java_passvarchar(255),t_java_namevarchar(255),foreignkey(t_java_name,t_java_pass)referencesteacher_tb5(t_name,t_pass));#删除外键约束altertablestudent_tb2dropforeignkeystudent_teacher_fk;#增加外键约束altertablestudent_tb2addforeignkey(t_java)referencesteacher_tb2(t_id);#外键约束参照自身,自约束createtableforeign_test9(foreign_idintauto_incrementprimarykey,foreign_namevarchar(255),refer_idint,foreignkey(refer_id)referencesforeign_test9(foreign_id));#定义当删除主表记录时,从表记录也随之删除#ondeletecascade把参照该主表记录的从表记录全部级联删除#ondeletesetnull把参照该主表记录的从表记录从表设为nullecreatetableteacher_tb8(t_idintauto_increment,t_namevarchar(255),primarykey(t_id));createtablestudent_tb8(s_idintauto_incrementprimarykey,s_namevarchar(255)notnull,t_javaint,constraintstudent_teacher_fkforeignkey(t_java)referencesteacher_tb8(t_id)ondeletecascade);

感谢你能够认真阅读完这篇文章,希望小编分享的“MySQL数据库中数据约束的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!