mysql 中default什么意思_数据库中default的用法正确使用方法

数据库中default的用法的正确使用方法你清楚吗,今天学习啦小编就跟大家详细介绍下数据库中default的用法,希望能帮到大家。

数据库中default的用法的用法

SQL Server数据库default value的使用方法的总结是本文我们主要要介绍的内容,接下来我们就开始介绍这部分内容,希望能够对您有所帮助。

1.在创建表的时候,给字段添加的默认值约束

CREATE TABLE "dbo"."Test"    (    id int PRIMARY KEY,    sex varchar(10) DEFAULT ('boy'),    name varchar(40),    age int DEFAULT ((1)),    )

注意:

此时默认值约束,没有约束名称。DMBS会自动的给添加一个“默认值约束名称”,注意varchar类型和int类型在DEFAULT 中的写法:分别用‘’和()把value值包起来。

2.在创建表之后,给字段添加的默认值约束

alter table [dbo].[Test] add constraint Test_name_Default Default('Tom') for baseCurrencyCode

注意:

此时,必须编写一个约束名称,防止重名。

3.修改字段原有的默认值约束

declare @csname varchar(100)    set @csname= ''    select @csname=[name]    from sysobjects     where id=(select cdefault from syscolumns where id=object_id('Test') and name='age')    exec('alter table [dbo].[Test] drop constraint ' + @csname )    exec('alter table [dbo].[Test] add constraint ' + @csname + ' Default((18)) for age')

注意:

默认值约束,不能修改。必须先drop之后再add drop的时候,必须知道当前“默认值约束的名称”。通过上面的sql可以查出Test表的age字段所绑定的“默认值约束名称”,才可以drop。

关于SQL Server数据库default value的使用的总结就介绍到这里了,希望本次的介绍能够对您有所收获!

数据库中default的用法详解示例

有一点是很重要的,即 DEFAULT 值只有当一个字段没有在 INSERT 或 MERGE 中指定值,或者使用了 DEFAULT 关键字时才会使用。如果你不显式地声明一个 DEFULAT 值,Oracle 将隐式地将默认值定义为 NULL,而且 DEFAULT 关键字也是这样。从 oracle 9i开始,可以在 DEFAULT 子句中使用诸如 SYSDATE 或 CURRENT_TIMESTAMPE 之类的伪字段。例如:

create table t1

(

id$ integer not null,

charcol char default 'Y',

datecol date default sysdate,

strcol varchar2(30) default user,

intcol integer default 12

);

insert into t1 (id$) values (1);

select * from t1;

ID$ C DATECOL STRCOL INTCOL

---------- - --------- ------------------------------ ----------

1 Y 28-MAY-04 SCOTT 12

DEFAULT 关键字与INSERT、MERGE 或UPDATE 语法比起来可以看上去没有那么必要,但是想一下如果你希望在插入一列数据时使用所有默认值,那么你就不会这么认为了。Oracle 不接受INSERT INTO 或INSERT INTO VALUES () 作为有效的 SQL。必须指定至少一个字段,但是可以使用 DEFAULT 关键字来允许使用默认值,而非硬编码值,所以下面是有效的语法,它将使用所有 DEFAULT 值创建一行记录。

create table t2(charcol char default 'Y',datecol date default sysdate);

insert into t2 (charcol) values (default);

select * from t2;

C DATECOL

- ---------

Y 28-MAY-04

数据库中default的用法常见问题

一个常见的问题是模拟其它数据库提供商的 Autonumber 功能,该功能是使用某种顺序数字自动地填充某个字段。在 Oracle 数据库中,不能指定一个顺序数字作为一个字段的 DEFAULT 值;然而,可以使用触发器模拟这一功能。即使一个字段声明为 NOT NULL,也依然可以在 INSERT 语句中忽略这个字段,而使用一个触发器来填充该字段的值。注意使用 DEFAULT 关键字比使用显式的 NULL 可读性要好。

create sequence t3_seq;

create table t3(id$ integer constraint t3_pk primary key);

create or replace trigger t3_autonumber

before insert on t3 for each row

begin

if :new.id$ is null then

select t3_seq.nextval into :new.id$ from dual;

end if;

end;

/

show errors;

insert into t3(id$) values (default);

select * from t3;

ID$

----------

1

可以使用SYS_CONTEXT 值的集合中的默认值来填充字段,并收集有关某处一个会话的重要信息:

create table t4

(

when date default SYSDATE,

db_domain varchar2(200) default SYS_CONTEXT('USERENV','DB_DOMAIN'),

host varchar2(256) default SYS_CONTEXT('USERENV','HOST'),

ip_address varchar2(256) default SYS_CONTEXT('USERENV','IP_ADDRESS'),

language varchar2(256) default SYS_CONTEXT('USERENV','LANGUAGE'),

protocol varchar2(200) default SYS_CONTEXT('USERENV','NETWORK_PROTOCOL'),

terminal varchar2(200) default SYS_CONTEXT('USERENV','TERMINAL')

);

insert into t4 (when) values (default);

select * from t4;

WHEN

---------

DB_DOMAIN

------------------------------------------------------------------------------

HOST

------------------------------------------------------------------------------

IP_ADDRESS

------------------------------------------------------------------------------

LANGUAGE

------------------------------------------------------------------------------

PROTOCOL

------------------------------------------------------------------------------

TERMINAL

------------------------------------------------------------------------------

28-MAY-04

scott.bn

MSHOME/SCOTT-LAP

AMERICAN_AMERICA.AL32UTF8

SCOTT-LAP

还可以使用伪字段SYS_GUID 来填充一个字段;它具有全局唯一性的优点,并且不需要顺序数字或触发器开销:

create table t5(id$ raw(16) default sys_guid()

constraint t5_pk primary key);

insert into t5(id$) values (default);

select * from t5;

ID$

--------------------------------

643718A07DCC43F2AC95312FD43617BA

猜你喜欢:

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值