char 与 varchar 类型的区别

(1)char 的长度是不可变的,而varchar的长度是可变的,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的。

(2)char 类型的存取速度要比 varchar 要快得多,因为其长度固定,方便程序的存储与查找。

(3)char 的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而 varchar 的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节。

视图

视图是虚拟表,本身不存储数据,而是按照指定的方式进行查询。使用视图和使用表完全一样,只需要把视图当成一张表就OK了。

可以通过视图插入数据,但是只能基于一个基础表进行插入,不能跨表更新数据。

视图的主要作用是方便查询。

左连接和右链接

左连接:结果集包括连接子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。   

右连接:将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

内连接:内连接是只有符合条件的才显示。

全连接:返回左表和右表中的所有行,MySql不支持全连接FUll JOIN,不过可以通过联合UNION来模拟(把左右连接的结果并起来)。

交叉联接:返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。 

主键、外键

主键是能唯一确定一条记录的标识。

外键用于与另一张表的关联,是能确定另一张表记录的字段,用于保持数据的一致性。

Sql语句的执行顺序

(1) from 

(3) join 

(2) on 

(4) where 

(5) group by

(6) avg,sum.... 

(7) having 

(8) select 

(9) distinct 

(10) order by 

随机选取10条数据

SELECT * FROM 表名 ORDER BY RAND() LIMIT 10。