SQL语法——操作功能(插入、更新、删除记录,删除表)

13.3    操作功能
SQL语言的操作功能包括对表中数据的增加、删除和更新操作。
13.3.1    插入
在一个表的尾部追加数据时,要用到插入功能,SQL的插入命令包括以下3种格式:
格式:
INSERT INTO 〈表名〉 [(〈字段名1〉 [,〈字段名2〉,…])]
                 VALUES(〈表达式1〉)[, 〈表达式2〉,…])

                    INSERT INTO 〈表名〉 FROM ARRAY    〈数组名〉
                    INSERT INTO 〈表名〉 FROM MEMVAR
功能:3种格式都是在指定的表的表尾添加一条新记录。
13.3.1    插入
说明:
(1)第1种格式其值为VALUES后面的表达式的值。当需要插入表中所有字段的数据时,表名后面的字段名可以缺省,但插入数据的格式必须与表的结构完成吻合;若只需要插入表中某些字段的数据,就需要列出插入数据的字段,当然相应表达式的数据位置会与之对应。
(2)第2种格式新记录的值是指定的数组中各元素的数据。数组中各元素与表中各字段顺序对应。如果数组中元素的数据类型与其对应的字段类型不一致,则新记录对应的字段为空值;如果表中字段个数大于数组元素的个数,则多的字段为空值。
(3)第3种格式新记录的值是指定的内存变量的值。添加的新记录的值是与指定表各字段名同名的内存变量的值,如果同名的内存变量不存在,则相应的字段为空。
Visual FoxPro支持两种SQL插入命令的格式,第一种格式是标准格式,第二种格式是Visual FoxPro的特殊格式。
13.3.1    插入
【13.42】在订购单表中,插入元组("E7","S4","OR01",09/25/03)。
        INSERT INTO 订购单(职工号,供应商号,订购单号,订购日期,总金额)
                VALUES("E7","S4","OR01",{^2003-09-25},1200)
其中“{^2003-09-25}”是日期型字段订购日期的值。
图13.48
13.3.1    插入
假设供应商尚未确定,那么只能先插入职工号和订购单号两个属性的值,这时可用如下命令:
        INSERT INTO 订购单(职工号,订购单号) VALUES("E7","OR01")
这时另外三个属性的值为空。
13.3.1    插入
下面用一组命令来说明INSERT INTO…FROM ARRAY 的使用方式:
        USE订购单                                                 &&打开订购单
        SCATTER to A1                                            &&将当前记录读到数组A1
        COPY STRUCTURE TO A2                             &&拷贝订购单表的结构到A2
        INSERT INTO A2 FROM ARRAY A1             &&从数组A1插入一条记录到A2
        SELECT A2                                                    &&切换到A2的工作区
        BROWSE                                                         &&用BROWSE命令验证插入的结果
        USE                                                                &&关闭A2.dbf文件
        DELETE FILE A2.dbf                                 &&删除A2.dbf文件
13.3.1    插入
在一个表的尾部追加数据时,要用到插入功能,SQL的插入命令包括以下3种格式:
格式:
INSERT INTO 〈表名〉 [(〈字段名1〉 [,〈字段名2〉,…])]
                    VALUES(〈表达式1〉)[, 〈表达式2〉,…])

                    INSERT INTO 〈表名〉 FROM ARRAY    〈数组名〉
                    INSERT INTO 〈表名〉 FROM MEMVAR
功能:3种格式都是在指定的表的表尾添加一条新记录。
13.3.1    插入
说明:
(1)第1种格式其值为VALUES后面的表达式的值。当需要插入表中所有字段的数据时,表名后面的字段名可以缺省,但插入数据的格式必须与表的结构完成吻合;若只需要插入表中某些字段的数据,就需要列出插入数据的字段,当然相应表达式的数据位置会与之对应。
(2)第2种格式新记录的值是指定的数组中各元素的数据。数组中各元素与表中各字段顺序对应。如果数组中元素的数据类型与其对应的字段类型不一致,则新记录对应的字段为空值;如果表中字段个数大于数组元素的个数,则多的字段为空值。
(3)第3种格式新记录的值是指定的内存变量的值。添加的新记录的值是与指定表各字段名同名的内存变量的值,如果同名的内存变量不存在,则相应的字段为空。
Visual FoxPro支持两种SQL插入命令的格式,第一种格式是标准格式,第二种格式是Visual FoxPro的特殊格式。
13.3.1    插入
【13.42】在订购单表中,插入元组("E7","S4","OR01",09/25/03)。命令执行结果如图13.48所示。
        INSERT INTO 订购单(职工号,供应商号,订购单号,订购日期,总金额)
                VALUES("E7","S4","OR01",{^2003-09-25},1200)
其中“{^2003-09-25}”是日期型字段订购日期的值。
图13.48
13.3.1    插入
假设供应商尚未确定,那么只能先插入职工号和订购单号两个属性的值,这时可用如下命令:
        INSERT INTO 订购单(职工号,订购单号) VALUES("E7","OR01")
这时另外三个属性的值为空。
13.3.1    插入
下面用一组命令来说明INSERT INTO…FROM ARRAY 的使用方式:
        USE订购单                                                 &&打开订购单
        SCATTER to A1                                            &&将当前记录读到数组A1
        COPY STRUCTURE TO A2                             &&拷贝订购单表的结构到A2
        INSERT INTO A2 FROM ARRAY A1             &&从数组A1插入一条记录到A2
        SELECT A2                                                    &&切换到A2的工作区
        BROWSE                                                         &&用BROWSE命令验证插入的结果
        USE                                                                &&关闭A2.dbf文件
        DELETE FILE A2.dbf                                 &&删除A2.dbf文件
13.3.1    插入
用下面一组命令来说明INSERT INTO…FROM MEMVAR的使用方式:
        USE订购单                                                 &&打开订购单
        SCATTER M1                                                 &&将当前记录读到内存变量M1中
        COPY STRUCTURE TO A2                             &&拷贝订购单表的结构到A2
        INSETR INTO A2 FROM M1                         &&从内存变量插入一条记录到A2
        SELECT A2                                                    &&切换到A2的工作区
        BROWSE                                                         &&用BROWSE命令验证插入的结果
        USE                                                                &&关闭A2.dbf文件
        DELETE FILE A2.dbf                                 &&删除A2.dbf文件
13.3.1    插入
说明:当一个表定义了主索引或候选索引后,由于相应的字段具有关键字的特性,即不能为空,所以只能用此命令插入记?肌oxPro以前的插入命令(INSERT或APPEND)是先插入一条空记录,然后再输入各字段的值,由于关键字字段不允许为空,所以使用以前的方法就不能成功地插入记录。
13.3.2    更新
更新是指对存储在表中的记录进行修改。
格式:
UPDATE [ 〈数据库〉! ] 〈表名〉
                    SET 〈列名1〉=〈表达式1〉 [, 〈列名2〉=〈表达式2〉 …]
                    [WHERE 〈条件表达式1〉 [AND | OR 〈条件表达式2〉 …]]
13.3.2    更新
说明:
(1)[〈数据库〉! ]〈表名〉:指定要更新数据的记录所在的表名及该表所在的数据库名。
(2)SET 〈列名〉=〈表达式〉:指定被更新的字段及该字段的新值。如果省略WHERE子句,则该字段每一条都用同样的值更新。
(3)WHERE 〈条件表达式〉:指明将要更新数据的记录。即更新表中符合条件表达式的记录,并且一次可以更新多个字段;如果不使用WHERE子句,则更新全部记录。
13.3.2    更新
【13.43】在职工表中,给WH1仓库的职工提高10%的工资。命令执行结果如图13.49所示。
        UPDATE 职工 SET 工资=工资*1.10 WHERE 仓库号="WH1"
例如: 将所有学生的年龄增加1岁:
                 UPDATE 学生 SET 年龄=年龄+1
13.3.3    删除
用SQL语言可以删除数据表中的记录。
格式:
DELETE FROM    [〈数据库!〉]〈表名〉
                [WHERE 〈条件表达式1〉 [AND | OR 〈条件表达式2〉 …]]
说明:
(1)[〈数据库!〉]〈表名〉:指定加删除标记的表名及该表所在的数据库名,用“!”分割表名和数据库名,数据库名为可选项。
(2)WHERE选项:指明只对满足条件的记录加删除标记。如果不使用WHERE子句,则删除该表中的全部记录。
(3)上述删除只是加删除标记,并没有从物理上删除,只有执行了PACK命令,有删除标记的记录才能真正从表中删除。删除标记可以用REACLL命令取消。
13.3.3    删除
【13.44】删除仓库表中仓库号值是WH2的记录。
        DELETE FROM 仓库 WHERE仓库号="WH2"
说明:SQL DELETE命令同样是逻辑删除记录,如果要物理删除记录需要继续使用PACK命令。
13.3.4    表的删除
随着数据库应用的变化,往往有些表连同它的数据不再需要了,这时可以删除这些表,以节省存储空间。
格式:DROP TABLE 〈表名〉
说明:DROP TABLE直接从磁盘上删除表名所对应的DBF文件。如果表名是数据库中的表,并且相应的数据库是当前数据库,则从数据库中删除表;否则虽然从磁盘上删除了DBF文件,但是记录在数据库DBC文件中的信息却没有删除,此后会出现错误提示。所以要删除数据库中的表时,最好应使数据库是当前打开的数据库,在数据库中进行操作。

你可能感兴趣的:(数据库/SQLite)