欢迎投稿

今日深度:

sql中的char与varchar有什么区别,

sql中的char与varchar有什么区别,


我们在使用sql定义字符串类型的时候,经常会看到char与varchar类型

create table t1(name char(5));
create table t2(name varchar(5));

作为初学者,我们就会对此感到疑惑,怎么一会用char,一会又用varchar,它们有什么区别呢

书上给它们的解释是char为定长的字符串型,varchar为变长的字符串型,这个解释虽然很简洁,但也确实说明了要点,接下来我们来详细聊聊它们的区别。

char(5)中的5实际上就是存储该字符串的字符的个数,如果我们给其插入”abc",DBMS在存储的时候会自动在后面补两个空格以达到5位,即“abc  ”;而varchar(5)中的5指的是允许该字符串存储的最大长度,我们插入几位,只要没超过这个长度,其内部存储就是几位。

那我们能怎么实际的观察到我们存储的位数呢,我们以mysql为例,我们可以通过char_length()函数来查看存储的字符的长度

insert into t1 values('abc');
insert into t2 values('abc');
select char_length(name) from t1;
select char_length(name) from t2;

但是t1和t2表都显示3,这是为什么呢?

这是由于mysql的检索方式,mysql在检索char类型的时候,它会自动去掉其中的空格,我们可以通过以下设置来改变mysql的方式来让char显形

SET sql_mode='PAD_CHAR_TO_FULL_LENGTH';

这时我们再通过char_length(name)来获得name的存储位数,就会发现t1表为5,t2表为3。

接下来我们再来聊聊mysql的存储机制

存储char类型时,如果长度设为4,那其内部会用空格给其填充空格固定4个字节,所以这样会浪费大量的空间;存储varchar类型时,其会用一个字节存放它的位数,然后再根据它的位数给它分配字节。

虽然varchar使用起来较为灵活,节省了一定的空间,但是它在判断位数时也耗费了时间,从整个系统的性能角度来说,char数据类型处理的速度更快,有时甚至可以超出varchar处理速度的很多倍,所以在大部分情况下,我更推荐使用char类型,因为现在存储空间已经不是一种限制,我们更多的会去关注其的性能。

到此这篇关于sql中的char与varchar有什么区别的文章就介绍到这了,更多相关sql char与varchar区别内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

您可能感兴趣的文章:
  • MySQL中varchar和char类型的区别
  • MYSQL中 char 和 varchar的区别
  • Oralce中VARCHAR2()与NVARCHAR2()的区别介绍
  • MySQL中VARCHAR与CHAR格式数据的区别
  • MySQL数据库char与varchar的区别分析及使用建议
  • 深入SQL Server中定长char(n)与变长varchar(n)的区别详解
  • 深入SQL Server中char、varchar、text和nchar、nvarchar、ntext的区别详解
  • Sqlserver中char,nchar,varchar与Nvarchar的区别分析
  • 详解数据库varchar与char有哪些区别

www.htsjk.Com true http://www.htsjk.com/Sql_Server/47598.html NewsArticle sql中的char与varchar有什么区别, 我们在使用sql定义字符串类型的时候,经常会看到char与varchar类型 create table t1(name char(5));create table t2(name varchar(5)); 作为初学者,我们就会对此感到疑惑,...
评论暂时关闭