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 
|