一、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
三、SQL 语句
3.1 查询语句
- show databases 查看当前登录用户有权限的所有数据库;
- show tables 查看当前登录用户连接的数据库(有权限的)下的所有数据库;
- use databaseName; 切换连接的数据库
- show create databaseName 查看数据库 databaseName 的创建(定义)语句
- show create tableName 查看数据库表的创建(定义)语句
- desc tableName 查看数据库表结构