MySql常见约束

coding

含义:一种限制,用于限制表中的数据,为了保证表中数据的准确性和可靠性。

分类:六大约束

  1.NOT NULL :非空,用于保证该字段的值不能为空。例如学生表的学生姓名及学号等等。

  2.DEFAULT:默认值,用于保证该字段有默认值。例如学生表的学生性别

  3.PRIMARY KEY:主键,用于保证该字段的值具有唯一性并且非空。例如学生表的学生学号等。

  4.UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空。例如注册用户的手机号,身份证号等。

  5.CHECK:检查约束(MySql不支持),检查字段的值是否为指定的值。

  6.FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某些的值。例如学生表的专业编号

添加约束的实际:

  1.创建表时

  2.修改表时

约束的添加分类:

  列级约束:六大约束语法上都支持,但外键约束没有效果

  表级约束:除了非空、默认、其它的都支持。

  示例:

    ①添加列级约束   

1createtableifnotexists t_stuinfo(

2 id intprimarykey, #主键

3 stuName varchar(20) notnull, #非空

4 gender char(1) check(gender=''or gender=''), #检查约束,MySql没有效果但不报错

5 seat intunique, #唯一约束

6 age intdefault18, #默认(值)约束

7 majorId intreferences major(id) #外键约束,MySql没有效果,但不报错

8 );

9

    ②添加表级约束

    语法:在创建表字段的最下面

          constraint 约束名 约束类型(字段名)

    

 1createtableifnotexists t_stuinfo(

2 id int,

3 stuName varchar(20),

4 gender char(1),

5 seat int,

6 age int,

7 majorId int,

8constraint pk primarykey(id), #约束名随意,主键不生效,但不报错。

9constraint uq unique(seat), #唯一约束

10constraint ck check(gender=''or gender=''), #检查约束,MySql不支持此约束,不报错但不生效

11constraint fk_stuinfo_major foreignkey(majorId) references major(id) #外键约束

12 );

13

 主键和唯一的区别

约束名称

保证唯一性

是否允许为空

一个表中可以有多少个

是否允许组合

主键

×

最多有1个,可以没有

√(不推荐)

唯一

可以有多个

√(不推荐)

外键:

  1.要求在从表中设置外键关系

  2.从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求。

  3.主表的关联列必须时一个Key(一般为主键或唯一,外键也可以但无意义)

  4.插入数据时,先插入主表,再插入从表

     删除数据时,先删除从表,再删除主表

修改表时添加约束

  1.添加非空约束

1altertable 表名称 modify column 列名 列类型 notnull;

  2.添加默认约束

1altertable 表名称 modify column 列名 列类型 default 默认值;

  3.添加主键

    ①列级约束方式

1altertable 表名称 modify column 列名 列类型 primarykey;

    ②表级约束方式

1altertable 表名称 addprimarykey(id);

  4.添加唯一

    ①列级约束

1altertable 表名称 modify column 列名 列类型 unique;

    ②表级约束

1altertable 表名称 addunique(列名称);

  5,添加外键(列级写法可行,但无效果)

    ①表级约束

1altertable 表名称 addconstraint fk_stuinfo_magor foreignkey(magorId) references major(id);

  6.添加通用写法(语法)

    ①列级约束 

1altertable 表名称 modify column 列名 列类型 新约束;

    ②表级约束

1altertable 表名称 addconstraint 约束名 约束类型(列名称) [外键的引用];

修改表时删除约束

  1.删除非空约束

1altertable 表名称 modify column 列名 列类型 [null];

  2.删除默认约束

1altertable 表名称 modify column 列名 列类型;

  3.删除主键

    ①

1altertable 表名称 modify column id int;

    ②

1altertable 表名称 dropprimarykey;

  4.删除唯一

1altertable 表名称 dropindex(索引名) 设置唯一时的名称;

  5.删除外键

1altertable 表名称 dropforeignkey(索引名) 设置外键时的名称;

标识列

  又称为自增长列,可以不用手动的插入值,系统提供默认的序列值

  特点:

    1.标识列必须和一个Key搭配(Key指主键、唯一、外键....)

    2.一个表最多有一个标识列

    3.标识列的类型只能是数值型

    4.标识列可以通过SET auto_increment_increment = 3;设置步长(全局),可以通过插入行时手动插入标识列值设置起始值。

  1.创建表时设置标识列

1createtableuser(

2 id intprimarykey auto_increment,

3 name varchar(20)

4 );

  2.修改表时设置标识列

1altertable 表名称 modify column id intprimarykey auto_increment;

  3.修改表时删除标识列

1altertable 表名称 modify column id intprimarykey;

以上是 MySql常见约束 的全部内容, 来源链接: utcz.com/z/508716.html

回到顶部