ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:21.67KB ,
资源ID:7674061      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7674061.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(45个很有用的SQL语句.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

45个很有用的SQL语句.docx

1、45个很有用的SQL语句45 个非常有用的 Oracle 查询语句这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询。这些是所有 Oracle 开发者都必备的技能,所以快快收藏吧!日期/时间 相关查询1. 获取当前月份的第一天运行这个命令能快速返回当前月份的第一天。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。?12SELECTTRUNC(SYSDATE,MONTH)FirstdayofcurrentmonthFROMDUAL;2. 获取当前月份的最后一天这个查询语句类似于上面那个语句,

2、而且充分照顾到了闰年,所以当二月份有 29 号,那么就会返回 29/2 。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。?12SELECTTRUNC(LAST_DAY(SYSDATE)LastdayofcurrentmonthFROMDUAL;3. 获取当前年份的第一天每年的第一天都是1 月1日,这个查询语句可以使用在存储过程中,需要对当前年份第一天做一些计算的时候。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。?1SELECTTRUNC(SYSDATE,YEAR)YearFirstDayFROMDUAL;4. 获取当前年份的最后一天类似于上面的查询语句。你可以

3、用任何的日期值替换 “SYSDATE”来指定查询的日期。?1SELECTADD_MONTHS(TRUNC(SYSDATE,YEAR),12)-1YearLastDayFROMDUAL5. 获取当前月份的天数这个语句非常有用,可以计算出当前月份的天数。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。?12SELECTCAST(TO_CHAR(LAST_DAY(SYSDATE),dd)ASINT)number_of_daysFROMDUAL;6. 获取当前月份剩下的天数下面的语句用来计算当前月份剩下的天数。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。?1234SEL

4、ECTSYSDATE,LAST_DAY(SYSDATE)Last,LAST_DAY(SYSDATE)-SYSDATEDaysleftFROMDUAL;7. 获取两个日期之间的天数使用这个语句来获取两个不同日期自检的天数。?1234567SELECTROUND(MONTHS_BETWEEN(01-Feb-2014,01-Mar-2012)*30),0)num_of_daysFROMDUAL;ORSELECTTRUNC(sysdate)-TRUNC(e.hire_date)FROMemployees;如果你需要查询一些特定日期的天数,可以使用第二个查询语句。这个例子是计算员工入职的天数。8. 显示

5、当前年份截止到上个月每个月份开始和结束的日期这个是个很聪明的查询语句,用来显示当前年份每个月的开始和结束的日期,你可以使用这个进行一些类型的计算。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。?1234567891011SELECTADD_MONTHS(TRUNC(SYSDATE,MONTH),i)start_date,TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE,i)end_dateFROMXMLTABLE(for$iin0toxs:int(D)return$iPASSINGXMLELEMENT(d,FLOOR(MONTHS_BETWEEN(ADD_MO

6、NTHS(TRUNC(SYSDATE,YEAR)-1,12),SYSDATE)COLUMNSiINTEGERPATH.);9. 获取直到目前为止今天过去的秒数(从 00:00 开始算)?12SELECT(SYSDATE-TRUNC(SYSDATE)*24*60*60num_of_sec_since_morningFROMDUAL;10. 获取今天剩下的秒数(直到 23:59:59 结束)?12SELECT(TRUNC(SYSDATE+1)-SYSDATE)*24*60*60num_of_sec_leftFROMDUAL;数据字典查询11. 检查在当前数据库模式下是否存在指定的表这是一个简单的查

7、询语句,用来检查当前数据库是否有你想要创建的表,允许你重新运行创建表脚本,这个也可以检查当前用户是否已经创建了指定的表(根据这个查询语句在什么环境下运行来查询)。?123SELECTtable_nameFROMuser_tablesWHEREtable_name=TABLE_NAME;12. 检查在当前表中是否存在指定的列这是个简单的查询语句来检查表里是否有指定的列,在你尝试使用 ALTER TABLE 来添加新的列新到表中的时候非常有用,它会提示你是否已经存在这个列。?123SELECTcolumn_nameASFOUNDFROMuser_tab_colsWHEREtable_name=TA

8、BLE_NAMEANDcolumn_name=COLUMN_NAME;13. 显示表结构这 个查询语句会显示任何表的 DDL 状态信息。请注意我们已经将TABLE作为第一个信息提交了。这个查询语句也可以用来获取任何数据库对象的 DDL 状态信息。举例说明,只需要把第一个参数替换成VIEW,第二个修改成视图的名字,就可以查询视图的 DDL 信息了。?1SELECTDBMS_METADATA.get_ddl(TABLE,TABLE_NAME,USER_NAME)FROMDUAL;14. 获取当前模式这是另一个可以获得当前模式的名字的查询语句。?1SELECTSYS_CONTEXT(userenv,

9、current_schema)FROMDUAL;15. 修改当前模式这是另一个可以修改当前模式的查询语句,当你希望你的脚本可以在指定的用户下运行的时候非常有用,而且这是非常安全的一个方式。?1ALTERSESSIONSETCURRENT_SCHEMA=new_schema;数据库管理查询16. 数据库版本信息返回 Oracle 数据库版本?1SELECT*FROMv$version;17. 数据库默认信息返回一些系统默认的信息?12345SELECTusername,profile,default_tablespace,temporary_tablespaceFROMdba_users;18.

10、 数据库字符设置信息显示数据库的字符设置信息?1SELECT*FROMnls_database_parameters;19. 获取 Oracle 版本?123SELECTVALUEFROMv$system_parameterWHEREname=compatible;20. 存储区分大小写的数据,但是索引不区分大小写某些时候你可能想在数据库中查询一些独立的数据,可能会用 UPPER(.) = UPPER(.) 来进行不区分大小写的查询,所以就想让索引不区分大小写,不占用那么多的空间,这个语句恰好能解决你的需求 。?123456CREATETABLEtab(col1VARCHAR2(10);CRE

11、ATEINDEXidx1ONtab(UPPER(col1);ANALYZETABLEaCOMPUTESTATISTICS;21. 调整没有添加数据文件的表空间另一个 DDL 查询来调整表空间大小?1ALTERDATABASEDATAFILE/work/oradata/STARTST/STAR02D.dbfresize2000M;22. 检查表空间的自动扩展开关在给定的表空间中查询是否打开了自动扩展开关?12345SELECTSUBSTR(file_name,1,50),AUTOEXTENSIBLEFROMdba_data_files;(OR)SELECTtablespace_name,AUTO

12、EXTENSIBLEFROMdba_data_files;23. 在表空间添加数据文件在表空间中添加数据文件?12ALTERTABLESPACEdata01ADDDATAFILE/work/oradata/STARTST/data01.dbfSIZE1000MAUTOEXTENDOFF;24. 增加数据文件的大小给指定的表空间增加大小?1ALTERDATABASEDATAFILE/u01/app/Test_data_01.dbfRESIZE2G;25. 查询数据库的实际大小给出以 GB 为单位的数据库的实际大小?1SELECTSUM(bytes)/1024/1024/1024ASGBFROMd

13、ba_data_files;26. 查询数据库中数据占用的大小或者是数据库使用细节给出在数据库中数据占据的空间大小?1SELECTSUM(bytes)/1024/1024/1024ASGBFROMdba_segments;27. 查询模式或者用户的大小以 MB 为单位给出用户的空间大小?123SELECTSUM(bytes/1024/1024)sizeFROMdba_segmentsWHEREowner=&owner;28. 查询数据库中每个用户最后使用的 SQL 查询此查询语句会显示当前数据库中每个用户最后使用的 SQL 语句。?1234567891011SELECTS.USERNAME|(

14、|s.sid|)-|s.osuserUNAME,s.program|-|s.terminal|(|s.machine|)PROG,s.sid|/|s.serial#sid,s.statusStatus,p.spid,sql_textsqltextFROMv$sqltext_with_newlinest,V$SESSIONs,v$processpWHEREt.address=s.sql_addressANDp.addr=s.paddr(+)ANDt.hash_value=s.sql_hash_valueORDERBYs.sid,t.piece;性能相关查询29. 查询用户 CPU 的使用率这个语

15、句是用来显示每个用户的 CPU 使用率,有助于用户理解数据库负载情况?12345678SELECTss.username,se.SID,VALUE/100cpu_usage_secondsFROMv$sessionss,v$sesstatse,v$statnamesnWHEREse.STATISTIC#=sn.STATISTIC#ANDNAMELIKE%CPUusedbythissession%ANDse.SID=ss.SIDANDss.status=ACTIVEANDss.usernameISNOTNULLORDERBYVALUEDESC;30. 查询数据库长查询进展情况显示运行中的长查询的

16、进展情况?12345678910111213SELECTa.sid,a.serial#,b.username,opnameOPERATION,targetOBJECT,TRUNC(elapsed_seconds,5)ET(s),TO_CHAR(start_time,HH24:MI:SS)start_time,ROUND(sofar/totalwork)*100,2)COMPLETE(%)FROMv$session_longopsa,v$sessionbWHEREa.sid=b.sidANDb.usernameNOTIN(SYS,SYSTEM)ANDtotalwork0ORDERBYelapse

17、d_seconds;31. 获取当前会话 ID,进程 ID,客户端 ID 等这个专门提供给想使用进程 ID 和 会话 ID 做些 voodoo magic 的用户。?123456SELECTb.sid,b.serial#,a.spidprocessid,b.processclientpidFROMv$processa,v$sessionbWHEREa.addr=b.paddrANDb.audsid=USERENV(sessionid); V$SESSION.SID AND V$SESSION.SERIAL# 是数据库进程 ID V$PROCESS.SPID 是数据库服务器后台进程 ID V$S

18、ESSION.PROCESS 是客户端 PROCESS ID, ON windows it IS : separated THE FIRST # IS THE PROCESS ID ON THE client AND 2nd one IS THE THREAD id.32. 查询特定的模式或者表中执行的最后一个 SQL 语句?12345SELECTCREATED,TIMESTAMP,last_ddl_timeFROMall_objectsWHEREOWNER=MYSCHEMAANDOBJECT_TYPE=TABLEANDOBJECT_NAME=EMPLOYEE_TABLE;33. 查询每个执行

19、读取的前十个 SQL?1234567891011121314SELECT*FROM(SELECTROWNUM,SUBSTR(a.sql_text,1,200)sql_text,TRUNC(a.disk_reads/DECODE(a.executions,0,1,a.executions)reads_per_execution,a.buffer_gets,a.disk_reads,a.executions,a.sorts,a.addressFROMv$sqlareaaORDERBY3DESC)WHEREROWNUM10;34. 在视图中查询并显示实际的 Oracle 连接?123456SELEC

20、Tosuser,username,machine,programFROMv$sessionORDERBYosuser;35. 查询并显示通过打开连接程序打开连接的组?1234SELECTprogramapplication,COUNT(program)Numero_SesionesFROMv$sessionGROUPBYprogramORDERBYNumero_SesionesDESC;36. 查询并显示连接 Oracle 的用户和用户的会话数量?1234SELECTusernameUsuario_Oracle,COUNT(username)Numero_SesionesFROMv$sessi

21、onGROUPBYusernameORDERBYNumero_SesionesDESC;37. 获取拥有者的对象数量?1234SELECTowner,COUNT(owner)number_of_objectsFROMdba_objectsGROUPBYownerORDERBYnumber_of_objectsDESC;实用/数学 相关的查询38. 把数值转换成文字更多信息可以查看:Converting number into words in Oracle?1SELECTTO_CHAR(TO_DATE(1526,j),jsp)FROMDUAL;输出:?1onethousandfivehundr

22、edtwenty-six39. 在包的源代码中查询字符串这个查询语句会在所有包的源代码上搜索FOO_SOMETHING ,可以帮助用户在源代码中查找特定的存储过程或者是函数调用。?12345-searchastringfoo_somethinginpackagesourcecodeSELECT*FROMdba_sourceWHEREUPPER(text)LIKE%FOO_SOMETHING%ANDowner=USER_NAME;40. 把用逗号分隔的数据插入的表中当 你想把用逗号分隔开的字符串插入表中的时候,你可以使用其他的查询语句,比如 IN 或者是 NOT IN 。这里我们把AA,BB,C

23、C,DD,EE,FF转换成包含 AA,BB,CC 等作为一行的表,这样你就很容易把这些字符串插入到其他表中,并快速的做一些相关的操作。?1234567WITHcsvAS(SELECTAA,BB,CC,DD,EE,FFAScsvdataFROMDUAL)SELECTREGEXP_SUBSTR(csv.csvdata,+,1,LEVEL)pivot_charFROMDUAL,csvCONNECTBYREGEXP_SUBSTR(csv.csvdata,+,1,LEVEL)ISNOTNULL;41. 查询表中的最后一个记录这个查询语句很直接,表中没有主键,或者是用户不确定记录最大主键是否是最新的那个记

24、录时,就可以使用这个语句来查询表中最后一个记录。?1234567891011SELECT*FROMemployeesWHEREROWIDIN(SELECTMAX(ROWID)FROMemployees);(OR)SELECT*FROMemployeesMINUSSELECT*FROMemployeesWHEREROWNUM(SELECTCOUNT(*)FROMemployees);42. 在 Oracle 中做行数据乘法这个查询语句使用一些复杂的数学函数来做每个行的数值乘法。更多内容请查阅:Row Data Multiplication In Oracle?12345678910111213WITHtblAS(SELECT-2numFROMDUALUNIONSELECT-3numFROMDUALUNIONSELECT-4numFROMDUAL),sign_valAS(SELECT

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1