Oracle中的SQL语言

SQL分类:sql

①DML:select、insert、update、delete主要针对表中的数据orm

②DDL:create、alter、drop、rename、truncate主要针对表结构排序

③DCL:grant、revoke主要针对权限索引

PL/SQL的关键地方:字符串

①Help -> Registerio

②Session -> Log  ontable

③File -> New -> SQL Windowform

SQL语法:效率

1.为表添加注释:comment  table  emp  is  ‘雇员表’;date

2.为列添加注释:comment  on  column  emp.Empno  is  '雇员工号';

3.查询语句:select  想要查找的字段  from  表名  where  条件;

4.去重重复数据:select  distinct  想要查找的字段  from  表名;

  注意:去重也能够针对多个字段,多个字段值只要有一个不匹配就算是不统计录值

5.给列添加别名:select  e.empno  想起的别名  from  emp  e;

  注意:若是给列起的别名中包含空格,那么,要用”“将别名包围起来

6.等于:select  *  from  emp  where  deptno  =  20;

7.不等于:select * from emp where deptno != 20;

            select * from emp where deptno <> 20;

8.小于:select sal from emp where sal < 1500;

9.大于:select sal from emp where sal > 1500;

10.小于等于:select sal from emp where sal <= 1500;

11.大于等于:select sal from emp where sal >= 1500;

12.任意一个:大于any集合中的任意一个值都会成立

        select sal from emp where sal > any(1000,1500,3000);

13.某些:some和any是同一个效果,只要大于some集合中的某一个值都会成立

      select sal from emp where sal > some(1000,1500,3000);

14.全部:大于全部的值才会成立

      select sal from emp where sal > any(1000,1500,3000);

15.判断是否为空:在sql语法中,null表示一个特殊的含义,null != null,不能用=,!=进行判断,要用is null和is not null进行判断

                         select * from emp where comm is null;

         select * from emp where comm is not null;

16.范围判断:select * from emp where sal between 1500 and 3000;

       select * from emp where sal >= 1500 and sal<=3000;

17.等值判断:须要进行某些值的等值判断时可使用in和not in

       select * from emp where deptno in(10,20);

       select * from emp where deptno not in(10,20);

18.and和or关键字:select * form emp where deptno = 10 or deptno = 20;

           select * form emp where deptno != 10 and deptno != 20;

     注意:and至关于与操做,or至关于或操做,在and和or出如今同一sql语句中时,and优先级大于or优先级

     因此,在使用or关键字时要使用()提升优先级

19.exists(sub-query),当exists中的子查询语句能查询到对应结果的时候,意味着条件知足

 如今要查询部门编号为10 和20的员工,要求使用exists实现:

 select * from emp e where exists(select * from dept d where (d.deptno = 10 or deptno = 20) and e.deptno = d.deptno);

20.模糊查询:在like语句中,须要使用占位符或者通配符

       _,某个字符或者数字仅出现一次

       %,任意字符出现任意次数

 查询名字以S开头且倒数第二个字符为T的用户

 select * from emp where ename like('S%T_');

注意:在使用模糊查询时,效率较低,能够参考使用索引

   但在使用索引时,like中不能以%开头,这样会使得索引失效

21.转意字符:escape,在模糊查询中%表明任意字符出现任意次数,使用escape后%的含义就是%自己字符

 查询名字中带有%的名字:select * from emp where ename like('%\%%') escape ('\');

22.排序:order by进行排序操做,asc为升序,desc为降序,若排序时未标注升序仍是降序则默认升序

  select * from emp order by sal;

  select * from emp order by sal desc;

23.字符串链接符:select 'my name is '|| ename from emp;

         select concat('my name is ',ename) from emp;

24.nvl(aa,bb):若aa值为null,返回bb值;null作任何运算都仍是null,所以要将空进行转换

 计算全部员工的年薪:select ename,(e.sal+e.comm)*12 from emp e;comm中存在值null的状况,此写法有瑕疵

 select ename,(e.sal+nvl(e.comm,0))*12 from emp e;

  A:select * from emp where deptno = 30;

  B:select * from emp where sal > 1000;

  C:集合A与集合B重复的部分

25.并集:集合A(不包含重复部分)+集合B(不包含重复部分)+一份集合C

  select * from emp where deptno = 30 union select * from emp where sal > 1000;

26.全集:集合A+集合B  或  {集合A(不包含重复部分)+集合B(不包含重复部分)+一份集合C}

  select * from emp where deptno = 30 union all select * from emp where sal > 1000;

27.交集:集合C

  select * from emp where deptno = 30 intersect select * from emp where sal > 1000;

28.差集:包含在A集合而不包含在B集合,与集合的顺序相关

  select * from emp where deptno = 30 minus select * from emp where sal > 1000;