建資料庫表時給字段加可為空和預設值為0的約束該怎麼加

時間 2021-10-14 21:22:52

1樓:

--完整的示例

--sqlserver建表表時設定欄位的預設值

create table 表(id int,name

varchar(10) default '張三',age int)

--新增欄位時設定欄位的預設值

alter table 表 add

*** char(2) default '男'

--為表中現有的字段設定預設值

alter table 表 add constraint

df_age_表 default(20) for age

go --插入一條記錄驗證

insert 表(id)

values(1)

select * from 表

go約束主要有一下幾種:

not null : 用於控制欄位的內容一定不能為空(null)。

unique : 控制項字段內容不能重複,乙個表允許有多個 unique 約束。

primary key:  也是用於控制項字段內容不能重複,但它在乙個表只允許出現乙個。

foreign key:  foreign key 約束用於預防破壞表之間連線的動作,foreign key 約束 2. 也能防止非法資料插入外來鍵列,因為它必須是它指向的那個表中的值之一。

check: 用於控制欄位的值範圍。

default: 用於設定新記錄的預設值。

not null : 用於控制欄位的內容一定不能為空(null)。

用法 :create table mytable

(id varchar(32) not null,

name varchar (32)

)primary key :也是用於控制項字段內容不能重複,但它在乙個表只允許出現乙個。

在sql server、orcale、ms access 支援的新增primary key語法:

create table mytb1

(id nvarchar(32) not null primary key,

name nvarchar(32))

2樓:匿名使用者

如果可為空的話就不用任何條件了,別設成not null就可以了

create table k ( name varchar2(20) default '張三' );

這樣 預設值就為0了 也可以為空了

3樓:匿名使用者

null default 0

4樓:匿名使用者

create table k ( name varchar2(20) default '0');

5樓:匡曄李山槐

用default看下面的例子:

sql>

create

table

test2(

col1

intdefault1,3

col2

int)4;

table

created

sql>

insert

into

test(col2)

values(100);

1row

inserted

sql>

select

*from

test;

col1

col2

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

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

1100

sql>

資料庫字段設定了預設值,插入資料時,該字段值為空,會覆蓋了那個預設值嗎?

6樓:匿名使用者

假如這個欄位是字元型的,你插入的時候,是插""(也就是插入乙個值,這個值是空),那就會把這個這段變為空。如果你是想留空,使用預設值。insert語句中就不要新增這個字段,跳過。

7樓:我是哈哈哈

會。資料庫中欄位設定的預設值和插入的結果不一致,怎麼辦?

解決方案1、insert的sql語句貼出來;

解決方案2、先看看你的新增**是不是有問題,怎麼寫的;

解決方案3、

我做插入不是直接用sql插的,而是運用entityframework**如下:

using(testentitiescontext=newtestentities())

以上**中我沒有給person.isstudent賦值解決方案5、person.isstudent不賦值就是預設為0;

解決方案7、

資料庫指令碼:setquoted_identifierongocreatetable[dbo].[persons]([id][int]identity(1,1)notnull,[firstname][nvarchar](50)null,[lastname][nvarchar](50)null,[address][nvarchar](50)null,[city][nvarchar](50)null,[isstudent][bit]notnull,constraint[pk_persons]primarykeyclustered([id]asc)with(pad_index=off,statistics_norecompute=off,ignore_dup_key=off,allow_row_locks=on,allow_page_locks=on)on[primary])on[primary]goaltertable[dbo].

[persons]addconstraint[persons_isstudent]default((1))for[isstudent]go預設值是1。

8樓:匿名使用者

當然會覆蓋 預設值 因為實際上 你已經給這個字段賦值了 null 和 兩個引號 不同概念

9樓:匿名使用者

你可以在插入的時候判斷,如果為空則不操作嘛!

10樓:匿名使用者

會。。。不管你插入什麼。只要你插入東西了,那麼就會覆蓋掉預設的值

11樓:匿名使用者

mysql 5.5版本如果你指定某個欄位為null, 就不會覆蓋預設值

mysql 5.6版本如果你指定某個欄位為null, 就會覆蓋預設值

oracle資料庫的乙個表中,怎麼設定欄位的預設值

12樓:大野瘦子

如果表已經存在,用如下方法設定預設值:

alter table 表名 modify 欄位名 default 預設值;

如test表中設定age欄位為30,可用如下語句:

alter table test modify age default 30;

13樓:匿名使用者

--樓主可以用命令更改下試試

alter table 表名 modify 欄位名 default(0);

--有什麼問題可以隨時找我 如果解決了問題 希望採納

14樓:匿名使用者

create table test(id number,name varchar2(10),create_date date default sysdate);

其中字段:create_date的預設值就是系統時間。

create table test(id number,name varchar2(10),create_date varchar2 default '無');

其中字段:create_date的預設值就是字串「無」。

看了你的例子,覺得很暈。。。按你的表設計的那一列應該是date型別,你希望預設日期是無,那就允許為空就是,預設的應該是null值,也就是你所謂的「無」,如果你希望他顯示「無」,那麼這一列應該設定為varchar2型別即可。但是問題由來了,你就不可以直接使用sysdate往表裡插入日期了,必須使用to_char函式來修改一下,即to_char(sysdate,'yyyy-mm-dd'),才可以插入此列。

15樓:鐘瑪

這趕緊去網上搜尋下就知道了

16樓:匿名使用者

create table 表名 (

id varchar2(10) default '0000000000')

17樓:匿名使用者

create table z_test007(recoid number(14) not null,oid number(14) not null,subsid number(14) not null,region number(5) not null,cugid number(10) not null,name1 varchar2(32) default '無');

access資料庫如果a表中a欄位等於b表中b欄位則

璀璨星空 你的資料庫設計不合理,aa c 警察 王剛 警察 李明 b b不應該有c欄位b警察 小偷類似的方法應該用 left join 左連線,是和一對多的情況 select a.a,a.c from a left join b where a.a b.a 解0人 這個用vba去做好點 用vba寫自...

資料庫如何建一對一表,資料庫如何建立表間一對多關係

糖糖寳寳 一對一有時候需要建表,因為 繼承 多型 的原因。比如 使用者表 和 vip使用者表 的關係。或者 普通使用者 和 企業使用者 的關係 正常情況下是需要一個是否vip標記位就可以了。但是當下面情況發生的時候,需要建單獨的表 1,當vip的屬性欄位比普通使用者多很多,並且衍生的邏輯關係比普通使...

oracle資料庫怎麼把表中的欄位按規律拆

1 首先需要sys或system許可權操作 2 查詢需要更改表的id select object id from all objects where owner ithome and object name test 1234注 ithome為使用者,test是要更改的表,表名要大寫3 通過id查出...