创建表时添加约束

create table table_name(
id  int primary key auto_increment, #设为主键且自动增长
name  not null unique,  #不为空且值唯一
sex default '男', #使用默认约束,默认性别为男
constraint  索引名 foreign key(外键列)  references 主键表(主键列)
on delete cascade | on delete set null   外键约束
)

完成表后添加约束

1.主键约束
添加:alter table  table_name add primary key (字段)
删除:alter table table_name drop primary key
2.非空约束
添加:alter  table table_name modify 列名 数据类型  not null 
删除:alter table table_name modify 列名 数据类型 null
3.唯一约束
添加:alter table table_name add unique 约束名(字段)
删除:alter table table_name drop key 约束名
4.自动增长
添加:alter table table_name  modify 列名 int  auto_increment
删除:alter table table_name modify 列名 int  
5.外键约束
添加:alter table table_name add constraint 约束名 foreign key(外键列) 
references 主键表(主键列)
删除:
第一步:删除外键
alter table table_name drop foreign key 约束名
第二步:删除索引
alter  table table_name drop  index 索引名
[^1]: 
约束名和索引名一样
6.默认值
添加:alter table table_name alter 列名  set default '值'
删除:alter table table_name alter 列名  drop default

相关知识

在数据库的使用过程中我们经常要限制字段的取值,比如有些字我们不能让它为空,我们就需要添加非空约束,本关我们就来学习如何添加这些常用的约束。

为了完成本关任务,你需要掌握:
1.怎么添加唯一约束;
2.怎么添加非空约束;
3.怎么添加默认约束;
4.怎么设置字段的值自动增加。

怎么添加唯一约束

唯一约束(Unique Constraint)要求该列唯一,允许为空,但是只能有一个空值。唯一约束可以确保一列或者几列不出现重复值。

定义部门表的部门名称唯一,SQL语句如下:关键词 UNIQUE



CREATE TABLE t_dept(
id INT PRIMARY KEY,
name VARCHAR(22) UNIQUE,
location VARCHAR(50)
)

怎么添加非空约束

关键词:NOT NULL

例如:



CREATE TABLE t_dept(
id INT PRIMARY KEY,
name VARCHAR(22) NOT NULL,
location VARCHAR(50)
)

怎么使用默认约束

默认约束:即给字段一个默认值。
关键词:DEFAULT

例如:



CREATE TABLE t_emp(
id INT PRIMARY KEY,
name VARCHAR(22),
sex VARCHAR(2) DEFAULT '男'
) DEFAULT CHARSET=utf8;

注意:

  • 如果是添加字符串型默认值要使用单引号,如果是整型则不需要加任何符号;
  • 如果要添加的是中文默认值,则需要加上DEFAULT CHARSET=utf8;使用英文字符则不需要。

设置表的属性值自动增加

在数据库应用中,经常有个需求就是,在每次插入新纪录时,系统自动生成字段的主键值,即:

id

name

1

张三

2

李四

ID每次自动加一

姓名

...

XXX

10

XXX

关键词:AUTO_INCREMENT,默认情况下初始值和增量都为1

例如:

CREATE TABLE t_tmp
(
id int PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32)
)

以上这些你都可以在右侧的命令行中测试。

编程要求

在数据库MyDb中创建表t_user,表结构如下:

字段名称

数据类型

备注

id

INT

用户ID,主键,自动增长

username

varchar(32)

用户名,非空,唯一

sex

varchar(4)

性别,默认“男”

提示:若要给字段添加两个或者两个以上的约束,约束之间以空格隔开即可。

任务代码

mysql -uroot -p123123 -h127.0.0.1;
create database MyDb;
use MyDb;
create table t_user( 
id int primary key auto_increment, 
username varchar(32)not null unique, 
sex varchar(4) default '男');

完成如下

mysql 外键 mysql外键约束怎么设置_主键