MySQL数据库基本操作—约束(概念+语法)

什么是约束

概念: 约束实际上就是表中数据的限制条件。
功能: 保证表中数据的完整性和有效性
分类:
主键约束(掌握)
自增长约束
非空约束
唯一性约束
默认约束
零填充约束
外键约束

1.主键约束

1.1概念:
Mysql主键约束是一个列或者多个列的组合,其值能唯一地标识表中的每一行,方便在关系数据库管理系统中尽快的找到某一行
(1)主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值.
(2)每个表最多只允许一个主键
(3)主键约束的关键字是:primary key
(4)当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引

1.2添加单列主键:
语法一:

create table 表名(

字段名 类型 primary key,

);

语法二:

create table 表名(

primary key(字段名)
);

示例:

create table test1 (
id int primary key,
name varchar(20),
address varchar(20),
birthday date
); 
-- 方法一
create table test2 (
id int,
name varchar(20),
address varchar(20),
birthday date,
primary key(id)
);
-- 方法二

结果:
创建成功选中表格,点击设计表
设计表金色钥匙代表主键
1.3 添加联合主键

所谓的联合主键,就是这个主键是由一张表中多个字段组成的。
注意:
(1)当主键是由多个字段组成时,不能直接在字段名后面声明主键约束。
(2)一张表只能有一个主键,联合主键也是一个主键

语法:

Create table 表名(

Primary key(字段名1,字段名2…)
);

示例:

use mydb1;
create table test3(
id int,
name varchar(10),
address varchar(10),
birthday date,
primary key(id,name)
);

结果:
点击设计表
test3可以看到有两把钥匙,但是也只有一个主键,因为一个表只能有一个主键
1.4 通过修改表结构添加主键
语法

Create table 表名(

);
Alter table 表名 add primary key(字段列表);

示例:

use mydb1;
create table test4(
id int,
name varchar(10),
address varchar(10),
birthday date
);
---新建表
alter table test4 add primary key(id,name);
---指定联合主键

既可以添加单列主键,也可以添加联合主键
验证:
test41.5 删除主键
语法:

Alter table 表名 drop primary key;
—单列和多列主键都可以用此语句删除

2.自增长约束(auto_increment)

2. 1自增长约束
在MySQL 中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值.每增加一条记录,主键会自动以相同的步长进行增长。
通过给字段添加auto_increment属性来实现主键自增长

语法:

字段名 类型 primary key auto_increment

自增长约束的特点
(1)默认情况下,auto_increment的初始值是1,每新增一条记录,字段值自动加1。
(2)一个表中只能有一个字段使用auto_increment约束,且该字段必须有唯一索引,以避免序号重复(即为主键或主键的一部分)。
(3)auto_increment约束的字段必须具备NOT NULL属性。
(4)auto_increment约束的字段只能是整数类型(TINYINT、SMALLINT、INT、BIGINT等。
(5)auto_increment约束字段的最大值受该字段的数据类型约束,如果达到上限,auto_increment就会失效。

2.2 指定自增长字段初始值
如果第一条记录设置了该字段的初始值,那么新增加的记录就从这个初始值开始自增。例如,如果表中插入的第一条记录的id值设置为5,那么再插入记录时,id值就会从5开始往上增加
语法:

方式一,创建表时指定
Create tabele 表名(
Id int primary key auto_increment,
Name varchar(20)
)auto_increment=5;

方式二,创建表后指定
Create table 表名(
Id int primary key auto_increment,
Name varchar(20)
);
Alter table 表名 auto_increment=5;

3.唯一约束(unique)

唯一约束(Unique Key)是指所有记录中字段的值不能重复出现。例如,为id字段加上唯一性约束后,每条记录的id值都是唯一的,不能出现重复的情况。
语法:

方法一:
字段名 类型 unique
方法二:
alter table 表名 add constrint 约束名 unique(字段名);
注:方法一在创建表的时候实用,方法二在已经创建表的情况使用

唯一约束不能重复,但是可以为空
Alter table 表名 drop index 唯一约束名
如果没有名字,约束名就是字段名

4.默认约束(default)

作用:用来指定某列的默认值
语法:

创建:
方式一:
字段名 类型 default 默认值
方法二:
Alter table 表名 modify 列名 类型 default 默认值;
删除默认约束(了解即可,很少使用)
将创建方法二的默认值设为null
Alter table 表名 modify 列名 类型 default null;

5.零填充约束(zonefill)

插入数据时,当该字段的值的长度小于定义的长度时,会在该值的前面补上相应的0
zerofill默认为int(10)
当使用zerofill时,默认会自动加unsigned(无符号)属性,使用unsigned属性后,数值范围是原值的2倍,例如,有符号为-128~+127,无符号为0-256。
语法:

字段名 类型 zonefill

猜你喜欢

转载自blog.csdn.net/caolongbin/article/details/127026477