oracle基本操作语句总结

1.命令行操作oracle(cmd)
1).->sqlplus(进入oracle-sql)
2).->username(输入用户名)
3).->password(输入密码)

2.创建表空间
sql>create tablespace businessplatform datafile 'I:\app\lenovo\oradata\orc\businessplatform.dbf' size 200m autoextend on next 10m maxsize unlimited;   
sql>alter database datafile 'D:\oracle\product\10.2.0\oradata\orcl\histdb.dbf' autoextend on;
1) DATAFILE: 表空间数据文件存放路径
2) SIZE: 起初设置为200M
3) UNIFORM: 指定区尺寸为128k,如不指定,区尺寸默认为64k
4) 空间名称histdb 与 数据文件名称 histdb.dbf 不要求相同,可随意命名.
5) AUTOEXTEND ON/OFF 表示启动/停止自动扩展表空间
6) alter tablespace datafile ' D:\oracle\product\10.2.0\oradata\orcl\histdb.dbf ' resize 500m; //手动修改数据文件大小为500M

3.删除表空间
sql>DROP TABLESPACE histdb INCLUDING CONTENTS AND DATAFILES; 

4.创建用户
sql> create user cocis identified by cocis;

5.创建用户,同时为用户指定缺省的永久表空间和临时表空间
sql> create user cocis identified by cocis    default tablespace cocis  temporary tablespace temp;

6.删除用户
sql> drop user cocis;

7.权限授予
1)如果要授予SYSDBA的权限给用户则用如下命令:
SQL> grant SYSDBA to cocis;
2)授予DBA权限
sql> grant dba to cocis;
3)sql> grant connect,resource to cocis;     
注释:当用户创建之后,一般只需要授予CONNECT和RESOURCE这两个角色即可。若要单独进行授权,则需执行单独的授权命令,如
grant create table to cocis;等。
4)sql>grant create session to cocis(授予用户会话权利)
5)sql>grant unlimited namespace to cocis(授权使用表空间)

8.权限回收
sql> revoke unlimited tablespace from cocis;  
sql> revoke create table from cocis;等

9.命令行导出数据库
1).导出
exp database file=d:\temp.dmp;
exp ip@database file=d:\temp.dmp;
按提示:输入用户名密码即可导出
2).导出整个username用户下所有对象
exp username/password@database file=d:\temp.dmp;
exp username/password@ip/database file=d:\temp.dmp;
3).导出空数据表
exp username/password@database file=d:\temp.dmp rows=n;

10.命令行导入数据库
1).导入username用户对象.
imp 用户名/口令@数据库  回车 
imp username/password@database
或者imp username/password@ip/database
2)填写导入文件路径:EXPDAT.DMP>c:\a.dmp 
3)输入插入缓冲区大小:默认不填 回车 
4)只列出导入文件的内容:   回车 
5)忽略创建错误:yes 
6)导入权限:yes 
7)导入表数据:yes 
8)导入整个导出文件:yes 
9)等待…… 
10)成功终止导入,但出现警告

11.查询系统表
1)ELECT * FROM ALL_TABLES;系统里有权限的表
2)SELECT * FROM DBA_TABLES; 系统表
3)SELECT * FROM USER_TABLES; 当前用户下的表

12.删除数据恢复
select dbms_flashback.get_system_change_number from dual;
select * from tablename as of scn 26900126;

CREATE TABLE QUICK_TABLE AS
SELECT * FROM tablename AS of scn 26902314;

13.system等用户密码忘记
cmd
sqlplus /nolog
conn  / as sysdba
alter user system identified by manager
然后
conn system/manager

14.创建存储过程
CREATE OR REPLACE PROCEDURE pro_bobo (
       resultList OUT SYS_REFCURSOR,
       t_NAME IN VARCHAR2
)
IS
BEGIN
 OPEN resultList FOR SELECT *  FROM t_sys_user WHERE NAME LIKE '%'|| t_NAME || '%';
END pro_bobo;

15.查询当前用户默认表空间
select username,default_tablespace from user_users;

16.查看当前用户的角色
SQL>select * from user_role_privs;

17.查看当前用户的系统权限和表级权限
SQL>select * from user_sys_privs;
SQL>select * from user_tab_privs;

18.查看用户下所有的表
SQL>select * from user_tables;

19.显示当前会话所具有的权限
SQL>select * from session_privs;

20.显示指定用户所具有的系统权限
SQL>select * from dba_sys_privs where grantee='GAME';

21.查看某表的大小
SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
where segment_name=upper('&table_name');

22.查看函数和过程的状态
SQL>select object_name,status from user_objects where object_type='FUNCTION';
SQL>select object_name,status from user_objects where object_type='PROCEDURE';

23.分组查询,查询最近的一条记录
A表中:
SELECT DISTINCT FIRST_VALUE(a.ID) OVER(PARTITION BY A.NAME ORDER BY A.TIME DESC)
from A a;

24.wm_concat(column)函数实现字段合并
SELECT wmsys.wm_concat(t.a)  FROM A t

25.decode函数(将查询结果翻译成其他值)
SELECT decode(p.status,11,'A',12,'B','C')  FROM A p 
--当ststus=11时输出A,12时输出B,否则C

26.to_char(日期转字符串)
SELECT to_char(SYSDATE,'yyyy-MM-dd hh24:mi:ss') FROM dual t

27.cast(类型转换)
--char类型转varchar类型,并去除左右的空格
SELECT trim(cast(s.status as varchar(2))) FROM s

28.translate ( 'char' , 'from_string' , 'to_string' )
--TRANSLATE返回将from_string中的每个字符替换为to_string中的相应字符
--以后的string。TRANSLATE是REPLACE所提供的功能的一个超集。
--如果from_string比to_string长,那么在from_string中而不在
--to_string中的额外字符将从char中被删除,因为它们没有相应的替换字符
--to_string不能为空。Oracle将空字符串解释为NULL,
--并且如果TRANSLATE中的任何参数为NULL,那么结果也是NULL
select translate('123abc','2dc','4e') from dual;

29.TRUNC
 1).trunc(DATE,format),截取日期
   当前日期是:2012-08-10 星期五
   format为年时,精确到年
   SELECT trunc(SYSDATE,'yyyy') FROM dual ;
   结果:2012-1-1
   
   format为月时,精确到年-月
   SELECT trunc(SYSDATE,'mm') FROM dual ;
   结果:2012-8-1
   
   format为日时,精确到年-月-日
   SELECT trunc(SYSDATE,'dd') FROM dual ;
   结果:2012-8-10
 
 2).trunc(number[,decimals]) 截取数字
   没有decimals,去除小数点后的数据
   SELECT trunc(1925.0589) FROM dual;
   结果:1925
   
   decimals为正整数,指明需保留小数点后面的位数
   SELECT trunc(124.16666,2) from dual;
   结果:124.16
   
   decimals为负整数,表示为小数点左边指定位数后面的部分截去,即均以0记
   SELECT trunc(124.16666,-2) from dual;
   结果:100
   
 30.Round 函数
	语法为ROUND(number,num_digits)
    其中Number是需要进行四舍五入的数字;Num_digits为指定的位数,按此位数进行四舍五入,
	如果 num_digits 大于 0,则四舍五入到指定的小数位,如果 num_digits 等于 0,
	则四舍五入到最接近的整数,如果 num_digits 小于 0,则在小数点左侧进行四舍五入。

	例如:

	ROUND(21.129,0) 将 21.129 四舍五入到一个整数结果为21。

	ROUND(21.129,2) 将 21.129 四舍五入到两个小数位,结果为21.13。

	ROUND(21.129,1) 将 21.129 四舍五入到一个小数位结果为21.1。

	ROUND(-21.129,2) 将 -21.129 四舍五入到两小数位结果为-21.13。

	ROUND(21.129, -1) 将 21.129 四舍五入到小数点左侧一位结果为20。
	 
	操作演示:
	SELECT ROUND(21.129,0) FROM dual;
	ROUND(21.129,0)
	21

	SELECT ROUND(21.129,2) FROM dual;
	ROUND(21.129,2)
	21.13

	SELECT ROUND(21.129,1) FROM dual;
	ROUND(21.129,1)
	21.1

	SELECT ROUND(-21.129,2) FROM dual;
	ROUND(-21.129,2)
	-21.13

	SELECT ROUND(21.129, -1) FROM dual;
	ROUND(21.129, -1)
	20
	
31.add_months(增加或减去月份 )
select to_char(add_months(to_date('1999-12-01','yyyy-mm-dd'),2),'yyyy-mm-dd') from dual; 
2000-02-01
select to_char(add_months(to_date('1999-12-01','yyyy-mm-dd'),-2),'yyyy-mm-dd') from dual; 
1999-10-01

32.LAST_DAY(返回日期的最后一天) 
select to_char(sysdate,'yyyy-mm-dd'),to_char((sysdate)+1,'yyyy-mm-dd') from dual; 
to_char(sysdate,'yyyy-mm-dd')  to_char((sysdate)+1,'yyyy-mm-dd')
2012-08-10                     2012-08-11
select last_day(sysdate) from dual; 
2012-8-31 17:37:48

SELECT last_day(to_date('2012-08-08','yyyy-mm-dd')) from dual; 
2012-8-31

33.增加字段
alter table A
add column col1 varchar2(100);


34.删除字段
alter table A
drop column col1


35.修改字段类型长度
alter table A
modify col1 varchar2(500);


36.创建索引
create index myindex on chart(year);


37.创建唯一索引
create unique index mm on course(id);


38.删除索引
drop index mm on course;




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值