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;