1.修改数据:
UPDATE <表名>
SET <列名>=<所要赋给列的值>[,<列名>=<所要赋给列的值>]
WHERE <条件>
语句目的是修改指定表中满足where子句条件的某个字段的值。便于批量更新,比如取消凭证的审核,我们可以执行语句,批量更新凭证中的审核人字段值为空。
Update为关键字,在更新语句的开头书写,紧跟着关键字的为表名,说明要修改的表的表名。然后是关键字set,在这个关键字的后面是要更新的列,列后面是等号=(表示赋值),然后是对应字段要更新的数值(这里可以是数字,字符或是表中的其他字段,字符要用单引号引起来,而且所赋值的类型要和字段的类型相同,如果字段为数字的,对它赋值要输入的是数字类型)在set的后面可以跟多个列,每个列要用逗号隔开。在列赋值后面连接的是条件语句,便于控制要更新的对象。如:把一月份所有审核人为空的凭证的审核人设置为demo. 凭证表(gl_accvouch),审核人字段(ccheck),期间字段(iperiod)
update gl_accvouch set ccheck=’demo’ where ccheck Is null and iperiod=1
这里的条件中,比如审核人为空,这里一定要用is。不要使用=,=为赋值标志。
练习题:
1) 把现存量表中001存货在01仓库中的现存量改为20。
2) 把所有收发记录字表中存货为001,结算日期(dsdate)为空的纪录更新为2007-02-01
2.插入数据:
INSERT
INTO<表名>[<属性列1>,<属性列2>……]
VALUES(<常量1>,<常量2>……)
INSERT语句是将新的记录行插入到数据表中。其中新记录属性列1的值为常量1……,INTO子句中没有出现的属性列,新记录在这些属性列上将取空值。
注意:
(1) 必须注意的是,在表定义时说明了 NOT NULL 的属性列不能取空值,否则会出错。
(2) 如果INTO 子句中没有指明任何列名,则新插入的记录必须在每个属性列上均有值。
(3) 在我们使用插入语句对有标示列的数据表进行操作的时候,一定要使用SET IDENTITY_INSERT 表名 ON打开对应数据表的是否可以插入的标志。这样才能对数据表进行插入操作,一定要在插入完成之后把这个插入标志进行关闭,SET IDENTITY_INSERT 表名 OFF。
举例:复制999演示账套2007年度的常用摘要到当前账套常用摘要表:gl_bdigest
SET IDENTITY_INSERT gl_bdigest ON
INSERT INTO gl_bdigest(i_id,cid,ctext)
select i_id,cid,ctext
from ufdata_999_2007..gl_bdigest
SET IDENTITY_INSERT gl_bdigest OFF
在这条语句中,我们在VALUES 子句中直接使用select 语句来取其他表中的记录集进行插入。由于有标示列,所以我们使用语句打开标示列,在这种情况,我们INTO 子句中所有的对应列名都要写入,并且要有对应的VALUES值。
练习题:
1) 插入一个仓库,编码为:100,名称为:演示库,计价方式为:移动平均法。仓库档案:Warehouse
2) 先删除当前账套的账套参数表的所有记录,然后从999演示账套2007年度导入此表。
账套参数表:accinformation
3.删除数据
DELETE
FROM<表名>
[WHERE <条件>]
Delete 语句的功能是从指定的表中删除满足where 子句条件的所有记录行。如果省略了where 条件则删除表中的所有记录,但是表的数据结构不会被删除。就是说,delete 语句删除的是定义表中的数据,而不是表的定义。
举例:删除总账输出栏目表的所有记录。输出栏目:gl_myoutput
delete from gl_myoutput
注意:
(1) 在进行记录删除的时候,最好先使用查询语句select进行查询一下,确认一下要删除的记录是否正确,然后再进行删除。
(2) 删除某个表的记录的时候一定要注意此表和其他表之间的约束关系。
练习题:
1) 删除总账中应收账款(1131)科目的所有记录,主要针对表凭证及明细账表\科目总账\辅助总账
凭证及明细账表:gl_accvouch、科目总账:gl_accsum
辅助总账:gl_accass
2) 删除异常,主要针对功能控制表(ufsystem数据库,注意删除时表的约束)
功能操作网络控制表:UA_task(cTaskid主键)
站点操作网络控制表:ua_tasklog(cTaskid外键)
UA_task表的cTaskid列主键,并且是ua_tasklog表cTaskid列的外键