PLSQL指令总结 v1.0

一、基本查询

(表:emp  列:ename ,depton,sal  、表示换行)

1.查当前用户  SQL> show user

2.查表结构  SQL> desc emp  (emp:表名)  –查询出名称、类型、是否为空

3.清屏  SQL> host cls

4.设置行宽  SQL> show linesize 、 set linesize 120     设置列宽  SQL> col ename for a8 、 col sal for 9999

5.包含 null 的表达式都为 null 。

   解决办法:nvl(a,b)  –如果 a为null 则返回 b;不为空返回 a

   –nvl(a,b,c)  如果 a为null 则返回 b;否则返回 c

6.distinct:去掉重复记录  SQL> select distinct depton from emp

7.||:连接符 、concat:连接函数

   SQL> select concat(‘hello’,’  world’) from emp       –注:select函数后面必须要有from关键字

8.伪表:dual

   SQL> select ‘hello’ || ‘  world’ 字符串 from dual 、 SQL> select ename||’的薪水是’||sal 信息 from emp

 

二、过滤,排序

1.注意:字符串的大小写严格区分、日期格式敏感 如  DD-MON-RR:’17-11月-81′

2.修改日期格式  SQL > alter session set NLS_DATE_FORMAT=’yyyy-mm-dd’  –修改格式为2017-11-81

3.设置区间:between and  –小值在前大值在后

4.在设置集合中:in    SQL> select * from emp where deptno in (10,20)     

   –对应的,不在就是 not in    另外,如果及合作含有 null 则不能使用 not in 仅可使用 in

   SQL> select * from emp where deptno in (10,20,null)

5.模糊查询

   查询名字以 S 开头的员工    SQL> select * from emp where ename like ‘S%’    –‘%’表示n个字符

   查询名字是四个字的员工    SQL> select * from emp where ename like ‘—-‘    –‘_’表示单个字符

   查询名字中含有下划线的    SQL> select * from emp where wname like ‘%\_%’    –‘\’表示转义字符

6.排序:order by    desc:降序  asc:升序    –by后参数可以直接写数字,对应select列表中的列

   多列排序  SQL> select * from emp order by deptno desc , sal desc    –desc只作用于它前面的列

   为保证空值在后面可以添加 nulls last    –默认null是最大的值

 

三、函数

1.字符函数    

   1)SQL> select lower(‘Hello World’) 转小写,upper(‘Hello World’) 转大写,initcap(‘hello world’) 首字母大写

  2)substr  –取子字符串    SQL> select substr (‘hello world’,4) 子串 from dual

   3)length/lengthb 字符/字节 数  SQL> select length(‘hello world’) 字符,lengthb(‘hello world’) 字节 from dual

   4)instr(a,b)  –在a中查找b    SQL> select instr(‘hello world’,’ll’) 位置 from dual

   5)lpad/rpad  –左/右 填充    SQL> select lpad(‘abcd’,10,’*’)  –在abcd左填充6个*使串达到10位

   6)trim  –去掉前后指定的字符    SQL> select trim(‘H’ from ‘Hello WorldH’) from dual  –取两个H中间部分

   7)replace  –不显示某字符    SQL> select replace(‘hello world’,’l’,’*’) from dual    –用*代替 l

2.四舍五入 round 

   SQL> select round(45.926,1) 1,round(45.926,0) 2,round(45.926,-1) 3,round(45.926,-2)

   1–45.9  、2–46  、 3–50 、 4–0

3.当前时间  sysdate    10个月后:add_months(sysdate,10)

4.根据job不同进行不同操作

1) select ename,job,sal,

    case job when ‘yuangong’ then sal+800

                 when ‘jingli’ then sal+1000

                 else sal+500

    from emp

2) select ename,job,sal,

         decode(job,’yuangong’,sal+800,

                            ‘jingli’,sal+1000,

                            sal+500)

    from emp

5.求和:sum(列名)   求记录数:count(*/列名)  求平均:avg(列名)

6.having:可以使用多行函数而where不行

   select deptno,avg(sal) from emp group by deptno having deptno=10

 

四、多表联查

1.外连    SQL> select d.deptno,d.dname,count(e.empno) from emp e,dept d where ~

  左外连会把最后不成立的左表项包含在结果中,右外连则包含右表

2.子查询

  1)可以在主查询的 where select having from 后使用子查询

  2.除top-n问题外一般不在子查询中排序

 

五、对表的操作

1.取另表数据创表    SQL> create table emp00 as select * from emp where deptno=20

  SQL> create table empinfo as 

                select e.empno,e.ename,e.sal,d.dname from emp e,dept where e.deptno=d.deptno

2.修改列    SQL> alter table emp modify ename varchar2(40)

   删除列    SQL> alter table emp drop column photo

   重命名列    SQL> alter table emp rename column tname to username

   重命名表    SQL> rename text1 to text2

 

六、其它

1.分页

    SQL> select *

        from (select rownum r,e1.* from (select * from emp order by sal ) e1

            where rownum <= 8 )

         ) where r >= 5

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐