常用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 @objname9.查看數據庫里所有的存儲過程和函數 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 = "。
如何使用SQL查詢語句
一、 簡單查詢 簡單的Transact-SQL查詢只包括選擇列表、FROM子句和WHERE子句。
它們分別說明所查詢列、查詢的表或視圖、以及搜索條件等。例如,下面的語句查詢testtable表中姓名為“張三”的nickname字段和email字段。
SELECT nickname,emailFROM testtableWHERE name='張三'(一) 選擇列表選擇列表(select_list)指出所查詢列,它可以是一組列名列表、星號、表達式、變量(包括局部變量和全局變量)等構成。 1、選擇所有列例如,下面語句顯示testtable表中所有列的數據:SELECT *FROM testtable 2、選擇部分列并指定它們的顯示次序查詢結果集合中數據的排列順序與選擇列表中所指定的列名排列順序相同。
例如:SELECT nickname,emailFROM testtable 3、更改列標題在選擇列表中,可重新指定列標題。定義格式為:列標題=列名列名 列標題如果指定的列標題不是標準的標識符格式時,應使用引號定界符,例如,下列語句使用漢字顯示列標題:SELECT 昵稱=nickname,電子郵件=emailFROM testtable 4、刪除重復行SELECT語句中使用ALL或DISTINCT選項來顯示表中符合條件的所有行或刪除其中重復的數據行,默認為ALL。
使用DISTINCT選項時,對于所有重復的數據行在SELECT返回的結果集合中只保留一行。 5、限制返回的行數使用TOP n [PERCENT]選項限制返回的數據行數,TOP n說明返回n行,而TOP n PERCENT時,說明n是表示一百分數,指定返回的行數等于總行數的百分之幾。
例如:SELECT TOP 2 *FROM testtableSELECT TOP 20 PERCENT *FROM testtable(二)FROM子句 FROM子句指定SELECT語句查詢及與查詢相關的表或視圖。在FROM子句中最多可指定256個表或視圖,它們之間用逗號分隔。
在FROM子句同時指定多個表或視圖時,如果選擇列表中存在同名列,這時應使用對象名限定這些列所屬的表或視圖。例如在usertable和citytable表中同時存在cityid列,在查詢兩個表中的cityid時應使用下面語句格式加以限定:SELECT username,citytable。
cityidFROM usertable,citytableWHERE usertable。cityid=citytable。
cityid在FROM子句中可用以下兩種格式為表或視圖指定別名:表名 as 別名表名 別名(二) FROM子句FROM子句指定SELECT語句查詢及與查詢相關的表或視圖。 在FROM子句中最多可指定256個表或視圖,它們之間用逗號分隔。
在FROM子句同時指定多個表或視圖時,如果選擇列表中存在同名列,這時應使用對象名限定這些列所屬的表或視圖。例如在usertable和citytable表中同時存在cityid列,在查詢兩個表中的cityid時應使用下面語句格式加以限定:SELECT username,citytable。
cityidFROM usertable,citytableWHERE usertable。cityid=citytable。
cityid在FROM子句中可用以下兩種格式為表或視圖指定別名:表名 as 別名表名 別名例如上面語句可用表的別名格式表示為:SELECT username,b。 cityidFROM usertable a,citytable bWHERE a。
cityid=b。cityidSELECT不僅能從表或視圖中檢索數據,它還能夠從其它查詢語句所返回的結果集合中查詢數據。
例如:SELECT a。au_fname+a。
au_lnameFROM authors a,titleauthor ta(SELECT title_id,titleFROM titlesWHERE ytd_sales>10000) AS tWHERE a。au_id=ta。
au_idAND ta。 title_id=t。
title_id此例中,將SELECT返回的結果集合給予一別名t,然后再從中檢索數據。
誰能教我幾句最常用的SQL語句
--語 句 功 能 --數據操作 SELECT --從數據庫表中檢索數據行和列 INSERT --向數據庫表添加新數據行 DELETE --從數據庫表中刪除數據行 UPDATE --更新數據庫表中的數據 --數據定義 CREATE TABLE --創建一個數據庫表 DROP TABLE --從數據庫中刪除表 ALTER TABLE --修改數據庫表結構 CREATE VIEW --創建一個視圖 DROP VIEW --從數據庫中刪除視圖 CREATE INDEX --為數據庫表創建一個索引 DROP INDEX --從數據庫中刪除索引 CREATE PROCEDURE --創建一個存儲過程 DROP PROCEDURE --從數據庫中刪除存儲過程 CREATE TRIGGER --創建一個觸發器 DROP TRIGGER --從數據庫中刪除觸發器 CREATE SCHEMA --向數據庫添加一個新模式 DROP SCHEMA --從數據庫中刪除一個模式 CREATE DOMAIN --創建一個數據值域 ALTER DOMAIN --改變域定義 DROP DOMAIN --從數據庫中刪除一個域 --數據控制 GRANT --授予用戶訪問權限 DENY --拒絕用戶訪問 REVOKE --解除用戶訪問權限 --事務控制 COMMIT --結束當前事務 ROLLBACK --中止當前事務 SET TRANSACTION --定義當前事務數據訪問特征 --程序化SQL DECLARE --為查詢設定游標 EXPLAN --為查詢描述數據訪問計劃 OPEN --檢索查詢結果打開一個游標 FETCH --檢索一行查詢結果 CLOSE --關閉游標 PREPARE --為動態執行準備SQL 語句 EXECUTE --動態地執行SQL 語句 DESCRIBE --描述準備好的查詢 ---局部變量 declare @id char(10) --set @id = '10010001' select @id = '10010001' ---全局變量 ---必須以@@開頭 --IF ELSE declare @x int @y int @z int select @x = 1 @y = 2 @z=3 if @x > @y print 'x > y' --打印字符串'x > y' else if @y > @z print 'y > z' else print 'z > y' --CASE use pangu update employee set e_wage = case when job_level = '1' then e_wage*1。
08 when job_level = '2' then e_wage*1。07 when job_level = '3' then e_wage*1。
06 else e_wage*1。 05 end --WHILE CONTINUE BREAK declare @x int @y int @c int select @x = 1 @y=1 while @x =表達式的最小整數返回的數據類型與表達式相同可為 --INTEGER/MONEY/REAL/FLOAT 類型 FLOOR(numeric_expression) --返回 AS [ length ]) CONVERT() 函數語法如下 CONVERT() ([ length ], [, style]) select cast(100+99 as char) convert(varchar(12), getdate()) 運行結果如下 ------------------------------ ------------ 199 Jan 15 2000 ----日期函數---- DAY() --函數返回date_expression 中的日期值 MONTH() --函數返回date_expression 中的月份值 YEAR() --函數返回date_expression 中的年份值 DATEADD( , ,) --函數返回指定日期date 加上指定的額外日期間隔number 產生的新日期 DATEDIFF( , ,) --函數返回兩個指定日期在datepart 方面的不同之處 DATENAME( , ) --函數以字符串的形式返回日期的指定部分 DATEPART( , ) --函數以整數值的形式返回日期的指定部分 GETDATE() --函數以DATETIME 的缺省格式返回系統當前的日期和時間 ----系統函數---- APP_NAME() --函數返回當前執行的應用程序的名稱 COALESCE() --函數返回眾多表達式中第一個非NULL 表達式的值 COL_LENGTH(, ) --函數返回表中指定字段的長度值 COL_NAME(, ) --函數返回表中指定字段的名稱即列名 DATALENGTH() --函數返回數據表達式的數據的實際長度 DB_ID(['database_name']) --函數返回數據庫的編號 DB_NAME(database_id) --函數返回數據庫的名稱 HOST_ID() --函數返回服務器端計算機的名稱 HOST_NAME() --函數返回服務器端計算機的名稱 IDENTITY([, seed increment]) [AS column_name]) --IDENTITY() 函數只在SELECT INTO 語句中使用用于插入一個identity column列到新表中 /*select identity(int, 1, 1) as column_name into newtable from oldtable*/ ISDATE() --函數判斷所給定的表達式是否為合理日期 ISNULL(, ) --函數將表達式中的NULL 值用指定值替換 ISNUMERIC() --函數判斷所給定的表達式是否為合理的數值 NEWID() --函數返回一個UNIQUEIDENTIFIER 類型的數值 NULLIF(, ) --NULLIF 函數在expression1 與expression2 相等時返回NULL 值若不相等時則返回expression1 的值 。
數據庫得一些常用語句及其使用方法
數據的操作(增刪改查)
1.插入數據:
(1)單行INSERT語句
INSERT INTO [表名] (字段1,字段2) VALUES (100,'*')
(2)多行INSERT語句
INSERT INTO [表名] (字段1,字段2) SELECT (字段1,字段2) FROM [表名2] WHERE [條件]
2.刪除數據:
DELETE FROM [表名] WHERE [字段名]>100
更新數據:
UPDATE [表名] SET [字段1] = 200,[字段2] = '*' WHERE [字段三] =
\'HAIWA\'
3.查詢數據:
select (字段1,字段2) from [表名] where [條件] order by [字段] desc;
4.刪除表:
Drop table [表名]
5.新增字段:
ALTER TABLE [表名] ADD [字段名] NVARCHAR (50) NULL
6.刪除字段:
ALTER TABLE [表名] DROP COLUMN [字段名]
7.修改字段:
ALTER TABLE [表名] ALTER COLUMN [字段名] NVARCHAR (50) NULL
SQL 數據庫常用命令及語法舉例
SQL常用語句一覽 sp_password null,'新密碼','sa' 修改數據庫密碼(1)數據記錄篩選: sql="select * from 數據表 where 字段名=字段值 orderby 字段名 [desc] " sql="select * from 數據表 where 字段名 like '%字段值%' orderby 字段名 [desc]" sql="select top10 * from 數據表 where 字段名 orderby 字段名[desc]" sql="select * from 數據表 where 字段名 in('值1','值2','值3')" sql="select * from 數據表 where 字段名 between 值1 and 值 2" (2)更新數據記錄: sql="update 數據表 set 字段名=字段值 where 條件表達式" sql="update 數據表 set 字段1=值1,字段2=值2……字段n=值n where 條件表達式" (3)刪除數據記錄: sql="delete from 數據表 where 條件表達式" sql="delete from 數據表 "(將數據表所有記錄刪除) (4)添加數據記錄: sql="insert into 數據表(字段1,字段2,字段3…) values(值1,值2,值3…)" sql="insert into 目標數據表 select * from 源數據表"(把源數據表的記錄添加到目標數據表) (5)數據記錄統計函數: AVG(字段名)得出一個表格欄平均值 COUNT(*|字段名)對數據行數的統計或對某一欄有值的數據行數統計 MAX(字段名)取得一個表格欄最大的值 MIN(字段名)取得一個表格欄最小的值 SUM(字段名)把數據欄的值相加 引用以上函數的方法: sql="selectsum(字段名)as別名from數據表where條件表達式" setrs=*(sql) 用rs("別名")獲取統的計值,其它函數運用同上。
(5)數據表的建立和刪除: CREATETABLE數據表名稱(字段1類型1(長度),字段2類型2(長度)……) 例:CREATETABLEtab01 (namevarchar (50), datetimedefaultnow ()) DROPTABLE數據表名稱(永久性刪除一個數據表) 4.記錄集對象的方法: *xt將記錄指針從當前的位置向下移一行 *evious將記錄指針從當前的位置向上移一行 *rst將記錄指針移到數據表第一行 *st將記錄指針移到數據表最后一行 *teposition=N將記錄指針移到數據表第N行 *tepage=N將記錄指針移到第N頁的第一行 *ze=N設置每頁為N條記錄 *unt根據pagesize的設置返回總頁數 *count返回記錄總數 *返回記錄指針是否超出數據表首端,true表示是,false為否 *返回記錄指針是否超出數據表末端,true表示是,false為否 *刪除當前記錄,但記錄指針不會向下移動 *添加記錄到數據表末端 *更新數據表記錄 SQL語句的添加、刪除、修改雖然有如下很多種方法,但在使用過程中還是不夠用,不知是否有高手把更多靈活的使用方法貢獻出來? 添加、刪除、修改使用*e(Sql)命令執行操作 ╔----------------╗ ☆ 數據記錄篩選 ☆ ╚----------------╝ 注意:單雙引號的用法可能有誤(沒有測式) Sql = "Select Distinct 字段名 From 數據表" Distinct函數,查詢數據庫存表內不重復的記錄 Sql = "Select Count(*) From 數據表 where 字段名1>#18:0:0# and 字段名1< #19:00# " count函數,查詢數庫表內有多少條記錄,“字段名1”是指同一字段 例: set rs=*e("select count(id) as idnum from news") * rs("idnum") sql="select * from 數據表 where 字段名 between 值1 and 值2" Sql="select * from 數據表 where 字段名 between #2003-8-10# and #2003-8-12#" 在日期類數值為2003-8-10 19:55:08 的字段里查找2003-8-10至2003-8-12的所有記錄,而不管是幾點幾分。 select * from tb_name where datetime between #2003-8-10# and #2003-8-12# 字段里面的數據格式為:2003-8-10 19:55:08,通過sql查出2003-8-10至2003-8-12的所有紀錄,而不管是幾點幾分。
Sql="select * from 數據表 where 字段名=字段值 order by 字段名 [desc]" Sql="select * from 數據表 where 字段名 like '%字段值%' order by 字段名 [desc]" 模糊查詢 Sql="select top 10 * from 數據表 where 字段名 order by 字段名 [desc]" 查找數據庫中前10記錄 Sql="select top n * form 數據表 order by newid()" 隨機取出數據庫中的若干條記錄的方法 top n,n就是要取出的記錄數 Sql="select * from 數據表 where 字段名 in ('值1','值2','值3')" ╔----------------╗ ☆ 添加數據記錄 ☆ ╚----------------╝ sql="insert into 數據表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)" sql="insert into 數據表 valuess (值1,值2,值3 …)" 不指定具體字段名表示將按照數據表中字段的順序,依次添加 sql="insert into 目標數據表 select * from 源數據表" 把源數據表的記錄添加到目標數據表 ╔----------------╗ ☆ 更新數據記錄 ☆ ╚----------------╝ Sql="update 數據表 set 字段名=字段值 where 條件表達式" Sql="update 數據表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達式" Sql="update 數據表 set 字段1=值1,字段2=值2 …… 字段n=值n " 沒有條件則更新整個數據表中的指定字段值 ╔----------------╗ ☆ 刪除數據記錄 ☆ ╚----------------╝ Sql="delete from 。
如何使用SQL語言實現各種數據庫查詢操作
我們在數據庫中創建名為Store_Information的如下數據表。
Store_Information Store_Name Sales Date Los Angeles $1500 Jan-10-2000 San Diego $250 Jan-11-2000 Los Angeles $300 Jan-12-2000 Boston $700 Jan-12-2000 SQL語言中用于數據庫查詢的最簡單的命令就是SELECT…FROM,語法格式為: SELECT "column_name" FROM "table_name" 例如,如果我們希望查詢Store_Information數據表中所有的商店名稱時,可以使用如下命令: SELECT store_name FROM Store_Information 查詢結果顯示為: Store_Name Los Angeles San Diego Los Angeles Boston 如果用戶希望一次查詢多個字段,可以將所要查詢的字段名稱依次加入SELECT關鍵字之后,中間用“,”隔開即可。 DISTINCT SELECT關鍵字支持用戶查詢數據表中指定字段的所有數據,但是這樣有時就會不可避免的出現重復信息。
如果用戶希望只查詢那些具有不同記錄值的信息的話,可以使用SQL語言的DISTINCT關鍵字。語法格式如下: SELECT DISTINCT "column_name" FROM "table_name" 例如,我們可以使用以下命令查詢Store_Information數據表具有不同記錄值的所有記錄。
常用的SQL語句語法有哪些
1。
INSERT (往數據表里插入記錄的語句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSERT INTO 表名(字段名1, 字段名2, ……) SELECT 字段名1, 字段名2, …… FROM 另外的表名; 字符串類型的字段值必須用單引號括起來, 例如: 'GOOD DAY' 如果字段值里包含單引號' 需要進行字符串轉換, 我們把它替換成兩個單引號''。 字符串類型的字段值超過定義的長度會出錯, 最好在插入前進行長度校驗。
日期字段的字段值可以用當前數據庫的系統時間SYSDATE, 精確到秒 或者用字符串轉換成日期型函數TO_DATE('2001-08-01','YYYY-MM-DD') TO_DATE()還有很多種日期格式, 可以參看ORACLE DOC。 年-月-日 小時:分鐘:秒 的格式YYYY-MM-DD HH24:MI:SS INSERT時最大可操作的字符串長度小于等于4000個單字節, 如果要插入更長的字符串, 請考慮字段用CLOB類型, 方法借用ORACLE里自帶的DBMS_LOB程序包。
INSERT時如果要用到從1開始自動增長的序列號, 應該先建立一個序列號 CREATE SEQUENCE 序列號的名稱 (最好是表名+序列號標記) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE; 其中最大的值按字段的長度來定, 如果定義的自動增長的序列號 NUMBER (6) , 最大值為999999 INSERT 語句插入這個字段值為: 序列號的名稱。 NEXTVAL 2。
DELETE (刪除數據表里記錄的語句) DELETE FROM表名 WHERE 條件; 注意:刪除記錄并不能釋放ORACLE里被占用的數據塊表空間。 它只把那些被刪除的數據塊標成unused。
如果確實要刪除一個大表里的全部記錄, 可以用 TRUNCATE 命令, 它可以釋放占用的數據塊表空間 TRUNCATE TABLE 表名; 此操作不可回退。 3。
UPDATE (修改數據表里記錄的語句) UPDATE表名 SET 字段名1=值1, 字段名2=值2, …… WHERE 條件; 如果修改的值N沒有賦值或定義時, 將把原來的記錄內容清為NULL, 最好在修改前進行非空校驗; 值N超過定義的長度會出錯, 最好在插入前進行長度校驗。 。
注意事項: A。 以上SQL語句對表都加上了行級鎖,確認完成后, 必須加上事物處理結束的命令 COMMIT 才能正式生效,否則改變不一定寫入數據庫里。
如果想撤回這些操作, 可以用命令 ROLLBACK 復原。