表查询
关键字、字段、表名不加引号时不区分大小写
引号定义的内容区分大小写
运算中有null值时,结果为null
*nvl(字段,赋值):如果字段值为null,则取后面一个值
*like 关键字:%表示若干个字符,_代表一个字符
in 关键字:in(条件集合)
order by:排序
别名 : 中文加“”
分组: group by
max():对字段取最大值
min(): 对字段取最小值
having :对分组的结果进行限制操作
where :对源数据进行限制操作
sum():对字段求和
avg():对字段求平均值
count():统计数据数量
分组函数只能出现在选择列、having、order by字句
字句顺序:group by,having ,order by
规定:多表查询时,条件至少不能少于表的个数-1(排除笛卡尔集)
between and:字段 between a1 and a2 (字段在a1-a2之间)
自连接:同一张表的连接查询
子查询:嵌套查询(在sql中嵌入的select语句),分为单行/多行子查询
all用法:select ename,sal,deptno from emp where sal>all (select sal from emp where deptno=30);
any用法:select ename,sal,deptno from emp where sal>any (select sal from emp where deptno=30);
多行子查询:select * from emp where (deptno,job) = (select deptno,job from emp where ename = 'SMITH');
经典逻辑示例(显示工资高于自己部门平均工资的员工信息)
select emp.ename,emp.sal a1.mysal emp.deptno from emp ,(select deptno,avg(sal) mysal from emp group by deptno) a1 where emp.deptno=a1.deptno and emp.sal>a1.mysal;
分页
select * from (select a1.* ,rownum rn from (select * from emp) a1 where rownum<=10) where rn>=5;
所有改动只需该最里层的数据
用子查询创建表
create table 表名 (字段1,字段2,字段3) as select empno,ename,sal from emp;
合并查询:多个查询结果合并为一个
查询语句 union 查询语句(取并集自动distinct)
查询语句 union all 查询语句(取并集不自动distinct)
查询语句 intersect 查询语句(取交集)
查询语句 minus 查询语句(取差集(在第一个集合存在且不存在于第二个集合中))
创建数据库
1、用工具 Database configuration assistant(dbca)
2、用函数