eg:select deptno ,avg(sal) from emp group by deptno;
注:出现在select列表里的字段没有出现在组函数里面时必须出现在group by里面
分组限定关键字having
eg:select deptno ,avg(sal) from emp group by deptno having avg(sal)>2000;
select emp.deptno,eanme,sal from emp join (select max(sal) max_sal,deptno from emp group by deptno ) t on(emp.sal=t.max_sal and emp.deptno=t.deptno);
查询每个部门工资最高的工人的部门号,名字和工资
其中on为连接条的关键字
自连接:同一张表,分别取几个别名,然后把它当成几张表用
eg:select e1.ename,e2.enam from emp e1,emp e2 where e1.mgr=e2.empno
查询员工名字和该员工上司的名字
cross join(交叉连接):交叉相连,生成几张表的笛卡尔积,即返回的记录数为几个表的记录数乘积。
left(outer) join左连接:outer可省略,将左边全部记录拿出来和右边连接,右边没有对应数据时,左边数据依然显示。
right (outer)join 和左连接相识
full join全连接,左右两张表数据全部显示
视图实际上就是一个子查询或一张虚表,实际的数据还在原来的表中。
eg: create view v$_name as select deptno ,ename from emp;
新建的这个视图名字叫v$_name(这是命名规则,用时只需改变name的值),v$_name就相当于后面的select语句形成的表的表名
这里select * from v$_name;的内容= select deptno ,ename from emp;
5、备份数据exp
6、回溯 rollback
create table emp2 as select * from emp
8、Oracle中默认行号字段rownum,大家可以在任何一张表查询这个字段
正常断开:事物自动commit,终止事物
非正常断开:自动回滚rollback,数据无改变
constraint[约束关键字] name[约束名] unique[具体约束](约束作用的属性多个属性逗号隔开)
常见约束:unique-唯一约束
not null -非空约束
primary key 主键约束
references[参考] table(id) -外键约束
constraint emp_dept_f[这是约束名] foreign key(deptno[emp表这边的]) references dept(deptno[dept表那边的主键])
被参考的外键必须为主键
1、增加一个字段:alter table tableName add (字段名 类型);
2、删除一个字段:alter table tableName drop (字段名);
3、修改类型长度:alter table tableName modify(字段名 类型(长度));
4、删除一个约束条件:alter table tableName drop constraint 约束名;
5、添加约束条件:alter table tableName add constraint 约束名 foreign key(deptno) references dept(deptno);
12、数据字典表 user_tables(用户目录下的所有表)、user_views(用户目录下的视图)、user_constraints(用户目录下的约束)
新建索引:create index 索引名 on 表面(字段名);
删除索引:drop index 索引名;
create sequence 序列名 start with 2 increment by 1;
生成一个序列,从2开始,每次加1