SQL查询语言基本教程(3)

类别:VB语言 点击:0 评论:0 推荐:

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

本文地址:http://com.8s8s.com/it/it6865.htm