MySQL 中 int(10)和 char(10)以及 varchar(10)的区别
1、int(10)的 10 表示显示的数据的长度,不是存储数据的大小;chart(10)和 varchar(10)的 10 表示存储
数据的大小,即表示存储多少个字符。
2、char(10)表示存储定长的 10 个字符,不足 10 个就用空格补齐,占用更多的存储空间
3、varchar(10)表示存储 10 个变长的字符,存储多少个就是多少个,空格也按一个字符存储,这一
点是和 char(10)的空格不同的,char(10)的空格表示占位不算一个字符
FLOAT 和 DOUBLE 的区别是什么?
1、FLOAT 类型数据可以存储至多 8 位十进制数,并在内存中占 4 字节。
2、DOUBLE 类型数据可以存储至多 18 位十进制数,并在内存中占 8 字节。
drop、delete 与 truncate 的区别
三者都表示删除,但是三者有一些差别:
比较
Delete
Truncate
Drop
类型
属于 DML
属于 DDL
属于 DDL
回滚
可回滚
不可回滚
不可回滚
删除
内容
表结构还在,删除表的
全
部或者一部分数据行
表结构还在,删除表
中的所有数据
从数据库中删除表,所有的数
据行,索引和权限也会被删除
删除
速度
删除速度慢,需要逐行
删
除
删除速度快
删除速度最快
因此,在不再需要一张表的时候,用 drop;在想删除部分数据行时候,用 delete;在保留表而删除
所有数据的时候用 truncate。
UNION 与 UNIONALL 的区别?
1、如果使用 UNION ALL,不会合并重复的记录行
2、效率 UNION 高于 UNION ALL
说出一些数据库优化方面的经验?
1、有外键约束的话会影响增删改的性能,如果应用程序可以保证数据库的完整性那就去除外键