首页 > 其他分享 >day54 - 外键,DML语言

day54 - 外键,DML语言

时间:2023-01-05 20:22:13浏览次数:46  
标签:删除 -- DML 外键 student 表名 day54 delete

外键

创建表的时候添加外键

太多了 不想写了

注意

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

修改表时添加外键关系

 
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 继续从上一个自增量开始(存在文件当中,不会丢失)

  •  

标签:删除,--,DML,外键,student,表名,day54,delete
From: https://www.cnblogs.com/GUGUZIZI/p/17028778.html

相关文章