k3基础总结

时间:2024.5.2

1. 财务报表分显示公式和显示数据,显示数据下输入的文字不能再显示公式下显示数

据。新建好的财务报表怎么保存到报表中,还有删除功能:删除的时候需要在文件菜单下打开报表才能删除。ACCT、SUM函数的应用。报表重算,公式取数参数。还可以引出excel,在excel里设置公式后可以导入到报表中。

2. 采购管理中主要3张单子 采购申请单 采购订单 采购入库单,一般用这3张单子

就可以了,收料通知单能不用尽量不要用。如果要用的话可以用采购入库单做这样的功能,比如采购部做入库单,仓库根据实物审核就可以了。按收货比例做采购订单。流程尽可能简单。外购入库单入库时候可以进行条目拆分。赊购和现购的操作。如果采购100元,#5@p过来80元,这个时候就要采购入库单就需要做拆分处理。#5@p处理时候,采购#5@p与费用#5@p的勾稽及补充勾稽。退料通知单也建议不要做,做外购入库下推外购入库单自动生成红字退料单。采购价格控制

3. 仓库管理中,盘点作业:首先把盘点方案新增;盘点表打印;盘点数据录入;编制

盘点报告。仓库管理中批次管理:通过仓存管理下的批次调整单进行调整,有批次拆分和汇总。

4. 供应链整体操作:a单据流转分两种分下推和找源单据。下推的优势是更加直观,

找原单是更加简便,不需要到上游序时簿去下推。各个模块单据的流转的方向可以看序时簿的下推单据,就是需要流转的方向。b查询工具下交叉统计分析表的应用,当金蝶的报表不够用的时候,可以用它来实现其他的功能。但要搞清楚报表的行列的具体含义,这样可以根据具体含义设置报表。c公共功能:序时簿查询功能是一个主要的公共功能,条件、高级、排序、表格设置。条件设置好,排序可以进行升序和降序排列,表格设置是对一些字段是否显示进行设置,打钩表示显示。所以在培训的时候,可以对序时簿作为一个公共的讲解。关闭与行业务关闭的区别:关闭指的是对整个单据的关闭,下游单据生成审核后就可以关闭了;行业务关闭指的是对单行明细进行的关闭,还有更深一层含义,订单必须流到出入库环节的时候,才能进行行业关闭。行业务关闭的单据,MRP分析时不需要考虑在内。单据头完整显示的作用,当单据头完整显示时候当用excel导出后就比较完整,做筛选的时候就不会把具体的明细漏掉。过滤条件中有清除按钮可以对方案清除,还有对条件的方案进行保存。点击下次以本方案自动进入时不会出现条件过滤的界面。d在报表分析下报表查询界面:进入收发存汇总表的过滤界面,选择的条件都是并的关系,如果选择分级汇总和仅显示汇总行指的是按类别进行汇总,具体的条件是通过汇总依据选择。一般仅显示汇总行没什么作用。如果不选择的话,就按照物料进行汇总。双击汇总表后就进入明细表,在查看菜单下有显示隐藏列、设置行高等参数。

5. 单据录入:对基础资料输入时候,都需要按F7键,F7默认为搜索界面,如果要默

认浏览界面可以在基础资料-物料-选项下设置。也可以设置F7默认的字段(代码、名称等);录入单据时在产品代码下面显示下拉列表,这个可以在菜单选项下面禁止使用。F12键的运用,在录出库单的过程中,可以通过F12键来对库存的查询及对物料的选取。系统设置中单据设置可以对单据的进行一些控制。

1在k3客户端工具里单据自定义,6. 单据自定义:○可以对单据头定义、增加、修改、

2增加单据头隐藏等操作。首先隐藏单据头右键找到属性,设置可见性就可以了。○

后右键后可以添加字段的名字,特别注意字段属性一定要一致,字符串、数字一定要匹配,特别是在关联的时候如果字段属性不同的话,会选不到相应的字段。在高级里面可以对来源方式进行选择:手工录入、基础资料、已有基础资料属性、通过公式得到、系统信息。我会把这几种的用处大概讲一下:手工录入就是你自己录入固定的东西;基础资料会把核算项目里面任何一个类添加在里面,录单的时候可以

F7键选择,如果核算项目里面没有这个类的话,可以在系统基础资料里面新增核算项目类别,新增的核算项目类别一样能够被选到;已有基础资料属性是指可以把核算项目类别的其它属性(比如客户联系方式、地址)等信息,自动带出到对话框,当然这些资料需要事先维护好才可以;通过公式得到指的是增加分列录时,比如增加2列A和B,通过公式可以设置单价*A=B这样的公式,当录单的时候系统会自

3动根据公式算出B的值;系统信息指的制单人、日期等系统信息可以直接选出。○

单据关联的设置:比如要把销售订单的合同号关联到销售出单里面,首先在两张单子里分别增加分列录,名称是合同号。在销售订单里面,根据分录列的属性,在下拉框分录里面,下三角下面找到刚才新添加的分录列,添加名称,在高级里面选择来源方式。接下来重新打开单据自定义,找到销售出库单,同样的操作方法增加合同号的分录列,字段类型、来源方式和销售订单里一样,不同的是要在高级下面的选单来源定义中选择销售订单,并在来源字段里选择合同号。这样关联字段就可以了,销售订单下推销售出库单的时候就可以把合同号带到出库单里了。

1服务设置的时候一般选取使用本地系统账户。7. 系统安装:sql安装中遇到的几点。○

身份验证的时候最好选取混合模式,添加sa密码。如果sa密码为空的话,在windows2003+sql2005的环境下sa密码为空可能导致客户端与服务器连接不上。

2k3安装有2个盘,一个是sql200不支持文件夹中文目录,可能安装过程报错。○

资源盘,一个是安装盘。首先讲一下安装盘,在help文件夹下首先是demo,下面是演示帐套,个人感觉最好用的是蓝海机械这个帐套。然后是manual手册,里面有简体、繁体、英文版,也就是产品说明书。还有一个other文件夹下regclear.exe金

3金蝶卸载,蝶注册表清除,卸载金蝶很管用的○首先添加删除里面把金蝶卸载一遍,

还要进行注册表的删除,注册表的删除可以根据登陆界面里的常见问题进行查看,里面1.3.2 Q28用K/3卸载程序无法卸载K/3,如何通过手动方式卸载K/3?这里面有详细指导可以参考这个,按照里面的步骤删除完后金蝶k3就完全卸载干净了,可以重装了,如果还是不行就只能重新系统了。有的人可能要问了,k3界面打不开的情况下,怎么参考手册?这个时候需要到安装目录k3erp文件夹下,找到

4客户端连接服务器。a服务器连通必备条件:iis一定k3FAQ手册,进行查看。○

要安装;ping通,这个不知道可以问网管;共享文件夹访问。b同名同密码,这个安全性比较高,但要把客户端的账户和密码,都要在服务器上建立,我的电脑右键-管理-用户在这里面,新建每一个客户端的用户和密码,建好后右键属性进入后,进行隶属于添加-高级-立即查找,在这个界面,如果系统管理不严的话,就隶属于administrators,如果管理比较严格的话,就隶属于power users就可以了。同名同密码时客户端密码修改时,服务器也要修改。c匿名方式等录,如果同名同密码比较麻烦的话,可以选择匿名方式,先在服务器建立一个账户,但属性设置一定要隶属于管理员,然后在开始-程序-中间层组件注册,打开后里面有交互式用户方式和信任方式,交互式用户方式就是同名同密码,信任方式就是匿名方式,在信任方式里输入刚才建立的用户和密码后,然后重新安装下就可以了。安装过后如何检查我们设置成功了呢?在控制面板里-管理工具-组件服务-COM+应用程序里有很多ebo开头的文件,随便选一个右键属性查看,点击标识后,如果设置成功后系统会在下列用户中显示。建议在做匿名方式之前先做一个同名同密码的,测试一下网络环境。做完这些后如果还没有连通,启用guest账户,还有一种情况就是客户端的系统账户一般都是用的系统管理员administrator,所以和服务器的系统管理员administrator一样产生冲突,就连不上。那怎么解决呢?一种是把客户端账户修改一下或者重新建立管理员;另一种是逆向思维把服务器账户名称修改一下比如admin就可以了。

1总账初8. 财务初始化:在系统设置下的初始化,可以对系统绝大多数进行初始化。○

始化,在初始化下点击总账,进行科目初始数据录入,在录入之前需要在基础资料里对会计科目进行设置和核算项目搭建。打开录入界面,如果是一月份启动,只有期初余额;年中启动的话,有本年累计借方、本年累计贷方,如果的话尽量录入,如果整理不出来就不填了,只录入期初余额了,这样就推不出年初余额。录入的过程中涉及核算项目的,要在核算项目里面录入,根据客户或者供应商。界面上方有币别选项,根据银行的核算币别,进行筛选核算。录入完后,在综合本位币下平衡。科目初始数据引入通过模板引入,模板引入不建议操作。平衡后就可以结束初始化。

2现金管理初始化,现金流量初始数据录入比较简单。○在系统管理初始化下现金管

理,打开界面点引入从总账引入科目,在科目类别中选择银行存款,然后录入银行账号。设置银行可能存在未达账的情况,有4种:第一种是银行已收,企业未收;第二种是银行已付,企业未付;第三种是企业已收,银行未收;第四种是企业已付,银行未付。录完后,在编辑下结束初始化。如果又有两个银行科目怎么办?继续引

3固定资产初始化,首先系统设置-固入,录入完后,编辑下结束新科目初始化。○

定资产-系统参数,在参数选项里固定资产启用。这个时候固定资产初始化就不在初始化里面,在财务会计-固定资产管理里面,维护基础资料。变动方式系统默认的就可以了;使用状态系统也维护好了,主要是计不计提折旧;折旧方法大多数企业都用平均年限法,当然也支持你自定义的。卡片类别管理,里面意思也比较简单,但信息要录好,卡片规则要强调一下,比如电脑用DN_。还有下面有个允许抵扣增值税进项税这个选上后,固定资产卡片录入界面会不一样,根据新会计准则是有一部分可以抵扣增值税进项税的。存放地点这个录入就好了。b资料维护好就可以在业务处理里面新增卡片了,录完的话就可以在系统设置初始化里结束初始化了。4应收账款初始化。在系统设置-初始化-应收款管理,里面有初始的普通#5@p、初○

始的增值#5@p、其他应收单、预收单、应收票据这是影响数据的。应收初始化有2种方式:一是在这里手工录;二是从总账里引入。但是总账里引入的只是余额,同一个核算项目只显示一张#5@p。单据录入完后,在初始应收单据-维护里面查询,进入查询界面,注意一下事务类型。在序时簿里上面栏里有转余额会把数据传到总账;文件菜单下面引入总账余额是把总账里数据引出一张#5@p。单据日期与财务日期:财务日期就是登记入账的日期,系统根据财务日期判定凭证,财务日期大于等于单据日期。在初始化数据-应收账款里查询所有的数据,进行核对。结束初始化在财务会计-初始化下结束。


第二篇:数据库基础总结


本文档初步介绍了,建表、修改表、向表中插入数据、更新数据、检索数据、删除数据、序列以及索引,适合初学数据库的人员。

本资料主要正对Oracle数据库的SQL,其他数据库可以参考,但在细节上存在差异。

一、创建表

1. 建表的简化语法说明:

在数据库中,可以使用createtable 语句创建表。create table 语句的简化语法如下: CREATE [GLOBALTEMPORARY] TABLE table_name

(

Column_name type [CONSTRAINT constraint_def DEFAULT default_exp]

[,column_name type [CONSTRAINT constraint_def DEFAULT default_exp]?] ) [ON COMMIT {DELETE | PRESERVE} ROWS] TABLESPACE tab_space;

2. 语法中关键字说明如下:

1) GLOBAL TEMPORARY说明该表的行都是临时的,这种表就称为临时表。临时表中的行是特定于某个用户会话的,行的有效期由ONCOMMIT子句指定。

2) table_name指定要分配给该表的名称。

3) column_name 指定要分配给某个列的名称。

4) type 指定某个列的类型。

5) constraint_def 指定对某个列的约束。

6) default_exp 指定一个表达式,用来为某个列赋予默认值。

7) ON COMMIT 控制临时表中行的有效期。 DELETE说明这些行在事务的末尾要被删除。

8) PRESERVE 说明这些行在用户会话的末尾要被删除。如果对临时表没有指定ON COMMIT选项,那么默认值是DELETE。

9) tab_space 为该表指定表空间。如果没有指定表空间,该表就被存储在该用户的默认表空间中。

3. 建立普通表举例

如: create tablebasetab

(

msisdn varchar2(21) not null primary key,

imsi varchar2(16) null,

paytype number null default 0

)

4. 建立临时表

所谓临时表就是在一个事务中,要来保存数据的,退出事务,数据将被清空。

如: create globaltemporary table basetab_temp

(

msisdnvarchar2(14)

) on commit preserve rows;

如果向表basetab_temp中插入一条数据,然后断开连接,再连接后,查询该表会发现该表为空。

二、修改表

在我们将表建好后,发现表结构需要修改、后来需要增加新列或需要加约束等,这时我们可以使用ALTERTABLE语句对表进行修改。ALTER TABLE语句可以执行以下任务:

添加、修改或删除列。

添加或删除约束。

启动或禁用约束。

1. 添加列

如:

1) 向basetab中增加一个20个变长字符列name

alter table basetab add name varchar2(20);

2) 向basetab增加number型的low_num和high_num列默认值都为0

alter tablebasetab add low_num number(3) default 0;

alter tablebasetab add high_num number(3) default 0;

2. 虚拟列

虚拟列在定义好后,不需要对该列插入数据,通过现有的列计算后的值填进去。 如:

在basetab中增加一列mid_num,该列是通过low_num和high_num的平均值得到。 alter table basetab add(mid_num as ((low_num + high_num)/2));

3. 修改列

1) 修改basetab中msisdn的长度为15

alter table basetab modify msisdn varchar2(15);

说明:只有在表中没有任何行或所有列都为空值时才可以减小列的长度。

2) 修改basetab中的数字列low_num的精度为5

alter table basetab modify low_num number(5);

3) 修改basetab中msisdn列的数据类型为字符型定长14

alter table basetab modify msisdn char(14);

4) 修改basetab中high_num列的默认值为100

alter table basetab modify high_num default 100;

5) 删除basetab中high_num列

alter table basetab drop column high_num;

6) 限制basetab中high_num列值必须大于等于0

alter table basetab add constraint basetab_hig_num_ck check(high_num>=0);

7) 限制basetab中msisdn列不为空

alter table basetab modify msisdn constraint basetab_msisdn_nn notnull;

8) 添加foreign key约束

foreign key是约束两张表,如果在subscribeinfo建立msisdn关联basetab的外键,则subscribeinfo中msisdn必须在basetab中存在。

在subscribeinfo建立msisdn关联basetab的外键语句如下:

alter table subscribeinfo add constraint sub_fk msisdn referencesbasetab(msisdn); 带foreign key 约束的 on delete cascade 意思就是当删除主表中的数据是,关联表中的数据一起被删除。如:

alter table subscribeinfo add constraint sub_fk msisdn referencesbasetab(msisdn) on delete cascade;

带foreign key 约束的 on delete null意思是删除主表中的数据时,关联表的外键列将为

空,如:

alter table subscribeinfo add constraint sub_fk msisdn referencesbasetab(msisdn) on delete null;

9) 将basetab中msisdn设置为唯一值

alter table basetab add constraint base_uq unique(msisdn);

10) 删除basetab中的唯一约束

alter table basetab drop constraint base_uq;

11) 禁用basetab中对hig_num大于等于0的约束

alter table basetab disable constraint basetab_hig_num_ck;

12) 启用basetab中对hig_num大于等于0的约束

alter table basetab enable constraint basetab_hig_num_ck;

1, 将表basetab_exp重命名为basetab_nn表

rename basetab_exp to basetab_nn;

2, 截断表

截断表即将表中数据清空,在截断过程中不会undo日志,所有截断不会被会滚。如: truncate table basetab;

3, 删除basetab_nn表

drop table basetab_nn;

三、插入数据

我们在将表建立好后,需要将我们的数据插入到表中,可以使用insert语句。Insert可以往表中插入单行数据,也可以通过子查询将一张表的多行数据插入到另一张表中,还可以进行多表插入。下面就对单行插入、多行插入和多表插入进行说明。

1. 单行插入数据

1) 具体语法:

INSERT INTO TABLE [(column[,column,?])] VALUES(value[,value,?]);

TABLE用于指定表名;column用于指定列名,如果要指定多个列,那么列之间要用逗号分开;value用于提供列数据。

说明:如果不提供列,则每个列都要有数据。

2) 向basetab中中插入一条数据

insert into basetab(msisdn,paytype) values(‘861xxxxxxxx’,0);

2. 多行插入数据

当我们想一次插入多行数据时可以使用子查询插入数据。当使用子查询插入数据时,可以将一张表的数据复制到另外一张表中。当处理行迁移、复制表数据或者装载外部表数据到数据时,可以使用子查询插入数据。

1) 具体语法:

INSERT INTO TABLE[(column[,column,?])] subQuery

TABLE用于指定表名;column用于指定列名,如果要指定多个列,那么列之间要用逗号分开;subQuery用于指定为目标表提供数据的子查询。需要插入的列和子查询的列的数据类型和个数要完全匹配。

2) 使用子查询插入数据

insert into subscribeinfo(msisdn,serviceid) select msisdn,serviceidfrom subscribeinfo;

3) 使用子查询执行直接装载

insert/*+APPEND*/ intosubscribeinfo(msisdn,serviceid) select msisdn,serviceid from subscribeinfo;

注意,尽管以上两条语句的执行结果一样,但第二条语句使用/*+APPEND*/来表示直接装载方式。当要装载大批量数据时,采用第二种方法装载数据的速度要远远优于第一种方法。Append在数据库oracle常用操作培训.ppt中有说明。

3. 多表插入数据

所谓多表插入即在通过一些限制条件,将子查询中的数据分别插入到不同的表中。其中通过两个操作符ALL和FIRST来实现的。

1) ALL操作符

如:insert all when type=0 then into waptab

when type=1 then into javatab

when type=2 then into smstab

when orderflag =8 then into ordertab

else into othertab

select * from serviceinfo;

2) FIRST操作符

当使用FIRST操作符执行多表插入时,如果数据已经满足了先前条件,并且已经被插入到某表中,那么该行数据在后续插入中不会再次使用

如:insert first when type=0 then into waptab

when type=1then into javatab

when type=2then into smstab

when orderflag=8 then into ordertab

else intoothertab

select * fromserviceinfo;

四、更新数据

插入数据后,我们需要对插入的数据进行更改,这时可以使用UPDATE或MERGE语句来修改。使用UPDATE语句时,可以使用表达式更新列值,也可以使用子查询更新一列或多列的数据。

1. 用UPDATE来更新数据时,需要注意:

1) 如果要更新数字列,则可以直接提供数字值;如果要更新字符列霍日期列,则数据必须用单引号引住。

2) 当更新数据时,数据必须要满足约束规则。

3) 当更新数据时,数据必须要与列的数据类型匹配。

2. 使用表达式更新数据

1) 具体语法

UPDATE TABLE SET <column>=<value> [,<column>=<value>?] [WHERE <condition>];

2) 将basetab的msisdn是139xxxxxxxx的更新为138xxxxxxxx且paytype为0 update basetabset paytype=0,msisdn=’138xxxxxxxx’where msisdn=’139xxxxxxxx’; 建议:大家可以养成一个好的习惯,在update和delete语句时就算是不想加where条件,也希望写成 where1=1;这样就不是忘了些where 而导致全部更新或删除了。

3. 使用子查询更新数据

当使用update语句更新数据时,不仅可以使用表达式或数值直接更新数据。也可以使用子查询更新数据。

如:update basetab set paytype=(select paytype from basetrab where msisdn=’

86139xxxxxxxx’)where msisdn=’861xxxxxxxx’;

4. 使用MERGE语句来进行更新数据。

1) 具体例子

有两张表,basetab和 basetab_exp表,要如果msisdn在basetab中存在,这用basetab_exp对basetab中更新;如果msisdn不在basetab则用basetab_exp数据插入basetab中。 merger into basetab b using basetab_exp be on (b.msisdn = be.msisdn)

when matched then

update set b.paytype = be.paytype,b.imsi = be.imsi

when not matched then

insert (b.msisdn,b.imsi,b.paytype)values(be.msisn,be.imsi,b.paytype);

2) 例子说明

merger into 子句指名了合并操作的目标表(即行要合并到的表)。上面的例子为basetab表。

using??on 子句指定了一个表连接。上面的例子为basetab_exp表,并通过msisdn来连接。 when matched then 子句指定了当一行满足using??..on子句的条件时要执行的操作。上面的例子执行的操作为update.

when not matched then 子句指定了不满足using??on 子句的条件时要执行的操作。上面的例子执行的操作为insert.

五、检索数据

当表中已经有数据了,我们需要查看数据的时候,就需要用到select语句了。和select相关的主要关键字有:from、where和order by。

select关键字告诉数据库你想要那些列。

from告诉数据库这些列所在的表。

where告诉数据库想为所选择的信息做出怎样的限制。

order by 告诉Oracle按所给出的顺序返回信息。

下面说明一下简单表查询以及一些和查询有关的知识点。

1. 间单表查询

1) 查询手机号为86139xxxxxxxx的用户信息

select msisdn, paytype frombasetab where msisdn=’86139xxxxxxxx’;

2) 查询所有paytype为0的用户的定购关系信息,按照msisdn降序序排序 select msisdn,serviceid,nextchargetime from subscribeinfo s,basetab b where s.msisdn=b.msisdn and paytype=0 order by msisdn desc,

说明:关键字desc代表降序(descending) asc代表升序,不加asc默认是升序。 s代表subscribeinfo的别名,b代表basetab的别名。

2. 单值的逻辑说明

paytye = 0 paytype 等于0

paytye >0 paytype 大于 0

paytye >=0 paytype 大于等于0

paytye <0 paytype 小于0

paytye <=0 paytype 小于等于0

paytye !=0 paytype 不等于 0

paytye ^=0 paytype 不等于 0

paytye <> paytype 不等于 0

说明:因为有些键盘没有惊叹号(!)或加字记号(^),所以Oracle允许使用三种输入不等运算符的方式。

注意:当使用大于和小于运算符比较存储在字符数据类型列中的数字时,要小心。所有的varchar2和char列的值在比较中都被看做是字符。因此,存储在这些类型列中的数字将按字符串而不是数字进行比较。如果列数据类型为NUMBER,那么12大于9。如果为字符列,则0大于12,因为字符’9’大于字符’1’。

3. 运算符like说明

Sql的最强大的功能之一是提供了称为LIKE的模式匹配运算符,该运算符能搜索数据库列的每一行来查找你所描述的模式值。它使用两个特殊的字符来指示要进行哪种匹配。一个为百分号,称为通配符(wildcard),还有一个是下划线,称为位置标示符(position marker)。

1) 百分号(%)表示此处可接受任何内容,包括1个字符、100个字符,或无字符。

2) 下划线( _ )表示此处可以接受一个字符,不为无字符。

如:select * from basetab where msisdn like ‘861381542__%’;

3) 转义符说明

如:create tabletest1(test varchar2(10));

insert intotest1 values('_nihao');

insert intotest1 values('n_ihao');

想查出’_nihao’这条记录

select * from test1where test like ‘t_%’ escape ‘t’; t为转义符’_’被转义。

想查出’n_ihao’这条记录

select * from test1where test like ‘nl_%’ escape ‘l’; l 为转义符。

4) 有时需要将字符串连接起来,连接字符串是使用”||”操作符来完成的。当连接字符串时,要在字符串中加入数字值,”||”后面可以直接加入数字,如果要加入字符或日期,则需要用单引号引住。

4. NULL 与 NOT NULL

IS NULL 指示Oracle识别数据为空的列,IS NOT NULL指示Oracle识别数据不为空的列 为NULL不能就认为是0,NULL表示未知,

Oracle允许将关系运算符(=、!=等等)与NULL连用,但这种比较不返回有意义的结果。与NULL值比较要使用IS 和 IS NOT。

1) 使用NVL函数处理NULL

NVL函数用于将NULL转变为实际值,其语法格式为NVL(expr1,expr2).如果expr1是NULL,则返回expr2,如果不是NULL则返回expr1;

2) 使用NLV2函数处理NULL值

NVL2,该函数也用于处理NULL,其语法格式为NVL2(expr1, expr2, expr3). 如果expr1不是NULL,则返回expr2;如果expr1是NULL,则返回expr3。

5. 值列表的简单测试

1) 对数字的逻辑测试

paytye IN(1,2,3) paytype在列表(1,2,3)中

paytye NOTIN(1,2,3) paytye不在列表(1,2,3)中

paytye BETWEEN 6 AND 10paytye等于6、10或在6到10之间的任何数

paytye NOTBETWEEN 6 AND 10 paytye小于6或大于10

2) 对字母(或字符)的测试

msisdn IN (‘A’,’C’,’F’) msisdn在列表(‘A’,’C’,’F’)中

msisdn NOT IN(‘A’,’C’,’F’) msisdn不在列表(‘A’,’C’,’F’)中 msisdn BETWEEN ‘B’AND ‘D’ msisdn等于’B’、’D’,或在’B’、’D’之间 msisdn NOT BETWEEN ‘B’AND ‘D’ msisdn为小于’B’或大于’D’的任何字符

6. 子查询

1) 返回单值

如:select * from parentserviceinfo p where p.serviceid = ( select pserviceidfrom serviceinfo where serviceid=’10111’);

2) 返回列表

如:select * from basetab where msisdn in (select msisdn fromsubscribeinfo);

7. group by 和having的用法

1) group by子句用于对查询结果进行分组统计。

如:selectpaytype,count(*) from basetab group by paytype;

2) Having子句的功能和where子句很相似,只是它的逻辑仅和分组函数的结果有关,而不与单个行的列和表达式有关,单个行仍然可被where子句选择。

如:select paytype,count(*) from basetab groupby paytype having count(*)>6;

说明:上述查询语句中有几个子句。下面列出Oracle用来执行这些子句的规则以及执行的顺序:

a) 根据where子句选择行。

b) 根据group by子句组合行

c) 为每个组计算分组函数的结果

d) 根据having子句选择和排除组

e) 根据order by子句中的分组函数的结果对组进行排序,order by 子句必须使用分组函数,或者使用在groupby子句中指定的列。

8. EXISTS及其相关子查询的使用

EXISTS用来测试存在状态,它以子查询可能放置IN的方式放置,不同之处在于,它是对从一个查询返回的行的逻辑测试,而不是对行本身的逻辑测试。

如:select msisdn,serviceid from subscribeinfoA where EXISTS (select * from subscribeinfo B where A.msisdn=B.msisdn group byB.msisdn having count(B.serviceid)>1) order by msisdn,serviceid;

用IN替换

Selectmsisdn,serviceid from subscribeinfo where msisdn in (select msisdn fromsubscribeinfo group by msisdn having count(serviceid)>1) order bymsisdn,serviceid;

9. 外部连接

1) right outer join

如:select su.msisdn,su.nextchargetime,s.serviceid from subscribeinfo suright outer join serviceinfo s on su.seriviceid=s.serviceid;

select su.msisdn,su.nextchargetime,s.serviceid from subscribeinfo su,serviceinfo s where su. serviceid (+)=s. serviceid;

作为外部连接语法的一部分使用了on子句。可以使用using子句及表共同的拥有的列名来替换on子句,不要用表名或表别名限制此列名。

select msisdn,nextchargetime,serviceid from subscribeinfo right outer join serviceinfo using(serviceid);

2) left outer join

如:select su.msisdn,su.nextchargetime,s.serviceid from serviceinf sleft outer join

subscribeinfo su on s.seriviceid=su.serviceid;

select su.msisdn,su.nextchargetime,s.serviceid from subscribeinfosu,serviceinfo s

where su.serviceid =s.serviceid (+);

3) full outer join

如:select su.msisdn,su.nextchargetime,s.serviceid from serviceinf sfull outer join

subscribeinfo su on s.seriviceid=su.serviceid;

10. 合并查询

1) UNION

UNION操作符用于获取两个结果集的并集。当使用该操作符时,会自动 去掉结果集中的重复行,并且会以第一列的结果进行排序。

select msisdn,paytype from basetab wheremsisdn=’86131%’

union

select msisdn,paytype from basetab where paytpe=0;

2) UNION ALL

UNION ALL 操作符用于获取两个结果集的并集。但与UNION操作符不同,该操作符不会取消

重复值;也不会按照任何列进行排序。

3) INTERSECT

INTERSECT操作符是取两个结果集的交集

select msisdn,paytype from basetab where msisdn=’86131%’

intersect

select msisdn,paytype from basetab where paytpe=0;

4) MINUS

MINUS操作符是取两个结果集的差

select msisdn,paytype from basetab where msisdn=’86131%’

minus

select msisdn,paytype from basetab wherepaytpe=0;

六、删除数据

当要删除表中某行的数据时,可以使用DELETE语句。使用该语句既可以删除一行数据,也

可以删除多行数据。

DELETE FROM T <table> [WHERE <condition>];

table 表示表名,condition用于指定条件子句。

1. 删除满足条件的数据

如:delete from baset where msisdn=’8613112345%’;

2. 使用子查询删除数据

如:delete from subscribeinfo where serviceid in (select serviceid

fromserviceinfo );

注意:在主从表中,要删除主表数据是,要确保从表不存在相关记录。

七、序列

序列(sequence)是一种数据库项,它生成一个整数序列。序列所生成的整数通常可以用来

填充数字类型的主键列。

1. 创建序列

CREATE SEQUENCE语句可以用来创建序列,其语法如下:

CREATE SEQUENCE sequence_name

[START WITH start_num]

[INCREMENT BY increment_num]

[{MAXVALUE maximum_num|NOMAXVALUE}]

[{MINVALUE minimum_num|NOMINVALUE}]

[{CYCLE|NOCYCLE}]

[{CACHE cache_num}]

[{NOCACHE}][{ORDER|NOORDER}]

sequence_name指定序列名。

start_num 指定序列从哪个整数开始,该值默认为1

increment_num 指定该序列每次增加的整数增量,值默认为1。increment_num的绝对值 必须小于maximum_num和minimum_num值之差。

maximum_num指定该序列的最大整数。maximum_num必须大于等于start_num,必须大于minimum_num。

minimum_num指定该序列的最小整数。minimum_num必须小于或等于start_num,必须小于maximun_num。

NOMAXVALUE指定升序序列的最大值为10的27次方,降序序列的最大值为-1。NOMAXVALUE为默认值。

NOMINVALUE 指定升序序列的最小值为1,降序排序的最小值为-10的26次方。NOMINVALUE为默认值。

CYCLE表示循环生成整数。升序序列达到最大值,下一个生成的值是最小值,降序相反。 NOCYCLE即达到最大值或最小值就不再生成数了。

cache_num指定要保留在内存中的整数的个数。默认要缓存的整数为20个。可以缓存最少为2个:缓存的整数个数最多ceil((maximum_num -minimum_num)/abs(increment_num))。 NOCACHE指定不缓存任何整数。这可以阻止数据库为序列预分配值,从而避免序列产生不连续的情况,但这回降低性能。序列不连续的情况之所以会发生,是因为在关闭数据库时所缓存的值将全部丢失。如果省略CACHE和NOCACHE,则数据库默认缓存为20。

ORDER确保按照请求次序生成整数,在RAC环境下要用到。

NOORDER不确保按照请求次序生成整数。NOORDER为默认值。

如:createsequence SQ_CHGSERVICEID

minvalue 1

maxvalue 99

start with 1

increment by 1

nocache

cycle;

2. 使用序列

序列生成一系列数字。一个序列中包含两个“伪列”,currval和nextval,可以分别用来获取该序列的当前值和下一个值。在检索序列的当前值是,需要对序列进行初始化,在选择SQ_CHGSERVICEID.nextval时,该序列就被初始化了。

select SQ_CHGSERVICEID.nextvalfrom dual;

select SQ_CHGSERVICEID.currvalfrom dual;

insert intotable_name(table_value) values(SQ_CHGSERVICEID.nextval);

3. 修改序列

ALTER SEQUENCE语句可以用来修改序列。在修改序列时,可以修改的序列内容如下限制:

1) 不能修改序列的初值

2) 序列的最小值不能大于当前值

3) 序列的最大不能小于当前值

如:alter sequence SQ_CHGSERVICEID increment by2;

4. 删除序列

drop sequence SQ_CHGSERVICEID;

八、索引

在查询时,如果引用索引,一般情况下可以提高查询速度,但在插入和删除时,要维护索引,系统也会有开销。下面介绍一下建立索引的简单语法。

1. 创建一般的索引

具体语法: CREATE[UNIQUE] INDEX index_name ON table_name(column_name [, column_name?])TABLESPACE tab_space;

如: create uniqueindex base_index on basetab(msisdn);

2. 创建基于函数的索引

如:create indexbase_index on basetab(upper(msisdn));

说明:并不是所有的索引扫描都快于表扫描,当返回的总数量达到一定程度以后,如返回数据量为表总量的10%以上,索引扫描就不一定快于表扫描了。索引扫描适合返回少量的数据。

九、函数

数据库提供了很多函数,这里选择了一些来进行说明,组值函数中的AVG、COUNT、MAX、MIN和SUM,再介绍一下格式转换to_char和to_date。最后说一下时间函数ADD_MONTHS、LAST_DAY.

1. AVG函数

AVG函数是用来取平均值的函数。

如:basetab中有用户的身高hight列,现在需要得到所有用户的平均值。

Selectavg(hight) from basetab;

2. COUNT函数

Count函数是用来得到表中的行数的

如:要得到basetab中有多少用户

Selectcount(*) from basetab;

3. MAX函数

MAX函数是用来取最大值的函数。

如:basetab中要得到用户最高身高是多少。

Selectmax(hight) from basetab;

4. MIN函数

MIN函数是用来取最小值的函数

如:basetab中要得到用户最小身高是多少

Selectmin(hight) from basetab;

5. SUM函数

SUM函数是用来对列值进行合计

如:basetab中有用户的使用金额列money,现在要得到所有用户使用了多少钱 Selectsum(money) from basetab;

6. TO_CHAR

TO_CHAR是将日期格式的数据转换成指定格式的字符

如:将现在的时间转换成字符。

Selectto_char(sysdate,’yyyymmddhh24miss’) from dual;

7. TO_DATE

TO_DATE是将字符格式的数据转换成指定格式的日期格式

如:将’19820609000000’字符转换成时间。

Select to_date(‘19820609000000’,’yyyy-mm-ddhh24:mi:ss’) from dual;

8. ADD_MONTHS函数

ADD_MONTHS函数在指定的日期上加上或减去(参数传入为负的)几个月

如:在当前时间加上三个月。

Selectadd_months(sysdate,3) from dual;

如:在当前时间上减上三个月

Selectadd_months(sysdate,-3) from dual;

9. LAST_DAY函数

LAST_DAY函数是获得一个月的最后一天的函数

如:获得但前月的最后一天

Select last_day(sysdate) from dual;

更多相关推荐:
20xx公安基层基础工作总结

支队20xx年公安机关基层基础工作总结今年以来,支队在市局党委的领导下,以“三基”工程建设为载体,紧密结合自身实际和工作特点,站在新起点,立足新职能,坚持“抓队伍、抓法制、抓机制、抓保障”为切入点,突出抓好队伍…

20xx年基层基础工作总结

××县司法局二〇20xx年度基层基础工作总结20xx年,全县司法行政基层基础工作在局党委、行政的领导下和上级业务部门的指导下,紧紧围绕组织构建、规范运作、创新管理等方面进行了卓有成效的探索和实践,取得了明显成效…

20xx年上半年基层基础工作总结

营山县司法局二〇20xx年上半年基层基础工作总结今年上半年,全县司法行政基层基础工作在局党委的领导下,在上级业务主管部门的指导下,认真贯彻落实全国政法工作会议和省、市司法行政工作会议精神,强化基层基础建设,深入…

加强基层基础建设工作汇报doc

恰尔巴格乡基层基础建设工作汇报中共恰尔巴格乡委员会恰尔巴格乡人民政府20xx年10月19日尊敬的各位领导今天各位领导不辞辛劳专程来我乡调研基层基础建设工作情况这充分体现了州市领导对我乡基层基础建设的高度重视在此...

综治基层基础建设工作总结

清江乡综治基层基础建设工作总结今年是综治基层基础建设年,一年来我乡严格按照县综治委的统一安排和部署,通过“三个到位”,切实加强综治基层基础工作。一、软硬件设施到位按照上级要求,加强综治软硬件建设,配齐乡综治干部…

来龙镇统计基层基础规范化建设工作总结

来龙镇统计基层基础规范化建设工作总结统计基层基础工作是整个统计工作的基石,基石不牢,根基不稳,必将影响统计数据的质量,进而影响统计工作的正常开展。我们来龙镇通过加强领导、健全机构、保障投入、建章立制、夯实基础、…

开展计划生育基层基础规范化活动工作总结

白沙镇开展人口和计划生育基层基础规范化活动工作总结我镇根据邵市人口发20xx9号文件新人口字20xx23号文件要求在全镇全面开展基层基础建设年活动集中一段时间深入扎实地开展计划生育基层基础工作规范化活动建立完善...

关于平度市新河镇加强基层基础工作的调查与思考

关于平度市新河镇加强基层基础工作的调查与思考李华强张景岩新河镇位于青岛平度市人口23万余人辖32个行政村共有36个党支部党员1233人近年来新河镇以主动回应农民群众的关注和期待为切入点建立了一线一站一联动的农村...

物业公司安全生产基层基础年总结

物业公司安全生产基层基础年活动总结根据上级和公司安全会议部署结合公司工作实际公司以加强安全标准化班组建设为重点认真落实公司安全生产基层基础年活动方案积极组织开展安全标准化班组创建活动现将基层基础年活动主要工作总...

安全工作基层基础深化年总结

稻庄镇大营学校安全工作基层基础深化年第二次集中行动工作总结一完善制度落实责任在安全生产基层基础深化年第二次集中行动中我校结合实际制定并完善了针对性和操作性比较强的用电安全消防安全传染病防治值班门卫管理危险物品管...

安全环保基层基础工作总结

20xx年HSE安全环保基层基础工作总结公司185次岗检问题及20xx年上半年安全综合检查问题的整改落实情况针对85次岗检及20xx年上半年安全综合检查发现的问题公司采取了以下措施1分析原因制定整改措施2举一反...

以警务室为依托 夯实基层基础工作

以警务室为依托夯实基层基础工作20xx919181123来源作者李家庄派出所点击12浅谈农村警务室建设为进一步贯彻孟建柱部长和杨司厅长在我局调研时的讲话内容及全市社区和驻村民警十个一工作汇报会议精神我所按照9月...

基层基础工作总结(25篇)