char是存储字节是一定的,例如char(10),存储内容为“java”,那么实际存储的是“java ”,后面是6个空字符。按字节存储;
varchar是存储的不定长度的,例如varchar(10),存储内容是“java”,那么实际存储的就是“java”。按字节存储。不一定兼容所有版本,是一个被废弃的类型;
varchar2是存储不一定长度的,例如varchar2(10),存储内容是“java”,那么实际存储的就是“java”。但是它是按字符存储的,不管你是全角还是半角都占一个字符。并且如果存储“”(空字符),就是null值。
char相对效率高,varchar2占用存储空间少。各有优势