急...困惑中...百思不得其解,请各位帮帮小妹!

weizhihui1213 2003-10-09 10:32:48
我在建表时遇到这样一种情况:明明建的是char(19),确认后查看却是varchar(19),请问这是什么原因?我的这个表中有18个字段,其中有多个char、varchar,但只有长度为1的char类型,查看时显示的是char(1),其余的都显示成了varchar。请各位帮忙!谢谢!
...全文
51 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
weizhihui1213 2003-10-09
  • 打赏
  • 举报
回复
不行啊!
loveflea 2003-10-09
  • 打赏
  • 举报
回复
Innodb表 如果char 长度大于 3 就会自动变为 varchar.

你可以象这样见表

create talbe temp(n1 char(1),n2 char(10)) type = myisam;
weizhihui1213 2003-10-09
  • 打赏
  • 举报
回复
不是的,是MYISAM类型的
loveflea 2003-10-09
  • 打赏
  • 举报
回复
是不是表默认为innodb类型?
weizhihui1213 2003-10-09
  • 打赏
  • 举报
回复
哦?是这样啊。谢谢!
shuixin13 2003-10-09
  • 打赏
  • 举报
回复
6.5.3.1 隐式的列定义变化

在某些情况下,MySQL 隐式地改变一个在 CREATE TABLE 给定的列的规约。(这在 ALTER TABLE 中也可能发生。):

长度不超过四个字节的 VARCHAR 列被改变为 CHAR。

如果在一个表中有任何一个列是变长的,则结果是整个记录行也是变长的。因此,如果一个表中包含任何变长的列(VARCHAR、TEXT 或 BLOB),所有长于 3 个字符的 CHAR 列将被改变为 VARCHAR 列。这在任何方面都不影响你如何使用该列;在 MySQL 中,VARCHAR 只是存储字符的另一个不同的方法。MySQL 执行这个转换,是因为它节省空间,并且使表操作更快。查看章节 7 MySQL 表类型。

TIMESTAMP 的显示尺寸必须是在 2 到 14 范围之内的偶数。如果指定显示尺寸为 0 或超过 14,尺寸被强制设为 14。从 1 到 13 范围内的奇数值尺寸将被强制为下一个更大的偶数。

你不能在一个 TIMESTAMP 列中存储一个文字 NULL;将一个 NULL 值赋给它将设置它为当前的日期和时间。因为 TIMESTAMP 列的行为就是这样,列的 NULL 和 NOT NULL 属性不以常态方式影响它,如果你指定它,将被忽略。DESCRIBE tbl_name 总是报告一个 TIMESTAMP 列被赋于了 NULL 值。

MySQL 将其它 SQL 数据库供应商使用的列类型映射到 MySQL 类型。查看章节 6.2.5 使用来自其它的数据库引擎的列类型。
如果你希望知道在你创建或改变了你的表后, MySQL 是否使用了不同于你所指定的列类型,你可以发出一个 DESCRIBE tbl_name 语句。

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧