1. 外键
1.在创建表时,增加约束
学生表的 gradeid 字段要引用年级表的 gradeid
定义外键key
给外键添加约束 references 引用
KEY `FK_gradeid` (`gradeid`),
CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`)
删除有外键关系的表,必须要先删除引用别人的表(从表),再删除被引用的表(主表)
2.创建表之后,添加外键约束
ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);
以上为物理外键,数据库级别的外键,不建议使用
-
数据库就是单纯的表,只用来存数据,只有行数据和列字段
-
想使用多张表的数据,想使用外键,用程序实现
2. DML操作
2.1 添加
INSERT INTO `grade`(`gradename`) VALUES('高三')
主键自增可省略字段
INSERT INTO `grade` VALUES('高二')
插入多个字段
INSERT INTO `grade`(`gradename`) VALUES('高一'),('初三')
指定字段插入数据
INSERT INTO `student`(`name`) VALUES ('老王')
INSERT INTO `student`(`name`,`pwd`,`sex`)
VALUES ('老王','111111','男'),
('老李','222222','男')
2.2 修改
UPDATE `student` SET `Sname`='王二' WHERE Sno=20050302;
修改多个属性
UPDATE `student` SET `Sname`='翠花',`Ssex`='女' WHERE Sno=20050302;
操作符 | 含义 | 范围 | 结果 |
---|---|---|---|
= | |||
< > != | |||
> | |||
< | |||
<= | |||
>= | |||
BETWEEN … AND … | 区间 | ||
AND | && | ||
OR | || |
多条件定位数据
UPDATE `student`
SET `Sname`='赵六',`Sdept`='CS',`Speciality`='计算机应用' WHERE `Sname`='李四' AND `Sdept`='cd';
VALUE可以是一个具体的值,也可以是一个变量
UPDATE `student` SET `Sbirthday`=CURRENT_TIME WHERE `Sname`='李四';
2.3 删除
DELETE FROM `student` WHERE `Sname`='赵六';
TRUNCATE
/*
完全清空一个数据库表,表的结构和索引约束不会变
*/
DELETE 与 TRUNCATE区别
都能删除数据,都不会删除表结构
TRUNCATE 重新设置自增列,计数器会归零,不会影响事务
- INNODB 自增列会从1开始(存在内存中,断电即失)
- MYISAM 继续从上一个自增量开始(存在文件中,不会丢失)