ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【SQL】建表时的default选项

【SQL】建表时的default选项

原创 Linux操作系统 作者:niuxxf 时间:2012-09-09 22:39:08 0 删除 编辑

建表时的default选项,字符串、数值、SQL函数、表达式均为合法的选项。

一:各种合法选项的测试
SCOTT@ORA11GR2>create table t_def
(sdate date,
 country varchar2(20) default 'China',
 itime date default sysdate,
 yestd date default trunc(sysdate-1));

Table created.

SCOTT@ORA11GR2>
SCOTT@ORA11GR2>insert into t_def(sdate) values(sysdate);

1 row created.

SCOTT@ORA11GR2>commit;

Commit complete.

SCOTT@ORA11GR2>select * from t_def;

SDATE               COUNTRY     ITIME               YESTD              
------------------- ----------- ------------------- -------------------
2012-09-09 22:37:50 China       2012-09-09 22:37:50 2012-09-08 00:00:00

SCOTT@ORA11GR2>
SCOTT@ORA11GR2>select table_name,column_name,data_type,data_default from user_tab_columns where table_name='T_DEF';

TABLE_NAME COLUMN_NAME  DATA_TYPE  DATA_DEFAULT
---------- ------------ ---------- --------------------
T_DEF      SDATE        DATE
T_DEF      COUNTRY      VARCHAR2   'China'
T_DEF      ITIME        DATE       sysdate
T_DEF      YESTD        DATE       trunc(sysdate-1)

SCOTT@ORA11GR2>


二:插入null值的测试
SCOTT@ORA11GR2>insert into t_def(sdate,country) values(sysdate,null);

1 row created.

SCOTT@ORA11GR2>commit;

Commit complete.

SCOTT@ORA11GR2>select * from t_def;

SDATE               COUNTRY     ITIME               YESTD
------------------- ----------- ------------------- -------------------
2012-09-09 22:37:50 China       2012-09-09 22:37:50 2012-09-08 00:00:00
2012-09-09 22:40:05             2012-09-09 22:40:05 2012-09-08 00:00:00

SCOTT@ORA11GR2>

三:更新country字段为null的值为默认值
SCOTT@ORA11GR2>update t_def set country=default where country is null;

1 row updated.

SCOTT@ORA11GR2>commit;

Commit complete.

SCOTT@ORA11GR2>select * from t_def;

SDATE               COUNTRY     ITIME               YESTD
------------------- ----------- ------------------- -------------------
2012-09-09 22:37:50 China       2012-09-09 22:37:50 2012-09-08 00:00:00
2012-09-09 22:40:05 China       2012-09-09 22:40:05 2012-09-08 00:00:00

SCOTT@ORA11GR2>

小结:
1)表达式指的是算数表达式,非逻辑表达式;
2)当有default选项的时候,在插入时,没有指定有default字段,那么此字段会使用默认值;
3)当明确地往有default选项中插入null值的时候,那么默认值是无效的,字段会显示插入的null值;
4)在insert、update的时候,可以直接使用default;
5)default选项中,列名和伪列是非法的;
6)默认值必须满足字段的数据类型。
    表达式是合法选项,乍一听有点儿懵,给我第一感觉就是逻辑表达式,这怎么可能放在default选项中呢,可是稍微冷静一下会发现,其实表达式不单单有逻辑表达式,还有算数表达式,所以,表达式是合法选项是没有任何问题的。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/685769/viewspace-742982/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-02-21

  • 博文量
    44
  • 访问量
    131607