资讯动态

数据库表的约束

发布时间:2026/10/29 20:03:57 来源:尧图企业网站定制
一.语法1.列级约束定义在定义列的同时定义约束create table 表名 列名 列类型 列约束修改alter table 表名 modify 列名 列类型 列约束删除alter alter 表名 modify 列名 列类型 # 不加约束即可删除2.表级约束定义 在定义了所有列之后定义的约束create table 表名 列信息 , constraint 约束名 约束类型要约束的列名添加alter table 表名 add [constraint 约束名] 约束类型要约束的列名约束名推荐采用表名_列名_约束类型简介修改不能直接修改表级约束要删除原有的表级约束再新增即可删除alter table 表名 drop 约束类型 约束名3.非空约束作用限定某个字段/某列的值不允许为空# 必须对有非空约束的插入数据创建表完成之后的修改mysqlalter tablestudent1modifyid intnotnull;删除not nullmysqlalter tablestudent1modifyid intnull;#或者null可省略默认为nullmysqlalter tablestudent1modifyname varchar(30);4.默认值约束作用给某个字段/某列指定默认值一旦设置默认值在插入数据时如果此字段没有显式赋值 则赋值为默认值。mysqlcreate tableteacher1(id intnotnull, name varchar(30)notnull, sex char(2)default女);# 将性别默认为女5.列描述--commentmysqlcreate tablemyclass2(class_name varchar(20)notnullcomment教室,class_room varchar(20)default计科2);6.主键约束特点a.主键字段不能为空不能重复b.一张表中最多只能有一个主键c.主键所在的列通常是整数类型d.主键约束是最频繁的约束mysqlcreate tablet1(id int unsignedprimary key comment学号不能为空, namevarchar(20)notnull,sex char(2)default男);追加主键mysqlalter tableteacher1add primary key(id);注意如果该字段内有重复值,则不能以该字段新增为主键,必须先把重复的数据去掉然后才能添该列为主键删除主键alter table 表名 drop primary key;例mysqlalter tableteacher1drop primary key;复合主键在创建表的时候,在所有字段之后,使用primary key主键字段列表来创建主键,如果有 多个字段作为主键,可以使用复合主键,这些字段合在一起是一个主键也就是让多个字段联合在一起 作为唯一标识,单个字段主键重复是没有问题的,只要不是成为复合主键的字段一起冲突就行mysqlcreate tablet2(id int, hostname varchar(10), ip varchar(20), port intunsigned,primary key(ip,port));7.主键自增长作用给主键添加自增长的数值auto_increment当对应的字段不给值会自动的被系统触发系统会从当前字段中已经有的最大值1操作得到一个新的不同的值。通常和主键搭配使用作为逻辑主键作用给主键添加自增长的数值注意1.自增长字段必须是整数,自增长字段可以不设置初始值,默认从1开始递增.2.被自增长的字段必须作为主键或者其他具有唯一性的键使用,(必须保证这一列字段具有唯一性的字段)3.自增长字段也可以插入数据,只要不与已有数据重复即可,之后新增数据会从最大值开始递增.4.任何一个字段要做自增长,前提是本身是一个索引key一栏有值.5.一张表当中最多只能有一个自增长的列6.约束的字段必须具备NOT NULL属性8.唯一性约束唯一键能有多个mysqlcreate tablet4(id intprimary key, name varchar(20)uniquecomment名子不能重名可以为空);9.外键约束外键约束主要定义在从表上,主表则必须是有主键约束或唯一键约束.当定义外键后,要求外键列数据必须在主表的主键列存在或为null.格式foreign key(从表的字段名称)references主表名字(主表的字段名称)#建立外键关联示例10.检查约束示例mysqlcreate tablet5(id intprimary key, name varchar(20), salary float,check(salary0andsalary10000) );修改表时添加检查约束mysqlalter tablet5add constraintcheck_idcheck(id0);11.删除表的约束

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑