MySQL 00_SQL基础

一、DML 语句和 DDL 语句区别

DML数据库操作语言(Data Manipulation Language) 的缩写,是指对数据库中表记录的操作(CURD),主要包括表记录的插入、更新、删除 和 查询,是开发人员日常使用最频繁的操作。 DDL数据定义语言(Data Definition Language) 的缩写,简单来说,就是对数据库内部的对象(database、table 等)进行创建、删除、修改的操作语言。DDL 和 DML 语言的最大区别是 DML 只是对表内部数据的操作,而不涉及到表的定义、结构的修改,更不会涉及到其它对象。DDL 语句更多的被数据库管理员(DBA)所使用,一般的开发人员很少使用。

二、主键和外键的区别

主键:用于唯一标识一行数据,不能有重复,不允许为空,且一个表只能有一个主键; 外键:用来和其它表建立联系,外键是另一表的主键,外键是可以有重复的,可以是空值,一个表可以有多个外键;

三、drop、delete、truncate 区别

(1)用法不同

  • drop(丢弃数据): drop table 表名 ,直接将表结构都删除掉,在删除表的时候使用。
  • truncate(清空数据): truncate table 表名 ,只删除表中的数据,再插入数据的时候自增长 id 又从 1 开始,在清空表中数据的时候使用。
  • delete(删除数据): delete from 表名 where 列名=值,删除某一行的数据,如果不加 where 子句和truncate table 表名作用类似。

(2)属于不同的数据库语言

truncate 和 drop 属于 DDL(数据定义语言)语句,操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger。 delete 语句是 DML (数据库操作语言)语句,这个操作会放到 rollback segment 中,事务提交之后才生效。

(3)执行速度不同

delete命令执行的时候会产生数据库的binlog日志,而日志记录是需要消耗时间的,但是也有个好处方便数据回滚恢复。 truncate命令执行的时候不会产生数据库日志,因此比delete要快。除此之外,还会把表的自增值重置和索引恢复到初始大小等。 drop命令会把表占用的空间全部释放掉。 一般来说:drop > truncate > delete

Licensed under CC BY-NC-SA 4.0
最后更新于 2022-11-07 15:32 CST