MySQL五大约束详解(我有多详细只有我知道小白都能懂哦) |
您所在的位置:网站首页 › mysql外键约束名称是什么 › MySQL五大约束详解(我有多详细只有我知道小白都能懂哦) |
1.约束概念和分类 2.五大约束的添加和删除 3.自增长列 对表中的数据进行限定,保证数据的正确性,有效性,完整性 1.2约束分类1.主键约束(primary key):保证该字段具有非空且唯一性,一张表中只能有一个主键,主键是表中字段的唯一标识 2.非空约束(not null):保证字段不能为空 3.唯一约束(unique):保证该字段具有唯一性但是可以为null 4.外键约束(foreign key):在一个表中存在的另一个表的主键或唯一键称此表的外键。 5.默认约束(default+默认值):用于保证该字段有默认值(用引号引起来) 2.五大约束的添加和删除 2.1添加约束的六种方法1.在创建表的时候添加非空约束(以列级约束添加) create table + 表名( 列名 数据类型 + 约束名 ) 2.在创建表的时候添加非空约束(以表级约束添加) create table 表名( 列名 数据类型, ... 列名 数据类型, (constraint +别名(就是随便为自己添加的约束起一个名字)) 约束名(对应字段名) ) 3.修改列名的时候 alter table + 表名 + change (column) + 旧列名 新列名 新列名的类型 + 约束 4.修改列的数据类型的时候 alter table + 表名 + modify + (column) + 列名 列类型 约束 5.在添加新列的时候可以添加约束 alter table + 表名 + add + (column) + 新列名 + 新列名的类型 + 约束 6.外键特有 alter table + 表名 + add constraint 外键名称(自己随便为外键取得名字) + foreign key(外键字段名) references 主表名称(主表要关联的字段) 2.2三种删除约束的方式1.修改列名的时候不加约束 alter table + 表名 + change (column) + 旧列名 新列名 新列名的类型 2.修改列的数据类型的时候不加约束 alter table + 表名 + modify + (column) + 列名 列类型 3.运用drop特定删除约束 alter table + 表名 + drop index/foreign key/primary key + 约束的名字 注:查看表中约束的名字: show index from + 表名 2.3五大约束分别对应的添加删除方式(序号对应2.1和2.2)1.非空约束(not null) 对应的添加方式:1 3 4 5 对应的删除方式:1 2 2.唯一约束(unique) 对应的添加方式:1 2 3 4 5 对应的删除方式:1 2 3(对应第3种的index选项) 3.默认约束(default) 对应的添加方式:1 3 4 5 对应的删除方式:1 2 4.主键(primary key) 对应的添加方式:1 2 3 4 5 对应的删除方式:3(对应第3种的primary key选项注意后边不加约束的名字了,因为一个表里只能有一个主键) 5.外键(foreign key) 对应的添加方式:2 6 对应的删除方式:3(对应第3种的foreign key选项) 外键单独拿出来讲 我们先看一个员工表(字段分别是员工编号,姓名,年龄,所属部门,部门所在地): 表2(部门表department): 这里两个表的id都是主键 但是这里有一个问题,就是,我们可以随便删除部门表的某一行,就比如id=1的那一行,一旦删除,那么表1里的dep_id=1的员工就查不到他们的部门信息了,所以就可以用外键来解决这个问题 我们可以在创建表的时候就指定dep_id是外键,关联department的主键id 语句格式(这里虽然是第2种方法也就是以表级约束添加外键但是语法上有不同): create table 表名( 列名 数据类型, ... 列名 数据类型, (constraint + 别名(就是随便为自己添加的约束起一个名字)) + foreign key(字段名) + references + 主表(主表对应字段) ) 对于本例子就可以这么写: create table employee( id int primary key, sname varchar(5), age int, dep_id int, constraint aaa foreign key(dep_id) references department(id) ) 加上外键后我们就不能删除department表里边的任意一行,而且,我们也不能在employee里边添加新的员工信息的时候把dep_id填写成除1,2之外的任何数字 2.4对于创建约束的总结在创建表的时候添加列级约束只支持:默认,非空,主键,唯一 在添加表级约束只支持:主键,唯一,外键 2.5对于主键和唯一的区别:主键至多一个唯一可以有多个 允许两个列组成一个主键和一个唯一 3.自增长列 3.1概念如果某一列是数值类型,使用 auto_increment可以来完成值的自动增长(一般都是和主键一起用) 3.2在创建表的时候添加主键约束,并且完成主键自增长的例子格式: create table 表名( 列名 数据类型 primary key + auto_increment ) 举个例子: 我们创建一个含学号姓名的student表,并且按照学号自增长 创建语句: create table student( id int primary key auto_increment, sname char(4) ) 如果此时我们表里有一个数据; insert into student value(null,“李四”) 再次查看表的时候自动给我们按自增长补了学号: 1.添加(上述在创建的时候添加是一种) alter table + 表名 + modify column + 列名 类型 约束 + AUTO_INCREMENT 2.删除 alter table + 表名 + modify column 列名 类型 3.4设置自增长步长自增长起始值为1,步长起始值为1 起始值不能更改,步长可以更改 用show VARIABLES LIKE “%auto_increment%” 查看对应的步常代表的名字然后用set 步长代表名字=要设置的步长 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |