oracleSQL命令大全
命令 大全 oraclesql
2023-06-13 09:14:10 时间
delete删除一张大表时空间不释放,非常慢是因为占用大量的系统资源,支持回退操作,空间还被这张表占用着。
truncatetable表名(删除表中记录时释放表空间)
DML语句:
表级共享锁:对于操作一张表中的不同记录时,互不影响
行级排它锁:对于一行记录,oracle会只允许只有一个用户对它在同一时间进行修改操作
wait()等到行级锁被释放,才进行数据操作
drop一张表时也会对表加锁,DDL排它锁,所以在删除一张表时如果当前还有用户操作表时不能删除表
altertable命令用于修改表的结构(这些命令不会经常用):
增加约束:
altertable表名addconstraint 约束名primarykey(字段);
解除约束:(删除约束)
altertable表名dropprimarykey(对于主键约束可以直接用此方法,因为一张表中只有一个主键约束名,注意如果主键此时还有其它表引用时删除主键时会出错)
altertbalefatherdropprimarykeycascade;(如果有子表引用主键时,要用此语法来删除主键,这时子表还存在只是子表中的外键约束被及联删除了)
altertable表名dropconstraint约束名;
(怎样取一个约束名:1、人为的违反约束规定根据错误信息获取!
2、查询示图获取约束名!)
altertable表名disablefromprimarykey;(相当于把一个表的主键禁用)
altertable表名enableprimarykey;(enable时会自动去检查表的记录是不是符合要求,如果有脏数据时必须要先删除脏数据才可以enable)
*******************************************************************
增加字段:
altertable 表名 add(字段字字段类型)
删除字段:
altertable 表名drop(字段)
altertbale表名dropcolumn字段;(8i以后才支持)
给列改名:920才支持
altertable表名renamecolumn旧字段名to新字段名;
修改字段
(此时应注意的问题,更改时要看具体值情况之间的转达换, 改为字符类型时,必须要为空)
altertable 表名modify(字段,类型)
更改表中的字段:
update表名set字段=值where条件
更改表名
rename旧表名to 新表名;
删除表:
trucatetable表名:(表结构还在,数据全部删除,释放表所占的空间,不支持回退,常用删除大表)
关于oralce中产生序列(sequence):
createsequence序列名altersystemflushshared_pool;
(不带参数时默认为从1开始每次递增1,oracle中为了提高产生序列的效率一般一次性产生20个序列放入当前会话的序列池中备用以加快效率,序列会出现不连续的动作回退操作不会影响序列取值)
sequence的参数:
incrementbyn起始值,startwithn递增量,maxvaluen最大值,minvaluen最小值,cycle|nocycle轮回,cachen绶存(第一次取时会一次取多少个id存起来)
查看sequence示图:
descuser_sequences;
selectsequence_name,cache_size,last_numberfromuser_sequenceswheresequence_namelike"s_";
select序列名.currvalfromdual查看当前的序列数
select序列名.nextvalfromdual查看下一个序列数,它会自动给当前的序列加1
为列:nextvalcurrval
(开另一个session时取当前值不成功时,应该先取下一个值,再取当前值)
清空当前会话的内存:
altersystemflushshared_pool;(执行此命令要有DBA权限,一般用户执行出错)
修改序列:(此命令不常用,只需了解就行不必深究)
altersequence序列名修改项;
删除序列sequence
dropsequence序列名;
创建示图:creatingviews(属于了解知识)
descuser_views;
selecttextfromuser_viewswhereview_name="TEST1_V1";
示图就相当于一条select语句,定义了一个示图就是定义了一个sql语句,示图不占空间,使用view不会提高性能,但是能简单化sql语句
(扩展知识:oracle8i以后的新示图)MV物化视图(占存储空间,把select结果存在一个空间,会提高查询视图,增强实时性,但是存在刷新问题,主要应用在数据仓库中用要用于聚合表)
使用示图的好处:控制数据访问权限.
如何创建一个示图:
createorreplaceviewstest_viasselect*fromtest1wherec1=1;
此时往表test1(basetable基表)中插入数据时:表中没能变化,示图中的数据发生改变
从示图中插数据时相对应的表会发生改变:
往示图中插数据时,会直接插进基表中,查看示图中的数据时,相当于就是执行创建时的select语句。
简单示图:能进行DML操作。
复杂示图:来源于多张表,不能执行DML操作。
关于rownum:
rownum有个特点要么等于1要么小于某个值,不能直接等于某个值,不能大于某个值。rownum常用于分页显示。
练习:查询出第5条数据和第10条数据之间:
selectfirst_name,rnumfrom(selectrownumrnum,first_namefroms_empwhererownum<=10)wherernumbetween5and10;
分面显示:
SELECT*FROM(SELECTa.*,rownumrFROMS_EMPaWHERErbetween5AND10);
练习:哪些员工的工资比本部门的平均工资高?
selectfirst_name,salary,avgsalfroms_empe,(selectdept_id,avg(salary)avgsalfroms_empgroupbydept_id)awheree.dept_id=a.dept_idande.salary>a.avgsal;
在示图上加一个withcheckoption就相当于给示图加上了约束
createviewtest_vasselect*fromtestwherec=1withcheckoption;
同义词:相当于别名的作用(***只需了解***)系统自建的同义词:user_tables
createsynonymasd_s_empforasd_0607.s_emp;
目的就是为了给asd_0607_s_emp表起另一个代替的名称asd.s_emp;注意这个同义词只能自己使用;
createpublicsynonymp_s_empfroasd_0607.s_emp;创建公共的同义词,但是要权限.
删除同义词:
dropsynonym同义词名称
创建索引:Creatingindexes(概念很重要对系统的性能影响非常大)
建索引的目的就是为了加快查询速度。
索引就相于一本的书的目录。索引点系统空间,属于表的附属物。删除一个表时,相对应的索引也会删除。truncate表时索引结构在,但是数据不存在。
fulltablescan全表扫描
用索引就是为了快速定位数据:(理解时就以字典的目录为例)
查看表的rowid:
selectrowid,first_namefroms_emp;
rowid定义的信息有:objectblocktable
每条记录都有自己的rowid
索引由谁创建:用户,建索引后会使DML操作效率慢,但是对用户查询会提高效率,这就是我们建索引的最终目的,
创建一个索引:
createindex索引名on表名(字段名);
createinsextestindexontest(c1,c2);
哪些字段应该建索引:
经常要用where的子句的地方,所以要用索引.用不用索引,关键要看所查询的数据与所有数据的百分比,表越大,查询的记录越少,索引的效率最高.
替换变量:用&符号来定义替换变量支持交互性提示,对于字符性的数字,一定要写在单引号之间
setverifyon
setverifyoff;
相当于开关变量,用于控制是否显示新旧的sql语句
selectid,last_name,salaryfroms_empwheretitle="&job_title";
更改交互的提示信息:
acceptp_dnameprompt"提示信息";
定义变量:
definep_dname="abc";
分页的实现语句:(可以正常运行)
select*from(selectrownumrnum,a.*from(select*froms_emp)a)wherernumbetween5and10;
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/andymu077/archive/2009/06/24/4293261.aspx
truncatetable表名(删除表中记录时释放表空间)
DML语句:
表级共享锁:对于操作一张表中的不同记录时,互不影响
行级排它锁:对于一行记录,oracle会只允许只有一个用户对它在同一时间进行修改操作
wait()等到行级锁被释放,才进行数据操作
drop一张表时也会对表加锁,DDL排它锁,所以在删除一张表时如果当前还有用户操作表时不能删除表
altertable命令用于修改表的结构(这些命令不会经常用):
增加约束:
altertable表名addconstraint 约束名primarykey(字段);
解除约束:(删除约束)
altertable表名dropprimarykey(对于主键约束可以直接用此方法,因为一张表中只有一个主键约束名,注意如果主键此时还有其它表引用时删除主键时会出错)
altertbalefatherdropprimarykeycascade;(如果有子表引用主键时,要用此语法来删除主键,这时子表还存在只是子表中的外键约束被及联删除了)
altertable表名dropconstraint约束名;
(怎样取一个约束名:1、人为的违反约束规定根据错误信息获取!
2、查询示图获取约束名!)
altertable表名disablefromprimarykey;(相当于把一个表的主键禁用)
altertable表名enableprimarykey;(enable时会自动去检查表的记录是不是符合要求,如果有脏数据时必须要先删除脏数据才可以enable)
*******************************************************************
增加字段:
altertable 表名 add(字段字字段类型)
删除字段:
altertable 表名drop(字段)
altertbale表名dropcolumn字段;(8i以后才支持)
给列改名:920才支持
altertable表名renamecolumn旧字段名to新字段名;
修改字段
(此时应注意的问题,更改时要看具体值情况之间的转达换, 改为字符类型时,必须要为空)
altertable 表名modify(字段,类型)
更改表中的字段:
update表名set字段=值where条件
更改表名
rename旧表名to 新表名;
删除表:
trucatetable表名:(表结构还在,数据全部删除,释放表所占的空间,不支持回退,常用删除大表)
关于oralce中产生序列(sequence):
createsequence序列名altersystemflushshared_pool;
(不带参数时默认为从1开始每次递增1,oracle中为了提高产生序列的效率一般一次性产生20个序列放入当前会话的序列池中备用以加快效率,序列会出现不连续的动作回退操作不会影响序列取值)
sequence的参数:
incrementbyn起始值,startwithn递增量,maxvaluen最大值,minvaluen最小值,cycle|nocycle轮回,cachen绶存(第一次取时会一次取多少个id存起来)
查看sequence示图:
descuser_sequences;
selectsequence_name,cache_size,last_numberfromuser_sequenceswheresequence_namelike"s_";
select序列名.currvalfromdual查看当前的序列数
select序列名.nextvalfromdual查看下一个序列数,它会自动给当前的序列加1
为列:nextvalcurrval
(开另一个session时取当前值不成功时,应该先取下一个值,再取当前值)
清空当前会话的内存:
altersystemflushshared_pool;(执行此命令要有DBA权限,一般用户执行出错)
修改序列:(此命令不常用,只需了解就行不必深究)
altersequence序列名修改项;
删除序列sequence
dropsequence序列名;
创建示图:creatingviews(属于了解知识)
descuser_views;
selecttextfromuser_viewswhereview_name="TEST1_V1";
示图就相当于一条select语句,定义了一个示图就是定义了一个sql语句,示图不占空间,使用view不会提高性能,但是能简单化sql语句
(扩展知识:oracle8i以后的新示图)MV物化视图(占存储空间,把select结果存在一个空间,会提高查询视图,增强实时性,但是存在刷新问题,主要应用在数据仓库中用要用于聚合表)
使用示图的好处:控制数据访问权限.
如何创建一个示图:
createorreplaceviewstest_viasselect*fromtest1wherec1=1;
此时往表test1(basetable基表)中插入数据时:表中没能变化,示图中的数据发生改变
从示图中插数据时相对应的表会发生改变:
往示图中插数据时,会直接插进基表中,查看示图中的数据时,相当于就是执行创建时的select语句。
简单示图:能进行DML操作。
复杂示图:来源于多张表,不能执行DML操作。
关于rownum:
rownum有个特点要么等于1要么小于某个值,不能直接等于某个值,不能大于某个值。rownum常用于分页显示。
练习:查询出第5条数据和第10条数据之间:
selectfirst_name,rnumfrom(selectrownumrnum,first_namefroms_empwhererownum<=10)wherernumbetween5and10;
分面显示:
SELECT*FROM(SELECTa.*,rownumrFROMS_EMPaWHERErbetween5AND10);
练习:哪些员工的工资比本部门的平均工资高?
selectfirst_name,salary,avgsalfroms_empe,(selectdept_id,avg(salary)avgsalfroms_empgroupbydept_id)awheree.dept_id=a.dept_idande.salary>a.avgsal;
在示图上加一个withcheckoption就相当于给示图加上了约束
createviewtest_vasselect*fromtestwherec=1withcheckoption;
同义词:相当于别名的作用(***只需了解***)系统自建的同义词:user_tables
createsynonymasd_s_empforasd_0607.s_emp;
目的就是为了给asd_0607_s_emp表起另一个代替的名称asd.s_emp;注意这个同义词只能自己使用;
createpublicsynonymp_s_empfroasd_0607.s_emp;创建公共的同义词,但是要权限.
删除同义词:
dropsynonym同义词名称
创建索引:Creatingindexes(概念很重要对系统的性能影响非常大)
建索引的目的就是为了加快查询速度。
索引就相于一本的书的目录。索引点系统空间,属于表的附属物。删除一个表时,相对应的索引也会删除。truncate表时索引结构在,但是数据不存在。
fulltablescan全表扫描
用索引就是为了快速定位数据:(理解时就以字典的目录为例)
查看表的rowid:
selectrowid,first_namefroms_emp;
rowid定义的信息有:objectblocktable
每条记录都有自己的rowid
索引由谁创建:用户,建索引后会使DML操作效率慢,但是对用户查询会提高效率,这就是我们建索引的最终目的,
创建一个索引:
createindex索引名on表名(字段名);
createinsextestindexontest(c1,c2);
哪些字段应该建索引:
经常要用where的子句的地方,所以要用索引.用不用索引,关键要看所查询的数据与所有数据的百分比,表越大,查询的记录越少,索引的效率最高.
替换变量:用&符号来定义替换变量支持交互性提示,对于字符性的数字,一定要写在单引号之间
setverifyon
setverifyoff;
相当于开关变量,用于控制是否显示新旧的sql语句
selectid,last_name,salaryfroms_empwheretitle="&job_title";
更改交互的提示信息:
acceptp_dnameprompt"提示信息";
定义变量:
definep_dname="abc";
分页的实现语句:(可以正常运行)
select*from(selectrownumrnum,a.*from(select*froms_emp)a)wherernumbetween5and10;
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/andymu077/archive/2009/06/24/4293261.aspx
相关文章
- linux命令大全(手册)_Linux order命令
- 论如何用cmd命令做出数字雨特效「建议收藏」
- 玩转ADB命令(ADB命令使用大全)
- linux用命令dpkg,Linux中的dpkg命令介绍
- DOS命令大全_黑客cmd命令大全
- windows 命令行杀死进程_杀死进程命令
- 锐捷网络交换机配置命令大全,锐捷业务的工程师可以收藏备用!
- Linux命令指南:掌握最新的技能(linux所有命令大全)
- 性能提升之路:Linux 性能测试命令实战(linux性能测试命令)
- 掌握Linux的神器——At命令(at命令linux)
- Linux 下 Ping 命令:快速检测网络连接状态(linux下ping命令)
- Linux无线命令大全:25个实用无线设置命令!(linux无线命令)
- Linux 命令:反转文本文件的 tac(linux命令tac)
- Linux系统必备命令大全(linux常用命令列表)
- Linux命令大全:学会求和命令,轻松处理数据统计(linux求和命令)
- Linux文件导入命令大全(linux导入文件命令)
- Linux tr 命令实现换行的魔法(linuxtr换行)
- 自学Redis简单命令学习之路(自学redis简单命令)
- 掌握妙招使用命令查看Redis端口号(命令查看redis端口号)
- Redis集群完全指南精选命令大全(redis集群命令大全)