mysql字段约束操作

字段常用约束如下表:

约束 名称
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存储引擎所支持。其他引擎是不支持的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,082评论 5 464
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,231评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,047评论 0 327
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,977评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,893评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,976评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,605评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,888评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,906评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,732评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,513评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,980评论 3 301
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,132评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,447评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,027评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,232评论 2 339

推荐阅读更多精彩内容

  • .数据库 数据库的发展: 文件系统(使用磁盘文件来存储数据)=>第一代数据库(出现了网状模型,层次模型的数据库)=...
    小Q逛逛阅读 954评论 0 2
  • 前面讲了SQL优化以及索引的使用、设计优化了,那么接下来就到表的设计与优化啦!!!真实地去设计优化单表结构以及讲述...
    JackFrost_fuzhu阅读 3,855评论 2 28
  • 1、MySQL启动和关闭(安装及配置请参照百度经验,这里不再记录。MySQL默认端口号:3306;默认数据类型格式...
    强壮de西兰花阅读 629评论 0 1
  • 2015年8月27号晚上,街边小吃的烧烤摊上面,坐着十几个朋友,有说有笑的喝着,记得那晚我们都特别舍不得,那晚...
    再见我的爱人丶阅读 191评论 0 0
  • 参加行动营我是犹豫了几天在最后一刻才豁出去报名的。因为那段时间刚好事多,孩子还病了,真的很担心完成不了任务。 报名...
    弯弯一尾鱼阅读 382评论 2 5