mysql字段约束操作

作者: StrongZhao | 来源:发表于2017-05-01 14:38 被阅读318次

字段常用约束如下表:

约束 名称
primary key 主键
unique key 唯一约束
null 空约束
default 默认值
auto_increment 自增长约束
comment 注释
foreign key 外键约束

主键(primary key)

能唯一标识记录的字段,可以作为主键。一个表只能有一个主键。主键具有唯一性。声明字段时,用 primary key 标识。也可以在字段列表之后声明,在字段列表后声明主键时主键可以由多个字段组成,声明主键的字段值不能为null。
ex:

--创建一张名为lesson的课表设置主键是lesson_id
create table if not exists lesson(
lesson_id int not null primary key auto_increment,
name varchar(40) not null unique key comment '课名称'
)
--另一种写法方式
create temporary table if not exists lesson(
  id int not null,
  name varchar(40) not null comment '课程名称',
  primary key(id),
  unique key(name)
)

唯一约束(unique key)

使得字段的值不能重复。具有唯一性。

空约束(null)

null不是数据类型,是列的一个属性。表示当前列是否可以为空。null表示什么都没有。null意思是允许列为空。not null是不允许列为空。列的默认值为null。
ex:

--创建一张表名为student(name,age)
create temporary table if not exists student(
 name varchar(20) null,
 age int not null default 18
)
--向学生表中插入一条数据,此时表示将name字段的值设为null, 取决于该字段是否允许为null
replace into student set name=null,age=18;

默认值(default)

字段的默认值。
ex:

--创建一张班级表,名为clazz包含班级名,班级人数(人数默认30人)
create temporary table clazz(
 name varchar(20) not null comment '班级名称',
 student_num int not null default 30
);
-- 表示强制使用默认
insert into clazz values ('一年级二班', default);

--为班级表增加开班时间字段
alter table if exists clazz add column start_time timestamp default current_timestamp;

自增长约束(auto_increment)

自增长必须为索引(主键或unique),一张表中只能存在一个字段为自动增长。默认从1开始自增长。可以通过表属性 auto_increment = 初始值进行设置或 alter table tbl auto_increment = 初始值来更改自增长的初始值;

注释(comment)

表、列都可以设置注释(comment),注释就是对表、列的意思的进行解释
ex:

create temporary table if not exists teacher(
name varchar(45) not null comment '教师姓名'
)engine=innodb comment='教师信息表'  charset utf8 collate utf8_general_ci;

外键约束(foreign key)

格式: foreign key(外键字段) references 主表(关联字段) [restrict|cascade|set null| no action | set default]

用于限制主表与从表数据完整性。作用:保持数据一致性,完整性,主要目的是控制存储在外键表(从表)中的数据。
ex:

-- 将表t1的t1_id外键关联到表t2的id字段。 每个外键都有一个名字,可以通过 constraint 指定存在外键的表,称之为从表(子表),外键指向的表,称之为主表(父表)。
alter table t1 add constraint t1_t2_fk foreign key (t1_id) references t2(id);

MySQL中,可以对InnoDB引擎使用外键约束:
语法:foreign key (外键字段) references 主表名 (关联字段) [主表记录删除动作] [主表记录更新动作]
此时需要检测一个从表的外键需要约束为主表的已存在的值。外键在没有关联的情况下,可以设置为null.前提是该外键列,没有not null。可以不指定主表记录更改或更新时的动作,那么此时主表的操作被拒绝。如果指定了 on update 或 on delete:在删除或更新时,有如下几个操作可以选择:
cascade,级联操作。主表数据被更新(主键值更新),从表也被更新(外键值更新)。主表记录被删除,从表相关记录也被删除。
set null,设置为null。主表数据被更新(主键值更新),从表的外键被设置为null。主表记录被删除,从表相关记录外键被设置成null。但注意,要求该外键列,没有not null属性约束。
restrict,拒绝父表删除和更新。
set default 设置为默认值,主表数据被更新(主键值更新),从表的外键被设置为默认值。主表记录被删除,从表相关记录外键被设置成默认值。但注意,要求该外键列设置default属性约束。

ps:注意,外键只被InnoDB存储引擎所支持。其他引擎是不支持的。

相关文章

  • mysql字段约束操作

    字段常用约束如下表: 主键(primary key) 能唯一标识记录的字段,可以作为主键。一个表只能有一个主键。主...

  • Mysql学习——MySQL数据结构修改(2)

    Mysql表结构操作添加表字段修改表字段删除表字段修改表字段类型修改表名简介:Mysql表结构操作,添加表字段,修...

  • MySQL基础——约束

    上篇文章我们学习了MySQL基础——函数,这篇文章我们学习MySQL基础——约束。 约束 约束是作用于表中字段上的...

  • 数据库操作表中列的修改批量操作

    数据库中经常会涉及到对字段的操作如增加字段,删减字段等,以下操作以mysql为例 增加字段操作 删除字段操作 修改字段名

  • MySQL 字段操作(表已建立)

    MySQL 字段操作(表已建立) 操作类型add (添加)modify (修改)drop 删除 字段类型drop ...

  • 7.修改数据表

    针对字段操作:添加/删除字段,修改列定义,列名 针对约束操作:添加/删除 针对数据表操作:数据表更名(rename...

  • 操作mysql字段

    1.varchar 类型填充0 2.字符串连接

  • MYSQL操作字段

    1.增加一个字段 2.删除一个字段 3.修改一个字段 修改一个字段的类型alter table user modi...

  • MySql字段操作

    添加字段 修改字段名称

  • 【MySQL】常用操作

    创建数据库 root没有设置密码 MySQL的表操作 添加字段 删除字段 更改字段 用户操作 创建用户 授权 删除用户

网友评论

    本文标题:mysql字段约束操作

    本文链接:https://www.haomeiwen.com/subject/qcwftxtx.html