网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

SQL常见的约束语法

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:网学会员为需要朋友们搜集整理了SQL常见的约束语法相关资料,希望对各位网友有所帮助!


    常用五类约束:notnull:非空约束,指定某列不为空unique:唯一约束,指定某列和几列组合的数据不能重复primarykey:主键约束,指定某列的数据不能重复、唯一foreignkey:外键,指定该列记录属于主表中的一条记录,参照另一条数据check:检查,指定一个表达式,用于检验指定数据MySQL不支持check约束,但可以使用check约束,而没有任何效果;根据约束数据列限制,约束可分为:单列约束:每个约束只约束一列多列约束:每个约束约束多列数据MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息;1、notnull约束非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。Null类型特征:所有的类型的值都可以是null,包括int、float等数据类型空字符串“”是不等于null,0也不等于nullcreatetabletemp(idintnotnull,namevarchar(255)notnulldefault‘abc’,sexcharnull)上面的table加上了非空约束,也可以用alter来修改或增加非空约束增加非空约束altertabletempmodifysexvarchar(2)notnull;取消非空约束altertabletempmodifysexvarchar(2)null;取消非空约束,增加默认值altertabletempmodifysexvarchar(2)default‘abc’null;2、unique
    唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。虽然唯一约束不允许出现重复的值,但是可以为多个null同一个表可以有多个唯一约束,多个列组合的约束。在创建唯一约束的时候,如果不给唯一约束名称,就默认和列名相同。唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。MySQL会给唯一约束的列上默认创建一个唯一索引;createtabletemp(idintnotnull,
     namevarchar(25),passwordvarchar(16),--使用表级约束语法,constraintuk_name_pwdunique(name,password));表示用户名和密码组合不能重复添加唯一约束altertabletempaddunique(name,password);altertabletempmodifynamevarchar(25)unique;删除约束altertabletempdropindexname;3、primarykey
    主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值;如果的多列组合的主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别上创建。MySQL的主键名总是PRIMARY,当创建主键约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。列模式:createtabletemp(/*主键约束*/idintprimarykey,namevarchar(25));createtabletemp2(idintnotnull,namevarchar(25),pwdvarchar(15),constraintpk_temp_idprimarykey(id)
    );组合模式:createtabletemp2(idintnotnull,namevarchar(25),pwdvarchar(15),constraintpk_temp_idprimarykey(name,pwd));alter删除主键约束altertabletempdropprimarykey;
     alter添加主键altertabletempaddprimarykey(name,pwd);alter修改列为主键altertabletempmodifyidintprimarykey;设置主键自增createtabletemp(idintauto_incrementprimarykey,namevarchar(20),pwdvarchar(16));auto_increment自增模式,设置自增后在插入数据的时候就不需要给该列插入值了。4、foreignkey约束
    外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。也就是说从表的外键值必须在主表中能找到或者为空。当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该记录的数据,然后才可以删除主表的数据。还有一种就是级联删除子表数据。注意:外键约束的参照列,在主表中引用的只能是主键或唯一键约束的列,假定引用的主表列不是唯一的记录,那么从表引用的数据就不确定记录的位置。同一个表可以有多个外键约束。创建外键约束:主表createtableclasses(idintauto_incrementprimarykey,namevarchar(20));从表createtablestudent(idintauto_increment,namevarchar(22),constraintpk_idprimarykey(id),classes_idintreferencesclasses(id));通常先建主表,然后再建从表,这样从表的参照引用的表才存在。表级别创建外键约束:createtablestudent(idintauto_incrementprimarykey,namevarchar(25),classes_idint,
     foreignkey(classes_id)referencesclasses(id));上面的创建外键的方法没有指定约束名称,系统会默认给外键约束分配外键约束名称,命名为student_ibfk_n,其中student是表名,n是当前约束从1开始的整数。指定约束名称:createtablestudent(idintauto_incrementprimarykey,namevarchar(25),classes_idint,/*指定约束名称*/constraintfk_classes_idforeignkey(classes_id)referencesclasses(id));多列外键组合,必须用表级别约束语法:createtableclasses(idint,namevarchar(20),numberint,primarykey(name,number));createtablestudent(idintauto_incrementprimarykey,namevarchar(20),classes_namevarchar(20),classes_numberint,/*表级别联合外键*/foreignkey(classes_name,classes_number)referencesclasses(name,number));删除外键约束:altertablestudentdropforeignkeystudent_ibfk_1;altertablestudentdropforeignkeyfk_student_id;增加外键约束altertablestudentaddforeignkey(classes_name,classes_number)referencesclasses(name,number);自引用、自关联(递归表、树状表)createtabletree(idintauto_incrementprimarykey,
     namevarchar(50),parent_idint,foreignkey(
    parent_id)referencestree(id));级联删除:删除主表的数据时,关联的从表数据也删除,则需要在建立外键约束的后面增加ondeletecascade或ondeletesetnull,前者是级联删除,后者是将从表的关联列的值设置为null。createtablestudent(idintauto_incrementprimarykey,namevarchar(20),classes_namevarchar(20),classes_numberint,/*表级别联合外键*/foreignkey(classes_name,classes_number)referencesclasses(name,number)ondeletecascade);5、check约束
    MySQL可以使用check约束,但check约束对数据验证没有任何作用。createtabletemp(idintauto_increment,namevarchar(20),ageint,primarykey(id),/*check约束*/check(age>20));上面check约束要求age必须大于0,但没有任何作用。但是创建table的时候没有任何错误或警告。
    
    
  • 上一篇资讯: sql常见语句
  • 下一篇资讯: SQL常用语法
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师