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;'它给出了以下内容:
错误: 表定义不正确;只能有一个自动列,必须将其定义为键。
感谢您的帮助..
答案 0 :(得分:1)
您正在查看默认值列。数据库不允许您使用null
更新或插入该列。
答案 1 :(得分:1)
我会提出第一个问题:
当我运行'desc test'表命令时,表描述显示name字段的默认值为NULL。为什么会这样?
默认值为NULL表示:
在这种情况下,它是第二种选择。 不意味着可以插入NULL。
答案 2 :(得分:0)
Q.1。我无法访问Flickr所以无法看到您的屏幕截图,无论如何,如果您声明列NOT NULL,则此列集可能有默认值,这就是您可以添加记录的原因。
Q.2。看起来您不能拥有不是主键的自动增量列。因此,如果要删除主键,则需要先删除自动增量。