ALTER TABLE 表名 操作集锦
add --> 增加列
modify —> 修改列名和列类型
ALTER TABLE stu MODIFY sid int;
change ----> 修改列名
DROP —> 删除列 或者 主键
RENAME TO —> 修改表名
关键字 AUTO_INCREMENT 约束 主键是整型
一定重复不了
内部有计数的东西。
不建议使用 建议是由uuid 做主键
关键字
unique notnull 非空和唯一型
主键不用加
因为主键本身就有非空性,唯一性和被引用性。
foreign key (属性名) reference 另一个表(参照的列);
从表的主键就是外键。
引入中间表
两张表都是主表
得专门创建一个主表
这里引入一个问题
#修改一下列得类型 ALTER TABLE stu MODIFY sid int; #创建中间表实现多对多得关系 关联表 CREATE TABLE STU_TEA( SID INT, TID INT, CONSTRAINT FK_STU FOREIGN KEY(SID) REFERENCES stu(SID), CONSTRAINT fk_teacher FOREIGN KEY(tid) REFERENCES teacher(tid) ); DROP TABLE STU_TEA; INSERT INTO stu VALUES(1,'ZM'); INSERT INTO stu VALUES(2,'WF'); INSERT INTO stu VALUES(3,'SDZ'); INSERT INTO stu VALUES(4,'LTY'); INSERT INTO stu VALUES(5,'LK'); INSERT INTO TEACHER VALUES (1,'贾老师'); INSERT INTO teacher VALUES (2,'李老师'); INSERT INTO teacher VALUES (3,'张老师'); SELECT * FROM stu; INSERT INTO stu_tea VALUES(1,1); INSERT INTO stu_tea VALUES(2,1); INSERT INTO stu_tea VALUES(3,1); INSERT INTO stu_tea VALUES(4,1); INSERT INTO stu_tea VALUES(5,1); SELECT * FROM stu_tea;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mN3SIx6j-1635865062499)(C:\Users\张猛\AppData\Roaming\Typora\typora-user-images\image-20211102220401987.png)]
**第一种情况,很简单,就是列的类型不匹配,**比如用int类型的列去关联varchar的列:
最后一种情况则是,找不到外键引用的列。列在增加外键的时候,可能已经存在数据了(历史数据,或者更新数据库表时设置的默认值),但这些数据并不一定能在外键关联表中找到对应的行记录。这种情况也会导致外键创建失败。