本文目录
  1. 1主键约束(键)
  2. 1.1 创建主键约束
  3. 1.2删除主键约束
  4. 1.3自动增长列(不是约束,一般与主键约束搭配使用)
  5. 2 唯一约束(键)
  6. 2.1 新建唯一约束
  7. 2.2 删除唯一约束
  8. 3 非空约束(非键)
  9. 3.1 新建非空约束
  10. 3.2 有表后设置非空约束
  11. 3.3 删除非空约束
  12. 4 默认值约束(非键)
  13. 4.1 建表时设置默认值
  14. 4.2 有表后设置默认值
  15. 4.3 删除默认值(一般不删除)
  16. 5 联合约束 (键可以联合)
  17. 5.1 主键联合约束
  18. 5.2 唯一联合约束

MySQL 常用约束

掌握主键、唯一、非空、默认值与联合约束。

1主键约束(键)

1.1 创建主键约束

主键约束 唯一且不为空 一个表内一般只有一个主键约束

1.1.1在建表时创建

#设置字段时 直接标记
create table day03_db.user (
  user_id int primary key,  #设置字段时直接标记主键
  use_name varchar(10)
);
#在公共区域设置主键
create table day03_db.product (
  product_id int,
  product_name varchar(20),
  constraint primary key (product_id)  #在声明区单独设置主键
);

1.1.2 有表后再创建主键约束

# 如果表里已有数据,再添加主键前需要清空表里不合规的数据
#语法 alter table 库名.表名 add primary key(字段名)
alter table day03_db.user add primary key (use_id);
alter table day03_db.product add primary key (product_id);

1.2删除主键约束

##删除主键约束
#语法 alter table 库名.表名 drop primary key;
#这个语法只能删除主键的唯一性
#语法 alter table 库名.表名 change 字段 字段名 类型;

alter table day03_db.user drop primary key ; #删除唯一性
alter table day03_db.user change user_id use_id int; #删除非空性

1.3自动增长列(不是约束,一般与主键约束搭配使用)

### 自动增长列 默认值从0开始增长 每次比上个数据增长1
create table day03_db.order (
     order_id int primary key  auto_increment,
     order_time datetime not null
);

2 唯一约束(键)

2.1 新建唯一约束

2.1.1 新建表时新建唯一约束

#直接在字段后面设置
create table day03_db.pet (
  pet_id int primary key  auto_increment,
  pet_name varchar(10) unique ,
  pet_status varchar(10),
);
#在公共区域声明
create table day03_db.pet (
  pet_id int primary key  auto_increment,
  pet_status varchar(10),
  constraint unique (pet_status)
);

2.1.2 有表后设置唯一约束

###添加唯一约束
#语法 alter table 库名.表名 add unique (列名)
alter table day03_db.pet add unique (pet_name);

2.2 删除唯一约束

#删除唯一约束
alter table day03_db.pet drop key pet_name;

3 非空约束(非键)

3.1 新建非空约束

##非空约束
#新建一个带有非空约束的表
create table day03_db.order (
     order_id int primary key  auto_increment,
     order_time datetime not null
);
## 非空约束不是键 不能在公共区域创建

3.2 有表后设置非空约束

#设置非空约束
ALTER TABLE  day03_db.order CHANGE order_time order_time datetime not null ;

3.3 删除非空约束

#删除非空约束
ALTER TABLE  day03_db.order CHANGE order_time order_time datetime ;

4 默认值约束(非键)

4.1 建表时设置默认值

create table day03_db.user (
  user_id int primary key  auto_increment,
  user_name varchar(10) default "匿名",
  city varchar(20)
);

4.2 有表后设置默认值

alter table day03_db.user change city city varchar(20)default '西安';

4.3 删除默认值(一般不删除)

alter table day03_db.user change city city varchar(20);

5 联合约束 (键可以联合)

5.1 主键联合约束

5.1.1 创建主键联合约束

create table day03_db.idcard(
  area varchar(6),
  birth varchar(8),
  code varchar(4),
  constraint primary key (area,birth,code)
);

5.1.2 删除主键联合约束

#删除联合主键
alter table day03_db.idcard drop primary key ; #删除主键
alter table day03_db.idcard change area area varchar(6); #删除非空

5.2 唯一联合约束

5.2.1 创建唯一联合约束

create table day03_db.idcard (
  area  varchar(6),
  birth varchar(8),
  code  varchar(4),
  constraint 名字 unique (area, birth, code) 
);
#要设置名字 因为一个表可以有多个唯一联合

5.2.2 删除唯一联合约束

#删除联合唯一
alter table day03_db.idcard drop key 名字;