说明:
约束, 其实就是一种限制条件, 让你不能超出这个控制范围.
而在数据库中的约束, 就是指 表中的数据内容 不能胡乱填写, 必须按照要求填写. 好保证数据的完整性与安全性.
一,主键约束
方式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 字段名 数据类型[长度]