在基于mysql数据库开发过程中,也许一些容易混淆的知识点没有引起你的注意,但是往往这些细节被忽略的知识点会阻碍进行。总结一些mysql中容易混淆的知识点:
(1)mysql中char和varchar区别,特点
VARCHAR是一个可变长度字符串。
CHAR是一个定长的字符串。
首先我们在使用char或varchar时,必须指定长度.例如 Char(20) varchar(20)
如果存储字符串长度为5,那么char就会在底层开辟20个长度来存储长度为5的字符串,而varchar会自动缩减,使用5个长度来存储信息,可以节省空间.
注意:varchar它自动缩减,那么性能会受影响,相对而言,char性能会更高一些。
==========================================================================================================================
(2)TIMESTAMP与DATETIME类型区别
TIMESTAMP在进行insert操作时,如果没有赋值,会取系统当前时间值。
如果对记录进行update操作时,没有处理TIMESTAMP字段,那么它的值也会修改为当前系统时间,从而记录这条记录修改时间。
DATETIME字段,如果没有赋值,默认是就null.
==========================================================================================================================
(3)drop table 与delete from 及truncate table区别
若是在处理内容方面的不同:Drop table是用于删除表结构。
Delete from删除表中数据
Truncate table 也是用于删除表中数据。
那么同样是删除表内数据记录的Delete与truncate table区别在哪里?
①Delete from是一条一条记录删除.
Truncate table它的作用是先将表结构删除,在重新创建表结构。
②两者处理数据的方式不同,从而导致两者在处理性能上的差异: 在删除表中所有数据操作上,truncate的性能更高。
③事务上:
Delete是dml语句,受事务控制:以下之意就是在一个事务范围控制内,若是delete from指定表中所有数据,通过回滚rollback可以恢复删除的数据。
Truncate是dcl语句,不受事务控制.删除表的记录之后,通常就是不能通过事务回滚方式恢复表记录。
===================================================================================================================================
(4)having与where的区别
①where是在group by之前使用 而having是在group by之后使用
②where后面不可以使用分组函数,而having后面可以使用分组函数.
==========================================================================================================================
(5)常见query关键字执行顺序:select [..] from [table] where [conditions] group by [..] having [conditions] order by [...];
select 语句的解析顺序:
①From 表:先执行from语句查询指定表。 代表从哪张表中查询数据【确定数据源】
②where条件:通过where关键字后的条件过滤一部分数据,将表中所有不符合条件记录过滤。
③Group by:在得到的表记录中,根据指定的字段进行分组。
④Having 条件:用于在分组后使用指定的条件对分组后的结果进行再过滤。
⑤Select :指定要查询哪些数据【列属性】,将那些列字段数据提取到结果集。
⑥Order by: 最后在根据指定的列字段对最后显示地结果集进行排序。
====================================================================================================================================