『壹』 如何在SQL2005中用命令行增加欄位,添加數據文件,不允許為空
比如要增加一個usercode
alter table news_user add column usercode
------------------------------------------------------------------------------------------------------------------
ALTER TABLE 表 {ADD ADD{COLUMN 欄位類型 [ (字長)] [NOT NULL] [CONSTRAINT 索引 ] |
ALTER COLUMN 欄位類型 [(字長)] |
CONSTRAINT 多重欄位索引 } |
DROP DROP{COLUMN 欄位 I CONSTRAINT 索引名 } }
ALTER TABLE 語句分為以下幾個部分:
部分 說明
table 欲修改的表之名稱。
field 欲在表內增加或刪除的欄位的名稱。或表內欲被替換的欄位名稱。
type 欄位的數據類型。
size 欄位的字元長度 (文本及二進制欄位)。
-------------------------------------------------------------------------------------------------------------------
附加數據文件,還是問問高手吧
『貳』 如何在VFP表中用命令添加一條欄位
alter
table
<表名>
add
<欄位名>
<欄位類型>
例如
:
add
table
成績表
add
數學成績
c(8)
意思是在成績表中加一個欄位名叫
數學成績
欄位類型為字元型
寬度為8
『叄』 oracle在某個表中增加欄位的命令是什麼
oracle在某個表中增加欄位的命令是altertable,oracle在某個表中增加欄位的操作步驟如下:
1、首先雙擊oracle可執行文件連接oracle資料庫服務。
『肆』 怎麼給mysql數據表添加欄位
傳統情況
我們先回顧一下,在沒有 "立刻加列" 功能時,加列操作是怎麼完成的。我們也藉此來熟悉一下本期的圖例:
擴展思考題:是否能設計其他的數據格式,取代instant標志位和"列數"欄位,使得 加列/刪列 操作都能 "立刻完成" ?(提示:考慮 加列- 刪列- 再加列 的情況)
使用限制
在了解原理之後,我們來看看"立刻加列"的使用限制,就很容易能理解其中的前兩項:
"立刻加列"的加列位置只能在表的最後,而不能加在其他列之間
在元數據中,只記錄了 數據行 應有多少列,而沒有記錄 這些列 應出現的位置。所以無法實現指定列的位置
"立刻加列"不能添加主鍵列
加列 不能涉及聚簇索引的變更,否則就變成了 "重建" 操作,不是 "立刻" 完成了
"立刻加列"不支持壓縮的表格式
按照 WL 的說法:"COMPRESSED is no need to supported"(沒必要支持不怎麼用的格式)
總結回顧
我們總結一下上面的討論:
"立刻加列" 之所以高效的原因是:
在執行 "立刻加列" 時,不變更數據行的結構
讀取 "舊" 數據時,"偽造"新增的列,使結果正確
寫入 "新" 數據時,使用了新的數據格式(增加了instant 標志位和 "列數" 欄位),以區分新舊數據
讀取 "新" 數據時,可以如實讀取數據
"立刻加列"的 "偽造" 手法,不能一直維持下去。當發生與 "立刻加列" 操作不兼容的 DDL時,表數據就會發生重建
回到之前遺留的兩個問題:
"立刻加列" 是如何工作的 ?
我們已經解答了這個問題
所謂 "立刻加列" 是否完全不影響業務,是否是真正的 "立刻" 完成 ?
可以看到:就算是 "立刻加列",也需要變更 數據字典,那麼 該上的鎖還是逃不掉的。也就是說 這里的 "立刻" 指的是 "不變更數據行的結構",而並非指 "零成本地完成任務"
『伍』 請問要在當前資料庫文件中增加欄位,應使用什麼命令呢謝謝
alter table 表名 add 新列列名 列數據類型 (添加列)
alter table 表名 drop 列名 (刪除列)
alter table 表名 alter column 列名 新添加的數據類型 (修改列)
『陸』 要想對一個打開的資料庫增加新欄位,應當使用命令 ___________.
alter table tables
add 列明 類型
『柒』 MySQL命令行中給表添加一個欄位(欄位名、是否為空、默認值)
先看一下最簡單的例子,在test中,添加一個欄位,欄位名為birth,類型為date類型。
mysql>
alter
table
test
add
column
birth
date;
Query
OK,
0
rows
affected
(0.36
sec)
Records:
0
Duplicates:
0
Warnings:
0
查詢一下數據,看看結果:
mysql>
select
*
from
test;
+------+--------+----------------------------------+------------+-------+
|
t_id
|
t_name
|
t_password
|
t_birth
|
birth
|
+------+--------+----------------------------------+------------+-------+
|
1
|
name1
|
|
NULL
|
NULL
|
|
2
|
name2
|
|
2013-01-01
|
NULL
|
+------+--------+----------------------------------+------------+-------+
2
rows
in
set
(0.00
sec)
從上面結果可以看出,插入的birth欄位,默認值為空。我們再來試一下,添加一個birth1欄位,設置它不允許為空。
mysql>
alter
table
test
add
column
birth1
date
not
null;
Query
OK,
0
rows
affected
(0.16
sec)
Records:
0
Duplicates:
0
Warnings:
0
居然執行成功了!?意外了!我原來以為,這個語句不會成功的,因為我沒有給他指定一個默認值。我們來看看數據:
mysql>
select
*
from
test;
+------+--------+----------------------------------+------------+-------+------------+
|
t_id
|
t_name
|
t_password
|
t_birth
|
birth
|
birth1
|
+------+--------+----------------------------------+------------+-------+------------+
|
1
|
name1
|
|
NULL
|
NULL
|
0000-00-00
|
|
2
|
name2
|
|
2013-01-01
|
NULL
|
0000-00-00
|
+------+--------+----------------------------------+------------+-------+------------+
2
rows
in
set
(0.00
sec)
哦,明白了,系統自動將date類型的值,設置了一個默認值:0000-00-00。下面我來直接指定一個默認值看看:
mysql>
alter
table
test
add
column
birth2
date
default
'2013-1-1';
Query
OK,
0
rows
affected
(0.28
sec)
Records:
0
Duplicates:
0
Warnings:
0
mysql>
select
*
from
test;
+------+--------+----------------------------------+------------+-------+------------+------------+
|
t_id
|
t_name
|
t_password
|
t_birth
|
birth
|
birth1
|
birth2
|
+------+--------+----------------------------------+------------+-------+------------+------------+
|
1
|
name1
|
|
NULL
|
NULL
|
0000-00-00
|
2013-01-01
|
|
2
|
name2
|
|
2013-01-01
|
NULL
|
0000-00-00
|
2013-01-01
|
+------+--------+----------------------------------+------------+-------+------------+------------+
2
rows
in
set
(0.00
sec)
看到沒,將增加的birth2欄位,就有一個默認值了,而且這個默認值是我們手工指定的。
關於MySQL中給表添加一個欄位,本文就介紹這么多,希望對大家有所幫助,謝謝!
『捌』 mysql 怎麼給一個表一次增加多個欄位
一、添加欄位的命令如下:alter table tableName add newColumn varchar(8) comment '新添加的欄位'
(8)命令增加欄位擴展閱讀
增加欄位注意事項:1、在增加欄位的語句中需要注意的是,comment為注釋,就像在java中//作用是一樣的。
2、comment後需要加單引號將注釋引起來。
3、創建新表的腳本中,可在欄位定義腳本中添加comment屬性來添加註釋。
『玖』 資料庫中,增加欄位增加的是欄位名還是在某欄位名下增加欄位
語法
alter
table
table
[
*
]
add
[
column
]
column
type
alter
table
table
[
*
]
alter
[
column
]
column
{
set
default
value
|
drop
default
}
alter
table
table
[
*
]
rename
[
column
]
column
to
newcolumn
alter
table
table
rename
to
newtablealter
table
table
add
table
constraint
definition
inputs
table
試圖更改的現存表的名稱.
column
現存或新的列名稱.
type
新列的類型.
newcolumn
現存列的新名稱.
newtable
表的新名稱.
table
constraint
definition
表的新的約束定義.
輸出
alter
從被更名的列或表返回的信息.
error
如果一個列或表不存在返回的信息.
描述
alter
table
變更一個現存表的定義.add
column
形式用與
create
table一樣的語法向表中增加一個新列/欄位。alter
column
形式允許你從列/欄位中設置或者刪除預設(值)。注意預設(值)只對新插入的行有效。rename
子句可以在不影響相關表中任何數據的情況下更改一個表或者列/欄位的名稱。因此,表或列/欄位在此命令執行後仍將是相同尺寸和類型。add
table
constraint
definition
子句用與
create
table一樣的語法向表中增加一個新的約束。
如果要改變表的屬性,你必須是表的所有者.
注意
column
關鍵字是多餘的,可以省略.
如果"*"跟在一個表名後面,表示該命令要對該表和所有繼承級別低於該表的表進行操作;預設時,該屬性(更改)不會增加到任何子表或修改任何子表的相關名稱。當增加或修改一個上級表(譯註:繼承級別高的表)的屬性時總是應該這樣的。否則,象下面這樣的在繼承級上進行的查詢
select
newcolumn
from
superclass*
將不能工作,因為子表會比上級表少一個屬性。
在目前的實現里,新列/欄位的預設(值)和約束子句會被忽略。你可以隨後用
alter
table
的
set
default
形式設置預設(值)。(你還不得不用
update
把已存在行更新為預設值。)
在目前的實現里,只有
foreign
key
約束可以增加到表中.要創建或者刪除一個唯一約束,可以創建一個唯一索引(參閱
create
index).要想增加
check
(檢查)約束,你需要重建和重載該表,用的參數是
create
table
命令的其他參數.
要修改表的結構,你必須是表的所有人。不允許更改系統表結構的任何部分。postgresql
用戶手冊
里有關於繼承的更多信息.
請參考
create
table
部分獲取更多有效參數的描述.
用法
向表中增加一個
varchar
列:
alter
table
distributors
add
column
address
varchar(30);
對現存列改名:
alter
table
distributors
rename
column
address
to
city;
對現存表改名:
alter
table
distributors
rename
to
suppliers;
向表中增加一個外鍵約束:
alter
table
distributors
add
constraint
distfk
foreign
key
(address)
references
addresses(address)
match
full
『拾』 在vf中如何用命令添加新欄位
alter table
往表 customer 中添加欄位 fax, 並且允許欄位有空值
alter table customer add column fax c(20) null
ALTER TABLE – SQL 命令
示例 請參閱
以編程方式修改表的結構。
語法
ALTER TABLE TableName1
ADD | ALTER [COLUMN] FieldName1
FieldType [(nFieldWidth [, nPrecision])]
[NULL | NOT NULL]
[CHECK lExpression1 [ERROR cMessageText1]]
[DEFAULT eExpression1]
[PRIMARY KEY | UNIQUE]
[REFERENCES TableName2 [TAG TagName1]]
[NOCPTRANS]
[NOVALIDATE]
— 或者 —
ALTER TABLE TableName1
ALTER [COLUMN] FieldName2
[NULL | NOT NULL]
[SET DEFAULT eExpression2]
[SET CHECK lExpression2 [ERROR cMessageText2]]
[DROP DEFAULT]
[DROP CHECK]
[NOVALIDATE]
— 或者 —
ALTER TABLE TableName1
[DROP [COLUMN] FieldName3]
[SET CHECK lExpression3 [ERROR cMessageText3]]
[DROP CHECK]
[ADD PRIMARY KEY eExpression3 TAG TagName2 [FOR lExpression4]]
[DROP PRIMARY KEY]
[ADD UNIQUE eExpression4 [TAG TagName3 [FOR lExpression5]]]
[DROP UNIQUE TAG TagName4]
[ADD FOREIGN KEY [eExpression5] TAG TagName4 [FOR lExpression6]
REFERENCES TableName2 [TAG TagName5]]
[DROP FOREIGN KEY TAG TagName6 [SAVE]]
[RENAME COLUMN FieldName4 TO FieldName5]
[NOVALIDATE]
參數
TableName1
指定要修改其結構的表名。
ADD [COLUMN] FieldName1
指定要添加的欄位名。單個的表中最多可以有 255 個欄位。 如果一個或更多的欄位允許 null 值, 該限制為 254 個欄位。
ALTER [COLUMN] FieldName1
指定要修改的已有的欄位名。
FieldType [(nFieldWidth [, nPrecision])]
指定新欄位或待修改欄位的欄位類型、欄位寬度和欄位精度(小數點後的位數)。
參數 FieldType 是表示欄位數據類型的單個字元。有些欄位類型還需要參數 nFiledWidth 或 nPrecision,或者兩者皆要。
下表列出了參數 FiledType 的值及其對應參數 nFiledWidth 和 nPression 的取捨情況:
欄位類型 欄位寬度 精度 說明
C n – 寬度為 n 的字元欄位
D – – 日期
T – – 日期時間
N n d 寬度為 n 的數值型欄位,小數點後保留 d 位
F n d 寬度為 n 的浮點型欄位,小數點後保留 d 位
I – – 整數型
B – d 雙精度型
Y – – 貨幣型
L – – 邏輯型
M – – 備注型
G – – 通用型
P – – 圖象
對於 D、T、I、Y、L、M、G 和 P 型數據,省略參數 nFieldWidth 和 nPrecision。如果對 N、F 或 B 型數據沒有給出參數 nPrecision 的值,其的默認值為零。
NULL | NOT NULL
允許或不允許欄位為空值。
如果省略 NULL 和 NOT NULL,當前的 SET NULL 設置將決定欄位是否允許為空;並且如果命令中帶有 PRIMARY KEY 或 UNIQUE 子句,當前的 SET NULL 設置不起作用,欄位默認狀況為非空。
CHECK lExpression1
指定欄位的有效性規則。lExpression1 為邏輯表達式值,可以是用戶定義的函數或存儲過程。注意:每添加一個空記錄時,都將進行有效性檢查。如果有效性規則不允許添加的記錄中有空欄位值,VisualFoxPro 將產生錯誤信息。
ERROR cMessageText1
指定欄位有效性檢查出現錯誤時顯示的錯誤信息。只有在「瀏覽」或「編輯」窗口中修改數據時,此信息才可能顯示。
DEFAULT eExpression1
指定欄位默認值。eExpression1 的數據類型必須與欄位的數據類型相同。
PRIMARY KEY
創建主索引標識。索引標識與欄位同名。
UNIQUE
創建與欄位同名的候選索引標識。有關候選索引的詳細內容,請參閱《開發指南》的第七章「處理表」。
附註
候選索引(由 UNIQUE 選項創建,具有在 ALTER TABLE 或 CREATE TABLE 中的 ANSI 兼容性。)與帶 UNIQUE 選項的 INDEX 命令創建的索引不同。用帶 UNIQUE 選項的 INDEX 命令創建的索引允許有重復索引關鍵字,而候選索引不允許有重復索引關鍵字。
在主索引或候選索引欄位中,不允許有空值和重復記錄。
如果用 ADD COLUMN 子句創建一個新欄位,若給允許空值的欄位創建主索引或候選索引,VisualFoxPro 不會產生錯誤。但是,如果您試圖往用作主索引或候選索引的欄位中輸入空值或重復值,VisualFoxPro 將產生錯誤信息。
如果修改已有的欄位和由欄位組成的主索引表達式或候選表達式時,將檢查欄位是否為空值或重復記錄。如果為空值或重復記錄,Visual FoxPro 將產生錯誤,並且不對表進行修改。
REFERENCES TableName2 TAG TagName1
指定與之建立永久關系的父表。參數 TAG TagName1 指定父表索引標識,關系建立在此父表索引標識基礎上。索引標識最長為 10 個字。
NOCPTRANS
防止對字元串或備注欄位進行代碼頁轉換。如果表轉換到另一代碼頁,指定了 NOCPTRANS 的欄位不進行轉換。NOCPTRANS 只能指定字元欄位和備注欄位。
下面的例子建立了一個名字為 MYTABLE 的表:該表包括兩個字元欄位和兩個備注欄位。第二個字元欄位 char2 和第二個備注欄位 memo2 包含 NOCPTRANS 以防止轉換。
CREATE TABLE mytable (char1 C(10), char2 C(10) NOCPTRANS,;
memo1 M, memo2 M NOCPTRANS)
ALTER [COLUMN] FieldName2
指定要修改的已有的欄位名。
SET DEFAULT eExpression2
指定已有欄位的新默認值。eExpression2 的數據類型必須與欄位數據類型相同。
SET CHECK lExpression2
指字已有欄位新的有效性規則。lExpression2 值必須為邏輯表達式,也可以為用戶自定義函數或已有的過程。
ERROR cMessageText2
指定有效性檢查出現錯誤時顯示的錯誤信息。只有在「瀏覽」窗口或「編輯」窗口改變數據時,才可能顯示此信息。
DROP DEFAULT
刪除已有欄位的默認值。
DROP CHECK
刪除已有欄位的有效性規則。
DROP [COLUMN] FieldName3
從表中刪除一個欄位。刪除一個欄位的同時也刪除了欄位的默認值和欄位有效性規則。
欄位被刪除後,索引關鍵字或引用此欄位的觸發器表達式將變為無效。在這種情況下,刪除欄位並不產生錯誤,但是在運行時刻,無效的索引關鍵字或觸發器表達式將導致錯誤。
SET CHECK lExpression3
指定表的有效性規則。lExpression3 必須是邏輯表達式,也可以是用戶自定義函數或已有的過程。
ERROR cMessageText3
指定表的有效性檢查出現錯誤時顯示的錯誤信息。只有在「瀏覽」窗口或「編輯」窗口中改變數據值時,才可能顯示此信息。
DROP CHECK
刪除表的有效性規則。
ADD PRIMARY KEY eExpression3 TAG TagName2
往表中添加主索引,eExpression 指定主索引關鍵字表達式,TagName2 指定主索引標識名,索引標識名最長為 10 個字元。如果省略TAG TagName2 而 eExpression3 是一個欄位,主關鍵索引標識與指定的 eExpression3 同名。
DROP PRIMARY KEY
刪除主索引及其標識。因為表只能有一個主關鍵字,所以不必指定關鍵字的名稱。刪除主索引也將刪除所有基於此關鍵字的永久關系。
ADD UNIQUE eExpression4 [TAG TagName3]
往表中添加候選索引。eExpression4 指定候選索引關鍵字表達式,TagName3 指定候選索引標識名。候選標識名最長可為 10 個字元。如果省略參數 TAG TagName3 並且 eExpression4 為單個欄位,候選索引標識與 eExpression4 中的指定的欄位同名。
DROP UNIQUE TAG TagName4
刪除候選索引及其標識。因為表可能有多個候選關鍵字,所以必須指定候選索引標識名。
ADD FOREIGN KEY [eExpression5] TAG TagName4
往表中添加外部關鍵字(非主關字)索引。
eExpression5 指定外部索引關鍵字表達式,TagName4 指定外部索引標識名。索引標識名最長為 10 個字元。
REFERENCES TableName2 [TAG TagName5]
指定在其上創建了永久關系的父表。使用 TAG TagName5 指定一個已有的索引標識,基於此索引標識建立表與父表的一個關系。索引標識名最長可以為 10 個字元。如果省略參數 TAG TagName5,則使用父表的主索引標識建立關系。
DROP FOREIGN KEY TAG TagName6 [SAVE]
刪除索引標識為 TagName6 的外部關鍵字。如果省略 SAVE 參數,將從結構索引中刪除索引標識。如果加入 SAVE 參數,則不從結構索引中刪除索引標識。
RENAME COLUMN FieldName4 TO FieldName5
允許改變表中欄位的欄位名。FieldName4 指定待更改的欄位名,FieldName5 指定新的欄位名。
注意
改變表的欄位名時一定要小心--索引表達式、欄位和表的有效性規則、命令、函數等等可能仍會引用原始欄位名。
NOVALIDATE
選用這一選項後,Visual FoxPro 修改表的結構不受表中數據完整性的約束。默認時,Visual FoxPro 改變表結構將受到表中數據的完整性約束。使用 NOVALIDATE 參數將使默認情況無效。
說明
ALTER TABLE 命令可以用於修改還沒有添加到資料庫中的表的結構。然而在修改自由表時,如果加入 DEFAULT、FOREIGN KEY、PRIMARY REFERENCES 或 SET 子句,Visual FoxPro 將出現錯誤。
ALTER TABLE 命令可以通過建立新表頭和往表頭中添加記錄來重建表。例如,改變欄位類型或欄位寬度。
表經過重建後,將對所有改變了類型或寬度的欄位執行欄位有效性規則。如果修改了表中所有欄位的類型或寬度,將執行表的有效性規則。
如果對已含有記錄的表修改其欄位有效規則或表有效性規則,Visual FoxPro 將檢查新的欄位或表有效性規則是否與存在數據相符合,並在發現有不符之處時發出警告。
如果要修改的表在資料庫中,ALTER TABLE-SQL 命令需要獨占使用資料庫。若要獨占打開資料庫,可使用包含 EXCLUSIVE 子句的 OPEN DATABASE 命令。