1、char和varchar有什么区别?
- char为定长字符串,char(n),n最大为255
- varchar为不定长字符串,varchar(n),n最大长度为65535
- char(10)和varchar(10)存储abc,那它们有什么差别呢?
- char保存10个字符,abc三个,其它会用空格补齐;而varchar只用abc三个位置。
2、datetime和timestamp有什么区别?
- datetime年月日时分秒,存储和显示是一样的
- timestamp时间戳,存储的不是个日期,而是从1970年1月1日到指定日期的毫秒数
3、如果在dos命令下执行insert插入中文数据,数据又乱码,
- 那先在sqlYog客户端执行下面命令:—-set names utf8;—-set names gbk;
- 设置客户端字符集和服务器端相同。如果不知道它到底用的什么编码?怎么办呢?很简单,两个都尝试下,哪个最后操作完成,查询数据库不乱码,就用哪个。
- 那为何会造成乱码呢?—-Mysql数据库默认字符集是lantin1,也就是以后网页中遇到的ISO8859-1,它是英文字符集,不支持存放中文。我们创建库时,可以指定字符集:—-create database yhdb charset utf8;—-但这样很容易造成服务器和客户端编码集不同,如服务器端utf8,客户端ISO8859-1。mysql和客户端工具都有习惯的默认编码设置,好几个地方,要都统一才可以保证不乱码。—-我们只要保证创建数据库时用utf8,使用可视化工具一般就基本正确。
4、drop、delete和truncate之间的区别?
- drop删除库或者表,数据和结构定义
- delete和truncate只是删除表的数据
- delete可以指定where条件,删除满足条件的记录,tuncate删除所有记录—-对于自增字段的表,delete不会自增值清零,而truncate是把表记录和定义都删除了,然后重建表的定义,所以自增主键会重头开始计数
