A. sql中statistics語句和showoplan語句各是什麼意思
SHOWPLAN 描述 SQL Server 查詢優化器選擇的數據檢索方法。
STATISTICS IO 報告與語句內引用的每個表的掃描數、邏輯讀取數(在高速緩存中訪問的頁數)和物理讀取數(訪問磁碟的次數)有關的信息。
STATISTICS TIME 顯示分析、編譯和執行查詢所需的時間(以毫秒為單位)。
STATISTICS PROFILE 顯示每個查詢執行後的結果集,代表查詢執行的配置文件。
FULLSCAN
指定應讀取 table 或 view 中的所有行以收集統計。FULLSCAN 提供與 SAMPLE 100 PERCENT 相同的行為。FULLSCAN 不能與 SAMPLE 選項一起使用。
ALL | COLUMNS | INDEX
指定 UPDATE STATISTICS 語句是否影響列統計、索引統計或所有現有統計。如果未指定選項,則 UPDATE STATISTICS 語句影響所有的統計。每個 UPDATE STATISTICS 語句只能指定一種類型(ALL、COLUMNS 或 INDEX)。
B. SQl語句中查看庫的命令是什麼 show data什麼的
(1) show databases; 查看庫
(2) use 資料庫名; show tables; 顯示相應資料庫名下的表
C. 關於hibernate的show sql
展開全部
你的這個問題是
事物沒有提交,這個show
sql只是輸出sql語句。
D. sql server 有show的用法么
就我所知,沒有語句可以直接查看此開關的狀態。
當此開關打開的時候,任何語句都不會執行,而是顯示執行計劃。例如執行
select1;
結果是:
<ShowPlanXMLxmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan"Version="1.1"Build="10.50.1600.1"><BatchSequence><Batch><Statements><StmtSimpleStatementText="select1;"StatementId="1"StatementCompId="1"StatementType="SELECTWITHOUTQUERY"/></Statements></Batch></BatchSequence></ShowPlanXML>
通過這個辦法可以間接知道開關當前是否打開。
E. 顯示所有資料庫的sql語句是什麼我知道mysql中可以用show databases; 顯示表show tables;
select * from sysdatabases
或者執行系統存儲過程
sp_helpdb
F. oracle sqlplus 命令都有那些 show命令除了 parameter外,還有什麼可以show。
一般在SQL>下進行SQLPLUS操作,都需要進行必要的環境設置才能完成我們所需要的輸出。所有環境的設置由SET命令加相應的環境變數來完成。下面是常用的環境設置:
§2.5.1 ARRAYSIZE(取回的行數)
SET ARRAY[SIZE]{integer}
一次可以提取(Fetch)的行的數目,1->5000,當有較長欄位時應設小些。
§2.5.2 AUTOCOMMIT(自動提交)
SET AUTO [COMMIT] { [ OFF | ON | IMM | n] }
用於在操作中是自動提交或是部分提交或是不自動提交。
1) 或IMM使得在完成每條SQL語句時將未提交的改變立刻提交給資料庫系統。ON
2) 允許在用戶發出COMMIT後,可以執行命令的數量(將n條SQL語句所做的改變進行提交)。N
3) 停止自動提交,用戶必須用COMMIT命令才能被提交。OFF
§2.5.3 LINESIZE(行顯示寬度)
可以設置LINESIZE環境變數來控制行的顯示寬度,預設是80個字元。
SET Lin[esize]{80|integer}
Integer =設置行寬度(字元個數),最大值999,如:
SQL>set linesize 160
§2.5.4 LONG(長類型顯示位元組數)
在預設的SQL> 狀態下,SQL>緩沖區用於顯示LONG 的位元組數只有80個字元。如果我們需要查詢的列中含有 LONG類型的欄位的話,就需要將LONG緩沖區設置大些。
SET LONG{80|integer}
Integer是 顯示或拷貝long值的最大寬度, n=1->32767(但必須小於Maxdata值)
SQL>show Maxdata (最大行寬)
SQL>set long 2000
§2.5.5 PAGESIZE(頁行數)
在預設的SQL> 狀態下,SQL>緩沖區顯示頁的行數是24行,其中22行顯示數據,2行顯示標題和橫線。我們將pagesize 設置大些以減少提示標題和橫線。
SET pag[esize] {24|integer}
SQL>SET pagesize 66
§2.5.6 PAUSE(暫停)
可以設置 PAUSE 為ON 或OFF來控制屏幕顯示。當設置為ON 時,在select 語句發出後需要按Enter鍵才能顯示一屏。
SET PAUSE [ ON | OFF ]
SQL> setpause on
提示:在發出select 語句並按Enter鍵後還要再按Enter鍵才能顯示結果.
§2.5.7 SPACE(列間空格)
可用 set space 來設置各列間的空格數,語法為:
SET SPA[CE] {1|n}
N為設置輸出行列間的空格數,最大為10。
SQL>set space 2
建議:在一般情況下,不用設置space參數。
§2.5.8 Termout (啟/停屏幕顯示)
TERMOUT用於設置在屏幕上顯示或不顯示所輸出的信息。
SET TERMOUT { ON | OFF }
set termout off
set termout on
set termout off 常用SPOOL XXX時,即關閉報表在屏幕上的顯示(節省時間)
set termout on 常用SPOOL off之後,即恢復報表在屏幕上的顯示
§2.5.9 ECHO (啟/停命令顯示)
可以用ECHO命令來顯示或不顯示所執行的SQL命令。語法如:
SET ECHO{OFF|ON}
顯示執行當中的各命令( 即用start 時)
set echo 受到 set termout 的影響
set pagesize 100
set echo on
select table_name from dict where rownum<20;
select * from cat where rownum<30;
set echo off
--下面只顯示結果不顯示命令:
select table_name from dict where rownum<20;
select * from cat where rownum<30;
§2.5.10 TRANSACTION (啟動事務)
一個很重要的事務環境設置是TRANSACTION。它包括兩個部分的內容:
SET TRANSACTION { READ ONLY | USE ROLLBACK SEGMENT segment_name }
READ ONLY是用於保證讀的一致性。即其他用戶的修改不影響當前查詢結果。
USE ROLLBACK SEGMENT segment_name是為當前所處理的事務指定專門的回滾段。這主要是在進行大量的Insert或Delete或Update時,需要一個大的回滾段以保證事務正常完成。詳細見資料庫管理員。
§2.5.11 SHOW ALL(列出所有參數)
可以用SHOW ALL來顯示當前的所有參數情況。它的用法很簡單。比如:
SQL> show all
appinfo為ON並且已設置為"SQL*Plus"
arraysize 15
autocommit OFF
autoprint OFF
autorecovery OFF
autotrace OFF
blockterminator "." (hex 2e)
btitle OFF and為下一條SELECT語句的前幾個字元
cmdsep OFF
colsep " "
compatibility version NATIVE
concat "." (hex 2e)
commit 0
COPYTYPECHECK為ON
define "&" (hex 26)
describe DEPTH 1 LINENUM OFF INDENT ON
markup HTML OFF SPOOL OFF ENTMAP ON PREFORMAT OFF
echo OFF
editfile "afiedt.buf"
embedded OFF
escape OFF
flagger OFF
flush ON
heading ON
headsep "|" (hex 7c)
instance "local"
linesize 80
lno 14
loboffset 1
logsource ""
long 80
longchunksize 80
newpage 1
null ""
numformat ""
numwidth 10
pagesize 14
PAUSE為OFF
pno 0
recsep WRAP
recsepchar " " (hex 20)
release 801070000
repfooter OFF and為NULL
repheader OFF and為NULL
serveroutput OFF
shiftinout INVISIBLE
showmode OFF
spool OFF
sqlblanklines OFF
sqlcase MIXED
sqlcode 0
sqlcontinue "> "
sqlnumber ON
sqlprefix "#" (hex 23)
sqlprompt "SQL> "
sqlterminator ";" (hex 3b)
suffix "sql"
tab ON
termout ON
time OFF
timing OFF
trimout ON
trimspool OFF
ttitle OFF and為下一條SELECT語句的前幾個字元
underline "-" (hex 2d)
USER為"SYS"
verify ON
wrap :行將為已換行
SQL>
你可以從上面的參數中看到其當前值,也可以修改某些參數的值。
格式化輸出
§2.6.1 一般數據的格式化輸出
在Oracle的SQL>下,經常用COLUMN命令來對所輸出的列進行格式化,即按照一定的格式進行顯示。COLMUN命令語法如下:
COL[UMN] [{ column | expr } [ option_1 ... option_n ] ]
column:列名
expr:有效的SQL表達式
option_1...option_n:可以是下列之一:
ALI[AS] alias
CLE[AR]
FOLD_A[FTER]
FOLD_B[EFORE]
FOR[MAT] format
HEA[DING] text
JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}
LIKE {expr|alias}
NEWL[INE]
NEW_V[ALUE] variable
NOPRI[NT]|PRI[NT]
NUL[L] text
OLD_V[ALUE] variable
ON|OFF
WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
下面給出常用的關鍵字的解釋:
Alias 給出列的別名,BREAK和COUMN可以引用所定義的別名。
CLEAR 取消列的定義。
FORMAT列顯示格式,format為:
9999990 9或0的個數決定最多顯示多少位
9,999,999.99按照逗號和小數點來顯示數據,若是0以空格顯示
099999 顯示前面補0
$999,999.99 數字前加美圓號
B99999 若為0,則結果為空白
99999Mi 若數字為負,則負號放在數字後(右邊),預設放在左邊
99999PR 負號將以括弧括起
9.999EEEE 以科學記數法表示(必須有4個E)
999V99 數字乘以10n ,如1234變為123400
DATE 採用日期數字格式(MM/DD/YY)
Heading重新標記列的顯示標題,如:
SQL> col ename heading 姓名format a10
SQL> select ename,sal from emp;
例子:
SQL
COLUMN SALARY FOR $9,999,999.99
COLUMN LAST_NAME FOR A35.
§2.6.2 日期的格式化輸出
Oracle系統提供了一個NLS_DATE_FORMAT的環境變數來設置日期的顯示格式。用它可以完成按照不同格式要求的顯示,比如按照中國的習慣為yyyy年mm月dd日等。
1.系統日期 sysdate 的顯示
用sysdate 可以顯示ORACLE RDBMS 所在機器的日期及時間,如:
SQL> alter session set nls_date_format ='"公元"yyyy"年"mm"月"dd"日"';
會話已更改。
SQL> select sysdate from al;
SYSDATE
------------------
公元2001年05月30日
2.日期類型的顯示
select sysdate,to_char(sysdate,』yyyy.mm.dd hh24:mi;ss』) from al;
SQL> connect scott/tiger
已連接。
SQL> alter session set nls_date_format ='yyyy"年"mm"月"dd"日生"';
會話已更改。
SQL> col HIREDATE heading生日
SQL> col sal heading工資
SQL> col sal ename姓名
SQL> select ename,sal,hiredate from emp;
姓名 工資 生日
---------- ---------- -----------------
SMITH 800 1980年12月17日生
ALLEN 1600 1981年02月20日生
WARD 1250 1981年02月22日生
JONES 2975 1981年04月02日生
MARTIN 1250 1981年09月28日生
BLAKE 2850 1981年05月01日生
CLARK 2450 1981年06月09日生
SCOTT 3000 1987年04月19日生
KING 5000 1981年11月17日生
TURNER 1500 1981年09月08日生
ADAMS 1100 1987年05月23日生
JAMES 950 1981年12月03日生
FORD 3000 1981年12月03日生
MILLER 1300 1982年01月23日生
已選擇14行。
§2.7 加標題
有時在輸出一些結果時,可能需要加一些標題,如表上面的頂標題,落款等。這樣的要求可由Ttitle和Btitle來完成。
ttitle和btitle
ttitle [center|left|right]string 頂標題
btitle [center|left|right]string 底標題
ttitle center 'XX公司人員情況表'
btitle left '製表人:xxxx' right '日期:xxxx年xx月'
Clear ttitle
§2.8 建立簡單報告
我們可以用TTITLE、BTITLE、COLUMN、BREAK ON、COMPUTE SUM及SET LINESIZE、SET PAGESIZE、SET NEWPAGE來設置查詢結果的顯示格式;在用SPOOL命令將顯示結果輸出到一個操作系統文件中去,一般輸出文件的類型為.LST。
建立簡單報告主要使用下面命令來實現:
1. SPOOL命令
SPOOL filename 將緩沖區的內容寫到文件中
SPOOL off 終止寫命令
2. COLUMN 命令
column col_name[,heading] format format_spe
把欄位的結果指定為一種輸出格式
COL name heading '姓名' for a10
COL sal heading '工資' for 9,999.99
3.ttitle、btitle
ttitle [center|left|right]string 頂標題
btitle [center|left|right]string 底標題
ttitle center 'XX公司人員情況表'
btitle left '製表人:趙元傑' right '日期:1998.11月'
Clear ttitle
4.break、compute
clear breaks,clear computes
break on column 在該列上中斷
break on row 在每一行上中斷
break on Page
break on report
skip n 跳過n行
skip page 跳過未用完的頁
compute avg
compute count
compute max
compute min
compute std
compute sum
compute var
compute num 計算所有行
compute sum of sal on deptno
5.set 在報表中的設置
l set termout off、set termout on命令
l set termout off 常用SPOOL XXX前,即關閉報表在屏幕上的顯示(節省時間)
l set termout on 常用SPOOL off之後,即恢復報表在屏幕上的顯示
l set ECHO{OFF|ON} 顯示執行當中的各命令(即用start 時),set echo 受到 set termout 的影響
l set Lin[esize]{80|integer} 設置行寬度,最大值999
l set pag[esize] {24|integer} 設置頁的大小
例子:
SQL>COL ename heading 『姓名』 for a12
SQL>COL sal heading 『工資』 for a999,999.99
SQL>COL hiredate heading 『出生』
SQL>SET LINESIZE 200
SQL>SET PAGESIZE 60
SQL>SPOOL c:\all_emp
SQL>select ename,sal,deptno,hiredate from emp order by deptno;
SQL>SPOOL OFF
§2.9 輸入變數
Oracle提供一種在處理SQL語句時可以將參數作為變數來對待的技術,即在條件句中可以是變數而不是具體的值,這樣的處理就是輸入變數。這樣做的目的就是可以重復使用同樣的語句,每次只要輸入相應的值即可。要實現將參數寫成為變數,只要在變數前加一個&號即可。看下面語句:
Select sid, serial#,username, command from v$session
Where USERNAME = upper(『&usr』);
這樣的語句在運行中,系統會自動提示你回答變數的具體值,上面語句運行時提示和回答時顯示的信息如下:
SQL> Select sid, serial#,username, command from v$session
2 Where USERNAME = upper('&usr');
輸入 usr 的值: sys
原值 2: Where USERNAME = upper('&usr')
新值 2: Where USERNAME = upper('sys')
SID SERIAL# USERNAME COMMAND
---------- ---------- ------------------------------ ----------
7 26 SYS 3
在變數說明中,可以使用多個變數,比如:
Alter system kill session 『&sid,&ser』;
或
Alter system kill session 『&會話號,&序列號』;
它的運行情況如下:
SQL> Select sid, serial#,username, command from v$session;
SID SERIAL# USERNAME COMMAND
---------- ---------- ------------------------------ ----------
1 1 0
2 1 0
3 1 0
4 1 0
5 1 0
6 1 0
7 26 SYS 3
8 16 ZHAO 0
已選擇8行。
SQL> Alter system kill session '&sid,&ser';
輸入sid的值: 8
輸入ser的值: 16
原值 1: Alter system kill session '&sid,&ser'
新值 1: Alter system kill session '8,16'
系統已更改。
一般系統預設下是使用 「&」 符號來定義變數,你也可以使用另外的符號來代替,比如不喜歡用 & 而要用 ?,則有:
SQL> set define ?
SQL> select sid,serial#,username from v$session where username='?usr';
輸入 usr 的值: SYS
原值 1: select sid,serial#,username from v$session where username='?usr'
新值 1: select sid,serial#,username from v$session where username='SYS'
SID SERIAL# USERNAME
---------- ---------- ------------------------------
7 26 SYS
次時由於我們修改了會話環境的參數值,可以用下面命令查看:
SQL> show define
define "?" (hex 3f)
G. 如何利用MySQL資料庫自帶的show命令查看信息
方法/步驟
查看MySQL資料庫存儲引擎和默認引擎,可以用命令:
show
engines;
有時編寫SQL語句時,出現了錯誤,想要查看上一條SQL錯誤,可以利用命令:
show
errors;
查看最後一個執行語句的錯誤、提醒和警告,可以用命令:
show
warnings;
查看系統的一些資源狀態,可以利用命令:
show
status;
顯示系統里的一些變數名稱和變數值,可以利用命令:
show
variables;
有時需要查看MySQL伺服器支持的不同許可權,可以利用命令:
show
privileges;
H. 資料庫SQL語句
以前在SQL 中寫SP 時,如比較復雜時,喜歡中間使用臨時表來暫存相關記錄,這樣的好處有很多,提高效率,提高程序的可讀性等。當然後臨時表的使用,一般均會使用用戶臨時表,即 #TempTable, 但有一些情況下,偶爾也會使用系統臨時表,即 ##TempTable。
兩種臨時表的的使用語法差不多,可用幾種方法來建立,可 Create ,也可 Select Into 。
當然關鍵的是系統臨時表和用戶臨時表的區別:(如下)
1)用戶臨時表:用戶臨時表的名稱以單個數字元號(#)開頭;
用戶臨時表只對創建這個表的用戶的Session可見,對其他進程是不可見的.
當創建它的進程消失時這個臨時表就自動刪除.
2)系統臨時表:系統臨時表的名稱以數字元號(##)開頭
全局臨時表對整個SQL Server實例都可見,但是所有訪問它的Session都消失的時候,它也自動刪除.
明白了這些就知道了他們的用途和限制,但有一些地方還是容易出問題,故在此專門列出。
1, 在使用 Exec(SQLScript) 執行Script 時,其間也相當於單獨有一個進程處理,故執行期間內如果創建用戶臨時表的話,在執行完成後也就結束了,即執行完成後,你不可以使用在 SQLScript 中生成的用戶臨時表,可以用系統臨時表代替。
2, 在使用用戶臨時表時,有一個問題要注意,就是最好在建立時指定其用戶為 dbo ,以避免可能的問題;
3, 在使用系統臨時表時,一定要考慮到,不可以將其用於多用戶使用的環境功能或系統中,否則就可能出現沖突的問題,導致結果不可預料。
如果在多用戶使用的環境中使用系統臨時表,則可能會出現多個用戶同時對同一系統臨時表進行處理,從而導致沖突和數據的錯誤。以前沒有注意這一點,我就因此而浪費過不少的時間。
有時需要使用Exec(SQLScript)方式產生數據,但其中只能使用系統臨時表,如何處理呢?
1, 可以預先定義好一個用戶臨時表,然後使用 Insert #TempTable Exec(SQLScript) 的方式,即可將Exec 產生的結果記錄加入用戶臨時表,從而避免使用系統臨時表;
2, 從根本上避免使用 Exec() ,可用其它方式代替。
Exec() 的使用是因為有一些 Script 比較復雜,其中需要一些組合字元,如 in ('','','') 或其它可能的情況,在此情況,無法直接使用一般的Script 產生記錄,只能先產生一個組合的Script ,然後用Exec 執行
I. 關於java中訪問MySql資料庫執行SQL語句的問題!!show tables~
private static void test3() throws Exception{
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try{
con=DBUtil.openInThread();
String sql="show tables";
pstmt=con.prepareStatement(sql);
rs= pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getString(1));
}
}finally{
DBUtil.close(null,pstmt, rs);
DBUtil.closeInThread();
}
} 我這樣會輸出表名
J. SQL里的show和describe有什麼區別.
show table table_name :用於查看錶的類型,更新時間等外部信息
describe table table_name:則用於查看錶的結構詳情信息,