mysql数据类型-字符串

  • char(m)

    定长字符串,m代表字符串的长度,最多可容纳255个字符。
    
    定长的体现:即使内容长度小于m,也会占用m长度。
    例如:char(5),数据是:yes,底层也会占用5个字符;如果超出m长度限制(默认MySQL是严格模式,所以会报错)。
    如果在配置文件中加入如下配置:
    sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    保存并重启,此时MySQL则是非严格模式,此时超过长度则自动截断(不报错)。

    注意:默认底层存储是固定的长度(不够则用空格补齐),但是查询数据时,会自动将空白去除。 

   如果想要保留空白,在sql-mode中加入 PAD_CHAR_TO_FULL_LENGTH 即可。

   查看模式sql-mode,执行命令:show variables like 'sql_mode';


  一般适用于:固定长度的内容。

  create table L3(
      id int not null primary key auto_increment,
      name varchar(5),
      depart char(3)
  )default charset=utf8;

  insert into L3(name,depart) values("alexsb","sbalex");
  • varchar(m)
  变长字符串,m代表字符串的长度,最多可容纳65535个字节。
  变长的体现:内容小于m时,会按照真实数据长度存储;如果超出m长度限制((默认MySQL是严格模式,所以会报错)。
    如果在配置文件中加入如下配置:
    sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    保存并重启,此时MySQL则是非严格模式,此时超过长度则自动截断(不报错)。

  例如:
  create table L3(
      id int not null primary key auto_increment,
      name varchar(5),
      depart char(3)
  )default charset=utf8;
  mysql> create table L3(id int not null primary key auto_increment,name varchar(5),depart char(3))default charset=utf8;
  Query OK, 0 rows affected (0.03 sec)

  -- 插入多行
  mysql> insert into L3(name,depart) values("wu","WU"),("wupei","ALS");
  Query OK, 2 rows affected (0.00 sec)
  Records: 2  Duplicates: 0  Warnings: 0

  mysql> select * from L3;
  +----+-------+--------+
  | id | name  | depart |
  +----+-------+--------+
  |  1 | wu    | WU     |
  |  2 | wupei | ALS    |
  +----+-------+--------+
  2 rows in set (0.00 sec)

  -- 非严格模式下,不会报错。
  mysql> insert into L3(name,depart) values("wupeiqi","ALS");
  ERROR 1406 (22001): Data too long for column 'name' at row 1
  mysql> insert into L3(name,depart) values("wupei","ALSB");
  ERROR 1406 (22001): Data too long for column 'depart' at row 1
  mysql>

  -- 如果 sql-mode 中加入了 PAD_CHAR_TO_FULL_LENGTH ,则查询时char时空白会保留。
  mysql> select name,length(name),depart,length(depart) from L3;
  +-------+--------------+--------+----------------+
  | name  | length(name) | depart | length(depart) |
  +-------+--------------+--------+----------------+
  | wu    |            2 | WU     |              3 |
  | wupei |            5 | ALS    |              3 |
  +-------+--------------+--------+----------------+
  4 rows in set (0.00 sec)
  mysql>
  • text

    text数据类型用于保存变长的大字符串,可以组多到65535 (2**16 − 1)个字符。
    
    一般情况下,长文本会用text类型。例如:文章、新闻等。
    
    create table L4(
    	id int not null primary key auto_increment,
        title varchar(128),
    	content text
    )default charset=utf8;
    
  • mediumtext

    A TEXT column with a maximum length of 16,777,215 (2**24 − 1) characters.
    
  • longtext

    A TEXT column with a maximum length of 4,294,967,295 or 4GB (2**32 − 1)
posted @ 2021-11-14 23:49  A熙  阅读(185)  评论(0)    收藏  举报