SQL查詢語言基本教程(3)
四、CREATE TABLE 語句
CREATE TABLE 語句的文法為:
CREATE TABLE table (field1 type [(size)] [NOT NULL] [index1]
[, field2 type [(size)] [NOT NULL] [index2] [, ...]]
[, CONSTRAINT multifieldindex [, ...]])
table
建立立的表的名稱
field1 type [(size)] [NOT NULL] [index1]
field1為欄位名稱,Type為欄位資料類型,size 為欄位寬度,下面表詳細
描述了Type 的取值以及描述
Type Jet資料類型 描述
BIT Yes/No 邏輯類型
BYTE Numberic-Byte 位元組數字
COUNTER Counter 自動編號
CURRENCY Currency 貨幣數字
DATETIME Date/Time 日期、時間
DOUBLE Numberic-Double 雙精確度浮點數字
LONG Numberic-Long 長整數
LONGBINARY Ole Object OLE object類型
LONGTEXT Memo 備忘類型
SHORT Numberic-Integer 整數
SINGLE Numberic-Single 單精確度浮點數字
TEXT Text 文本
NOT NULL
該欄位下的值不可為空
index1
定義欄位約束
範例七:建立學生資料表
我們還是使用前面提到的db4.mdb檔案,建立一個新的工程,加入DAO定義庫,然後在Form1的Load事件中加入以下代碼:
Private Sub Form_Load()
Dim astr As String
Dim dbAdd As Database
Screen.MousePointer = vbHourglass
Set dbAdd = DBEngine.Workspaces(0).OpenDatabase("c:/db4.mdb")
astr = "CREATE TABLE tbl_students " & _
"(stdID COUNTER PRIMARY KEY, " & _
"stdName TEXT(12) NOT NULL, " & _
"stdAge SHORT, " & _
"stdBir DATETIME, " & _
"stdSex BIT)"
Debug.Print astr
dbAdd.Execute astr
Screen.MousePointer = vbDefault
MsgBox "資料庫建立成功."
dbAdd.Close
Set dbAdd = Nothing
End Sub
運行程式,這時會彈出資料庫建立成功的訊息框,使用Access開啟db4.mdb,可以看到表tbl_students已經加入到資料庫
中了。在上面的範例中,我們加入一個名稱為tbl_students的表並加入5個欄位:stdID:學號,自動編號類型,並作為主鍵;
stdName:學生姓名,長度為12的文本類型,並且不可為空;stdAge:學生年齡,整數類型;stdBir:出生日期,日期類型;
stdSex:性別,邏輯類型。
如果要刪除資料庫中的表,只要使用語句 DROP TABLE 就可以實現表的刪除,使用範例如下:
DROP TABLE tblname
其中tblname為表格的名稱。
五:INSERT INTO 語句
INSERT INTO語句實現向表中插入資料,該函數可以將一個已存在的表中的資料插入新表,也可以將自訂的值插入新表。
插入已有的表中的資料的函數文法如下:
INSERT INTO target [(field1[, field2[, ...]])] [IN externaldatabase]
SELECT [source.]sfield1[, sfield2[, ...]
FROM tableexpression
target
添加資料的表的名稱
field1, field2
需要添加資料的欄位名稱
externaldatabase
附加的資料庫名稱
source
拷貝資料的表的名稱
sfield1 sfield2
拷貝資料的欄位的名稱
插入新資料的文法如下:
INSERT INTO target [(field1[, field2[, ...]])]
VALUES (value1[, value2[, ...])
value1, value2
插入的值,value1將插入field1,value2將插入field2。
範例八:向表中插入新資料和其它表中的資料
我們在前面的範例中,已經向 c:/db4.mdb 中加入了一個名為 db2的表和tbl_students的表,其中db2中包含三個學生
的資訊,tbl_students沒有包含紀錄,現在我們要將db2表中的學生紀錄中的學生姓名值附加到tbl_students表的stdName欄位
中。下面是具體的添加範例:
建立一個新的工程,加入DAO定義庫,然後在Form1的Form_Load事件中加入以下代碼:
Private Sub Form_Load()
Dim astr As String
Dim dbAdd As Database
Screen.MousePointer = vbHourglass
Set dbAdd = DBEngine.Workspaces(0).OpenDatabase("c:/db4.mdb")
astr = "INSERT INTO [tbl_students] ([stdName])" & _
"SELECT DISTINCT db2.學生 FROM db2 "
Debug.Print astr
dbAdd.Execute astr
Screen.MousePointer = vbDefault
MsgBox "資料添加成功."
dbAdd.Close
Set dbAdd = Nothing
End Sub
運行程式,會彈出資料添加成功的訊息框。開啟db4.mdb ,可以看到db2表中的學生姓名已經添加到tbl_students中了。
將astr改變為下面的命令字串就可以增加一條新紀錄:
astr = "INSERT INTO [tbl_students] ([stdName],[stdAge],[stdBir],[stdSex])" & _
"VALUES ('李想', 15, #1985-10-10#, 1)"
六、DELETE 語句
DELETE 語句從表中刪除紀錄(資料行)該語句的文法如下:
DELETE FROM table
WHERE criteria
table
要刪除紀錄的表的名稱
criteria
刪除條件
DELETE語句將表table中符合條件criteria的級路刪除。例如下面的語句將刪除表 tbl中count欄位大於10的紀錄:
dbfText.Execute("DELETE FROM [tbl] WHERE [tbl.count]>10")
七、ALTER TABLE 語句
ALTER TABLE 語句執行改變資料庫結構的工作,它可以向表中添加或者刪除一列。函數的文法如下:
ALTER TABLE table {ADD {COLUMN field type[(size)] [NOT NULL] [CONSTRAINT index] |
CONSTRAINT multifieldindex} |
DROP {COLUMN field I CONSTRAINT indexname} }
ALTER TABLE 語句中包含兩個子語句:ADD COLUMN或者DROP COLUMN,其中ADD COLUMN執行向表中添加列的工作,
DROP COLUMN執行刪除表中列的工作。另外CONSTRAINT子語句執行建立資料索引的工作。文法中的其它要素解釋如下:
table
要改變結構的表的名稱
field
要添加/刪除的列的名稱
type(size)
添加列的資料類型以及資料長度
index
索引的名稱
multifieldindex
多欄位索引名稱
範例九:向tbl_students中添加一列
建立一個新的工程,加入DAO定義庫,然後在Form1的Form_Load事件中加入以下代碼:
Private Sub Form_Load()
Dim astr As String
Dim dbAdd As Database
Screen.MousePointer = vbHourglass
Set dbAdd = DBEngine.Workspaces(0).OpenDatabase("c:/db4.mdb")
astr = "ALTER TABLE tbl_students ADD COLUMN stdPhone TEXT(15)"
Debug.Print astr
dbAdd.Execute astr
Screen.MousePointer = vbDefault
MsgBox "列添加成功."
dbAdd.Close
Set dbAdd = Nothing
End Sub
運行程式,會彈出列添加成功的訊息框。開啟db4.mdb 中的tbl_students表,可以看到其中多了一個stdPhone列,該列
為文本類型,長度為15位元組。
八、UPDATE 語句
UPDATE 語句執行對資料庫中的資料做大量的更新工作,該語句的文法如下:
UPDATE table
SET newvalue
WHERE criteria
table
要改變其資料內容的資料庫名稱
newvalue
將舊紀錄值改變為新值的運算式,。
criteria
一個運算式,SQL將通過該運算式監測哪些紀錄值將被改變
範例十:改變tbl_student表中的電話號碼
假設由於電話升位而要批量改變學生資料庫中的電話號碼的話,利用UPDATE語句可以十分方便的實現。
首先用Access開啟db4.mdb 在tbl_students 表中的 stdPhone 欄位中寫入電話號碼。然後在VB中建立一個新的工程,
加入DAO定義庫,在Form1的Form_Load事件中加入以下代碼:
Private Sub Form_Load()
Dim astr As String
Dim dbAdd As Database
Screen.MousePointer = vbHourglass
Set dbAdd = DBEngine.Workspaces(0).OpenDatabase("c:/db4.mdb")
astr = "UPDATE tbl_students SET [stdPhone]='6' + [stdPhone]" & _
" WHERE [stdPhone]<>''"
Debug.Print astr
dbAdd.Execute astr
Screen.MousePointer = vbDefault
MsgBox "紀錄更改成功."
dbAdd.Close
Set dbAdd = Nothing
End Sub
運行程式,會彈出紀錄更改成功的訊息框。開啟db4.mdb 中的tbl_students表,可以看到在stdPhone欄位中原來的紀錄
前都添加了6 。而沒有電話紀錄的沒有改變
www.applevb.com