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查出...