MySQL 复习(一):建表约束

MySQL 复习(一):建表约束


MySQL 复习(一):建表约束

1. 主键约束

        -- 	添加:alter table  table_name add primary key (字段)
        -- 	删除:alter table table_name drop primary key

1.1 添加主键约束

1.1.1 建表前添加主键约束
create table user(
	id int primary key, # primary key
	name varchar(20)
);

describe user # 查找约束

1.1.2 建表后添加主键约束
	
 --  alter table 表名 add primary key(字段名)
	alter table user add primary key(id)
 -- alter table 表名 modify 字段 字段类型 primary key	
	alter table user modify id int primary key
	
	describe user # 查找约束
	

1.2 删除主键约束

alter table <表名> drop primary key;

alter table user drop primary key;

describe user # 查找约束
	


2. 外键约束

-- 	     添加:alter table table_name add constraint 约束名 foreign key(外键列) 
-- 		 references 主键表(主键列)
-- 		 删除:
-- 		 第一步:删除外键
-- 		     alter table table_name drop foreign key 约束名
-- 		 第二步:删除索引
-- 			alter  table table_name drop  index 索引名
			
			# 约束名(外键名)和索引名一样

2.1 添加外键约束

2.1.1 建表前添加外键约束

-- 班级表
create table class(
	id int primary key,
	name varchar(20)
);
-- 学生表
create table student(
		id int primary key,
		name varchar(20),
		class_id int,
		foreign key(class_id) references class(id) #建表前添加外键约束
);

describe user # 查找约束

2.1.2 建表后添加外键约束
-- alter table 表1
-- add FOREIGN KEY(表1的关联列) 或者 add constraint 外键名 FOREIGN KEY(表1的关联列)
-- references 表2(表2的关联列);
	
alter table table_name
add FOREIGN KEY(column_name) 
references table_name(clolumn_name);
	
describe user # 查找约束

2.2 删除外键约束

-- alter table 表
-- drop FOREIGN KEY 表的外键名(可以通过 #show create table 表名;# 命令行查找外键名);

alter table student
drop FOREIGN KEY student_fk_name;

describe user # 查找约束

3. 自增约束

 -- 添加:alter table table_name  modify 列名 int  auto_increment
     -- 删除:alter table table_name modify 列名 int

3.1 添加自增约束

-- 3.1.1 建表前添加自增约束
drop table if exists user;
create table user(
	id int primary key auto_increment, # auto_increment
	name varchar(20)
);
describe user # 查找约束

3.1.2 建表后添加自增约束

-- 添加:alter table table_name  modify 列名 int  auto_increment (此前提是<列名>必须先是主键)
	alter table user modify id int auto_increment; # id 为主键
	
	describe user # 查找约束
	
	




3.2 删除自增约束

 
 -- alter table table_name modify 列名 int 
    alter table user modify id int
 
 	describe user # 查找约束

4 唯一约束

   -- 添加:alter table table_name add unique 约束名 (字段)
         -- 删除:alter table table_name drop key 约束名
	

4.1 添加唯一约束

4.1.1 建表前添加唯一约束
约束修饰字段的值不能重复
drop table if exists user;
create table user(
	id int primary key,
    name varchar(20),
	unique(name)  # 唯一约束
);


describe user # 查找约束




4.1.2 建表后添加唯一约束
-- 添加:alter table table_name add unique(列名)
	  
	alter table user add unique(name) # name 添加唯一约束
	
	describe user # 查找约束
	

4.2 删除唯一约束

 -- 删除:alter table table_name drop key 列名
	
	 alter table user drop key name
	
      describe user # 查找约束

5. 非空约束

   -- 添加:alter  table table_name modify 列名 数据类型  not null 
        -- 删除:alter table table_name modify 列名 数据类型 null
	

5.1 添加非空约束

5.1.1 建表前添加非空约束
-- 修饰字段不能为空
	drop table if exists user;
	create table user(
		id int,
		name varchar(20) not null  # not null 非空约束
	);
	
	 describe user # 查找约束

5.1.2 建表后添加非空约束
-- ALTER TABLE <数据表名>
-- CHANGE COLUMN<字段名>
-- <字段名> <数据类型> NOT NULL;
alter table user change name name varchar(20) not null;
 describe user # 查找约束

5.2 删除非空约束

-- ALTER TABLE <数据表名>
-- CHANGE COLUMN<字段名> 
-- <字段名> <数据类型> NULL;
alter table user change name name varchar(20) null;
	
	 describe user # 查找约束
	

6. 默认约束

6. 添加默认约束

  --  添加:alter table table_name alter 列名  set default '值'
   --  删除:alter table table_name alter 列名  drop default
6.1.1 建表前添加默认约束
当我们插入字段时候,如果没有传值,就会使用默认值
drop table if exists user;
	create table user(
	id int,
	name varchar(20),
	age int default 10  # 默认约束 default
	);
	
	describe user # 查找约束
	

6.1.2 建表后添加默认约束
添加:
    alter table table_name alter 列名  set default '值'
	
	alter table user alter age  set default 10
	
	describe user # 查找约束
	

6.2 删除默认约束

 删除:alter table table_name alter 列名  drop default
	
	alter table user alter age  drop default
	
	describe user # 查找约束
	

7 alter 如何改变<字段名>和<字段类型>以及<表名>

# 把表1<table_name1>更名为表2<table_name2>
rename table table_name1 to table_name2


 
# 增添一个字段,默认(不)为空
   alter table table_name add COLUMN 字段列名 VARCHAR(20) DEFAULT (NOT) NULL; 



# 删除一个字段
  alter table table_name DROP COLUMN 字段列名;


# 修改一个字段的类型
  alter table table_name MODIFY 字段列名1 字段类型;


# 修改一个字段的名称,此时一定要重新指定该字段的类型
  alter table table_name CHANGE 字段列名1 字段列名2 字段类型;

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





关注公众号,有惊喜哦!