文档库 最新最全的文档下载
当前位置:文档库 › oracle用户解锁及特殊操作

oracle用户解锁及特殊操作

1).oracle用户解锁:清屏的指令host cls
host help显示在oracle运行中的帮助信息

(select * from &X 这种种“&”表示参数展望“x”为参数名称在DoS中会自动提示输入值)

2).alter user 用户名 account unlock;
spool xuehuan.sql;//用于储存在底层的操作界面相当于log文件
3)conn scott/oracl@orcl//orcl是指定的数据实例
4)a:sql的行编译(sql语句换了行按了回车的)查询出了结果在输入L命令可以显示之前的整个的sql语句当sql语句很多的时候,我们可能只需要其中的一部分如果我们只需要2到5行的sql“l 2 5”就可以了;b:*表示当前行输入行号可以修改当前行,需修改当前行的时候“c/当前段/改后的字段”如果只有前面的字段“c/当前字段”那么该字段会被删除。修改后再用“L”命令来看一下当前的sql;
c:在下面加条件;用“I 插入的命令”命令“i and money>1000” 但是要注意插入的当前行。
d:删除命令“del”默认删除当前行“del 行号”也可以;
e:输入"/"执行之前修改的缓存中的sql
f:"save 名称"不要加后缀".sql"会自动加这个命令只存当前缓存中的sql;"save 原文件名append"
追加存;
g:"get 文件名"查看文件中的信息
h:"save xx replace" 替换当前文件中存在的缓存Sql语句
order by desc 降序排列 Asc升序默认为升序;
select * from emp order by sal desc;

select * from emp order by sal;

select * from emp order by sal;

select * from emp where sal <>5000 order by sal desc;

select * from emp where sal !=5000 order by sal desc;

select ename,sal from emp where job in('CLERK','MANAGER');

select ename,sal,job from emp where deptno between 10 and 20;

select ename,sal,job from emp where sal between 2000 and 3000;
模糊查询中“%”代表任意字符串“_”代表一个字符
select ename,sal,job from emp where ename like 'J%';
通过多个字段排序 如果通过前面的排序后还有相同的排序就通过后面的条件再进行排列
select ename,job,sal from emp where sal<2000 order by job asc,ename desc;

select ename,job,sal from emp where sal<2000 order by job asc,empno desc;

笛卡尔积检索俩表的结果数是数据条数相乘数
select ename,sal,emp.deptno,loc
from emp,dept
where job='CLERK' and emp.deptno = dept.deptno;

select ename,sal,dept.deptno,dname
from emp,dept
where emp.deptno !=dept.deptno and sal<1000;

select worker.ename,manager.ename
from emp worker,emp manager
where worker.mgr=manager.empno
and worker.sal<2000;


训练的重点:

定子查询要注意以下几点:
(1) 子查询可以有多层,子查询所存取的表可以是主查询所没有存取的表;
(2) 当子查询返回的值不是一个值而是一个集合时,就不能简单地使用比较运算符了。
必须根据语义在子查询前加上:any 或者 all关键字;或者使用集合关系操作符 in 或者 not;
(3) 子查询中不能有order by 子句,因为order by 子句只是改变查询结果数据显示顺序,并不改变存储的顺序;
(4)查询选出的行不显示,而以下列方式之一返送回主SQL命令;
1、如果子查询用在逻辑表达式或set表达的右边,则必须仅返回一个值或者一组值。
此值以运算符指定的方式同左边的表达式的值相比较。
2、如果子查询用在create table; insert 或者 update 中说明值,
则对于要插入或更新的每一列返回一值,此值用于插入或更新指定列。
② 查询所有高于莫个人的工资的人名,工作和工资:
select ename ,job,sal from emp where sal > (select sal from emp where ename='JONES');

② 查询所有雇员的工资都不低于1000元的部门的所有人员的信息:
select *
from emp
where deptno not in(select deptno from emp where sal<1000);

③ 查询要求同上:用all关键字来实现。


④ 查找那些雇员的部门号在部门表中没有的雇员的信息。


⑤ 查找工资在2000到3000之间的雇员所在部门的所有人员的信息
子查询查询的结果只有一行,这是常用到的;

⑥ 查询平均工资超过2000元的部门,并按部门号进行排序。
select deptno,avg(sal)
from emp
group by deptno
having avg(sal) >2000
order by deptno;

如果子查询返回多行内容,则必须使用如下多值比较运算符与主查询相关联。 【】表示可选项
【not】in :是否在所选数据集合之中;
【not】any :是否将一个值与子查询返回结果中的一个值进行比较;
【not】all :是否将所选的值与集合中所有值进行比较;
【not】exists: exists 表示一个子查询至少返回一行时条件成立,
not exists 表示一个子查询不返回任何行时条件成立;

查询每个工作的人数按照部门号升序排列
select job,deptno,count(*)
from emp
group by deptno,job
order by deptno;

需要同学注意的是:在包含group by 子句的查询语句中,
select 子句后的所有字段列表(除聚合函数外),均应包含在group by子句中。
对数据分组时,也可以用条件进行筛选,这就是having 子句。
having子句的作用与where子句相似,都是给出查询条件。
所不同的是,where 子句是检查每条记录是否满

足条件,
而having子句是检查分组之后的各组是否满足条件 。
having子句是针对group by子句的,没有group by子句时就不能使用having子句。

插入相同的可以选择不同的直接输入值就好
insert into emp(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) select 8000,'薛欢',JOB ,MGR,HIREDATE,SAL,COMM,DEPTNO FROM EMP WHERE ENAME='SCOTT';
在删除更新时,一定要备份 ,一旦数据被改会非常的危险,更新前先看数据目标数, 更新后要再次查询。前后要记住Check一下

drop 与Truncate 无论用哪个都要先备份drop删除的数删除没有提交时会在回滚段中如果数据过大回滚段存放不下就没有办法删除了,
还可以提交而且还在日志文件中有记录,而Truncate速度快但是删除后不能够恢复

创建表
create table emp.entity as select * from emp where 1=2;//假条件表中的数据不会被复制,只是表
create table emp.entity as select * from emp where 1=1;//真条件表中的数据被复制

相关文档
相关文档 最新文档