--插入数据

insert into emp values(123,'张si','','','');

insert into emp1(empno) values(234);

commit;


--删除数据

delete from emp where empno = 222;

commit;



--更新数据

update emp set empno=2323, ename='zhangsan';

update emp1 set sal='111' where sal='1311';


--查询数据

select * from emp1;--shift+home键,然后按f8执行。

select distinct ename, sal from emp1; --查询唯一(如果是两个值的话,是联合唯一。)

select empno 雇员编号, ename as 雇员名称 from emp; --为查询结果设置别名。

SELECT '编号是:' || empno || '的雇员姓名是:' || ename || ',基本工资是:' || sal 雇员信息 FROM emp ; -- 结果是这样拼接出来的。

select empno , ename, (sal+200)*12 as 年薪 from emp; --查询结果可设置函数。

select count(*) from emp;

select * from emp where empno in('112','211');

select * from emp where empno ='23' or empno ='222';

select * from emp where empno like '%222%';

select * from emp order by sal desc;


--left join .. on , right join ..on . 左右连接。

select t1.empno , t1.ename from emp t1 right join emp1 t2 on t1.empno=t2.empno;


--group by有一个原则,就是select后面的所有列中,没有使用聚合函数的列,必须出现在group by 后面。 先group by 分组,再聚合查询。  

--having 通常与group by 联合使用, 用来过滤由group by 语句返回的记录值。having的存在弥补了where关键字不能与聚合函数联合使用的不足。 

select name , sum(number) from test group by name;

select id, count(course) as numcourse , avg(score) as avgscore from student group by id having avg(score)>80;





--得出一个行数和p#fasp_T_pupcs021表行数一样的临时列,每行的列值是1;

select 1 from p#fasp_T_pupcs021;


--查询一棵树, start with 第一个节点的guid 开始, connect by prior 条件是 guid = superguid 。 查询这棵树。 prior 是自顶向下的方式。  

select * from p#FASP_T_PUBDEPARTMENT start with guid='90218F42D8491150E5D7892146E44FF9' connect by prior guid=superguid; --查询出所有父节点为这个值的数。





--rollback , commit , 

--事物设置成自动提交。 

set autocommit on;

--查看数据库锁定情况。 

select session_id,oracle_username,process from v$locked_object where oracle_username='FASP_14';

--查询v$session 数据字典

select sid,serial#,username,lockwait,status from v$session where sid in(152,394);

--解除死锁

alter system kill session '111';






CREATE TABLE department 

AS 

SELECT d.deptno deptno,d.dname dname,d.loc loc,

COUNT(e.empno) count, SUM(e.sal + NVL(e.comm,0)) sum,

ROUND(AVG(e.sal + NVL(e.comm,0)),2) avg, MAX(e.sal) max, MIN(e.sal) min

FROM dept d,emp e 

WHERE d.deptno=e.deptno(+)

GROUP BY d.deptno,d.dname,d.loc

ORDER BY d.deptno ;