1 char与varchar的区别
char与varchar都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定的长度,而varchar属于可变长的字符类型。char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足(在检索操作中那些填补出来的空格字符将被去掉)。在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节),M只是其最大值。比如,存储字符串“abc",对于CHAR (10),表示你存储的字符将占10个字节(包括7个空字符),而同样的VARCHAR
(10)则只占用4(3+1)个字节的长度。
由于char 固定长度,所以在处理速度上要比varchar快速很多,但是相对浪费存储空间。所以对存储不大、但在速度上有要求的可以使用char类型,反之可以用varchar类型。
VARCHAR虽然比CHAR节省空间,但是如果一个VARCHAR列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR会更好一些。
2 单引号与双引号的用法
双引号里面的字段会经过编译器解释然后再当作HTML代码输出,但是单引号里面的不需要解释,直接输出。
比如下面这个例子:
$user='abc';
SQL1="select * from table where user=' ".$user." ' ";
SQL2="select * from table where user=' abc ' ";
对比一下上面的两个SQL语句,其功能是一致的,只是把'abc' 替换为 '".$user."',都是在一个单引号里面的。