mysql 18位数字 约束_MySQL约束

数据完整性

为了确保数据的完整性和唯一性,关系型数据库通过约束机制来实现目的。

可靠性 + 准确性 = 数据完整性

数据完整性通常有三种形式:

实体完整性:即表中有一个主键。

域完整性:数据值满足指定的条件。

引用完整性:表示与引用表的关系和数据约束,即外键。

数据存放在表中

“数据完整性的问题大多是由于设计引起的”

创建表的时候,就应当保证以后数据输入是正确的

错误的数据、不符合要求的数据不允许输入

创建表:保证数据的完整性=实施完整性约束

列值要求(约束)

输入的类型是否正确?

年龄字段的数据类型必须是数字

输入的格式是否正确?

身份证号码必须是18位

是否在允许的范围内?

性别只能是”男”或者”女”

整行要求(约束)

是否存在重复输入?

学员信息输入了两次

是否符合其他特定要求?

信誉值大于5的用户才能够加入会员列表

实体完整性

约束方法:唯一约束、主键约束、标识列

域完整性

约束方法:限制数据类型、检查约束、外键约束、默认值、非空约束

引用完整性

约束方法:外键约束

约束(Constraint)

常见的约束条件有6种

主键(Primary Key)约束

外键(Foreign Key)约束

唯一性(Unique)约束

默认值(Default)约束

非空(Not NULL)约束

检查(Check)约束

MySQL不支持check约束,写了没有作用,但不会报错

约束的详细介绍

非空约束:用not null约束的字段不能为null值,必须给定具体的数据

例如:创建表,给字段添加非空约束(创建用户表,用户名不能为空)

create table t_user(

id int(10),

name varchar(32) not null

); --如果没有插入name字段数据,则会报错

取消非空约束:

alter table t_user modify name varchar(32)

建表后添加非空约束

alter table t_user modify id int not null

唯一性(unique)约束:unique约束的字段,具有唯一性,不可重复,但可以为null

例如:创建表,保证邮箱地址唯一

create table test_unique(

id int(10),

name varchar(32) not null,

email varchar(128) unique

); #如果email字段重复插入,则会报错,但是该字段可以为null

删除唯一性约束:

语法:alter table 表名 drop index 字段名;

例:alter table test_unique drop index email;

建表后添加唯一性约束:

语法:alter table 表名 add unique(字段名)

例:alter table test_unique add unique(id)

主键约束:

主键约束相当于非空约束和唯一约束。

每个表只允许拥有一个主键,但是这个主键可以由多个数据列组成,这些列组合不能重复

例:创建表test_primary 设置id为主键;

create table test_primary(

id int not null primary key,

name varchar(50)

);

例:创建表test2_primary 设置id为主键;

create table test2_primary (

id int not null,

name varchar(50),

constraint test_pk primary key(id)

# 指定主键约束为 test_pk ,对大部分数据库有效 但对于MySql无效,此主键约束名仍为PRIMARY

);

主键不仅可以是一列,也可以由表中的两列或多列来共同标识。——复合主键

例:创建表test3_primary 设置id和name为复合主键;

create table test3_primary(

id int not null,

name varchar(50) not null,

primary key(id,name)

)

删除主键约束:

语法:alter table 表名 drop primary key;

例:alter table test3_primary drop primary key;

建表后添加主键约束:

语法:alter table 表名 add primary key(字段名)

例:alter table test3_primary add primary key(id) ; --将字段设置为主键

默认值约束:

当插入时没有插入值时,会自动插入默认值

例:创建表test1_default设置name的默认值;

create table test1_default(

id int not null,

name varchar(50) DEFAULT 'abc'

)

插入数据的时候,如果不写入name的值,则默认显示填入abc

也可以使用自增长的方式来给字段填充值

例:创建表auto_test设置id的值为自增长;

create table auto_test(

id int not null auto_increment primary key,

name varchar(25)

);

删除默认值约束

语法:ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;

例:alter table test1_default alter name drop default;

建表后添加默认值约束:

语法:ALTER TABLE 表名 ALTER 列名 SET DEFAULT '默认值';

例:alter table test1_default alter name set default 'abc';

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值