Mysql 约束说明

说明:

约束, 其实就是一种限制条件, 让你不能超出这个控制范围.

而在数据库中的约束, 就是指 表中的数据内容 不能胡乱填写, 必须按照要求填写. 好保证数据的完整性与安全性.

一,主键约束

方式1:创建表时,在字段描述处,声明指定字段为主键

格式:  字段名 数据类型[长度]  PRIMARY  KEY

 1 // 2 create table users(
 3  id int primary key,--主键
 4  uname varchar(255),
 5  sex varchar(10)
 6 );
 7 
 8 insert into users(id,uname,sex)value(1,'小李','');
 9 
10 insert into users(id,uname,sex)value(1,'小张','');--设置主键后,插入失败,id值重复
11 
12 insert into users(id,uname,sex)value(null,'小刘','');--设置主键后,插入失败,id值不能为NULL

方式2:创建表时,在constraint 约束,指定字段为主键:

格式:  [constraint 名称] primary key (字段列表)

  • 关键字constraint可以省略,如果需要为主键命名,constraint不能省略,主键名称一般没用。
  • 字段列表需要使用小括号括住,如果有多字段需要使用逗号分隔。声明两个以上字段为主键,我们称为联合主键。
//表一
create table users(
 id int,
 uname varchar(255),
 sex varchar(20),
 constraint pk_users primary key(id) --添加主键约束,单一字段
);

//表二
create table users(
 id int,
 uname varchar(255),
 sex varchar(20),
 constraint pk_users primary key(uname,sex) --添加主键约束,多个字段
);

insert into users(id,uname,sex)values(1,'老王','');
insert into users(id,uname,sex)values(2,'老张','');
insert into users(id,uname,sex)values(3,'老张','');--插入失败

修改表字段主键约束

格式:ALTER TABLE 表名 ADD [CONSTRAINT 名称] PRIMARY KEY (字段列表)

//create table users(
 id int,
 uname varchar(255),
 sex varchar(20)
);

alter table users add constraint pk_users primary key (uname,sex);

删除主键约束

格式:ALTER TABLE 表名 DROP PRIMARY KEY

 //sql alter table users drop primary key;  

a)自动增长列

我们可以在表中使用 auto_increment(自动增长列)关键字,自动增长列类型必须是整形,自动增长列必须为键(通常是用于主键)。

  • 格式: 字段名 整数类型[长度][约束] auto_increment
//create table users(
 id int primary key auto_increment,
 uname varchar(255),
  sex varchar(20)
);

//自增 默认AUTO_INCREMENT 的开始值是 1

alter table users auto_increment=1000

b)删除表所有数据,自增字段值新插入的值从1开始

//delete

delete from users;--auto_increment不会重置为1,新记录添加时在原有计数基础上+1

//truncate

truncate from users;--表删除,重新创建表,auto_increment重置为1

二,非空约束

格式:字段名 数据类型[长度] NOT NULL

//create table users(
 id int primary key auto_increment,
 uname varchar(255) not null,--不为空
 sex varchar(20)
);

删除非空约束

  • 格式: ALTER TABLE 表名 MODIFY 字段名 数据类型[长度]
alter table users modify uname varchar(255);

三,唯一约束

UNIQUE 约束:指定列的值 不能重复

格式1:字段名 数据类型[长度] UNIQUE

格式2:[constraint 名称] UNIQUE (字段)

//create table users(
id int primary key,
uname varchar(255) unique, --添加唯一约束
sex varchar(20)
);

insert into users(uname,sex)values('小张','');
insert into users(uname,sex)values('小张','');--插入失败,uname值重复

//示例二
create table users(
id int primary key,
uname varchar(255),
sex varchar(20),
constraint uni_uname unique(uname) --添加唯一约束
);

修改表字段唯一约束

格式:ALTER TABLE 表名 ADD [CONSTRAINT 名称] UNIQUE (字段)

//create table users(
 id int,
 uname varchar(255),
 sex varchar(20)
);

alter table users add constraint uni_uname unique(uname) --添加唯一约束

删除唯一约束

格式:ALTER TABLE 表名 DROP INDEX 名称(唯一约束名或字段名)

//删除唯一约束,有约束名

alter table users drop index uni_uname;

//删除唯一约束,没有约束名,使用字段名删除

alter table users drop int uname;

四,默认约束

default 约束:用于指定字段默认值,向表中插入记录时,如果没有明确的为字段赋值,则自动赋予默认值。

格式:字段名 数据类型[长度] DEFAULT 默认值

//create table users(
 id int primary key auto_increment,
 uname varchar(255),
 sex varchar(20),
 create_time date default now() --添加默认约束 当前时间
);

insert into users(uname,sex,create_time)values('小张','',now());

insert into users(uname,sex)values('小张','');--使用create_time默认值

删除默认约束

格式:ALTER TABLE 表名 MODIFY 字段名 数据类型[长度]

原文地址:https://www.cnblogs.com/qingjiawen/p/14024676.html