随笔分类 -  数据库

1 2 下一页
SQL查询~ 存在一个表而不在另一个表中的数据
摘要:A、B两表,找出ID字段中,存在A表,但是不存在B表的数据。A表总共13w数据,去重后大约3W条数据,B表有2W条数据,且B表的ID字段有索引。 方法一 使用 not in ,容易理解,效率低 ~执行时间为:1.395秒~ 方法二 使用 left join...on... , "B.ID isnul 阅读全文
posted @ 2016-11-07 14:14 jameshappy 阅读(93552) 评论(4) 推荐(9)
谈数据库的性能优化
摘要:这篇文章是我花了很多时间写出来的,曾经发表在javaeye论坛上,今天居然不见了,幸好网上有人转载这篇文章,没办法,只好再一份在博客里。这个是我以前写给我部门的一个技术心得,鄙人才疏学浅,知道javaeye高人很多,如果我写的不对的地方,欢迎指教。我靠这么多关键字过滤啊,“fapiao”也成了关键字... 阅读全文
posted @ 2015-03-07 17:25 jameshappy 阅读(280) 评论(0) 推荐(0)
left join on
摘要:问题:select * from A left join f on e.cust=f.account_idwhere f.status='0'与select * from A left join fon e.cust=f.account_id and f.status='0'的区别在做外连查询的时候ON里面的条件是在外连执行之前筛选的的where后的查询条件在外联之后执行上面哪个是左联后!再选出f.status='0'的,等于在两个表连接 了以后 再去 做过滤WHERE哪个说白了就是连主表都砍掉的, 结果集里只存在f.status='0& 阅读全文
posted @ 2014-02-28 17:00 jameshappy 阅读(235) 评论(0) 推荐(0)
sql之left join、right join、inner join的区别
摘要:left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只返回两个表中联结字段相等的行举例如下:--------------------------------------------表A记录如下:aID aNum1 a200501112 a200501123 a200501134 a200501145 a20050115表B记录如下:bID bName1 20060324012 20... 阅读全文
posted @ 2013-10-06 09:44 jameshappy 阅读(309) 评论(0) 推荐(0)
SQL Server 2008 各种DateTime的取值范围
摘要:SQL Server 2008除了DateTime和SmallDateTime之外,又新增了四种时间类型,分别为:date,time,datetime2和datetimeoffset。各时间类型范围、精度一览表:数据类型 时间范围 精度datetime 1753-01-01到9999-12-31 00:00:00 到 23:59:59.997 3.33毫秒smalldatetime 1900-01-01 到 2079-06-06 00:00:00 到 23:59:59 分钟date 0001-01-01 到 9999-12-31 天time 00:00:00.0000000 到 23:59:5 阅读全文
posted @ 2013-08-16 18:35 jameshappy 阅读(390) 评论(0) 推荐(0)
获取存储过程返回值及代码中获取返回值
摘要:1.OUPUT参数返回值例: 向Order表插入一条记录,返回其标识CREATEPROCEDURE[dbo].[nb_order_insert](@o_buyeridint,@o_idbigintOUTPUT)ASBEGINSETNOCOUNTON;BEGININSERTINTO[Order](o_buyerid)VALUES(@o_buyerid)SET@o_id=@@IDENTITYENDEND存储过程中获得方法:DECLARE@o_buyeridintDECLARE@o_idbigintEXEC[nb_order_insert]@o_buyerid,o_idbigint2.RETURN过 阅读全文
posted @ 2013-06-04 15:37 jameshappy 阅读(547) 评论(0) 推荐(0)
Asp.net config connectionString配置(转)
摘要:转自:http://blog.sina.com.cn/s/blog_5f92e8c50100kbxe.htmlData Source - 或 - Server - 或 - Address - 或 - Addr - 或 - Network Address :要连接的 SQL Server 实例的名称或网络地址。可以在服务器名称之后指定端口号:server=tcp:servername, portnumber指定本地实例时,始终使用 (local)。若要强制使用某个协议,请添加下列前缀之一:np:(local), tcp:(local), lpc:(local)Initial Catalog - 阅读全文
posted @ 2013-04-26 18:05 jameshappy 阅读(992) 评论(0) 推荐(0)
SQL Server 存储过程
摘要:Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。Ø 存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。 由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用 阅读全文
posted @ 2013-04-26 07:16 jameshappy 阅读(295) 评论(0) 推荐(0)
SQL Sever 2008性能分析之执行计划
摘要:一直想找一些关于SQL语句性能调试的权威参考,但是有参考未必就能够做好调试 2的工作。我深信实践中得到的经验是最珍贵的,书本知识只是一个引导。本篇来源于《Inside Microsoft SQL Server 2008》,有经验的高手尽管拍砖把。这个部分将讲解一些性能分析工具,这些性能分许主要关注在执行计划。缓存执行计划SQL Server 2008提供了一些服务器对象来分析执行计划Sys.dm_exec_cached_plans: 包含缓存的执行计划,每个执行计划对应一行。Sys.dm_exec_plan_attributes:这是一个系统函数,每一个执行计划都对应着一些属性,在这个系统函数 阅读全文
posted @ 2013-04-26 05:41 jameshappy 阅读(6133) 评论(0) 推荐(1)
查找同一个表中某个字段中有相同的数据
摘要:select a.invadjustid,b.waresn from TInvAdjust a,tinvadjust bwhere a.invadjustsn<>b.invadjustsn and a.invadjustid=b.invadjustid order by a.invadjustid desc 阅读全文
posted @ 2013-02-25 11:23 jameshappy 阅读(606) 评论(0) 推荐(0)
设置自动增长列从哪里开始增长
摘要:ALTER TABLE dd AUTO_INCREMENT = 100000; 阅读全文
posted @ 2012-11-12 14:52 jameshappy 阅读(160) 评论(0) 推荐(0)
5/11 PLS-00103: 出现符号 "TABLE"在需要下列之一时: := . ( @ % ; 符号 ":=在 "TABLE" 继续之前已插入。
摘要:错误sqlcreate or replace procedure pro_IMPdate_web_prmsalegoods_tistmpsql varchar2(100);begintruncate table web_prmsalegoods_t'; insert into web_prmsalegoods_t select * from vweb_Prmsalegoods;commit;end pro_IMPdate_web_prmsalegoods_t;正确sqlcreate or replace procedure pro_IMPdate_web_prmsalegoods_ti 阅读全文
posted @ 2012-10-25 09:57 jameshappy 阅读(5977) 评论(0) 推荐(0)
DDL和DML
摘要:DDL (Data Definition Language 数据定义语言)create table 创建表 alter table 修改表 drop table 删除表 truncate table 删除表中所有行 create index 创建索引 drop index 删除索引 当执行DDL语句时,在每一条语句前后,oracle都将提交当前的事务。如果用户使用insert命令将记录插入到数据库后,执行了一条DDL语句(如create table),此时来自insert命令的数据将被提交到数据库。当DDL语句执行完成时,DDL语句会被自动提交,不能回滚。DML (... 阅读全文
posted @ 2012-09-26 09:48 jameshappy 阅读(30948) 评论(0) 推荐(3)
oracle中清空表数据的两种方法
摘要:1、delete from t2 、truncate table t区别:1、delete是dml操作;truncate是ddl操作,ddl隐式提交不能回滚2、delete from t可以回滚,truncate table t 不可以回滚3、truncate table t 执行效率更高,会回收表空间,delete from t执行效率慢,不会回收表空间4、truncate table t高水线下降,delete from t高水线不降(这个不太明白...)自增ID,TRUNCATE后从1开始,DELETE后还是接着自增 阅读全文
posted @ 2012-09-26 09:41 jameshappy 阅读(49135) 评论(0) 推荐(1)
读取Oracle中的clob字段
摘要:int actual = 0; string strSql = "select producthtml from web_goods where productsn=835"; OracleDataReader reader= OraHelper.ExecuteReader(OraHelper.CONN_STRING, CommandType.Text, strSql, null); while (reader.Read()) { OracleLob myOracleClob = reader.GetOracleLob(0); StreamReader streamread 阅读全文
posted @ 2012-09-13 15:59 jameshappy 阅读(1624) 评论(0) 推荐(0)
oracle中的数据类型
摘要:VARCHAR2(size) 可变长度的字符串,其最大长度为size个字节;size的最大值是4000,而最小值是1;你必须指定一个VARCHAR2的size; NVARCHAR2(size) 可变长度的字符串,依据所选的国家字符集,其最大长度为size个字符或字节;size的最大值取决于储存每个字符所需的字节数,其上限为4000;你必须指定一个NVARCHAR2的size; NUMBER(p,s) 精度为p并且数值范围为s的数值;精度p的范围从1到38;数值范围s的范围是从-84到127; 例如:NUMBER(5,2) 表示整数部分最大3位,小数部分为2位; NUMBER(5,-2) 表示数 阅读全文
posted @ 2012-09-13 10:47 jameshappy 阅读(348) 评论(0) 推荐(0)
Oracle Clob字段保存时提示字符串过长
摘要:因为Oracle的SQL语句不能过长,大约4K限制,所以如果保存时Clob字段的内容过长的话会导致保存出错,提示"ORA-01704:文字字符串过长 "解决方案是带参数的update语句 strSql = "update web_goods set producthtml= :output where productid='"+strProductid+"'"; OracleParameter[] ps=new OracleParameter[1];ps[0] = new OracleParameter();ps[0] 阅读全文
posted @ 2012-09-13 10:44 jameshappy 阅读(5152) 评论(0) 推荐(0)
oracle中游标及变量的使用
摘要:create or replace procedure proc_SmsSendQueue as tmpMobilePhone varchar2(50); tmpSendcontent NVARCHAR2(100); tmpPhoneType CHAR(2); tmpSmsType VARCHAR2(16); tmpPriority Number(1); tmpEnterTime Date; tmpSendFlag Char(1); tmpSendCount Number(1); tmpCreatedby Number(8); tmpCreatedon Date; tmpLastupdate. 阅读全文
posted @ 2012-09-06 14:28 jameshappy 阅读(3019) 评论(0) 推荐(0)
在oracle中where 子句和having子句中的区别
摘要:1.where 不能放在GROUP BY 后面2.HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用相当于WHERE3.WHERE 后面的条件中不能有聚集函数,比如SUM(),AVG()等,而HAVING 可以 Where和Having都是对查询结果的一种筛选,说的书面点就是设定条件的语句。下面分别说明其用法和异同点。注:本文使用字段为oracle数据库中默认用户scott下面的emp表,sal代表员工工资,deptno代表部门编号。一、聚合函数 说明前我们先了解下聚合函数:聚合函数有时候也叫统计函数,它们的作用通常是对一组数据的统计,比如说求最大值,最小 阅读全文
posted @ 2012-05-23 17:01 jameshappy 阅读(62567) 评论(4) 推荐(4)
oracle中查询表中先排序再取出前10条数据
摘要:select * from (select * from tablename order by columnname desc) where rownum <=10 阅读全文
posted @ 2012-05-23 16:52 jameshappy 阅读(29453) 评论(2) 推荐(2)

1 2 下一页