总结一下常用的mysql操作,避免下次遇到类似情况重复地去百度。
方法不是唯一的,但记录一种可行的方法就可以了。
遇到新的问题再继续补充。
1.增加一个列
ALTER TABLE 表名 ADD COLUMN 字段名 字段类型 其他;
举例:ALTER TABLE student ADD COLUMN sex VARCHAR(256);
2.删除一个列:
ALTER TABLE 表名 DROP COLUMN 字段名;
举例:ALTER TABLE student DROP COLUMN sex;
3.修改列名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 字段类型;
举例:ALTER TABLE student CHANGE stuname name varchar(128);
4.修改列类型
同修改列名是一样的;
5.增加主键
ALTER TABLE 表名 ADD PRIMARY KEY(主键字段);
举例:ALTER TABLE student ADD PRIMARY KEY(id);
6.删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;
举例:ALTER TABLE student DROP PRIMARY KEY;
CREATE TABLE class(
id INT PRIMARY KEY,
calssname varchar(256)
); CREATE TABLE student(
id int,
name varchar(256),
class int
); INSERT INTO class VALUES(2,'erban'); INSERT INTO student VALUES(1,'chxy',2); /*
sutdent 表中的class属性引用class表中的id属性
student是子表,class是父表
*/
7.增加外键
ALTER table 表名 ADD CONSTRAINT constraint_name FOREIGN KEY(外键字段) REFERENCES 父表(父表外键字段);
举例:ALTER table student add CONSTRAINT sutdent_class_fk FOREIGN KEY(class) REFERENCES class(id) ON DELETE CASCADE;
可能产生的错误有:1822 - Failed to add the foreign key constraint. Missing index for constraint 'sutdent_class_fk' in the referenced table 'class'
错误原因是:被引用的属性在父表中不是主键。在父表中将该属性设为主属性即可。
引用:
设置外键的时候需要注意以下几点:
(1)外键是用于两个表的数据之间建立连接,可以是一列或者多列,即一个表可以有一个或多个外键。
(2)这个表里面设置的外键必须是另外一个表的主键!
(3)外键可以不是这个表的主键,但必须和另外一个表的主键相对应(字段的类型和值必须一样)。
(4)带有主键的那张表称为父表,含外键的是子表,必须先删除外键约束才能删除父表
https://blog.csdn.net/Nurbiya_K/article/details/101560650
8.外键对更新和删除的限制:
当主表中对被引用的属性进行删除和更新时,规定从表中的引用属性如何变化。
on delete 规则
on update 规则
规则有以下三种:
set null 表示在外键表中将相应字段设置为null
set default 表示设置为默认值
cascade 表示级联操作,就是说,如果主键表中被参考字段更新,外键表中也更新,主键表中的记录被删除,外键表中也相应删除。
举例如下:
ALTER table student add CONSTRAINT sutdent_class_fk FOREIGN KEY(classid) REFERENCES class(id) ON DELETE CASCADE;
class表中的一条记录删除,也会导致student表中的一条记录被级联删除。
9.删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名;
举例:ALTER TABLE student drop FOREIGN KEY student_class_fk;