问一个数据库设计的基本问题(null)

问一个数据库设计的基本问题(null),第1张

备注、描述、Comment 之类的可以设置为 NULL,其他的,最好不要。
如果是有唯一性索引的列,则最好不要设 NULL;NULL 和 NOT NULL 是用于数据完整性约束的,至于性能,从 Oracle 角度说,当然是 NOT NULL 好,但是 NOT NULL,占用空间大一点,其实如果不是必须,完全可以不要设成 NOT NULL。你要知道,需求来自 User,而不是 IT。

$min_codtime = ($_POST['min_codtime']!=null) $_POST['min_codtime']:’NULL‘;//加上单引号就行了。
$exec="INSERT INTO expressage (max_codtime) values($min_codtime)";//还有,这里不是$max_codtime
$result = mysql_query($exec);

1sql语句法

新建一个查询,使用语句设置:update p_order set finish_time=null where id='XXXX'

2navicat for mysql中设置

双击打开p_order表,通过时间排序找到该条需要修改的记录,在该条记录的finish_time上直接右键(不需要删除数据),右键后会有设置为Null(英文是:Set to Null),结果就已经被设置为Null值了。

说明:以上两种方法的前提是finish_time这列在设计时要允许为Null,如果不是,这么设置是不奏效的。

扩展资料:

@表示声明一个局部变量,@@表示声明一个全局变量(比如已经定义好的系统变量)

申明局部变量语法:declare @变量名 数据类型;例如:declare @num int;

赋值:有两种方法式(@num为变量名,value为值)。

set @num=value;   或   select @num=value;

DECLARE @count表示选定变量,SELECT @count=1表示为count赋值;这里的赋值语句还可以使用SET @count=1。

但是select和set在赋值语句中有些区别:SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值,即如果数据表中存在多个count变量,则不能使用SET赋值;例:将变量count值赋值为1:

update tblname set 字段=null where condition; 直接用常量Null。

这个是有条件限制的。可以先select from table_name查看一下表中想设置的那个列的属性是否设置了NOT NULL,如果设置了NOT NULL,那么是不能简单的修改为NULL的。必须先修改这个列的属性,alter table table_name set (列名) varchar(100) default null现在就是默认为空,如果查询出来是允许为空,直接update 表名 set 列名=null where 条件即可。

ContentValues
initialValues
=
new
ContentValues();
initialValuesput(KEY_NAME,
name);
initialValuesput(KEY_EMAIL,
email);
return
dbinsert(DATABASE_TABLE,
null,
initialValues);
1
如果你只是某几列为空,你可以使用上面的语句,为空的列不要设置。

1、你的理解是错误的,你说的null是字符,而你说的NULL应该是SQL内置的空值。
2、关系型数据库中的主键均不能为空,不管是单一列做为主键还是多列组合做为主键,都是不允许的
3、主键的概念你还不清楚,下面给你一些参考材料,你阅读后就会明白。
主键(primary
key)是表中的一个或多个字段,它的值用于惟一地标识表中的某一条记录。在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录。主关键字是一种唯一关键字,表定义的一部分。一个表不能有多个主关键字,并且主关键字的列不能包含空值。主关键字是可选的,并且可在
CREATE
TABLE

ALTER
TABLE
语句中定义。

空值是一个比较特殊的字段。在mysql数据库中,在不同的情形下,空值往往代表不同的含义。这是mysql数据库的一种特性。如在普通的字段中(字符型的数据),空值就是表示空值。但是如果将一个空值的数据插入到timestamp类型的字段中,空值就不一定为空。此时为出现什么情况呢
我先创建了一个表。在这个表中有两个字段:user_id(其数据类型是int)、date(其数据类型是timestamp)。现在往这个表中插入一条记录,其中往date字段中插入的是一个null空值。可是当我们查询时,其结果显示的却是插入记录的当前时间。这是怎么一回事呢其实这就是在mysql数据库中执行sql语句时经常会遇到的一个陷阱:空值不一定为空。在 *** 作时,明明插入的是一个空值的数据,但是最后查询得到的却不是一个空值。
在mysql数据库中,null对于一些特殊类型的列来说,其代表了一种特殊的含义,而不仅仅是一个空值。对于这些特殊类型的列,各位读者主要是要记住两个。一个就是笔者上面举的timestamp数据类型。如果往这个数据类型的列中插入null值,则其代表的就是系统的当前时间。另外一个是具有auto_increment属性的列。如果往这属性的列中插入null值的话,则系统会插入一个正整数序列。而如果在其他数据类型中,如字符型数据的列中插入null的数据,则其插入的就是一个空值。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13141723.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-11
下一篇 2023-06-11

发表评论

登录后才能评论

评论列表(0条)

保存