随笔分类 - Oracle 10g、PLSQL
摘要:语法delete from aa truncate table aa 区别 1.delete from后面可以写条件,truncate不可以。2.delete from记录是一条条删的,所删除的每行记录都会进日志,而truncate一次性删掉整个页,因此日至里面只记录页释放,简言之,delete from更新日志,truncate基本不,所用的事务日志空间较少。3.delete from删空表后,会保留一个空的页,truncate在表中不会留有任何页。 4.当使用行锁执行 DELETE 语句时,将锁定表中各行以便删除。truncate始终锁定表和页,而不是锁定各行。 5.如果有identity
阅读全文
摘要:1.定义空(Null)值空值是一个不可用的,没有被分配的, 或者不能得到的值.空值不同于零或者空格.2.在算术表达式中的空值在算术表达式中,与空值运算的结果为空。SQL> ed已写入 file afiedt.buf 1 SELECT last_name,12* salary, 12*salary*(1+commission_pct) 2* FROM employeesSQL> /如果commission_pct列有空值,则即使salary不可能是空,但是12*salary*(1+commission_pct)也是一个空值解决方法:使用nvl(可能有空值的列,如果是空值用什么值代替)
阅读全文
摘要:where语句中索引独立出现,索引才会起作用,不要放在表达式中(如: 转换函数一般放在值那边,不要放在列那边),或发生不合适的隐式转换1.表达式例子表employees的last_name列上有个索引下面的语句使用索引SQL> set autotrace trace expSQL> SELECT last_name, job_id, department_id 2 FROM employees 3 WHERE last_name = 'Whalen';但是下面的语句不使用索引SQL> set autotrace trace expSQL> SELECT
阅读全文
摘要:日期数据应该使用单引号扩起来. 字符数据大小写敏感, 日期数据格式敏感. 默认的日期格式是 DD-MON-RR.有日期需求时,日期可能格式多样,所以要做显示转换,不要隐式转换Oracle的注册表配置,参数配置,会话配置都会带来日期格式的变化SQL> select last_name,hire_date from employees where hire_date='07-6月 -94';更改会话设置后SQL> alter session set nls_date_format='yyyy-mm-dd';SQL> select last_name
阅读全文
摘要:使用LIKE运算符执行基于通配符的模糊查询,查询包含字符串的所有数据. 查询条件可以包含数字或者字符文本: %表示零个或者多个字符. _ 表示一个字符.1.LIKE做模糊查询时,首字母确定使用索引SQL> set autotrace trace expSQL> select last_name,salary 2 from employees 3 where last_name like 'K%';首字母不确定不走索引SQL> select last_name,salary 2 from employees 3 where last_name like '
阅读全文
摘要:CASE表达式单条件(单列)来走分支看下面的加薪语句SQL> SELECT last_name, job_id, salary, 2 CASE job_id WHEN 'IT_PROG' THEN 1.10*salary 3 WHEN 'ST_CLERK' THEN 1.15*salary 4 WHEN 'SA_REP' THEN 1.20*salary 5 ELSE salary END "REVISED_SALARY" 6 FROM employees;1.CASE表达式通过使用类似IF-THEN-ELSE语句的方法
阅读全文
摘要:SQL> select department_id,sum(salary) 2 from employees 3 where sum(salary)>30000;为上面上面的语句会报错?是因为执行顺序的原因先from 数据源,然后select ,确定涉及哪些列,然后where 看数据源哪些记录满足条件然后grup by ,然后having ,然后显示order by
阅读全文
摘要:1.单行子查询只返回一行.使用单行比较操作符SELECT last_nameFROM employeesWHERE salary > (SELECT salary FROM employees WHERE last_name = 'Abel');Salary上增加索引会带来性能提升.2.多行子查询返回多于一行.使用多行比较操作符SQL> ed已写入 file afiedt.buf 1 SELECT employee_id, last_name 2 FROM employees 3 WHERE salary in 4 (SELECT MIN(salary) 5 FRO
阅读全文
摘要:有两个表job_history表有10条数据;employees表有107条数据,这两个表有2条数据是重复的SQL> ed已写入 file afiedt.buf 1 SELECT employee_id id, job_id 2 FROM employees 3 minus 4 SELECT employee_id id, job_id 5* FROM job_historySQL> /表示返回在employees中存在,而不在job_history中的记录,返回105条数据,去掉了2条重复的数据SQL> ed已写入 file afiedt.buf 1 SELECT empl
阅读全文
摘要:1.ROLLUPROLLUP的作用相当于SQL> set autotrace onSQL> select department_id,job_id,count(*) 2 from employees 3 group by department_id,job_id 4 union 5 select department_id,null,count(*) 6 from employees 7 group by department_id 8 union 9 select null,null,count(*)10 from employees;最后面的SA_REP表示此jobid没有部门
阅读全文
摘要:在开发WEB应用时分页功能是必不可少的,下面是直接在数据库端进行分页的SQL语句select * from(select row_number() over(order by a.排序列) as rn , a.* from 表 a )where rn>分页开始行 and rn<分页结束行上面的over是Oracle的开窗函数。 over(order by 排序列) 就是按照指定的列排序并进行累加。 对什么累加呢?就是前面的row_number()系统函数。
阅读全文

浙公网安备 33010602011771号