3.1、外键(了解)
格式: ALTER TABLE 表明
ADD CONSTRAINT 约束名
FOREIGN KEY(作为外键的列
) REFERENCES 那个表
(那个字段
)
#添加外键(也可以在创建表时添加)
ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);
注意: 删除有外键关系的表时,必须先删除引用别人的表(从表), 再删除被引用的表(主表)
以上操作都是物理外键 (数据库级别的外键) 不建议 (避免数据库过多造成困扰, 了解即可)
最佳实践
数据库就是单纯的表, 只用来存数据, 只有行(数据)和列(字段)
我们想使用多张表的数据, 想使用外键(Java程序去实现)
3.2、DML语言(全记)
数据库意义: 数据存储, 数据管理
DML语言:
①insert
②update
③delete
3.2.1、添加(insert)
格式: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
……)但后面的值必须与原表一 一对应
3.2.2、修改(update)
格式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, 是一个具体的值, 也可以是一个变量
3.2.3、删除(delete)
格式: 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 继续从上一个自增量开始 (存在文件中, 不会丢失)