外键
创建表的时候添加外键
太多了 不想写了
注意
删除有外键关系的表时,必须要先删除引用别人的表,才能删除被引入的表
修改表时添加外键关系
ALTER TABLE `student` ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`) -- ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY(`作为外键的列`) REFERENCES `外键所属表`(`表中的列`)
以上各种操作都是物理外键,即数据库级别的外键,不建议使用(避免数据库过多造成困扰)
最佳实践
-
数据库就是单纯的表,只用来存储数据,只有行数据和列字段
-
使用外键用程序去实现
DML语言
添加
insert
-- 插入语句 -- insert into 表名({字段1,字段2,字段3}) value('值1'),('值2'),('值3'.....) INSERT INTO `grade`(`gradename`) VALUES('大四') -- 由于主键自增,可以省略主键 -- 如果不写表的字段,默认一一匹配 -- 插入多个字段 INSERT INTO `grade`(`gradename`) VALUES('大二'),('大一') INSERT INTO `student`(`name`,`sex`,`pwd`) VALUE ('李四','男','aaaa'),('王五','男','bbbb')
注意事项:
-
字段之间使用英文逗号隔开
-
字段可以省略,但值要一一对应
-
可以同时插入多条数据,values后面的值需要使用逗号隔开
修改
修改
-- 修改名字 UPDATE `student` SET `name`='guzihao' WHERE id =1; -- UPDATE `表名` SET [修改项1],[修改项2],[修改项3] WHERE [条件]
条件表达式使用操作符
操作符 | 含义 |
---|---|
= | 等于 |
<>或 != | 不等于 |
> | |
< | |
>= | |
<= | |
BETWEEN...AND... | 在一个范围内的闭合区间 |
AND | |
OR |
删除
delete
语法:delete from 表名 [where 条件]
-- 删除数据 delete from `student` -- 避免这样写 delete from `student` where id=1
truncate 完全清空一个数据库表,表的结构和索引不会变
-- 清空student表 TRUNCATE `student`
delete与truncate区别
-
相同:都能删除数据,不会改变表的结构
-
不同:
-
truncate 重新设置自增列,计数器归零
-
truncate 不会影响事务
delete删除问题
:重启数据库:
-
InnoDB 自增列从1开始(存在内存当中,断电即失)
-
MyISAM 继续从上一个自增量开始(存在文件当中,不会丢失)