--备份scott
exp
--创建表空间
create tablespace xxx datafile 'e:\xxx.ora' size 5m autoextend on;
--创建用户
create user xxx identified by xxx default tablespace users quota 10M users;
grant create session,create table,create view to xxx;
--导入数据
imp
--删除用户
drop user XXX cascade;
--授权
grant create table ,create view to scott;
--(desc)查看表结构
desc emp;
--复制一张表
create table emp2 as select * from emp;
--特殊表(dual)
select 2*3 from dual;
select sysdate dual;
--列字段取别名
select ename,sal*2 as anuual_sal from emp;--使用as关键字
select ename,sal*2 anuual_sal from emp;--不使用as关键字
select ename,sal*2 "anuual sal" from emp;--使用“”保持原有格式
--连接符
select ename||sal from emp;
select ename||'sdfsdfsdfsdf''sdfsdf' from emp;--使用两个''(单引号)代表 一个'(单引号)
--(distince)过滤重复值
select distince deptno from emp;
--(is null)过滤空行
select ename,sal,comm from emp where comm is null;
--where条件
select * from emp where deptno=10;
--between...and
select ename,sal from emp where sal between 1500 and 5000;
--in关键字
select ename,sal,comm from emp where sal in(800,1500,2000);
--日期处理
select ename,sal hiredate from emp where hiredate > '20-2月-1981';
--like查询
select ename from emp where ename like '%T%';
select ename from emp where ename like '%\%%';--使用转译字符
select ename from emp where ename like '%$%%' escape '$'; --使用指定的字符串作为转译字符
--(order by)排序 ...
select * from dept order by deptno desc;
select ename,sal, deptno from emp order by deptno asc,sal desc;--首先按照deptno排序,然后按照sal降序
--(lower、upper)转换大小写
select lower(ename) from emp;
select upper(ename) from emp;
--(substr)字符串截取
select substr(ename,2,3) from emp;--从第二位开始截取,截取3个字符
--(round)四舍五入
select round(23.653)from dual;
select round(23.653,2)from dual;--四舍五入到小数点第二位
--(to_char)转换成特定格式
select to_char(sal,'$99,9999.9999')from emp;
select to_char(sal,'L99,9999.9999')from emp;--转换成本地货币格式
select to_char(hiredate,'YYYY-DD-MM HH-MI-SS')from emp;--转换时间格式 12进制时间
select to_char(hiredate,'YYYY-DD-MM HH24-MI-SS')from emp;--转换时间格式 24进制时间
--(to_date)将字符串转换成时间格式
select ename,hiredate from emp where hiredate > to_date('1981-2-20 12:34:56','YYYY-MM-DD HH24:MI:SS');
--(to_number)把字符串转换成数字
select sal from emp where sal > to_number('$1,250.00','$9,9999.9999');
--NVL(通过查询获得某个字段的合计值,如果这个值位null将给出一个预设的默认值)
select ename,sal*2+nvl(comm,0)from emp;
--(max、min、avg、count)组函数
select max(sal) from emp;
select min(sal) from emp;
select avg(sal) from emp;
select count(ename) from emp;
--(group by)分组函数
select deptno,avg(sal) from emp group by deptno;
注意:出现在select列表里面的字段没有出现在组函数里面就必须出现在group by函数里面
--(having)筛选
select avg(sal),deptno from emp group by deptno having avg(sal)>2000;
--(rownum)
select empno,ename from emp where empno<5;
*******************************************************
--薪水大于1200的雇员按照部门编号进行分组,分组后的平均薪水大于1500,然后查询分组后的平均工资,最后进行倒序排列
select avg(sal) from emp where sal>1200 group by deptno having avg(sal)>1500 order by avg(sal) desc;
*******************************************************
--子查询
select ename,sal from emp where sal=(select max(sal) from emp);--薪水最高的那个员工
select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr=e2.empno;--自连接
--交叉连接
select ename,dname from emp cross join dept;
--等值连接
select ename,dname from emp join dept on(emp.deptno=dept.deptno);
--左外连接
select e1.ename,e2.ename from emp e1 left join emp e2 on(e1.mgr=e2.empno);
--右外连接
select ename,dname from emp e right join dept d on(e.deptno=d.deptno);
--全外连接
select ename,dname from emp e full join dept d on(e.deptno=d.deptno);
*******************************************************
--求部门中哪些人的薪水最高
select ename,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)
--求部门平均薪水等级
select deptno,avg_sal,grade from
(select deptno,avg(sal) avg_sal from emp group by deptno)t
join salgrade s on (t.avg_sal between s.losal and s.hisal)
--求部门平均的薪水等级
select avg(grade) from
(select deptno,ename,grade from emp join salgrade s on (emp.sal between s.losal and s.hisal))t
group by deptno
--雇员中哪些人是经理人
select ename from emp where empno in(select distinct mgr from emp)
--不使用组函数求出最高薪水
select distinct sal from emp where sal not in
(select distinct e1.sal from emp e1 join emp e2 on(e1.sal<e2.sal))
--平均薪水最高的部门的部门编号
select deptno,avg_sal from
(select avg(sal) avg_sal,deptno from emp group by deptno)
where avg_sal=
(select max(avg_sal) from (select avg(sal) avg_sal ,deptno from emp group by deptno))
--平均薪水最高的部门的部门名称
select dname from dept where deptno=
(select deptno from
(select avg(sal) avg_sal,deptno from emp group by deptno)
where avg_sal=name
(select max(avg_sal) from (select avg(sal) avg_sal ,deptno from emp group by deptno)))
--求薪水最高的前5个人
select ename,sal from (select ename,sal from emp order by sal desc)where rownum<=5;
--求薪水最高的第6个人到第10个人(分页)
select ename,sal from
(select ename,sal, rownum r from (select ename,sal from emp order by sal desc))
where r>=6 and r<=10
***************************************************************
--constraint(约束)
1.not null 非空
2.unique 唯一
3.primary key 主键约束
4.foreign key 外键约束
5.check check约束
constraint 约束名 unique(ename,email);--表级约束
constraint 约束名 foreign key(外键) references 表名(主键);
--alter(修改表结构)
alert table 表名 add(aaaa varchar2(100));--添加表结构
alert table 表名 drop(aaaa);--删除表结构
alert table 表名 modify(aaaa varchar(1111));--修改表结构
alert table 表名 drop constraint 约束名;--删除约束
alert table 表名 add constraint 约束名 foreign key(字段)references class(参考字段)
--dictionary(数据库字典表,查询当前用户下面的所有表信息)
select table_name from dictionary;
--index(索引)
create index 索引名 on 表名(字段名);
drop index 索引名;
--view(视图)一张虚拟表
create view v$_xxx;
--sequence(序列)
create sequence seq;
select seq.nextval from dual;
*******************************************************************************
PL/SQL
--变量声明的规则
1.变量名不能使用保留子,如from、select等
2.第一个字符必须是字母
3.变量名最多包含30个字符
4.不要与数据库的表或者列同名
5.每一行只能声明一个变量
--常用变量类型
1.binary_integer:整数,主要用来计数而不是用来表示字段类型
2.number:数字类型
3.char:定长字符串
4.varchar2:变长字符串
5.date:日期
6.long:长字符串,组长2GB
7.boolean:布尔类型,可以取值为true、false和null值
--简单变量赋值
declare
v_temp number(1);
v_count binary_integer :=0;
v_sal number(7,2) :=4000.00;
v_date date :=sysdate;
v_pi constant number(3,2) := 3.14;
v_valid boolean :=false;
v_name varchar2(20) not null := 'MyName';
begin
dbms_output.put_line('v_temp value:'|| v_sal );
end;
--存储过程
--输入参数
Create Or Replace Procedure Display(eno Int)
As
empname Varchar2(20);
Begin
Select ename Into empname From emp Where empno=eno;
Dbms_Output.put_line('姓名:'||empname);
End;
--执行
Execute display(7839)
--输出参数
Create Or Replace Procedure Display(eno Int,salary Out Number)
As
empname Varchar2(20);
Begin
Select ename Into empname From emp Where empno=eno;
Select sal Into salary From emp Where empno=eno;
Dbms_Output.put_line('姓名:'||empname);
End;
--执行
Declare
s Number;
Begin
display(7839,s);
Dbms_Output.put_line('薪水是'||s);
End;
*******************************************************
//创建表空间
create tablespace tx_db
logging
datafile 'F:\oracle\product\10.2.0\oradata\txdb\tx_db.dbf' size 1024M
autoextend on
next 32m maxsize 2048m
extent management local;
//创建临时表空间
create temporary tablespace tx_dbtemp
tempfile 'F:\oracle\product\10.2.0\oradata\txdb\tx_dbtemp.dbf' size 1024M
autoextend on
next 32m maxsize 2048m
extent management local;
//创建用户并赋予相关权限(有dba权限),并默认相关表空间
create user txdb identified by txdb;
grant create session to tx_db;
grant connect,resource,dba to txdb;
default tablespace tx_db
temporary tablespace tx_dbtemp;
//创建用户并赋予相关权限(有sysdba权限)
create user njtxdb identified by njtxdb;
grant connect,resource,dba,sysdba to njtxdb;
//导出数据
exp txdb/txdb@orcl full=y file=d:\txdb.dmp ignore=y
//导入相关数据库
imp txdb/txdb@orcl full=y file=d:\txdb.dmp ignore=y
// 提交已有操作
commit;
//删用户
DROP USER txdb CASCADE
//删除表空间
drop tablespace txdb_db
//赋予用户相关权限
grant create session to 用户名;
grant create table to 用户名;
grant create view to 用户名;
//查询当前默认表空间中的用户
select username,default_tablespace from dba_users;
//默认用户使用的表空间
alter user txdb default tablespace zcb_db;
// 忘记sys、system密码,重新设置
su - oracle
sqlplus /nolog
conn / as sysdba
startup (如果数据库不是处于启动状态则启动)
alter user sys identified by 123456
然后就可以使用sys用户密码登陆了
// 用户解锁
su - oracle
sqlplus /nolog
conn / as sysdba
alter user system account unlock;
分享到:
相关推荐
oracle 常用命令大全 oracle dba 常用命令 1 运行 SQLPLUS 工具 sqlplus 2 以 OS 的默认身份连接 / as sysdba 3 显示当前用户名 show user 4 直接进入 SQLPLUS 命令提示符 sqlplus /nolog 5 在命令提示符以 OS 身份...
### Oracle 常用命令与操作指南 #### 一、Oracle 安装与卸载注意事项 **1.1 Oracle 的安装** - **安装步骤:** 对于 Oracle 的安装,网络上有很多详细的指导教程。在安装过程中,需要注意的是,管理口令部分确保...
### ORACLE常用命令详解 #### 一、ORACLE的启动和关闭 在ORACLE数据库管理中,正确地启动和关闭数据库是非常重要的操作之一。这些操作不仅涉及到系统的稳定性,还关系到数据的安全性。 ##### 1、在单机环境下 ...
ORACLE常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup ...
natstat,oracle常用命令常用命令natstat,oracle常用命令常用命令natstat,oracle常用命令常用命令natstat,oracle常用命令常用命令natstat,oracle常用命令常用命令
linux,linux和Oracle常用命令linux环境配置ORACLE常用命令
以下是一些关于Oracle常用命令的详细说明,分为日志管理和表空间管理两大部分。 ### 日志管理 #### 1. 强制日志切换 ```sql alter system switch logfile; ``` 这个命令用于在当前重做日志文件填满前强制进行日志...
### Oracle常用命令详解 #### 一、Oracle的启动与关闭 **1. 在单机环境下的启动与关闭** - **启动Oracle系统** - **切换用户:** 首先需要切换到Oracle用户环境。 ```bash su - oracle ``` - **使用`svrmgrl`...
oracle常用命令收集 oracle常用命令
Oracle常用命令大汇总 Oracle是世界上最流行的关系数据库管理系统之一,由Oracle Corporation开发和维护。作为一个功能强大的数据库管理系统,Oracle提供了许多实用的命令来帮助数据库管理员和开发者更好地管理和...
第一章:日志管理 1.forcing log switches sql> alter system switch logfile; 2.forcing checkpoints sql> alter system checkpoint; 3.adding online redo log groups sql> alter database add log...
Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结.pdf
ORACLE常用命令举例 ORACLE常用命令举例 ORACLE常用命令举例 ORACLE常用命令举例 ORACLE常用命令举例
### ORACLE常用命令集 #### 一、日志管理 在Oracle数据库中,日志管理是维护数据库稳定性和完整性的重要组成部分。以下是一些常见的Oracle日志管理命令。 **1. 强制日志切换** - **命令**: `alter system ...
### Oracle常用命令详解 #### 一、Oracle的启动与关闭 在管理Oracle数据库时,启动与关闭数据库是最基本的操作之一。这些操作确保了数据库服务的可用性和安全性。 **1. 单机环境下的启动与关闭** - **切换用户...