varchar和char有什么区别?
varchar和char都是用来存储字符串类型的数据的数据类型。它们的主要区别在于存储方式和存储空间。
1. 存储方式
char类型的数据是固定长度的,它会在存储时占用固定的存储空间,无论实际存储的数据长度是否达到了该长度。例如,如果一个char(10)类型的字段存储了一个长度为5的字符串,那么它仍然会占用10个字节的存储空间,其中剩余的5个字节会被填充为默认值。
而varchar类型的数据是可变长度的,它会根据实际存储的数据长度动态地分配存储空间。例如,如果一个varchar(10)类型的字段存储了一个长度为5的字符串,那么它只会占用5个字节的存储空间。
2. 存储空间
由于char类型的数据是固定长度的,所以它的存储空间通常比varchar类型的数据更大。例如,如果一个char(10)类型的字段存储了一个长度为5的字符串,那么它仍然会占用10个字节的存储空间,而一个varchar(10)类型的字段存储同样的数据只需要占用5个字节的存储空间。
在实际使用中,如果存储的字符串长度不太确定,通常会选择使用varchar类型的数据。而如果存储的字符串长度是固定的,那么使用char类型的数据可能更加适合。
char和varchar2的区别?
1、长度上的区别
CHAR的长度是固定的,VARCHAR2的长度是可以变化的。
例如,存储字符串“abc",对于CHAR (20),表示存储的字符占20个字节,而同样的VARCHAR2 (20)就只占3个字节的长度,20只是最大值,而且当存储的字符小于20时,按实际的长度来存储。
2、意义上的区别
VARCHAR是VARCHAR2的同义词,工业标准的VARCHAR类型可以用来存储空字符串,但是Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它在数据库中varchar列可以存储空字符串的特性改为存储NULL值。
3、空间大小上的区别
VARCHAR2比CHAR要节省空间,VARCHAR2在效率上也比CHAR差一些,所以如果想获得效率,就必须牺牲一定的空间,这就是在数据库设计上常说的‘以空间换效率’。
VARCHAR2虽然比CHAR节省空间,但如果一个VARCHAR2列经常被修改,且每次被修改数据的长度不同会引起‘行迁移’现象。
oracle是数据类型VARCHAR2(32 CHAR)是什么意思?和varchar2(32)什么区别,没有见过啊?
CHAR char数据类型存储固定长度的字符值。一个CHAR数据类型可以包括1到2000个字符。如果对CHAR没有明确地说明长度,它的默认长度则设置为1。如果对某个CHAR类型变量赋值,其长度小于规定的长度,那么Oracle自动用空格填充。
VARCHAR2 存储可变长度的字符串。虽然也必须指定一个VARCHAR2数据变量的长度,但是这个长度是指对该变量赋值的最大长度而非实际赋值长度。不需用空格填充。最多可设置为4000个字符。
因为VARCHAR2数据类型只存储为该列所赋的字符(不加空格),所以VARCHAR2需要的存储空间比CHAR数据类型要小。

