请为我澄清两件事:
据我所知,NULL不应该在外键中使用,但在我的某些应用程序中,我能够NULL在Oracle和SQL Server中输入,我不知道为什么.
显然oracle似乎没有区分空字符串和空值.例如
Select name from TABLE_A where id=100;
ID NAME
100 null
Update TABLE_A set NAME='' where id=100;
SELECT -->
ID NAME
100 null
SELECT length(NAME) FROM TABLE_A WHERE id=100;
null
Run Code Online (Sandbox Code Playgroud)
我想不出有什么理由可以建立Oracle以这种方式运行(它是否也在sqlplus中执行此操作? - 我通过java接口访问,引用的文章使用了php客户端).
难道你至少不想区分0长度和未定义长度吗?这是一个已知的问题?某些特定目的的故意行为?数据库理论中长期存在的争议?是什么赋予了?
(这是Matt Solnit对这个问题的回答.)
我发现当我form field通过表单插入任何字符串时,它会将其捕获为空字符串''.
但是,当我form field通过表单插入整数时,它将其捕获为[null].
这是好习惯吗?字符串应该null在数据库中也一样吗?
我有一些列可能包含用户想要提供的数据.
示例| 电子邮件 | 名字 | 姓氏 |
电子邮件 - 必需,因此列设置为NOT NULL - 默认值:无
名字 - 不需要因此列设置为NULL - 默认值:NULL
姓氏 - 不需要,因此列设置为NULL - 默认值:NULL
在phpmyadmin中创建/编辑列时; 它有一个选项说默认:下拉显示无| 如定义| NULL | 当前时间戳
因为名字| 姓氏是可选的,如果我选择默认的NULL或NONE,则不需要姓氏?
哪个最好,为什么请?
我知道有很多关于此的讨论,但我找不到任何回答我的问题; 他们更多关于允许NULL或NOT NULL,我的问题是关于默认值.
我必须检查名为RESULT空白的特定列的值是否为空.
当我检查时if RESULT IS NULL,查询失败,但当我检查时RESULT='',它工作.
两者之间有什么区别.
请解释.
"UPDATE RLS_TP_2012_03 a, RLS_TP_2012_03 b SET a.COMMENT=b.COMMENT where b.TCODE='T1199' and a.GROUPNAME='xyz' and a.HLABNO=b.HLABNO and a.RESULT =''; ";
"UPDATE RLS_TP_2012_03 a, RLS_TP_2012_03 b SET a.COMMENT=b.COMMENT where b.TCODE='T1199' and a.GROUPNAME='xyz' and a.HLABNO=b.HLABNO and a.RESULT is NULL; "
Run Code Online (Sandbox Code Playgroud) 这个函数在这里 http://davidwalsh.name/backup-mysql-database-php
已经漂浮在互联网上一段时间,并且非常有名,但它在标准的mysql中.有没有人有相同但在PDO?如果没有,是否有人想制作一个?它是否有可能,我在某处读到PDO没有做SHOW CREATE TABLE - 是吗?
最后,有人可以解释一下这个功能和使用SELECT*INTO OUTFILE之间的区别吗?
(请不要将此标记为包含太多问题,它们都是紧密相关的,并且我确定答案对许多人都有用)
database ×3
mysql ×3
oracle ×3
sql ×2
backup ×1
django ×1
foreign-keys ×1
null ×1
pdo ×1
php ×1
phpmyadmin ×1
sql-server ×1
sqldatatypes ×1