CREATE TABLE - 創(chuàng)建數(shù)據(jù)表的語(yǔ)句作者:bengdeng | 來(lái)源:Excel吧 | 時(shí)間:2008-09-23 | 閱讀權(quán)限:游客 | 會(huì)員幣:0 | 【大 中 小】
數(shù)據(jù)表是數(shù)據(jù)庫(kù)的基本架構(gòu),就像Excel文件中的工作表一樣,在Excel中我們可以用ADD方法來(lái)創(chuàng)建新的工作表,而SQL語(yǔ)言里,CREATE TABLE語(yǔ)句就是用來(lái)創(chuàng)建數(shù)據(jù)表的。關(guān)于ADD方法,大家可以參見(jiàn)一下:
http://www.excelba.com/Art/Html/292.html在說(shuō)明CREATE TABLE語(yǔ)句的語(yǔ)法之前,我們?cè)賮?lái)了解一些相關(guān)的知識(shí)。Excel工作表中對(duì)應(yīng)有列與行,而在數(shù)據(jù)庫(kù)中,對(duì)應(yīng)稱(chēng)為Column與Row,對(duì)于這兩個(gè)單詞,應(yīng)該用過(guò)VBA的人都不會(huì)陌生,這也是Excel中VBA里列與行的寫(xiě)法。不同的是下面,在數(shù)據(jù)庫(kù)中多少列是在創(chuàng)建表時(shí)就有設(shè)定的,雖然以后還有可能增加,而且在設(shè)定時(shí)還要規(guī)定整列的數(shù)據(jù)類(lèi)型,同時(shí)也意味者整列的數(shù)據(jù)類(lèi)型都是一樣的;這個(gè)在Excel中是沒(méi)有這樣的規(guī)則,而且Excel的最大行與列是由Excel本身決定的,這也是數(shù)據(jù)庫(kù)與電子表格對(duì)數(shù)據(jù)約束最大的不同。
而數(shù)據(jù)庫(kù)具體有哪些數(shù)據(jù)類(lèi)型呢?以ACCESS為例,有存貯日期類(lèi)型的DATETIME;有存貯數(shù)值類(lèi)型的FLOAT,SMALLINT,INTEGER等,有字符串型的CHAR等等。不同的數(shù)據(jù)庫(kù)可能支持不同的數(shù)據(jù)類(lèi)型,因此在使用時(shí)應(yīng)該參考一下數(shù)據(jù)庫(kù)在這方面的說(shuō)明。
了解了上面的信息,下面開(kāi)始說(shuō)下CREATE TABLE語(yǔ)句的語(yǔ)法:
CREATE TABLE 表格名(列名1 列名1的數(shù)據(jù)類(lèi)型,列名2 列名2的數(shù)據(jù)類(lèi)型,... )
注意在列名與數(shù)據(jù)類(lèi)型中間有一個(gè)空格,在VBA中,我們可以利用ADO的Execute方法,來(lái)運(yùn)行SQL語(yǔ)句,下面我們就用CREATE TABLE 來(lái)創(chuàng)建一個(gè)進(jìn)銷(xiāo)存表數(shù)據(jù)庫(kù)的三個(gè)數(shù)據(jù)表——明細(xì)表,進(jìn)倉(cāng)表與出倉(cāng)表;其中明細(xì)表有5列,分別為物品名稱(chēng)(字符串型),結(jié)余日期(日期型),結(jié)余數(shù)量(雙精度型),進(jìn)倉(cāng)數(shù)量(雙精度型),出倉(cāng)數(shù)量(雙精度型);進(jìn)倉(cāng)表有3列,分別為進(jìn)倉(cāng)日期(日期型),物品名稱(chēng)(字符串型),進(jìn)倉(cāng)數(shù)量(雙精度型);出倉(cāng)表有3列,分別為出倉(cāng)日期(日期型),物品名稱(chēng)(字符串型),出倉(cāng)數(shù)量(雙精度型)。代碼如下:
Sub 創(chuàng)建進(jìn)銷(xiāo)存表數(shù)據(jù)庫(kù)()
'*******************************************
'時(shí)間:2008-9-23
'作者:bengdeng
'功能:在程序文件同一目錄創(chuàng)建進(jìn)銷(xiāo)表一個(gè)進(jìn)銷(xiāo)存表數(shù)據(jù)庫(kù)
'注意:要在工具/引用中引用microsoft activex date objects x.x
' 其中x.x為版本號(hào),可能會(huì)因?yàn)槟惆惭b的office的版本不同而不同,本例引用了2.5版
' 由于要?jiǎng)?chuàng)建一個(gè)新的數(shù)據(jù)庫(kù),還要引用microsoft ado ext.2.x for ddl and security
' 利用ADOX的Create方法來(lái)創(chuàng)建,其中2.X為版本號(hào),本例引用了2.8版
'發(fā)布:
Dim MyCat As ADOX.Catalog
Dim conn As ADODB.Connection
Dim WN As String
Dim sSql As String
WN = "進(jìn)銷(xiāo)存表.mdb"Set MyCat = New ADOX.Catalog
MyCat.Create "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & ThisWorkbook.Path & "\" & WN
Set conn = New ADODB.Connection
conn.ConnectionString = MyCat.ActiveConnection
conn.Open
If conn.State = adStateOpen Then
sSql = "CREATE TABLE 明細(xì)表 ( 物品名稱(chēng) Text(255)," & _
" 結(jié)余日期 Date, 結(jié)余數(shù)量 Float," & _
" 進(jìn)倉(cāng)數(shù)量 Float, 出倉(cāng)數(shù)量 Float)"
conn.Execute sSql
sSql = "CREATE TABLE 進(jìn)倉(cāng)表 ( 進(jìn)倉(cāng)日期 Date, 物品名稱(chēng) Text(255), 進(jìn)倉(cāng)數(shù)量 Float)"
conn.Execute sSql
sSql = "CREATE TABLE 出倉(cāng)表 ( 出倉(cāng)日期 Date, 物品名稱(chēng) Text(255), 出倉(cāng)數(shù)量 Float)"
conn.Execute sSql
MsgBox "創(chuàng)建數(shù)據(jù)庫(kù)成功!" & vbCrLf & "數(shù)據(jù)庫(kù)文件名為:" & WN & vbCrLf & _
"保存位置:" & ThisWorkbook.Path, , "
conn.Close
End If
Set conn = Nothing
End Sub因?yàn)橐獎(jiǎng)?chuàng)表一個(gè)新的數(shù)據(jù)庫(kù),所以使用ADOX的Create 方法創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)。
下面再給出一段創(chuàng)建類(lèi)似于上面內(nèi)容的Excel文件。
Set conn = New ADODB.Connection
conn.Open "Provider=Microsoft.Jet.Oledb.4.0;" & _
"Extended Properties=Excel 8.0;" & _
"Data Source=" & ThisWorkbook.Path & "\" & WN
If conn.State = adStateOpen Then
sSql = "CREATE TABLE 明細(xì)表 ( 物品名稱(chēng) Text(255)," & _
" 結(jié)余日期 Date, 結(jié)余數(shù)量 Float," & _
" 進(jìn)倉(cāng)數(shù)量 Float, 出倉(cāng)數(shù)量 Float)"
conn.Execute sSql
sSql = "CREATE TABLE 進(jìn)倉(cāng)表 ( 進(jìn)倉(cāng)日期 Date, 物品名稱(chēng) Text(255), 進(jìn)倉(cāng)數(shù)量 Float)"
conn.Execute sSql
sSql = "CREATE TABLE 出倉(cāng)表 ( 出倉(cāng)日期 Date, 物品名稱(chēng) Text(255), 出倉(cāng)數(shù)量 Float)"
conn.Execute sSql
MsgBox "創(chuàng)建文件成功!" & vbCrLf & "數(shù)據(jù)庫(kù)文件名為:" & WN & vbCrLf & _
"保存位置:" & ThisWorkbook.Path, , "
conn.Close
End If
Set conn = Nothing
End Sub有意思的是,創(chuàng)建Excel文件,不需要理會(huì)這個(gè)文件是否存在,如果存在就會(huì)在舊的文件中增加工作表,而不存在則會(huì)自動(dòng)創(chuàng)建,不需要像ACCESS還用利用Create 方法。
CREATE TABLE 就介紹說(shuō)明到這,現(xiàn)在大家動(dòng)手復(fù)制一下上面的兩段代碼,運(yùn)行一下,再對(duì)比一下,最后再理解一下,相信很快就會(huì)明白的哦*~_~*。