格式: ALTER TABLE 表明 ADD ConSTRAINT 约束名 FOREIGN KEY(作为外键的列) REFERENCES 那个表(那个字段)
#添加外键(也可以在创建表时添加) ALTER TABLE `student` ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);
注意: 删除有外键关系的表时,必须先删除引用别人的表(从表), 再删除被引用的表(主表)
以上操作都是物理外键 (数据库级别的外键) 不建议 (避免数据库过多造成困扰, 了解即可)
最佳实践
数据库就是单纯的表, 只用来存数据, 只有行(数据)和列(字段)
我们想使用多张表的数据, 想使用外键(Java程序去实现)
数据库意义: 数据存储, 数据管理
DML语言:
①insert
②update
③delete
格式:INSERT INTO 表名(字段1,字段2,字段3……) VALUES(字段1值,字段2值,字段3值……),(字段1值,字段2值,字段3值……);
--插入语句(添加)
INSERT INTO `grade`(`gradename`) VALUES('大四');
INSERT INTO `grade`(`gradename`) VALUES('大三'),('大二');
INSERT INTO `student`(`id`,`name`,`pwd`) VALUES(14,'身伤易愈','1478520'),(11,'身伤易愈','1478520');
--格式:INSERT INTO `表名`(`字段1`,`字段2`,`字段3`……) VALUES(`字段1值`,`字段2值`,`字段3值`……),(`字段1值`,`字段2值`,`字段3值`……);
--注意:①VALUES后面一个括号为一组数据
-- ②插入数据必须写入非空且无默认值的字段
注意:①VALUES后面一个括号为一组数据
②插入数据必须写入非空且无默认值的字段
③可以省略(字段1,字段2,字段3……)但后面的值必须与原表一 一对应
格式UPDATE 表名 SET 要改的列名 WHERe 修改的条件;
--修改语句 --格式UPDATE `表名` SET 要改的列名 WHERe 修改的条件; --修改某个属性 UPDATE `student` SET `sex`='男' WHERe sex='女'; --不指定修改条件就会改动所有数据 UPDATE `student` SET `sex`='女'; --修改多个属性用逗号隔开 UPDATE `student` SET `sex`='女',`pwd`='0'; --多个修改条件可以用AND(&&), OR(||)搭配组成新的修改条件 UPDATE `student` SET `pwd`='1' WHERe `sex`='女' AND `pwd`='0';
| 操作符 | 含义 |
|---|---|
| = | 等于 |
| <>或!= | 不等于 |
| > | 大于 |
| < | 小于 |
| <= | 小于等于 |
| >= | 大于等于 |
| BEYWEEN A and B | [A,B] |
| AND | &&(并) |
| OR |
注意: 不指定修改条件就会改动所有数据!!!
value, 是一个具体的值, 也可以是一个变量
格式: DELETE FROM 表名 WHERe 修改条件
#三、删除语句 #删除数据(避免这样写,会全部删除) DELETe FROM grade #不会影响自增 TRUNCATE TABLE grade #重新设置自增列 计数器归零 不会影响事务 #删除指定数据 DELETe FROM `grade` WHERe `gradeid`=2014; #格式:DELETe FROM `表名` WHERe 修改条件
DELETe 与
TRUNCATE的区别
DELETE FROM #不会影响自增
TRUNCATE TABLE #重新设置自增列 计数器归零 不会影响事务
DELETE删除问题(了解即可), 重启数据库, 现象
①INNODB 自增列会从1开始 (存在内存当中, 断电即失)
②MyISAM 继续从上一个自增量开始 (存在文件中, 不会丢失)



