45个很有用的SQL语句Word文档下载推荐.docx
- 文档编号:20798500
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:16
- 大小:21.67KB
45个很有用的SQL语句Word文档下载推荐.docx
《45个很有用的SQL语句Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《45个很有用的SQL语句Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
AS
INT)
number_of_days
6.获取当前月份剩下的天数
下面的语句用来计算当前月份剩下的天数。
3
4
SYSDATE,
LAST_DAY
(SYSDATE)
Last"
SYSDATE
Days
left"
7.获取两个日期之间的天数
使用这个语句来获取两个不同日期自检的天数。
5
6
7
ROUND
(
(MONTHS_BETWEEN
('
01-Feb-2014'
01-Mar-2012'
*
30),
0)
num_of_days
OR
TRUNC(sysdate)
TRUNC(e.hire_date)
employees;
如果你需要查询一些特定日期的天数,可以使用第二个查询语句。
这个例子是计算员工入职的天数。
8.显示当前年份截止到上个月每个月份开始和结束的日期
这个是个很聪明的查询语句,用来显示当前年份每个月的开始和结束的日期,你可以使用这个进行一些类型的计算。
8
9
10
11
i)
start_date,
(ADD_MONTHS
i)))
end_date
XMLTABLE
(
for
$i
in
0
to
xs:
int(D)
return
$i'
PASSING
XMLELEMENT
d,
FLOOR
MONTHS_BETWEEN
1,
12),
SYSDATE)))
COLUMNS
i
INTEGER
PATH
.'
);
9.获取直到目前为止今天过去的秒数(从00:
00开始算)
(SYSDATE
24
60
num_of_sec_since_morning
10.获取今天剩下的秒数(直到23:
59:
59结束)
(SYSDATE+1)
SYSDATE)
num_of_sec_left
数据字典查询
11.检查在当前数据库模式下是否存在指定的表
这是一个简单的查询语句,用来检查当前数据库是否有你想要创建的表,允许你重新运行创建表脚本,这个也可以检查当前用户是否已经创建了指定的表(根据这个查询语句在什么环境下运行来查询)。
table_name
user_tables
WHERE
table_name
=
TABLE_NAME'
;
12.检查在当前表中是否存在指定的列
这是个简单的查询语句来检查表里是否有指定的列,在你尝试使用ALTERTABLE来添加新的列新到表中的时候非常有用,它会提示你是否已经存在这个列。
column_name
FOUND
user_tab_cols
AND
COLUMN_NAME'
13.显示表结构
这个查询语句会显示任何表的DDL状态信息。
请注意我们已经将‘TABLE’作为第一个信息提交了。
这个查询语句也可以用来获取任何数据库对象的DDL状态信息。
举例说明,只需要把第一个参数替换成‘VIEW’,第二个修改成视图的名字,就可以查询视图的DDL信息了。
DBMS_METADATA.get_ddl
TABLE'
USER_NAME'
14.获取当前模式
这是另一个可以获得当前模式的名字的查询语句。
SYS_CONTEXT
userenv'
current_schema'
15.修改当前模式
这是另一个可以修改当前模式的查询语句,当你希望你的脚本可以在指定的用户下运行的时候非常有用,而且这是非常安全的一个方式。
ALTER
SESSION
SET
CURRENT_SCHEMA
new_schema;
数据库管理查询
16.数据库版本信息
返回Oracle数据库版本
v$version;
17.数据库默认信息
返回一些系统默认的信息
username,
profile,
default_tablespace,
temporary_tablespace
dba_users;
18.数据库字符设置信息
显示数据库的字符设置信息
nls_database_parameters;
19.获取Oracle版本
VALUE
v$system_parameter
name
compatible'
20.存储区分大小写的数据,但是索引不区分大小写
某些时候你可能想在数据库中查询一些独立的数据,可能会用UPPER(..)=UPPER(..)来进行不区分大小写的查询,所以就想让索引不区分大小写,不占用那么多的空间,这个语句恰好能解决你的需求。
CREATE
TABLE
tab
(col1
VARCHAR2
(10));
INDEX
idx1
ON
(UPPER
(col1));
ANALYZE
a
COMPUTE
STATISTICS;
21.调整没有添加数据文件的表空间
另一个DDL查询来调整表空间大小
DATABASE
DATAFILE
/work/oradata/STARTST/STAR02D.dbf'
resize
2000M;
22.检查表空间的自动扩展开关
在给定的表空间中查询是否打开了自动扩展开关
SUBSTR
(file_name,
50),
AUTOEXTENSIBLE
dba_data_files;
(OR)
tablespace_name,
23.在表空间添加数据文件
在表空间中添加数据文件
TABLESPACE
data01
ADD
/work/oradata/STARTST/data01.dbf'
SIZE
1000M
AUTOEXTEND
OFF;
24.增加数据文件的大小
给指定的表空间增加大小
/u01/app/Test_data_01.dbf'
RESIZE
2G;
25.查询数据库的实际大小
给出以GB为单位的数据库的实际大小
SUM
(bytes)
/
1024
GB
26.查询数据库中数据占用的大小或者是数据库使用细节
给出在数据库中数据占据的空间大小
dba_segments;
27.查询模式或者用户的大小
以MB为单位给出用户的空间大小
(bytes
1024)
size"
dba_segments
owner
&
owner'
28.查询数据库中每个用户最后使用的SQL查询
此查询语句会显示当前数据库中每个用户最后使用的SQL语句。
S.USERNAME
||
s.sid
)-'
s.osuser
UNAME,
s.program
-'
s.terminal
s.machine
)'
PROG,
/'
s.serial#
sid,
s.status
Status"
p.spid,
sql_text
sqltext
v$sqltext_with_newlines
t,
V$SESSION
s,
v$process
p
t.address
s.sql_address
p.addr
s.paddr(+)
t.hash_value
s.sql_hash_value
ORDER
BY
s.sid,
t.piece;
性能相关查询
29.查询用户CPU的使用率
这个语句是用来显示每个用户的CPU使用率,有助于用户理解数据库负载情况
ss.username,
se.SID,
VALUE
100
cpu_usage_seconds
v$session
ss,
v$sesstat
se,
v$statname
sn
se.STATISTIC#
sn.STATISTIC#
NAME
LIKE
%CPU
used
by
this
session%'
se.SID
ss.SID
ss.status
ACTIVE'
ss.username
IS
NOT
NULL
DESC;
30.查询数据库长查询进展情况
显示运行中的长查询的进展情况
12
13
a.sid,
a.serial#,
b.username,
opname
OPERATION,
target
OBJECT,
(elapsed_seconds,
5)
ET
(s)"
TO_CHAR
(start_time,
HH24:
MI:
SS'
start_time,
(sofar
totalwork)
100,
2)
COMPLETE
(%)"
v$session_longops
a,
b
a.sid
b.sid
b.username
IN
SYS'
SYSTEM'
)
totalwork
>
elapsed_seconds;
31.获取当前会话ID,进程ID,客户端ID等
这个专门提供给想使用进程ID和会话ID做些voodoomagic的用户。
b.sid,
b.serial#,
a.spid
processid,
b.process
clientpid
a.addr
b.paddr
b.audsid
USERENV
sessionid'
∙V$SESSION.SIDANDV$SESSION.SERIAL#是数据库进程ID
∙V$PROCESS.SPID是数据库服务器后台进程ID
∙V$SESSION.PROCESS是客户端PROCESSID,ONwindowsitIS:
separatedTHEFIRST#ISTHEPROCESSIDONTHEclientAND2ndoneISTHETHREADid.
32.查询特定的模式或者表中执行的最后一个SQL语句
CREATED,
TIMESTAMP,
last_ddl_time
all_objects
OWNER
MYSCHEMA'
OBJECT_TYPE
OBJECT_NAME
EMPLOYEE_TABLE'
33.查询每个执行读取的前十个SQL
14
*
ROWNUM,
(a.sql_text,
200)
sql_text,
a.disk_reads
DECODE
(a.executions,
0,
a.executions))
reads_per_execution,
a.buffer_gets,
a.disk_reads,
a.executions,
a.sorts,
a.address
v$sqlarea
a
3
DESC)
ROWNUM
<
10;
34.在视图中查询并显示实际的Oracle连接
osuser,
machine,
program
v$session
osuser;
35.查询并显示通过打开连接程序打开连接的组
program
application,
COUNT
(program)
Numero_Sesiones
GROUP
Numero_Sesiones
36.查询并显示连接Oracle的用户和用户的会话数量
username
Usuario_Oracle,
(username)
username
37.获取拥有者的对象数量
owner,
(owner)
number_of_objects
dba_objects
owner
number_of_objects
实用/数学相关的查询
38.把数值转换成文字
更多信息可以查看:
ConvertingnumberintowordsinOracle
(TO_DATE
(1526,
j'
jsp'
输出:
one
thousand
five
hundred
twenty-six
39.在包的源代码中查询字符串
这个查询语句会在所有包的源代码上搜索‘FOO_SOMETHING’,可以帮助用户在源代码中查找特定的存储过程或者是函数调用。
--search
string
foo_something
package
source
code
dba_source
UPPER
(text)
%FOO_SOMETHING%'
40.把用逗号分隔的数据插入的表中
当你想把用逗号分隔开的字符串插入表中的时候,你可以使用其他的查询语句,比如IN或者是NOTIN。
这里我们把‘AA,BB,CC,DD,EE,FF’转换成包含AA,BB,CC等作为一行的表,这样你就很容易把这些字符串插入到其他表中,并快速的做一些相关的操作。
WITH
csv
(SELECT
AA,BB,CC,DD,EE,FF'
csvdata
DUAL)
REGEXP_SUBSTR
(csv.csvdata,
[^,]+'
LEVEL)
pivot_char
DUAL,
CONNECT
(csv.csvdata,'
NULL;
41.查询表中的最后一个记录
这个查询语句很直接,表中没有主键,或者是用户不确定记录最大主键是否是最新的那个记录时,就可以使用这个语句来查询表中最后一个记录。
employees
ROWID
MAX
(ROWID)
employees);
MINUS
(*)
42.在Oracle中做行数据乘法
这个查询语句使用一些复杂的数学函数来做每个行的数值乘法。
更多内容请查阅:
RowDataMultiplicationInOracle
tbl
-2
num
UNION
-3
-4
DUAL),
sign_val
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 45 有用 SQL 语句