- 外键是用来连接数据库的,保证数据库的参照完整性。
- 表的外键是另一表的主键,外键是可以有重复的,可以是空值。
- 以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。
- 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据,约束。使两张表形成关联,外键只能引用外表中的列的值或使用空值。
- 删除表时,只能先删除从表,再删除主表。
- 在开发的时候不会使用外键
在创建表的时候创建外键
CREATE TABLE `grade` (
`gradeID` INT(11) NOT NULL,
`gradeName` VARCHAR(11) NOT NULL,
PRIMARY KEY (`gradeID`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
-- 定义约束名
-- 定义约束名的内容 外键和引用
CREATE TABLE IF NOT EXISTS `student` (
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '生日',
`address` VARCHAR(100) DEFAULT NULL COMMENT '地址',
`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
`gradeID` INT(11) NOT NULL COMMENT '年级名称',
PRIMARY KEY (`id`),
KEY `FK_gradeID`(`gradeID`),
CONSTRAINT `FK_gradeID` FOREIGN KEY (`gradeID`) REFERENCES `grade`(`gradeID`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
在表创建完之后创建外键
ALTER TABLE `student` ADD CONSTRAINT `FK_gradeID` FOREIGN KEY (`gradeID`) REFERENCES `grade`(`gradeID`);
删除外键
ALTER TABLE `student` DROP FOREIGN KEY `FK_gradeID`; -- 删除表的外键,但是索引还存在
-- 注:这个索引是在创建外键是自动生成的
ALTER TABLE `student` DROP INDEX `FK_gradeID`; -- 删除索引
3.2 添加
INSERT INTO `表名`(`字段1`,`字段2`,...) VALUES (值1,值2,...),(值1,值2,...),...
NOTE: 可以省略字段名,但是值和字段一定要一一对应
3.3 修改
UPDATE `grade` SET `gradeName` = '研一' WHERE `gradeID` = 1;
UPDATE 表名 SET 字段名 = 新值,... WHERE 条件
3.4 删除
删除一行或者多行数据
-- 删除数据
DELETE FROM `grade` WHERE `gradeID` BETWEEN 1 AND 4
DELETE FROM 表名 WHERE 条件
删除整张表 delete 和 truncate
DELETE FROM `grade`
INSERT INTO `grade`(`gradeName`) VALUES ('大一'),('大二'),('大三'),('大四')
TRUNCATE `grade`
NOTE :
- delete删除表时,自动增量不会变,truncate 删除表时,自动增量会置一
- 使用TRUNCATE TABLE不会对事务有影响
953

被折叠的 条评论
为什么被折叠?



