SQL查詢語句有哪些
查詢語句只有一種SELECT 。
FROM WHERE 。 (GROUP BY 。
ORDER BY 。)只是根據想要的結果不一樣,而查詢的內容會稍有修改。
比如FROM的表名,可以不是一張表,而是一個SELECT查詢的結果作為一張表。同樣,查詢統計分組匯總,可以增加SUM(), MIN(), MAX()等函數配合group by使用進行分組統計。
WHERE 條件除了簡單的連接之外,也有IN, NOT IN, EXISTS, NOT EXISTS等。還有,兩個SELECT集合可以使用UNION, UNION ALL, MINUS等進行集合的加或者減的操作。
總之如果是查詢,就離不開SELECT 。 FROM 。
WHERE。 這樣的基本形式。
如何直接執行SQL語句
using (SqlConnection con = new SqlConnection(*tionStrings["default"].ConnectionString))
{ SqlCommand cmd = new SqlCommand();
*tion = con;
sqlStr = @"";
*dText = sqlStr ;
*dType = *;
gs = *eNonQuery(); }
這個就是直接執行sql語句的代碼!
怎樣查詢sql語句,查看執行時間
通過Oracle執行計劃可以看到SQL的執行時間。
EXPLAIN PLAN FOR
SELECT * FROM table;
SELECT * FROM TABLE(DBMS_*Y);
SQL>set timing on --顯示執行時間
SQL>set autorace on ?C顯示執行計劃
SQL>set autorace on ?C顯示執行計劃
SQL>set autotrace traceonly ?C只顯示執行計劃即不顯示查詢出來的數據
設置完畢后執行SQL語句就會顯示執行時間。
在Android怎么執行SQL查詢語句
你可以使用SQLiteDatabase類,并且把返回的結果保存在Cursor中。
例子:protected SQLiteDatabase dataDB;//Get DBContext context = getBaseContext(); LocationBookSQLite dbHelper = new LocationBookSQLite(context); dataDB = *dableDatabase(); //use a cursor to get db elementsCursor cur = *(books, null, null, null, null, null, null);*First();while (*rLast() == false) { if ( *ing(1).equals(1) && *ing(3).equals("art")) { //here 1 mean the index of id *n(*ing(1)); //here 2 mean the index of name *n(*ing(2)); //here 3 mean the index of topic *n(*ing(3)); }*Next();}*();。
存儲過程怎么查看執行sql語句
MSSQL為我們提供了兩種動態執行SQL語句的命令,分別是EXEC和 sp_executesql;通常,sp_executesql則更具有優勢,它提供了輸入輸出接口,而EXEC沒有。
還有一個最大的好處就是利用 sp_executesql,能夠重用執行計劃,這就大大提供了執行性能,還可以編寫更安全的代碼。EXEC在某些情況下會更靈活。
除非您有令人信服的理 由使用EXEC,否側盡量使用sp_*的使用 EXEC命令有兩種用法,一種是執行一個存儲過程,另一種是執行一個動態的批處理。以下所講的都是第二種用法。
下面先使用EXEC演示一個例子,代碼1 代碼 DECLARE @TableName VARCHAR(50),@Sql NVARCHAR (MAX),@OrderID INT; SET @TableName = 'Orders'; SET @OrderID = 10251; SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) +'WHERE OrderID = '+ CAST(@OrderID AS VARCHAR(10))+' ORDER BY ORDERID DESC' EXEC(@sql); 注:這里的EXEC括號中只允許包含一個字符串變量,但是可以串聯多個變量,如果我們這樣寫EXEC:EXEC('SELECT TOP('+ CAST(@TopCount AS VARCHAR(10)) +')* FROM '+ QUOTENAME(@TableName) +' ORDER BY ORDERID DESC'); SQL編譯器就會報錯,編譯不通過,而如果我們這樣:EXEC(@sql+@sql2+@sql3); 編譯器就會通過; 所以最佳的做法是把代碼構造到一個變量中,然后再把該變量作為EXEC命令的輸入參數,這樣就不會受限制了。 EXEC的缺點是不提供接口,這里的接口是指,它不能執行一個包含一個帶變量符的批處理,如下 代碼 DECLARE @TableName VARCHAR(50),@Sql NVARCHAR(MAX),@OrderID INT; SET @TableName = 'Orders'; SET @OrderID = 10251; SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) + 'WHERE OrderID = @OrderID ORDER BY ORDERID DESC' EXEC(@sql); 關鍵就在SET @sql這一句話中,如果我們運行這個批處理,編譯器就會產生一下錯誤 Msg 137, Level 15, State 2, Line 1 必須聲明標量變量 "@OrderID"。
使用EXEC時,如果您想訪問變量,必須把變量內容串聯到動態構建的代碼字符串中,如:SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) + 'WHERE OrderID = '+CAST(@OrderID AS VARCHAR(10))+' ORDER BY ORDERID DESC' 串聯變量的內容也存在性能方面的弊端。SQL Server為每一個的查詢字符串創建新的執行計劃,即使查詢模式相同也是這樣。
為演示這一點,先清空緩存中的執行計劃 DBCC FREEPROCCACHE (這個不是本文所涉及的內容,您可以查看MS的MSDN) 將代碼1運行3次,分別對@OrderID 賦予下面3個值,10251,10252,10253。然后使用下面的代碼查詢 SELECT cacheobjtype,objtype,usecounts,sql FROM *heobjects WHERE sql NOT LIKE '%cach%' AND sql NOT LIKE '%sys.%' 點擊F5運行,我們可以看到,每執行一次都要產生一次的編譯,執行計劃沒有得到充分重用。
EXEC除了不支持動態批處理中的輸入參數外,他也不支持輸出參數。默認情況下,EXEC把查詢的輸出返回給調用者。
例如下面代碼返回Orders表中所有的記錄數 DECLARE @sql NVARCHAR(MAX) SET @sql = 'SELECT COUNT(ORDERID) FROM Orders'; EXEC(@sql); 然而,如果你要把輸出返回給調用批處理中的變量,事情就沒有那么簡單了。為此,你必須使用INSERT EXEC語法把輸出插入到一個目標表中,然后從這表中獲取值后賦給該變量,就像這樣:代碼 DECLARE @sql NVARCHAR(MAX),@RecordCount INT SET @sql = 'SELECT COUNT(ORDERID) FROM Orders'; CREATE TABLE #T(TID INT); INSERT INTO #T EXEC(@sql); SET @RecordCount = (SELECT TID FROM #T) SELECT @RecordCount DROP TABLE #*_executesql的使用 sp_executesql命令在SQL Server中引入的比EXEC命令晚一些,它主要為重用執行計劃提供更好的支持。
為了和EXEC作一個鮮明的對比,我們看看如果用代碼1的代碼,把EXEC換成sp_executesql,看看是否得到我們所期望的結果 代碼 DECLARE @TableName VARCHAR(50),@sql NVARCHAR(MAX),@OrderID INT ,@sql2 NVARCHAR(MAX); SET @TableName = 'Orders '; SET @OrderID = 10251; SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) + ' WHERE OrderID = '+CAST(@OrderID AS VARCHAR(50)) + ' ORDER BY ORDERID DESC' EXEC sp_executesql @sql 注意最后一行;事實證明可以運行;sp_executesql提供接口 sp_executesql命令比EXEC命令更靈活,因為它提供一個接口,該接口及支持輸入參數也支持輸出參數。這功能使你可以創建帶參數的查詢字符串,這樣就可以比EXEC更好的重用執行計劃,sp_executesql的構成與存儲過程非常相似,不同之處在于你是動態構建代碼。
它的構成包括:代碼快,參數聲明部分,參數賦值部分。說了這么多,還是看看它的語法:EXEC sp_executesql @stmt=
sql server不能執行如何查詢
企業管理器中打開表時提示: “不能執行查詢,因為一些文件丟失或未注冊。
再次運行安裝程序確保要求的文件已注冊” 解決方法: regsvr32 "C:\Program Files\Common Files\System\Ole DB\*" regsvr32 "C:\Program Files\Common Files\System\Ado\*" regsvr32 "C:\Program files\Common Files\System\Ole Db\*" regsvr32 "C:\windows\System32\*" 注冊這些文件就ok 了 只要重啟sql 服務就搞定了。