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  
 
  |