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*plus命令有哪些
1。
執行一個SQL腳本文件 SQL>start file_name SQL>@ file_name 我們可以將多條sql語句保存在一個文本文件中,這樣當要執行這個文件中的所有的sql語句時,用上面的任一命令即可,這類似于dos中的批處理。 2。
對當前的輸入進行編輯 SQL>edit 3。 重新運行上一次運行的sql語句 SQL>/ 4。
將顯示的內容輸出到指定文件 SQL> SPOOL file_name 在屏幕上的所有內容都包含在該文件中,包括你輸入的sql語句。 5。
關閉spool輸出 SQL> SPOOL OFF 只有關閉spool輸出,才會在輸出文件中看到輸出的內容。 6.顯示一個表的結構 SQL> desc table_name 7。
COL命令: 主要格式化列的顯示形式。 該命令有許多選項,具體如下: COL[UMN] [{ column|expr} [ option 。
。
]] Option選項可以是如下的子句: 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]。
求助幾個簡單的sql的命令語句
奇怪,第一種可以,執行第二種方法提示無效:select * from *消息 208,級別 16,狀態 1,第 1 行對象名 '*' 無效。
調試了一下,原來還需要加多一個點,就正常了。注:列增加后將不能刪除。
DB2中列加上后數據類型也不能改變,唯一能改變的是增加varchar類型的長度。注:索引是不可更改的,想更改必須刪除重新建。
查找:select * from table1 where field1 like '%value1%' ---like的語法很精妙,查資料!UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)并消去表中任何重復行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。
兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。EXCEPT運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復行而派生出一個結果表。
當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。INTERSECT運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復行而派生出一個結果表。
當 ALL隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復行。注:使用運算詞的幾個查詢結果行必須是一致的。
左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。
全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。一張表,一旦分組 完成后,查詢后只能得到組相關的信息。
在selecte統計函數中的字段,不能和普通的字段放在一起;分離數據庫: sp_detach_db;附加數據庫:sp_attach_db 后接表明,附加需要完整的路徑名下列語句部分是Mssql語句,不可以在access中使用。DDL—數據定義語言(CREATE,ALTER,DROP,DECLARE)DML—數據操縱語言(SELECT,DELETE,UPDATE,INSERT)DCL—數據控制語言(GRANT,REVOKE,COMMIT,ROLLBACK)注:列增加后將不能刪除。
DB2中列加上后數據類型也不能改變,唯一能改變的是增加varchar類型的長度。注:索引是不可更改的,想更改必須刪除重新建。
查找:select * from table1 where field1 like '%value1%' ---like的語法很精妙,查資料!UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)并消去表中任何重復行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。
兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復行而派生出一個結果表。
當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復行而派生出一個結果表。
當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復行。注:使用運算詞的幾個查詢結果行必須是一致的。
左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。
全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。其次,大家來看一些不錯的sql語句10、說明:兩張關聯表,刪除主表中已經在副表中沒有的信息22、說明:列示type、vender、pcs字段,以type字段排列,case可以方便地實現多重選擇,類似select 中的case。
隨機選擇數據庫記錄的方法(使用Randomize函數,通過SQL語句實現)對存儲在數據庫中的數據來說,隨機數特性能給出上面的效果,但它們可能太慢了些。你不能要求ASP“找個隨機數”然后打印出來。
實際上常見的解決方案是建立如下所示的循環:這很容易理解。首先,你取出1到500范圍之內的一個隨機數(假設500就是數據庫內記錄的總數)。
然后,你遍歷每一記錄來測試ID 的值、檢查其是否匹配RNumber。滿足條件的話就執行由THEN 關鍵字開始的那一塊代碼。
假如你的RNumber 等于495,那么要循環一遍數據庫花的時間可就長了。雖然500這個數字看起來大了些,但相比更為穩固的企業解決方案這還是個小型數據庫了,后者通常在一個數據庫內就包含了成千上萬條記錄。
這時候不就死定了?采用SQL,你就可以很快地找出準確的記錄并且打開一個只包含該記錄的recordset,如下所示:不必寫出RNumber 和ID,你只需要檢查匹配情況即可。只要你對以上代碼的工作滿意,你自可按需操作“隨機”記錄。
Recordset沒有包含其他內容,因此你很快就能找到你需要的記錄這樣就大大降低了處理時間。現在你下定決心要榨干Random 函數的最后一滴油,那么你可能會一次取出多條隨機記錄或者想采用一定隨機范圍內的記錄。
把上面的標準Random 示例擴展一下就可以用SQL應對上面兩種情況了。為了取出幾條隨機選擇的記錄并存放在同一recordset內,你可以存儲三個隨機數,然后查詢數據庫獲得匹配這些數字的記錄:假如你想選出10條記錄(也許是每次頁面裝載時。
SQL語句UPDATE指令是什么
我們有時候可能會需要修改表格中的資料。
在這個時候,我們就需要用到 UPDATE 指令。這個指令的語法是: UPDATE "表格名" SET "欄位1" = [新值] WHERE {條件} 最容易了解這個語法的方式是透過一個例子。
假設我們有以下的表格: Store_Information 表格 store_nameSalesDate Los Angeles$1500Jan-05-1999 San Diego$250Jan-07-1999 Los Angeles$300Jan-08-1999 Boston$700Jan-08-1999 我們發現說 Los Angeles 在 01/08/1999 的營業額實際上是 $500,而不是表格中所儲存的 $300,因此我們用以下的 SQL 來修改那一筆資料: UPDATE Store_Information SET Sales = 500 WHERE store_name = "Los Angeles" AND Date = "Jan-08-1999" 現在表格的內容變成: Store_Information 表格 store_nameSalesDate Los Angeles$1500Jan-05-1999 San Diego$250Jan-07-1999 Los Angeles$500Jan-08-1999 Boston$700Jan-08-1999 在這個例子中,只有一筆資料符合 WHERE 子句中的條件。 如果有多筆資料符合條件的話,每一筆符合條件的資料都會被修改的。
我們也可以同時修改好幾個欄位。這語法如下: UPDATE "表格" SET "欄位1" = [值1], "欄位2" = [值2] WHERE {條件}。
sql命令語句
update 入貨單 set 貨物名稱=alltrim(*),進貨價格=alltrim(*),批發價=alltrim(*),零售價=alltrim(*) where 貨物名稱==alltrim(*) 在sql語句中,里面的值必須是數據,* 是表單 上的內容,在頁面上,通過構造sql字符串,然后sql="update 入貨單 set 貨物名稱=alltrim(*),進貨價格=alltrim(*),批發價=alltrim(*),零售價=alltrim(*) where 貨物名稱==alltrim(*)" 將字符串提交執行。
sql="update 入貨單 set 貨物名稱='"+alltrim(*)+"',進貨價格="+alltrim(*)+",批發價="+alltrim(*)+",零售價="+alltrim(*)+" where 貨物名稱='"+alltrim(*)+"'"通過上面語句將* 內容嵌入到字符串中,然后提交即可。你的錯誤,是提交的字符串中,類似于alltrim(*)的數據在數據庫中是不存在的,如果將其換上它的內容就對了。
當然,按照sql規則,如果是字符格式,需添加''. 應該在你程序里添加一下語句,sql="update 入貨單 set 貨物名稱='"+alltrim(*)+"',進貨價格="+alltrim(*)+",批發價="+alltrim(*)+",零售價="+alltrim(*)+" where 貨物名稱='"+alltrim(*)+"'"執行完這句代碼后,假定alltrim(*)="11"進貨價格=10批發價=20,零售價=30alltrim(*)="22"則sql="update 入貨單 set 貨物名稱='11',進貨價格=10, 批發價=20, 零售價=30 where 貨物名稱='22'"你在代碼語句后輸出看是否是這樣的,如果是,在通過數據庫連接,執行sql即可。
數據庫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 < 3 begin print @x --打印變量x 的值 while @y < 3 begin select @c = 100*@x + @y print @c --打印變量c 的值 select @y = @y + 1 end select @x = @x + 1 select @y = 1 end --WAITFOR --例 等待1 小時2 分零3 秒后才執行SELECT 語句 waitfor delay '01:02:03' select * from employee --例 等到晚上11 點零8 分后才執行SELECT 語句 waitfor time '23:08:00' select * from employee ***SELECT*** select *(列名) from table_name(表名) where column_name operator value ex:(宿主) select * from stock_information where stockid = str(nid) stockname = 'str_name' stockname like '% find this %' stockname like '[a-zA-Z]%' --------- ([]指定值的范圍) stockname like '[^F-M]%' --------- (^排除指定范圍) --------- 只能在使用like關鍵字的where子句中使用通配符) or stockpath = 'stock_path' or stocknumber < 1000 and stockindex = 24 not stocksex = 'man' stocknumber between 20 and 100 stocknumber in(10,20,30) order by stockid desc(asc) --------- 排序,desc-降序,asc-升序 order by 1,2 --------- by列號 stockname = (select stockname from stock_information where stockid = 4) --------- 子查詢 --------- 除非能確保內層select只返回一個行的值, --------- 否則應在外層where子句中用一個in限定符 select distinct column_name form table_name --------- distinct指定檢索獨有的列值,不重復 select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name select stockname , "stocknumber" = count(*) from table_name group by stockname --------- group by 將表按行分組,指定列中有相同的值 having count(*) = 2 --------- having選定指定的組 select * from table1, table2 where * *= * -------- 左外部連接,table1中有的而table2中沒有得以null表示 * =* * -------- 右外部連接 select stockname from table1 union [all] ----- union合并查詢結果集,all-保留重復行 select stockname from table2 ***insert*** insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx") value (select Stockname , Stocknumber from Stock_table2)---value為select語句 ***update*** update table_name set Stockname = "xxx" [where Stockid = 3] Stockname = default Stockname = null Stocknumber = Stockname + 4 ***delete*** delete from table_name where Stockid = 3 truncate table_name ----------- 刪除表中所有行,仍保持表的完整性 drop table table_name --------------- 完全刪除表 ***alter table*** --- 修改數據庫表結構 alter table *_name add column_name char(2) null 。
.. sp_help table_name ---- 顯示表已有特征 create table table_name (name char(20), age smallint, lname varchar(30)) insert into table_name select 。
。 ----- 實現刪除列的方法(創建新表) alter table table_name drop constraint Stockname_default ---- 刪除Stockname的default約束 ***function(/*常用函數*/)*** ----統計。
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 數據表 where 條件表達式" Sql="delete from。
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 = "Select Count(*) From 數據表 where 字段名1>#18:0:0# and 。
SQL常用的命令語句有幾條,各自的功能分別是什么
常用的也不只這些:
1、說明:創建數據庫
CREATE DATABASE database-name
2、說明:刪除數據庫
drop database dbname
3、說明:備份sql server
--- 創建 備份數據的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_*'
--- 開始 備份
BACKUP DATABASE pubs TO testBack
4、說明:創建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根據已有的表創建新表:
A:create table tab_new like tab_old (使用舊表創建新表)
B:create table tab_new as select col1,col2。 from tab_old definition only
5、說明:刪除新表
drop table tabname
6、說明:增加一個列
Alter table tabname add column col type
注:列增加后將不能刪除。DB2中列加上后數據類型也不能改變,唯一能改變的是增加varchar類型的長度。
7、說明:添加主鍵: Alter table tabname add primary key(col)
說明:刪除主鍵: Alter table tabname drop primary key(col)
8、說明:創建索引:create [unique] index idxname on tabname(col。.)
刪除索引:drop index idxname
注:索引是不可更改的,想更改必須刪除重新建。
9、說明:創建視圖:create view viewname as select statement
刪除視圖:drop view viewname