1、Oracle笔记查看当前用户所有表:Select * from tab;连接符: |空值: is null除去重复行: distinct 查询结果排序: order by 排序字段asc(desc) 比较运算符: (!= or ) between and in 操作 not in模糊查询 Like使用:“ %” :代表匹配任意长度的任意字符。“_” :代表匹配一个长度的任意字符。特殊字符使用 ESCAPE 标示:select * from posgoods where pgcname like %*_% escape *;查询posgoods表中 pgcname 字段中 有 _ 字符的结果。e
2、scape * 表示 * 字符后面的是字符代表其实际意思,不做转义字符。Oracle 10g支持正则表达式的四个新函数分别是:REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和REGEXP_REPLACE。 它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。 特殊字符: 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。 $ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 n 或r。 . 匹配除换行符 n之外的任何单字符。 ? 匹配前面的子表达式零次或一次。 *
3、匹配前面的子表达式零次或多次。 + 匹配前面的子表达式一次或多次。 ( ) 标记一个子表达式的开始和结束位置。 标记一个中括号表达式。 m,n 一个精确地出现次数范围,m=出现次数 200;select s.mkt, s.paravalue, i.count, i.sum from syspara s, (select b.mkt mkt, count(b.mkt) count, sum(b.lsj) SUM from Business_goods b where b.mkt 101 group by b.mkt having sum(b.lsj) 10000 order by SUM asc
4、) i where s.code = 13 and s.mkt = i.mkt;select s.mkt, s.paravalue, i.sum, i.min, g.name from syspara s, (select mkt, sum(lsj) sum, min(lsj) min from business_goods group by mkt) i, business_goods g where s.code = 13 and s.mkt = i.mkt and i.min = g.lsj;1.如果SQL语句使用了分组函数,则有两种可以使用的情况: *SQL语句中存在了 GROUP B
5、Y分组条件,则可以将分组条件一起查询出来。Select mkt,count(mkt) from Business_goods group by mkt;*如果不使用GROUP BY分组条件,则只能单独的使用分组函数。Select sum(lsj),avg(lsj) from Business_goods;2.在使用分组函数的时候,不能出现分组函数和分组条件之外的字段。3.在SELECT 列表中的字段,如果不包含在分组函数中,那么该字段必须同时出现在GROUP BY子句中。包含在GROUP 子句中的字段则不必出现在SELECT列表中多表查询1.笛卡尔集:Select * from empty,d
6、ept;2.等值连接:Select empno,ename,sal,emp.deptno,dname from emp,dept where emp.deptno = dept.deptno;3.集合操作*UNION:并集,所有的内容都查询,重复的显示一次。Select * from emp UNION select * from emp20*UNION ALL:并集,所有的内容都显示,包括重复的*INTETSECT:交集,只显示重复的*MINUS: 差集,只显示对方没有的(跟顺序是有关系的)序列,同义词create sequence TESTminvalue 1maxvalue 999999
7、9start with 1increment by 1cache 20;- Create sequence create sequence TESTminvalue 1 -最小值maxvalue 9999999 - 最大值start with 1 -开始值increment by 1 -增长值cache 20; -缓存大小Select test.nextval from dual;Select test.currval from dual;必须先有 nextval,才能有 currval同以词Create synonym dept for socct.dept;-(创建私有,创建者才能使用)D
8、rop synonym dept;Create public synonym dept for socct.dept;(公有)Drop public synonym dept;PL/SQL 块PL/SQL 块,类似编程代码块DECLARE声明部分BEGIN逻辑处理EXCEPTIONEND;PL/SQL可接受用户的输入。输入信息使用 “&” 表示。emp.empno%TYPE: 表示以emp表中的empno字段的类型定义变量。表示定义一个变量,变量类型和 emp表中的empno字段的类型定义的变量一致。Deptr dept%rowtype:表示定义一个接收dept的行数据的变量。常见预定义异常
9、ORACLE定义了他们的错误编号和异常名字,常见的预定义异常处理Oracle常见的错误 NO_DATA_FOUND SELECT . INTO . 时,没有找到数据 DUL_VAL_ON_INDEX 试图在一个有惟一性约束的列上存储重复值 CURSOR_ALREADY_OPEN 试图打开一个已经打开的游标 TOO_MANY_ROWS SELECT . INTO . 时,查询的结果是多值 ZERO_DIVIDE 零被整除 OTHERS 其他未知错误在PL/SQL中使用SQLCODE,SQLERRM异常处理函数获得异常信息 when NO_DATA_FOUND then dbms_output.p
10、ut_line(NO_DATA_FOUND code: | SQLCODE | error: | SQLERRM);错误号异常错误信息名称说明ORA-0001Dup_val_on_index违反了唯一性限制ORA-0051Timeout-on-resource在等待资源时发生超时ORA-0061Transaction-backed-out由于发生死锁事务被撤消ORA-1001Invalid-CURSOR试图使用一个无效的游标ORA-1012Not-logged-on没有连接到ORACLEORA-1017Login-denied无效的用户名/口令ORA-1403No_data_foundSELECTINTO没有找到数据ORA-1422Too_many_rowsSELECTINTO返回多行ORA-1476Zero-divide试图被零除ORA-1722Invalid-NUMBER转换一个数字失败ORA-6500Storage-error内存不够引发的内部错误ORA-6501Program-error内部错误ORA-6502Val
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1