没有得到null的概念

时间:2010-12-29 13:46:05

标签: mysql

Hy Guys,

从mysql开始。我无法掌握NULL的概念。检查屏幕截图(* declare_not_null,link *)。在它中我特意声明'name'字段为NOT NULL。当我运行'desc test'table命令时,表描述显示name字段的默认值为NULL。为什么会这样?

从我读过的关于NULL的内容来看,它意味着缺少或不适用的信息。因此,当我声明一个字段为NOT NULL时,它暗示(根据我的理解)用户必须输入name字段的值,否则DB引擎应该生成错误,即不会在DB中输入记录。但是当我运行'insert into test value();'数据库引擎进入表中的记录。检查屏幕截图(* empty_value,link *)。

FLICKR LINKS * declare_not_null * http://www.flickr.com/photos/55097319@N03/5302758813/

* empty_values * 检查flickr上的第二个屏幕截图

Q.2 从表的字段中删除主键的sql statemetn是什么。 如果我使用'ALTER TABLE test drop key id;'它给出了以下内容:

错误: 表定义不正确;只能有一个自动列,必须将其定义为键。

感谢您的帮助..

3 个答案:

答案 0 :(得分:1)

您正在查看默认值列。数据库不允许您使用null更新或插入该列。

答案 1 :(得分:1)

我会提出第一个问题:

  

当我运行'desc test'表命令时,表描述显示name字段的默认值为NULL。为什么会这样?

默认值为NULL表示:

  • 您已指定默认值为NULL
  • 您尚未为该列指定默认值。

在这种情况下,它是第二种选择。 意味着可以插入NULL。

答案 2 :(得分:0)

Q.1。我无法访问Flickr所以无法看到您的屏幕截图,无论如何,如果您声明列NOT NULL,则此列集可能有默认值,这就是您可以添加记录的原因。

Q.2。看起来您不能拥有不是主键的自动增量列。因此,如果要删除主键,则需要先删除自动增量。