DATABASE NOTES · 03
掌握主键、唯一、非空、默认值与联合约束。
- 约束
- 主键
本文目录
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 名字;