- drop、delete、truncate的区别:
delete:DML语句,会触发触发器和事务,只删除数据,不删除表结构;
truncate和drop:DDL语句,不会触发触发器和事务,truncate只删除表数据,不删除结构,drop会将表的所有数据、结构等全部删除;
从执行效率上看:drop>truncate>delete
- 索引和主键的区别:
主键一定含有唯一索引;
一张表可以有多个索引,但只能有一个主键;
主键列不能为空,但索引列可为空;
唯一索引:即该字段没有重复的数据;
- where和having的区别:
where的过滤发生在分组前,而having发生在分组后;
where后可以跟的操作符having都可以跟,而having后还可以跟聚合函数;
- MySQL数据库备份:
1. 使用mysqldump进行逻辑备份(导出):
mysqldump -u 用户名 -p 数据库名 >`
例如:
```bash
mysqldump -u root -p mydatabase > backup.sql
2. 使用mysql进行逻辑备份(导出):
mysql -u 用户名 -p 数据库名 < 备份文件.sql
例如:
mysql -u root -p mydatabase < backup.sql
3. 物理备份的方式:
直接拷贝MySQL的数据文件。但是需要注意,进行物理备份时,需要确保数据库在备份期间没有正在进行的写操作;
- 数据库 SQL 常见的优化方法:
使用索引:创建适当的索引,以加快数据的检索速度;
优化查询语句:通过合理的编写 SQL 查询语句,避免使用不必要的联接、子查询或者多余的字段;