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
運行程序,這時會彈出數據庫建立成功的消息框,使用Aclearcase/" target="_blank" >ccess打開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 。而沒有電話紀錄的沒有改變