摸鱼少学习多

day54 - 外键,DML语言

外键

创建表的时候添加外键

太多了 不想写了

注意

删除有外键关系的表时,必须要先删除引用别人的表,才能删除被引入的表

修改表时添加外键关系

 
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区别

  • 相同:都能删除数据,不会改变表的结构

  • 不同:

  1. truncate 重新设置自增列,计数器归零

  2. truncate 不会影响事务

delete删除问题:重启数据库:

  • InnoDB 自增列从1开始(存在内存当中,断电即失)

  • MyISAM 继续从上一个自增量开始(存在文件当中,不会丢失)

  •  
posted @   北海之上  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
/* 粒子吸附*/
点击右上角即可分享
微信分享提示