数据库
xuexiaodong2009
主要从事C#编程,精通SQL,JS,jquery等技术,目前主要从事内部办公,微信企业号方面的应用
展开
-
两个关于外键的存储过程
获取指定表的所有关联外键表名和关联字段名,判断指定表的某个值是否在外键表中有记录原创 2011-07-11 13:40:41 · 3581 阅读 · 1 评论 -
DB2数据库切换为oracle数据库经验教训总结
由于DB2数据库使用的人太少,公司有没有专业的DBA,决定把数据库从DB2数据库切换为oracle数据库,本以为很简单,可当真的切换时,却发现,有很多东西出乎意料。由于系统底层使用的是ORM映射工具,由于没有使用存储过程,自定义函数,触发器,因此我以为系统改动不大,但发现的问题却不少。1我们的主键基本上都采用共的是Sequence,没有采用自动增长作为主键。但获取Sequence在两种数据库中是不原创 2016-04-17 16:23:58 · 6087 阅读 · 0 评论 -
Oracle由于排序字段错误,导致分页数据错误,错误原因真的想不到!!!
由于数据过多,经常使用分页的方法减少数据,相同的数据,相同的SQL,相同的系统,只是排序字段不同,会导致分页数据错误?不可能?确实不可能,我也是这么想想的!! 同一个程序,同一张表,同样的SQL,只有排序字段不同,就导致了分页数据不同是正常的,但分页数据错误,可能吗? 而且最奇怪的是,第一页数据是正确的,第二页,第三页,第四页数据完全相同,第五页数据又是正确的!!!什么原因!!!程序问题,但原创 2016-04-19 10:49:14 · 9324 阅读 · 1 评论 -
Oracle触发器表发生了变化 触发器不能读它解决方法
出现原因,是因为在更新的的表和读取的表是同一个表。 CREATE or replace TRIGGER T_userupdateT BEFORE update ON T_user REFERENCING OLD AS old NEW AS N_ROW FOR EACH ROW DECLARE U_xtfidemp1 varchar(36); u_xtempcode1 varcha原创 2016-04-18 18:25:24 · 16933 阅读 · 1 评论 -
数据库库设计:字段是否允许为空的思考
设计数据库表时,是否允许字段为空很长时间我都认为无所谓,但在工作了很长时间后,才发现,其实这个很重要,不能想当然。 之所以会有这个是否为空的选项,就是为了表示未知的情况。但是不是所有的未知情况都应该允许为空呢? 例如,性别,使用1表示男,0表示女,空表示未知或者是用户没有选择。 但又没有更好的方法呢? 首先说下可空字段的问题, 1如果为空,查询条件就必须处理为空的情况原创 2016-10-12 14:04:34 · 18707 阅读 · 2 评论 -
数据库库设计:字典表的设计
在设计软件时,经常会遇到类型的问题,也就是分类问题,例如:员工分类,正式员工,试用员工,实习生。这些数据是设计成字典表还是设计成常量? 在我们的系统中一直是设计成表的,但由于系统中有很多有很多中这种类型,导致很多表只有不到四五条数据,数据几乎不变,为了展示,使用视图,使用表关联。 其实我感觉像这样几乎不变的数据,设计成常量,应该更好,性能好,修改也简单,要改成表也很方便,相反如果是表要改成常原创 2017-02-23 09:42:12 · 16175 阅读 · 1 评论 -
EF 配置Oracle数据库
EF可以配置Oracle数据库,但不知道为什么一直配置不好。其实可以使用使用NUGET管理程序包,自动配置数据库,但需要注意的时,需要安装两个包,而并不是一个,我一直以为时一个,但已启动程序就会出错。安装后配置文件的主要的改变如下:原创 2017-03-04 09:38:04 · 1863 阅读 · 0 评论 -
EF 配置Oracle数据库数据库连接字符串
使用Nuget管理程序包自动安装了Oracle的两个程序包后,配置文件就已经准备好了,但一直很奇怪,一直连接不上数据库,使用过Oracle的都知道,Oracle的配置一般都需要 net manager,然后就可以连接数据了。一般这样配置后,连接字符串就是如下了: 但是很奇怪,这样配置后,一直都提示连不上数据库,经过很多测试,才发现,可以如下配置,就可以成功。原创 2017-03-04 09:49:24 · 5253 阅读 · 0 评论 -
EF 配置Oracle数据库 DB first
首先在Oracle官网下载Oracle Developer Tools for Visual Studio .NET 安装及使用 安装后,添加新项 --数据--ADO.net 实体数据模型。 下一步可以看见多了Oracle 数据库 (ODP.NET, 托管驱动程序) 数据库连接测试成功后,选择需要的表视图确定后 完成后,生成的文件如下:...原创 2019-02-16 16:00:43 · 1263 阅读 · 0 评论 -
数据库库设计:树结构的数据读取
树形结构在实际中应用很多,但在数据库中一般也是设计为表格,如何读取,子孙节点,或者是祖先节点?在Oracle中使用start with connect by prior select * from tablename start with cond1connect by cond2where cond3;start with 子句:遍历起始条件,有个小技巧,如果要查父结点,这里可以用子结点的列,反原创 2017-03-02 14:22:03 · 963 阅读 · 0 评论 -
数据库库设计:字段默认值二
在设计数据库时使用了数据库默认字段的方法,设置了默认值create table EAS.T_userLevel ( UL_ID INTEGER not null, UL_userLevel2 INTEGER default 0 not null, UL_userLevelTime2 DAT原创 2017-03-17 11:42:37 · 1947 阅读 · 0 评论 -
oracle数据库CPU特别高的解决方法
system表空间100%,导致数据库无法访问 系统表空间正常情况下只存放了数据字典之类的东西,所以占用的空间一般在500M以下。如果你的系统表空间占用比较多的空间,可能有以下几方面的原因:1)没有为用户明确指定默认表空间,导致system系统表空间作为用户默认表空间2)开启了审计,请检查此表的大小AUD$你可以运行以下查询来检查一下系统表空间哪些表比较大: SQL> select *原创 2017-07-05 15:10:10 · 8990 阅读 · 0 评论 -
NHibernate中Oracle字段类型Clob数据长度过大问题
问题特别奇怪,按理说Clob字段不存在长度过大的问题,但在实际使用中却会提示这个问题。而且字符特别少时,没有问题,特别长时也没有问题,长度在在1千到五千之前就会有问题。实际上因为把Clob字段作为varchar所以会出现长度问题。修改如下:添加类继承NHibernate中的IUserType public abstract class PatchForOracleLobField : IUserT原创 2017-11-30 15:00:28 · 1319 阅读 · 0 评论 -
数据库的检查约束check约束
数据中的约束,主要有主键约束,外键约束,非空约束等。主键约束其实就是非空唯一约束,非空唯一约束也可以通过建立唯一索引来实现,外键约束需要通过其他的表来帮助实现,非空约束在定义是数据库字段时就定义了。还有另一类约束check约束,用处挺大的,只是自己很少使用。 那check约束可以实现那些功能呢? 1范围规定 2枚举值规定 3特定的匹配1范围规定 例如规定,金额只能大于0 ALTER T原创 2015-10-26 13:50:29 · 21588 阅读 · 2 评论 -
数据库库设计:字段默认值
定义表,一般情况是不建议定义成可为空的字段的,可以使用默认值来定义默认值。例如:alter table tablename add(defaultField INTEGER default 1 not null);定义字段的默认值是1,如果没有赋值,再默认值是1alter table tablename add(createtime Date default sysdate not null);定原创 2017-03-02 15:21:50 · 11694 阅读 · 0 评论 -
SQL2005分页查询
1 通过select top进行分页查询 2通过系统存储过程进行分页查询 3 通过新函数ROW_NUMBER()进行分页查询原创 2011-04-20 17:33:00 · 5730 阅读 · 0 评论 -
数据库分组求和问题
表包含三列,[id] ,[countNo],[type],id 表示仓库编号,countno表示货物数量,[type]表示货物类型现在要求统计每个仓库各个货物的数量,包含四列仓库编号,货物1的数量,货物2的数量,货物3的数量..货物N的数量。1 第一种方法,使用inner join和as给表取别名,语句如下:select a.id ,sum(a.countno) countno1,原创 2012-03-23 14:34:57 · 5330 阅读 · 0 评论 -
SQL Server 2005数据库备份还原错误及解决方法
还原数据库时,经常遇到还原失败的情况,但换一台计算机,又又可以还原成功,让人感觉莫名其妙。 失败的原因主要有一下几种情况 1,登录用户没有权限 错误信息如下: 标题: 定位备份文件 - JIANYU------------------------------C:\Program Files\Microsoft SQL Server\MSSQL.1\M原创 2012-08-14 14:17:12 · 4393 阅读 · 0 评论 -
大数据量下的查找最新的几条数据的通用方法
由于项目需要,需要获取一组数据的的最新一条数据,表结构如下:CREATE TABLE [dbo].[WUSU_SUOLITest_Table]( [ID] [bigint] IDENTITY(1,1) NOT NULL, [ReceiveTime] [datetime] NULL, [GroupID] [bigint] NOT NULL, [DataValue] [float] N原创 2012-09-04 09:16:05 · 12187 阅读 · 3 评论 -
删除重复数据
1、查找表中多余的重复记录,重复记录是根据单个字段(id)来判断 select * from Table_2 where id in(select id from Table_2 group by id having count(id)>1)--通过子查询判断重复的记录--select id from Table_2 group by id having count(id)>1 取原创 2012-03-23 14:16:31 · 4483 阅读 · 1 评论 -
查询数据库中所有表的语句
declare @tablename nvarchar(20) declare @fieldname nvarchar(50) declare @SQLString nvarchar(300) DECLARE tnames_cursor CURSOR LOCAL FORWARD_ONLY READ_ONLY--声明游标 FOR select name from sysobje原创 2013-05-03 13:47:28 · 2155 阅读 · 0 评论 -
常用的SQL数据库语句总结
1as 的用处 as可以对表和列取别名 在开发过程中经常遇到开始给某一个的字段去field1的名称,但后来有感觉field1字段指定不确切,于是又把此字段改成了field2,由于开始认为field1是常量,于是到处使用字符串field1,而且程序中又含有大量对field1的处理, 此时就可以使用as例如原来的 select field1 from tableA,改为select fie原创 2011-06-24 15:14:00 · 4744 阅读 · 5 评论 -
数据库中空值引起的一个奇怪问题
在项目中遇到了很奇怪的问题,表结构是一个基本的树结构,简化如下: CREATE TABLE [dbo].[Test2]( [nodeId] [int] IDENTITY(1,1) NOT NULL, [nodeName] [nchar](10) NULL, [parentID] [int] NULL) ON [PRIMARY] 需求很简单,就是查找所有叶节点,也就是没有子节点的原创 2013-10-16 10:22:24 · 1520 阅读 · 0 评论 -
数据库触发器DB2和SQL Server的异同
大部分数据库语句的基本语法是相同的,但具体要具体的每一种数据库,又有些不一样,例如触发器,DB2和SQL Server两种很大的不同。例如DB2的一个触发器:CREATE TRIGGER EAS.trName NO CASCADE BEFORE insert //插入触发器 ON eas.T_user REFERENCING NEW AS N_ROW //把新插入的数据命名为N原创 2015-10-26 14:29:04 · 2124 阅读 · 0 评论 -
db2数据库常用调试检测数据库语句
connect to [数据库名] user [操作用户名] using [密码]连接到数据库指定数据库,不包含中括号reorgchk on table EAS.T_User检测是否需要重组表EAS.T_Userreorgchk update statistics on table all检测所有表是否需要重组select tabname, colcount, status FROM sysca原创 2015-11-27 10:46:26 · 3364 阅读 · 0 评论 -
db2 优化基础 查询执行次数最多的SQL
使用如下语句查找执行次数最多SQLdb2 select * from sysibmadm.SNAPDYN_SQL order by NUM_EXECUTIONS desc,TOTAL_SYS_CPU_TIME_MS desc fetch first 205 rows only >>d:\num_executions.txt打开输出的文件显示如下:根据执行次数判断是否有问题。如果发现执行次数明显偏多原创 2015-12-18 09:40:00 · 3771 阅读 · 0 评论 -
db2 优化基础 查询执行时间最长的SQL
之前写过一个查询执行查看运行时间最长的应用,查询到的是,应用程序,例如我的程序,查到的是IIS,没什么用。select elapsed_time_min,appl_status,agent_id from sysibmadm.long_running_sql order by elapsed_time_min desc fetch first 5 rows only查询执行时间最长的SQL,要使用原创 2015-12-18 09:50:35 · 9940 阅读 · 0 评论 -
SQl查询性能优化注意事项
1避免使用union,case when,left join,right join 这类语句在数据量变大时会严重影响查询效率2exists不一定比in效率高在子查询返回数据比较少时,尽量使用in,exists相当于一个双层循环,需要测试,已确定具体哪一种效率更高3 or有时效率非常低,某些情况下可以替换为in提高查询效率。4尽量减少查询次数,某些情况下通过in来合并多次查询,...原创 2018-08-30 09:46:27 · 337 阅读 · 0 评论