常用SQL語句有哪些,大型網站選擇什么樣的數據庫比較好?拜托各位
1. 查看數據庫的版本 select @@version 2. 查看數據庫所在機器操作系統參數 exec master..xp_msver 3. 查看數據庫啟動的參數 sp_configure 4. 查看數據庫啟動時間 select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1 查看數據庫服務器名和實例名 print 'Server Name。
:' + convert(varchar(30),@@SERVERNAME) print 'Instance。
:' + convert(varchar(30),@@SERVICENAME) 5. 查看所有數據庫名稱及大小 sp_helpdb 重命名數據庫用的SQL sp_renamedb 'old_dbname', 'new_dbname' 6. 查看所有數據庫用戶登錄信息 sp_helplogins 查看所有數據庫用戶所屬的角色信息 sp_helpsrvrolemember 修復遷移服務器時孤立用戶時,可以用的fix_orphan_user腳本或者LoneUser過程 更改某個數據對象的用戶屬主 sp_changeobjectowner [@objectname =] 'object', [@newowner =] 'owner' 注意:更改對象名的任一部分都可能破壞腳本和存儲過程。 把一臺服務器上的數據庫用戶登錄信息備份出來可以用add_login_to_aserver腳本 查看某數據庫下,對象級用戶權限 sp_helprotect 7. 查看鏈接服務器 sp_helplinkedsrvlogin 查看遠端數據庫用戶登錄信息 sp_helpremotelogin 8.查看某數據庫下某個數據對象的大小 sp_spaceused @objname 還可以用sp_toptables過程看最大的N(默認為50)個表 查看某數據庫下某個數據對象的索引信息 sp_helpindex @objname 還可以用SP_NChelpindex過程查看更詳細的索引情況 SP_NChelpindex @objname clustered索引是把記錄按物理順序排列的,索引占的空間比較少。
對鍵值DML操作十分頻繁的表我建議用非clustered索引和約束,fillfactor參數都用默認值。 查看某數據庫下某個數據對象的的約束信息 sp_helpconstraint @objname 9.查看數據庫里所有的存儲過程和函數 use @database_name sp_stored_procedures 查看存儲過程和函數的源代碼 sp_helptext '@procedure_name' 查看包含某個字符串@str的數據對象名稱 select distinct object_name(id) from syscomments where text like '%@str%' 創建加密的存儲過程或函數在AS前面加WITH ENCRYPTION參數 解密加密過的存儲過程和函數可以用sp_decrypt過程 10.查看數據庫里用戶和進程的信息 sp_who 查看SQL Server數據庫里的活動用戶和進程的信息 sp_who 'active' 查看SQL Server數據庫里的鎖的情況 sp_lock 進程號1--50是SQL Server系統內部用的,進程號大于50的才是用戶的連接進程. spid是進程編號,dbid是數據庫編號,objid是數據對象編號 查看進程正在執行的SQL語句 dbcc inputbuffer () 推薦大家用經過改進后的sp_who3過程可以直接看到進程運行的SQL語句 sp_who3 檢查死鎖用sp_who_lock過程 sp_who_lock 11.查看和收縮數據庫日志文件的方法 查看所有數據庫日志文件大小 dbcc sqlperf(logspace) 如果某些日志文件較大,收縮簡單恢復模式數據庫日志,收縮后@database_name_log的大小單位為M backup log @database_name with no_log dbcc shrinkfile (@database_name_log, 5) 12.分析SQL Server SQL 語句的方法: set statistics time {on | off} set statistics io {on | off} 圖形方式顯示查詢執行計劃 在查詢分析器->查詢->顯示估計的評估計劃(D)-Ctrl-L 或者點擊工具欄里的圖形 文本方式顯示查詢執行計劃 set showplan_all {on | off} set showplan_text { on | off } set statistics profile { on | off } 13.出現不一致錯誤時,NT事件查看器里出3624號錯誤,修復數據庫的方法 先注釋掉應用程序里引用的出現不一致性錯誤的表,然后在備份或其它機器上先恢復然后做修復操作 alter database [@error_database_name] set single_user 修復出現不一致錯誤的表 dbcc checktable('@error_table_name',repair_allow_data_loss) 或者可惜選擇修復出現不一致錯誤的小型數據庫名 dbcc checkdb('@error_database_name',repair_allow_data_loss) alter database [@error_database_name] set multi_user CHECKDB 有3個參數: repair_allow_data_loss 包括對行和頁進行分配和取消分配以改正分配錯誤、結構行或頁的錯誤,以及刪除已損壞的文本對象,這些修復可能會導致一些數據丟失。
修復操作可以在用戶事務下完成以允許用戶回滾所做的更改。 如果回滾修復,則數據庫仍會含有錯誤,應該從備份進行恢復。
如果由于所提供修復等級的緣故遺漏某個錯誤的修復,則將遺漏任何取決于該修復的修復。 修復完成后,請備份數據庫。
repai*_**st 進行小的、不耗時的修復操作,如修復非聚集索引中的附加鍵。 這些修復可以很快完成,并且不會有丟失數據的危險。
repair_rebuild 執行由 repai*_**st 完成的所有修復,包括需要較長時間的修復(如重建索引)。 執行這些修復時不會有丟失數據的危險。
添加、刪除、修改使用*e(Sql)命令執行操作 ╔--------------------╗ ☆ 數據記錄篩選 ☆ ╚--------------------╝ 注意:單雙引號的用法可能有誤(沒有測式) Sql = "Select Distinct 字段名 From 數據表" Distinct函數,查詢數據庫存表內不重復的記錄 Sql = "Select Count(*) From 數據表 where 字段名1>#18:0:0# 。
計算機三級數據庫SQL語句有什么
1、1=1,1=2的使用,在SQL語句組合時用的較多 “where 1=1” 是表示選擇全部 “where 1=2”全部不選, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere end else begin set @strSQL = 'select count(*) as Total from [' + @tblName + ']' end 我們可以直接寫成 set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 安定 '+ @strWhere 2、收縮數據庫 --重建索引 DBCC REINDEX DBCC INDEXDEFRAG --收縮數據和日志 DBCC SHRINKDB DBCC SHRINKFILE 3、壓縮數據庫 dbcc shrinkdatabase(dbname) 4、轉移數據庫給新用戶以已存在用戶權限 exec sp_change_users_login 'update_one','newname','oldname' go 5、檢查備份集 RESTORE VERIFYONLY from disk='E:\dvbbs。
bak' 6、修復數據庫 ALTER DATABASE [dvbbs] SET SINGLE_USER GO DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK GO ALTER DATABASE [dvbbs] SET MULTI_USER GO 7、日志清除 SET NOCOUNT ON DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT USE tablename -- 要操作的數據庫名 SELECT @LogicalFileName = 'tablename_log', -- 日志文件名 @MaxMinutes = 10, -- Limit on time allowed to wrap log。 @NewSize = 1 -- 你想設定的日志文件的大小(M) Setup / initialize DECLARE @OriginalSize int SELECT @OriginalSize = size FROM sysfiles WHERE name = @LogicalFileName SELECT 'Original Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB' FROM sysfiles WHERE name = @LogicalFileName CREATE TABLE DummyTrans (DummyColumn char (8000) not null) DECLARE @Counter INT, @StartTime DATETIME, @TruncLog VARCHAR(255) SELECT @StartTime = GETDATE(), @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY' DBCC SHRINKFILE (@LogicalFileName, @NewSize) EXEC (@TruncLog) -- Wrap the log if necessary。
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName) AND (@OriginalSize * 8 /1024) > @NewSize BEGIN -- Outer loop。 SELECT @Counter = 0 WHILE ((@Counter。
數據庫中常用的sql語句有哪些
1.檢索數據 SELECT prod_nameFROM Products;#檢索單列 SELECT prod_id, prod_name, prod_priceFROMProducts;#檢索多列 SELECT * FROM Products;#檢索所有列 SELECT DISTINCTvend_id FROMProducts;#檢索不同的值 SELECTprod_name FROM Products LIMIT 5;#返回不超過5行數據 SELECTprod_name FROM Products LIMIT 5 OFFSET 5;#返回從第5行起的5行數據。
LIMIT指定返回的行數,LIMIT帶的OFFSET指定從哪兒開始。2.排序檢索數據 SELECTprod_name FROMProducts ORDER BYprod_name;#排序數據 SELECT prod_id, prod_price, prod_name FROMProducts ORDER BY prod_price, prod_name;#按多個列排序 SELECT prod_id, prod_price, prod_name FROMProducts ORDER BY 2, 3;#按列位置排序,第三行表示先按prod_price, 再按prod_name進行排序 SELECT prod_id, prod_price, prod_name FROMProducts ORDER BY prod_priceDESC, prod_name;#prod_price列以降序排序,而prod_name列(在每個價格內)仍然按標準的升序排序3.過濾數據 SELECT prod_name, prod_price FROMProducts WHERE prod_price#檢查單個值 SELECT prod_name, prod_price FROMProducts WHERE vend_id 'DLL01';#不匹配檢查 SELECT prod_name, prod_price FROMProducts WHERE prod_priceBETWEEN 5 AND 10;#范圍值檢查 SELECT cust_name FROMCUSTOMERS WHERE cust_emailIS NULL;#空值檢查4.高級數據過濾 SELECTprod_id, prod_price, prod_name FROMProducts WHERE vend_id = 'DLL01'ANDprod_price #AND操作符 SELECTprod_name, prod_price FROMProducts WHEREvend_id='DLL01' OR vend_id='BRS01';#OR操作符 SELECTprod_name, prod_price FROMProducts WHERE (vend_id = 'DLL01'ORvend_id='BRS01') ANDprod_price >= 10;#求值順序 AND的優先級高于OR SELECTprod_name, prod_price FROMProducts WHERE vend_idIN ('DLL01','BRS01') ORDER BY prod_name;#IN操作符 SELECT prod_name FROMProducts WHERE NOTvend_id = 'DLL01' ORDER BY prod_name;#NOT 操作符 SELECT prod_name FROMProducts WHEREvend_id 'DLL01' ORDER BY prod_name;#NOT 操作符。
存儲過程與SQL語句如何選擇
數據庫擅長存儲與索引,在目前的互聯網系統架構中,服務器的擴展要比存儲的擴展更簡單,
需要考慮系統可能的瓶頸在服務器還是數據存儲,存儲過程有它的優點,應該在開發中合理的選用。
應用存儲過程的優點
存儲過程是一組預先創建并用指定的名稱存儲在數據庫服務器上的 SQL 語句,將使用比較頻繁或者比較復雜的操作,預先用 SQL 語句寫好并存儲起來,以后當需要數據庫提供相同的服務時,只需再次執行該存儲過程。
1.具有更好的性能
存儲過程是預編譯的,只在創建時進行編譯,以后每次執行存儲過程都不需再重新編譯,而一般 SQL 語句每執行一次就編譯一次,因此使用存儲過程可以提高數據庫執行速度。
2.功能實現更加靈活
存儲過程中可以應用條件判斷和游標等語句,有很強的靈活性,可以直接調用數據庫的一些內置函數,完成復雜的判斷和較復雜的運算。
3.減少網絡傳輸
復雜的業務邏輯需要多條 SQL 語句,當客戶機和服務器之間的操作很多時,將產生大量的網絡傳輸。如果將這些操作放在一個存儲過程中,那么客戶機和服務器之間的網絡傳輸就會減少,降低了網絡負載。
4.具有更好的安全性
(1)數據庫管理人員可以更好的進行權限控制,存儲過程可以屏蔽對底層數據庫對象的直接訪問,使用 EXECUTE 權限調用存儲過程,無需擁有訪問底層數據庫對象的顯式權限。
(2)在通過網絡調用過程時,只有對執行過程的調用是可見的。無法看到表和數據庫對象名稱,不能嵌入SQL 語句,有助于避免 SQL 注入攻擊。
存儲過程的弊端
1.架構不清晰,不夠面向對象
存儲過程不太適合面向對象的設計,無法采用面向對象的方式將業務邏輯進行封裝,業務邏輯在存儲層實現,增加了業務和存儲的耦合,代碼的可讀性也會降低,
2.開發和維護要求比較高
存儲過程的編寫直接依賴于開發人員,如果業務邏輯改動較多,需要頻繁直接操作數據庫,大量業務降維到數據庫,很多異常不能在代碼中捕獲,出現問題較難排查,需要數據庫管理人員的幫助。
3.可移植性差
過多的使用存儲過程會降低系統的移植性。在對存儲進行相關擴展時,可能會增加一些額外的工作。
存儲過程與SQL語句如何抉擇
架構設計沒有絕對,只有在當前的場景下最合適的。
普通的項目開發中,不建議大量使用存儲過程,對比SQL語句,存儲過程適用于業務邏輯復雜,比較耗時,同時請求量較少的操作,例如后臺大批量查詢、定期更新等。
(1)當一個事務涉及到多個SQL語句時或者涉及到對多個表的操作時可以考慮應用存儲過程
(2)在一個事務的完成需要很復雜的商業邏輯時可以考慮應用存儲過程
(3)比較復雜的統計和匯總可以考慮應用后臺存儲過程
轉載請注明出處華閱文章網 » 選擇數據庫sql語句