黑马程序员技术交流社区

标题: 【上海校区】Mysql建表之后再对约束进行增删操作 [打印本页]

作者: Jessie001    时间: 2018-11-1 10:35
标题: 【上海校区】Mysql建表之后再对约束进行增删操作
本帖最后由 Jessie001 于 2018-11-1 10:39 编辑

-- 对主键进行操作
create table test(
id int ,
name VARCHAR(20)
);

desc test;

--  添加主键
ALTER TABLE test ADD PRIMARY KEY ( id);


-- 删除主键

alter table test drop PRIMARY key;

-- 删除主键报错的情况  [Err] 1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

create table test2(
id int PRIMARY key auto_increment,
name VARCHAR(20)
);

alter table test2 drop PRIMARY key;


-- 需要先删除自增长再删除主键
-- 删除自增长

Alter table test2 change id id int;
desc test2;
-- 然后再删除主键
alter table test2 drop PRIMARY key;


唯一约束


-- 创建表之后才想起来要给某个字段添加唯一约束???
create table test3(
id int PRIMARY key,
name VARCHAR(20)
);

-- 添加唯一约束

alter table test3 add UNIQUE (name);
desc test3;

-- 删除唯一约束


ALTER TABLE test3 DROP INDEX name; -- 唯一约束也是索引

-- 删除外键约束
CREATE table category (
c_id int primary key auto_increment,
c_name varchar(10));
  

CREATE TABLE product (
p_id int PRIMARY KEY auto_increment,
p_name varchar(10),
p_price INT,
category_id INT,
FOREIGN KEY (category_id) REFERENCES category(c_id));

-- 删除外键,报错???
alter table product drop foreign key category_id;

-- 观察 :
执行语句:
insert into product(p_name,p_price,category_id) VALUES('aa',100,9);
运行结果:
--- Cannot add or update a child row: a foreign key constraint fails (`temp2`.`product`, CONSTRAINT `product_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `category` (`c_id`))

-- 删除默认的外键约束名字
执行语句:alter table product drop foreign key product_ibfk_1;


-- 正解 :可在创建表的时候给外键约束取个别名方便后期使用

CREATE TABLE product (
p_id int PRIMARY KEY auto_increment,
p_name varchar(10),
p_price INT,
category_id INT,
CONSTRAINT cate_id FOREIGN KEY (category_id) REFERENCES category(c_id));


alter table product drop foreign key cate_id;
作者: 不二晨    时间: 2018-11-1 15:46

作者: 魔都黑马少年梦    时间: 2018-11-1 16:06

作者: 魔都黑马少年梦    时间: 2018-11-8 17:02





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2