oracle命令大全.docx
《oracle命令大全.docx》由会员分享,可在线阅读,更多相关《oracle命令大全.docx(31页珍藏版)》请在冰豆网上搜索。
![oracle命令大全.docx](https://file1.bdocx.com/fileroot1/2023-1/29/c0e2d9ba-6de6-4198-bf2f-0ab10352e1f6/c0e2d9ba-6de6-4198-bf2f-0ab10352e1f61.gif)
oracle命令大全
打开服务器
netstartoracleservicebinbo
打开监听器
lsnrctlstart
关闭服务器
netstoporacleservicebinbo
关闭监听器
lsnrctlstop
===============================================================
清屏
clearscreen
**********************************************************************************************
数据字典===========descuser_views(关键词)
**********************************************************************************************
===============================================================
查看当前用户的角色
SQL>select*fromuser_role_privs;
===============================================================
查看当前用户的系统权限和表级权限
SQL>select*fromuser_sys_privs;
SQL>select*fromuser_tab_privs;
===============================================================
查看当前用户的缺省表空间
SQL>selectusername,default_tablespacefromuser_users;
===============================================================
换用户
connassysdba
sys
tsinghua
sqlplus"sys/tsinghuaassysdba"
connsys/zlassysdba
===============================================================
修改表结构
altertabletestmodify(namenotnull);
altertabletestadd(namevarchar2(20));
===============================================================
更改用户密码
sql>alteruser管理员identifiedby密码;
===============================================================
创建表空间的数据文件
sql>createtablespacetestdatafile'd:
\oracle\binbo.dbf'size10m;
===============================================================
创建用户
sql>createuser用户名identifiedby用户名;
===============================================================
bfile类型实例
创建目录
createdirectorytnpdiras'c:
\';
删除目录
dropdirectorytnpdir
授权
crantreadondirectorytnpdirtoscott;
建表
createtablebfiletest(idnumber(3),fnamebfile);
添加数据
insertintobfiletestvalues(1,bfilename('TMPDIR','tmptest.java'));
===============================================================
查看用户
sql>showuser
===============================================================
检查语句是否有错
showerror
===============================================================
锁定用户
sql>alteruser用户名accountlock
===============================================================
解除用户
sql>alteruser用户名accountunlock
===============================================================
删除用户
sql>dropuserzl;
===============================================================
给用户创建表权限
sql>grantcreatetableto用户名;
===============================================================
授管理员权限
sql>grantdbato用户名;
===============================================================
给用户登录权限
sql>grantconnectto用户名
===============================================================
给用户无限表空间权限
sql>grantunlinmitedtablespaceto用户名;
===============================================================
收回权限
sql>revokedbafrom用户名;
===============================================================
查看用户下所有的表
SQL>select*fromuser_tables;
===============================================================
查看名称包含log字符的表
SQL>selectobject_name,object_idfromuser_objects
whereinstr(object_name,'LOG')>0;
===============================================================
查看某表的创建时间
SQL>selectobject_name,createdfromuser_objectswhereobject_name=upper('&table_name');
===============================================================
查看某表的大小
SQL>selectsum(bytes)/(1024*1024)as"size(M)"fromuser_segments
wheresegment_name=upper('&table_name');
===============================================================
查看放在ORACLE的内存区里的表
SQL>selecttable_name,cachefromuser_tableswhereinstr(cache,'Y')>0;
===============================================================
再添加一个表空间的数据文件
sql>altertablespacetestadddatafile'd:
\oracle\test1.dbf'size10m;
===============================================================
建表SQL>createtablestuden(stunoint,stunamevarchar(8)notnull,stubirthdatedefaultto_date('1987-5-9','YYYY-MM-DD'));
向表结构中加入一列SQL>altertablestudenadd(stuphotovarchar(9));
从表结构中删除一列SQL>altertablestudendropcolumnstuphoto;
修改表一列的长度SQL>altertablestudenmodify(stunonumber(4));
隐藏将要删除的一列SQL>altertablestudensetunusedcolumnstuphoto;
删除隐藏的列SQL>altertablestudendropunusedcolumns;
向表中加入约束SQL>altertablestudenaddconstraintpkprimarykey(stuno);
删除约束SQL>altertablestudendropconstraintpk;
===============================================================
创建表
sql>createtable用户名(namevarchar2(20),passwordvarchar(20))tablespace用户名;
===============================================================
添加字段
sql>altertabletestadd(column_xchar(10)notnull);
===============================================================
更改字段
sql>altertableempmodify(column_xchar(20));
===============================================================
删除字段
如待删除域属于某个索引,则不允许删除操作,必须将此域先设置为NULL。
sql>altertableempmodify(column_xnull);
sql>updateempsetcolumn_x=null;
sql>commit;
sql>altertableempdrop(column_x);
===============================================================
选择表空间
sql>alteruser用户名defaulttablespacetest;
===============================================================
管理员删除别的用户中的表
sql>droptable用户名.表名;
===============================================================
退出
sql>exit;
===============================================================
默认进入
sql>sqlplus"/assysdba"
===============================================================
查看数据库
sql>showparameterblock;
===============================================================
写大量语句用记事本,新建方式。
输入"ed"回车
保存后
输入"/"运行;
===============================================================
查询用户有多少表
sql>select*fromtab;
===============================================================
SQLServer取时间
sql>selectgetdate
oracle取时间
sql>sysdate;
===============================================================
操作表结构数据库定义语言命令
(不记录在日志文件中)
createtable建表
sql>createtabletest(namevarchar2(20),agedate,sexchar
(2));
sql>insertintotest(name,age,sex)values('aa',sysdate,'男');
sql>insertintotest(name,age,sex)values('bb',to_date('1888-8-8',"yyyy-aa-ddhh24:
mi:
ss"),'男');
sql>select*fromtest;
===============================================================
查询男和女总数
sql>selectsex,count(sex)fromtestgroupbysex;
---------------------------------------------------------------
test表中数据输入test1表中
SQLSserver---select*intotest1fromtest;
oracle---createtabletest1asselect*fromtest;
---------------------------------------------------------------
更改会话时间
sql>altersessionsetnls_date_format='yyyy-mm-ddhh24:
mi:
ss';
---------------------------------------------------------------
sql>showparameterblock表和视图
sql>showparameterdate查数据结构
---------------------------------------------------------------
SQLServer中
--删除表中相同数据
sql>createtabletest1asselectdistinct*fromtest;
--删除表数据
sql>truncatetabletest;
--把test中数据输入到test1中
sql>insertintotest(select*fromtest1);
---------------------------------------------------------------
rowid(表中存储地址相当表id)和rownum(表序号)称伪列(用法)
sql>selectname,age,sex,rowid,rownumfromtest1;
查出前三行
sql>select*fromtestwhererownum<=3;
查出后三行
sql>select*from(selectnamen,agea,sexs,rownumrfromtest)wherer>(selectcount(*)fromtest)-3;
删除后三行
SQL>deletefromtestwherenamenotin(selectnamefromtestwhererownum<=(selectcount(*)fromtest)-3);
删除相同行
sql>deletefromtestwhererowidnotin(selectmax(rowid)fromtestgroupbyname,age,sex);
删除所有表
sql>select'droptable'||tname||':
'fromtab;
sql>spoolc:
\test.sql;
sql>select'droptable'||tname||':
'fromtab;
sql>spooloff
sql>@c:
\test.sql;
---------------------------------------------------------------
altertable修改表
truncatetable节段表(只删除数据)
droptable删除表
===============================================================
查看表结构
desc表名;
===============================================================
查出成绩的前三名
sql>select*from(select*fromstuorderbyscoredesc)whererownum<=3;
===============================================================
更改字符集
SQL>startupmount
SQL>altersystemenablerestrictedsession;
SQL>altersystemsetjob_queue_processes=0;
SQL>alterdatabaseopen;
SQL>alterdatabasecharactersetZHS16GBK;
SQL>shutdown
SQL>startup
===============================================================
将一张表或几张表中的域重新组合后插入新表。
假定原先的两张表为emp,work,现选择部分数据域合并为emp_work
建立emp_work
SQL>insertintoemp_newselecta.no,sysdate,a.name,b.service_durationfromempa,workbwherea.no=b.no;
SQL>commit;
这样的方式仍然要使用回滚段,为加快数据迁移速度,可将insert替换成insert/*+APPEND*/(大小写不论),指示oracle以直通方式直接写数据文件,绕过回滚空间。
SQL>insert/*+APPEND*/intoemp_newselecta.no,sysdate,a.name,b.service_durationfromempa,workbwherea.no=b.no;
SQL>commit;
===============================================================
===============================================================
DDL数据定义语言
DML数据操纵语言
TCL事务控制语言
DCL数据控制语言GRANTREVOKE
===============================================================
一个表中的某一列输到另一个表中
insertintostu1(name)(selectnamefromstu);
===============================================================
事务
rollback;
insertintostu1(name)(selectnamefromstu);
commit;提交
===============================================================
COMMIT-提交并结束事务处理
ROLLBACK-撤销事务中已完成的工作
SAVEPOINT–标记事务中可以回滚的点
SQL>updateorder_mastersetdel_date='30-8月-05'WHEREorderno<='o002';
SQL>savepointmark1;
SQL>deleteFROMorder_masterWHEREorderno='o002';
SQL>savepointmark2;
SQL>rollbackTOSAVEPOINTmark1;
SQL>COMMIT;
===============================================================
换名
setsqlprompt"scott>";
===============================================================
GRANT授予权限
SQL>GRANTSELECTONvendor_masterTOaccountsWITHGRANTOPTION;
REVOKE撤销已授予的权限
SQL>REVOKESELECT,UPDATEONorder_masterFROMMARTIN;
====================================================