SQL随记(一)】的更多相关文章

原文:在论坛中出现的比较难的sql问题:19(row_number函数 行转列.sql语句记流水) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路. 1.SQLServer 把表的挨着的四条数据合并到一起 http://bbs.csdn.net/topics/390735343 数据: a          a           b          …
/Oracle查询优化改写/ --1.coalesce 返回多个值中,第一个不为空的值 select coalesce('', '', 's') from dual; --2.order by -----dbms_random.value 生产随机数,利用随机数对查询结果进行随机排序 select * from emp order by dbms_random.value; --指定查询结果中的一列进行排序 select * from emp order by 4; -----order by…
1.关于dbms_sql包的一些执行语句 cursor_name := DBMS_SQL.OPEN_CURSOR; --打开游标: DBMS_SQL.PARSE(cursor_name, var_ddl_stmt, DBMS_SQL.NATIVE); --解析动态SQL语句: DBMS_SQL.DEFINE_COLUMN(cursor_name, 1, v_comment, 100);--定义列 var_ret_cd := DBMS_SQL.EXECUTE(cursor_name); --执行动…
1.SQL函数: (1)replace(String1,String2,String3):从String1字符串中找到String2,然后用String3替换String2 如:replace('abcdefg','abc','123')返回的结果就是‘123defg’ (2)decode(条件,值1,返回值1,值2,返回值2....,缺省值):类似于java中 if (条件  == 值1) { return 返回值1: } else if(条件 == 值2){ return 返回值2: } e…
1.for loop 循环 格式:for index in lower .. upper loop end loop; for i in 1 .. g_descTbl.count loop if ( g_descTbl(i).col_type = 12 ) then utl_file.put( l_output, l_sep || g_descTbl(i).col_name || ' date ''ddmmyyyyhh24miss'' '); else utl_file.put( l_outpu…
1.关于package: 包的作用:可以将任何出现在块声明的语句(过程,函数,游标,游标,类型,变量)放入包中,相当于一个容器. 包的好处:在包中的(过程,函数,游标,游标,类型,变量)相当于sql/plus的全局变量.总的来说包就相当于java中的类,而在里面定义的就是接口 包头的定义:create or replace package package_name is|as 包体的定义:create or replace package body package_name is|as 包头就是…
1.purge关键字:可以清除oracle 回收站(recyclebin)中的表和索引并释放与其相关的空间,还可清空回收站,或者清除表空间中记录的已删除的部分表空间.但是purge后不能回滚和恢复. drop table t1 purge;--清空oracle回收站,purge后不能回滚和恢复 --SQLPLUS的环境自定义 set serveroutput on size 1000000--将系统输出的默认缓存设置的尽可能的大一些 set trimspool on--当假脱机操作文本的时候,保…
1.关于define表示定义 2.sql%rowcount用于记录修改的条数,必须放在一个CUD语句后面执行,无法在select中使用. 3.两种调用过程的关键字:exec和call 两者区别: (1)exec是sqlplus命令,只能在sqlplus中使用:call为SQL命令,没有限制. (2)存储过程没有参数时,exec可以直接跟过程名(可以省略()),但call则必须带上() 4.复制表数据,用where 1=0等: 5.关于&和&&的区别:看http://blog.csd…
内连接 select e.empno as 员工编号, e.ename as 员工名字, d.dname as 部门名字from emp e inner join dept d on e.deptno=d.deptno where e.deptno=10; 左连接 select e.empno as 员工编号, e.ename as 员工名字, d.dname as 部门名字from emp e left join dept d on e.deptno=d.deptno where e.dept…
新建用户 CREATE USER 'username'@'host' IDENTIFIED BY 'password'; [host 中 使用 % 为通配符, 匹配任意远程主机] 赋权 GRANT privileges ON databasename.tablename TO 'username'@'host' ; privileges [select / insert / update / delete / drop * ] 查看用户 select * from mysql.user 插入 i…