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 。而没有电话纪录的没有改变