VARCHAR() 子句中指定的数字意味着什么?

yee*_*een 6 mysql sql database types

只是为了澄清一下,通过指定类似 VARCHAR(45) 的内容意味着它最多可以占用 45 个字符?我记得几年前我听某人说括号中的数字不是指字符数,然后那个人试图向我解释一些相当复杂的东西,我不明白并且已经忘记了。

那么CHAR和VARCHAR有什么区别呢?我确实搜索了一下,发现 CHAR 为您提供了列大小的最大值,如果您的数据具有固定大小,最好使用它;如果您的数据大小变化,最好使用 VARCHAR。

但是,如果它为您提供了该列所有数据的列大小的最大值,那么当您的数据大小变化时使用它不是更好吗?特别是当您不知道数据大小有多大时。VARCHAR需要指定大小(CHAR其实不需要吧?),是不是比较麻烦?

Dea*_*ing 5

您还必须使用 指定尺寸CHAR。使用 时CHAR,列值将用空格填充以填充您指定的大小,而使用 时VARCHAR,仅存储您指定的实际值。

例如:

CREATE TABLE test (
    char_value CHAR(10),
    varchar_value VARCHAR(10)
);

INSERT INTO test VALUES ('a', 'b');

SELECT * FROM test;
Run Code Online (Sandbox Code Playgroud)

上面将选择“a”char_value和“b”varchar_value

如果所有值的大小大致相同,则CHAR可能是更好的选择,因为它通常需要比VARCHAR. 这是因为VARCHAR既存储值的长度又存储值本身,而CHAR可以只存储(固定大小)值。

  • 是的,但是假设您有 varchar(2) 与 char(2),在这种情况下,char(2) 将是两个字节,varchar(2) 将是 3 个字节。 (2认同)