博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Oracle

摘要:SQL Select语句完整的执行顺序:1、from子句组装来自不同数据源的数据;2、where子句基于指定的条件对记录行进行筛选;3、group by子句将数据划分为多个分组;4、使用聚集函数进行计算;5、使用having子句筛选分组;6、计算所有的表达式;7、使用order by对结果集进行排序。见鬼的是里面没有提到“select”这个关键字。我之前跟同学讨论,认为它应该是在最后执行,,因为觉得应该是等条件都执行完毕了再取数据——但是也没有找到什么确切的证据。今天跟另外一位女同学讨论了这个东西,果然女同志比较细心,她对“select”提了别的意见。于是我也开始动摇了,,因为orderby是 阅读全文

posted @ 2011-05-10 11:00 itcfj 阅读(249) 评论(0) 推荐(0)

摘要:这3种字符串数据类型是我们使用最多的,我们在数据库设计时到底该怎么使用了?首先我们先来分析3个数据类型的说明:1。charCHAR的长度是固定的,最长2000个字符。2。varchar和varchar2可以肯定的是oracle中目前是可以使用varchar数据类型的,但他们的区别我查了不少资料也没有找到一个准确的答案最常见的说话是说oracle中的varchar只是varchar2的别名也就是同义词。其次也有人认为varchar是最大长度为2000的可变字符串(和sqlserver中的varchar一致),而varchar2最大长度为4000。知道了他们的特点我们就来讨论下使用区别1.char 阅读全文

posted @ 2011-04-20 10:48 itcfj 阅读(249) 评论(0) 推荐(0)

摘要:C# codeSQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别, 所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。 随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。 SQL注入是从正常的W 阅读全文

posted @ 2011-03-13 11:37 itcfj 阅读(322) 评论(0) 推荐(0)

摘要:普通行列转换(爱新觉罗.毓华 2007-11-18于海南三亚)假设有张学生成绩表(tb)如下:Name Subject Result张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94*/-------------------------------------------------------------------------/*想变成 姓名 语文 数学 物理 ---------- ----------- ----------- ----------- 李四 74 84 94张三 74 83 93*/create table tb( Name 阅读全文

posted @ 2011-02-28 19:15 itcfj 阅读(585) 评论(0) 推荐(1)

摘要:需要用到事务处理多条语句的情况,但我们还要防止语句中注入式攻击,所以写了这个方法,进行带参数的事务的处理。下面代码说明:  首先将一条语句的参数放在结构sttSqlParameterList中,这样便于知道参数名及其对应值。  在将语句及参数列表放在结构sttSqlList中,这样便于知道SQL语句及其对应的参数列表。  最后调用ExecParameterTransaction()执行事务。其传入的是sttSqlList列表。[代码]用法代码:[代码] 阅读全文

posted @ 2011-02-13 14:17 itcfj 阅读(276) 评论(0) 推荐(0)

摘要:Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 SQL利用CaseWhenThen多条件判断CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 WHEN 条件3 THEN 结果3 WHEN 条件4 THEN 结果4......... WHEN 条件N THEN 结果N ELSE 结果XENDCase具有两种格式。简单Case函数和Case搜索函数。--简单Case函数CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女'ELSE '其他' E 阅读全文

posted @ 2011-01-20 16:49 itcfj 阅读(3043) 评论(0) 推荐(0)

摘要:sysdate为系统日期 dual为虚表  日期函数[重点掌握前四个日期函数]  1.add_months[返回日期加(减)指定月份后(前)的日期]  select sysdate S1,add_months(sysdate,10) S2,  add_months(sysdate,5) S3 from dual;  2.last_day [返回该月最后一天的日期]  select last_day(sysdate) from dual;  3.months_between[返回日期之间的月份数]  select sysdate S1, months_between('1-4月-04',sysd 阅读全文

posted @ 2011-01-17 11:33 itcfj 阅读(185) 评论(0) 推荐(0)

摘要:Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 在配置Oracle过程中,监听服务无法启动的原因有很多,原因的分析主要通过Oracle配置过程中给出的错误信息进行判断。我在配置过程中,安装过程都很顺利,基本没有出现错误。但在最后进入Oracle Enterprise Manager 10g Database Control后,发现控制台提示 无法监听。在服务管理器中启动OracleOraDb10g_home1TNSListener服务,提示“因目标主机或对象不存在 阅读全文

posted @ 2011-01-09 11:54 itcfj 阅读(2722) 评论(0) 推荐(0)

摘要:Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE 近日在配置Oracle 10G的流复制环境时,遇到一个问题,关闭数据库(shutdown immediate)后,通过SQL Plus连接数据库:conn sys/his@orc0 as sysdba,出现如下错误: ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 通过重启服务的方式启动数据库,再次连接却能成功登录,也就是说在关闭数据库状态下无法连接服务器。 开始以为是系统环境变量Oracle_SID的配置问题,因为机器有多个实例,一阵折 阅读全文

posted @ 2011-01-09 11:53 itcfj 阅读(955) 评论(0) 推荐(0)

摘要:假设如下应用:两张表——用户表TDefUser(userid,address,phone)和消费表 TAccConsume(userid,time,amount),需要查消费超过5000的用户记录。用exists:select * from TDefUserwhere exists (select 1 from TAccConsume where TDefUser.userid=TAccConsume.userid and TAccConsume.amount5000)用in:select * from TDefUserwhere userid in (select userid from 阅读全文

posted @ 2010-12-28 20:53 itcfj 阅读(308) 评论(0) 推荐(0)

摘要:Oracle PL/SQL 应用指南 Oracle PL/SQL 应用指南 作为 Oracle 所特有的一种语言,PL/SQL 是对结构化查询语言(SQL)的一种扩展与补 充。它结合了数据库语言与程式化编程语言,并基于一个基本单位,称为块(block)。 通过编译与存储可执行的块,Oracle 可以轻松快捷地处理 PL/SQL。在本次的技术手册中, 我们为您提供了 PL/SQL 的基础知识以及专家指导,包括了 PL/SQL 中的数据类型简介、 PL/SQL 函数与触发器以及 PL/SQL 中的存储过程等,相信您无论是高手还是菜鸟都可以获 得有帮助的信息。 Oracle PL/SQL 基础 阅读全文

posted @ 2010-12-28 20:32 itcfj 阅读(620) 评论(0) 推荐(0)

摘要:字符串函数用于处理列中的数据值,通常属于字符型的数据类型。 1、ASCLL(character),将具体字符转换为相应的整数(ASCII)代码,结果为正数。 例:select ASCII('A'),结果为65 2、CHAR(int),将ASCII代码转换为相应的字符,结果为CHAR(1). 例:select CHAR(65),结果为A 3、CHARINDEX(str1,str2),返回部分字符串str1在字符串str2中首次出现的起始位置。如果str1没有在str2中出现,那么返回值为0。 例:select CHARINDEX('world','hello world!'); 结果为7 sel 阅读全文

posted @ 2010-12-28 19:40 itcfj 阅读(813) 评论(1) 推荐(1)

摘要:select语句的执行步骤:(1)执行From子句,根据From子句中的一个或多个表创建工作表。如果在From子句中有两个或多个表,DBMS将对表进行交叉连接,作为工作表。(2)如果有Where子句,DBMS将WHERE子句列出的搜索条件作用于步骤(1)生成的工作表。DBMS保留那些满足搜索条件的行,删除那些不满足搜索条件的行。(3)如果有GROUP BY子句,DBMS将步骤(2)生成的结果表中的行分成多个组,每个组所有行的group_by_expression字段具有相同的值,DBMS将每组减少到单行,而后将其添加到新的结果表中。(4)如果有HAVIG子句,DBMS将HAVING子句列出的搜 阅读全文

posted @ 2010-12-22 11:05 itcfj 阅读(155) 评论(0) 推荐(1)

摘要:排名函数是SQL Server2005新加的功能。在SQLServer2005中有如下四个排名函数:   1.row_number  2.rank  3.dense_rank  4.ntile     下面分别介绍一下这四个排名函数的功能及用法。在介绍之前假设有一个t_table表,表结构与表中的数据如图1所示:  图1   其中field1字段的类型是int,field2字段的类型是varchar  一、row_number   row_number函数的用途是非常广泛,这个函数的功能是为查询出来的每一行记录生成一个序号。row_number函数的用法如下面的SQL语句所 示:selectr 阅读全文

posted @ 2010-12-19 16:30 itcfj 阅读(188) 评论(0) 推荐(0)

摘要:查询速度慢的原因很多,常见如下几种:  1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)  2、I/O吞吐量小,形成了瓶颈效应。  3、没有创建计算列导致查询不优化。  4、内存不 足  5、网络速度慢  6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)  7、 锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)  8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资 源。  9、返回了不必要的行和列  10、查询语句不好,没有优化  可以通过如下方法来优化查 询:  1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可 阅读全文

posted @ 2010-12-19 16:27 itcfj 阅读(367) 评论(0) 推荐(0)

摘要:SQLSelect语句完整的执行顺序ORACLE 在WHERE子句中引用列别名的问题(转)Sql代码 SQLselectsal,commfromemp2wheresal2000;SALCOMM--------------------800160030012505001250140015000110095013008rowsselected.SQLselectsalassalary,commascommissionfromemp2wheresalary2000;wheresalary2000*ERRORatline2:ORA-00904:"SALARY":invalididentifi 阅读全文

posted @ 2010-12-19 16:24 itcfj 阅读(1012) 评论(0) 推荐(0)

摘要:我们要做到不但会写 SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享! (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表driving table)将 被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上... 阅读全文

posted @ 2010-11-19 09:47 itcfj 阅读(464) 评论(0) 推荐(0)