Oracle中的SQL语言
SQL分类:
①DML:select、insert、update、delete主要针对表中的数据
②DDL:create、alter、drop、rename、truncate主要针对表结构
③DCL:grant、revoke主要针对权限
PL/SQL的关键地方:
①Help -> Register
②Session -> Log on
③File -> New -> SQL Window
SQL语法:
1.为表添加注释:comment table emp is ‘雇员表’;
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;
作者:http://cnblogs.com/lyc-code/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权力。