日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁西西教程數(shù)據(jù)庫教程 → 數(shù)據(jù)庫語法從基礎(chǔ)到精通

      數(shù)據(jù)庫語法從基礎(chǔ)到精通

      相關(guān)軟件相關(guān)文章發(fā)表評論 來源:本站整理時間:2010/9/3 11:03:23字體大小:A-A+

      作者:佚名點擊:1196次評論:0次標(biāo)簽: 數(shù)據(jù)庫

      • 類型:辦公軟件大。35KB語言:中文 評分:1.2
      • 標(biāo)簽:
      立即下載

      首先,簡要介紹基礎(chǔ)語句:
      1、說明:創(chuàng)建數(shù)據(jù)庫
      CREATE DATABASE database-name
      2、說明:刪除數(shù)據(jù)庫
      drop database dbname
      3、說明:備份sql server
      --- 創(chuàng)建 備份數(shù)據(jù)的 device
      USE master
      EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
      --- 開始 備份
      BACKUP DATABASE pubs TO testBack
      4、說明:創(chuàng)建新表
      create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
      根據(jù)已有的表創(chuàng)建新表:
      A:create table tab_new like tab_old (使用舊表創(chuàng)建新表)
      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中列加上后數(shù)據(jù)類型也不能改變,唯一能改變的是增加varchar類型的長度。
      7、說明:添加主鍵: Alter table tabname add primary key(col)
      說明:刪除主鍵: Alter table tabname drop primary key(col)
      8、說明:創(chuàng)建索引:create [unique] index idxname on tabname(col….)
      刪除索引:drop index idxname
      注:索引是不可更改的,想更改必須刪除重新建。
      9、說明:創(chuàng)建視圖:create view viewname as select statement
      刪除視圖:drop view viewname


      10、說明:幾個簡單的基本的sql語句
      選擇:select * from table1 where 范圍
      插入:insert into table1(field1,field2) values(value1,value2)
      刪除:delete from table1 where 范圍
      更新:update table1 set field1=value1 where 范圍
      查找:select * from table1 where field1 like ’%value1%’ ---like的語法很精妙,查資料!
      排序:select * from table1 order by field1,field2 [desc]
      總數(shù):select count * as totalcount from table1
      求和:select sum(field1) as sumvalue from table1
      平均:select avg(field1) as avgvalue from table1
      最大:select max(field1) as maxvalue from table1
      最。簊elect min(field1) as minvalue from table1


      11、說明:幾個高級查詢運算詞
      A: UNION 運算符
      UNION 運算符通過組合其他兩個結(jié)果表(例如 TABLE1 和 TABLE2)并消去表中任何重復(fù)行而派生出一個結(jié)果表。當(dāng) ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復(fù)行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。
      B: EXCEPT 運算符
      EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復(fù)行而派生出一個結(jié)果表。當(dāng) ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復(fù)行。
      C: INTERSECT 運算符
      INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復(fù)行而派生出一個結(jié)果表。當(dāng) ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復(fù)行。
      注:使用運算詞的幾個查詢結(jié)果行必須是一致的。
      12、說明:使用外連接
      A、left outer join:
      左外連接(左連接):結(jié)果集幾包括連接表的匹配行,也包括左連接表的所有行。
      SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
      B:right outer join:
      右外連接(右連接):結(jié)果集既包括連接表的匹配連接行,也包括右連接表的所有行。
      C:full outer join:
      全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。

      其次,大家來看一些不錯的sql語句
      1、說明:復(fù)制表(只復(fù)制結(jié)構(gòu),源表名:a 新表名:b) (Access可用)
      法一:select * into b from a where 1 <>1
      法二:select top 0 * into b from a

      2、說明:拷貝表(拷貝數(shù)據(jù),源表名:a 目標(biāo)表名:b) (Access可用)
      insert into b(a, b, c) select d,e,f from b;

      3、說明:跨數(shù)據(jù)庫之間表的拷貝(具體數(shù)據(jù)使用絕對路徑) (Access可用)
      insert into b(a, b, c) select d,e,f from b in ‘具體數(shù)據(jù)庫’ where 條件
      例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..

      4、說明:子查詢(表名1:a 表名2:b)
      select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)

      5、說明:顯示文章、提交人和最后回復(fù)時間
      select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

      6、說明:外連接查詢(表名1:a 表名2:b)
      select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

      7、說明:在線視圖查詢(表名1:a )
      select * from (SELECT a,b,c FROM a) T where t.a > 1;

      8、說明:between的用法,between限制查詢數(shù)據(jù)范圍時包括了邊界值,not between不包括
      select * from table1 where time between time1 and time2
      select a,b,c, from table1 where a not between 數(shù)值1 and 數(shù)值2

      9、說明:in 的使用方法
      select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

      10、說明:兩張關(guān)聯(lián)表,刪除主表中已經(jīng)在副表中沒有的信息
      delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

      11、說明:四表聯(lián)查問題:
      select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

      12、說明:日程安排提前五分鐘提醒
      SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5

      13、說明:一條sql 語句搞定數(shù)據(jù)庫分頁
      select top 10 b.* from (select top 20 主鍵字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主鍵字段 = a.主鍵字段 order by a.排序字段

      14、說明:前10條記錄
      select top 10 * form table1 where 范圍

      15、說明:選擇在每一組b值相同的數(shù)據(jù)中對應(yīng)的a最大的記錄的所有信息(類似這樣的用法可以用于論壇每月排行榜,每月熱銷產(chǎn)品分析,按科目成績排名,等等.)
      select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

      16、說明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重復(fù)行而派生出一個結(jié)果表
      (select a from tableA ) except (select a from tableB) except (select a from tableC)

      17、說明:隨機取出10條數(shù)據(jù)
      select top 10 * from tablename order by newid()

      18、說明:隨機選擇記錄
      select newid()

      19、說明:刪除重復(fù)記錄
      Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

      20、說明:列出數(shù)據(jù)庫里所有的表名
      select name from sysobjects where type='U'

      21、說明:列出表里的所有的
      select name from syscolumns where id=object_id('TableName')

      22、說明:列示type、vender、pcs字段,以type字段排列,case可以方便地實現(xiàn)多重選擇,類似select 中的case。
      select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
      顯示結(jié)果:
      type vender pcs
      電腦 A 1
      電腦 A 1
      光盤 B 2
      光盤 A 2
      手機 B 3
      手機 C 3

      23、說明:初始化表table1
      TRUNCATE TABLE table1

      24、說明:選擇從10到15的記錄
      select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc
        
      隨機選擇數(shù)據(jù)庫記錄的方法(使用Randomize函數(shù),通過SQL語句實現(xiàn))
        對存儲在數(shù)據(jù)庫中的數(shù)據(jù)來說,隨機數(shù)特性能給出上面的效果,但它們可能太慢了些。你不能要求ASP“找個隨機數(shù)”然后打印出來。實際上常見的解決方案是建立如下所示的循環(huán):
      Randomize
      RNumber = Int(Rnd*499) +1
       
      While Not objRec.EOF
      If objRec("ID") = RNumber THEN
      ... 這里是執(zhí)行腳本 ...
      end if
      objRec.MoveNext
      Wend
       
        這很容易理解。首先,你取出1到500范圍之內(nèi)的一個隨機數(shù)(假設(shè)500就是數(shù)據(jù)庫內(nèi)記錄的總數(shù))。然后,你遍歷每一記錄來測試ID 的值、檢查其是否匹配RNumber。滿足條件的話就執(zhí)行由THEN 關(guān)鍵字開始的那一塊代碼。假如你的RNumber 等于495,那么要循環(huán)一遍數(shù)據(jù)庫花的時間可就長了。雖然500這個數(shù)字看起來大了些,但相比更為穩(wěn)固的企業(yè)解決方案這還是個小型數(shù)據(jù)庫了,后者通常在一個數(shù)據(jù)庫內(nèi)就包含了成千上萬條記錄。這時候不就死定了?
        采用SQL,你就可以很快地找出準(zhǔn)確的記錄并且打開一個只包含該記錄的recordset,如下所示:
      Randomize
      RNumber = Int(Rnd*499) + 1
       
      SQL = "SELECT * FROM Customers WHERE ID = " & RNumber
       
      set objRec = ObjConn.Execute(SQL)
      Response.WriteRNumber & " = " & objRec("ID") & " " & objRec("c_email")
       
        不必寫出RNumber 和ID,你只需要檢查匹配情況即可。只要你對以上代碼的工作滿意,你自可按需操作“隨機”記錄。Recordset沒有包含其他內(nèi)容,因此你很快就能找到你需要的記錄這樣就大大降低了處理時間。
      再談隨機數(shù)
        現(xiàn)在你下定決心要榨干Random 函數(shù)的最后一滴油,那么你可能會一次取出多條隨機記錄或者想采用一定隨機范圍內(nèi)的記錄。把上面的標(biāo)準(zhǔn)Random 示例擴展一下就可以用SQL應(yīng)對上面兩種情況了。
        為了取出幾條隨機選擇的記錄并存放在同一recordset內(nèi),你可以存儲三個隨機數(shù),然后查詢數(shù)據(jù)庫獲得匹配這些數(shù)字的記錄:
      SQL = "SELECT * FROM Customers WHERE ID = " & RNumber & " OR ID = " & RNumber2 & " OR ID = " & RNumber3
       
        假如你想選出10條記錄(也許是每次頁面裝載時的10條鏈接的列表),你可以用BETWEEN 或者數(shù)學(xué)等式選出第一條記錄和適當(dāng)數(shù)量的遞增記錄。這一操作可以通過好幾種方式來完成,但是 SELECT 語句只顯示一種可能(這里的ID 是自動生成的號碼):
      SQL = "SELECT * FROM Customers WHERE ID BETWEEN " & RNumber & " AND " & RNumber & "+ 9"

        注意:以上代碼的執(zhí)行目的不是檢查數(shù)據(jù)庫內(nèi)是否有9條并發(fā)記錄。

       
      隨機讀取若干條記錄,測試過
      Access語法:SELECT top 10 * From 表名 ORDER BY Rnd(id)
      Sql server:select top n * from 表名 order by newid()
      mysqlelect * From 表名 Order By rand() Limit n
      Access左連接語法(最近開發(fā)要用左連接,Access幫助什么都沒有,網(wǎng)上沒有Access的SQL說明,只有自己測試, 現(xiàn)在記下以備后查)
      語法elect table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where ...
      使用SQL語句 用...代替過長的字符串顯示
      語法:
      SQL數(shù)據(jù)庫:select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename
      Access數(shù)據(jù)庫:SELECT iif(len(field)>2,left(field,2)+'...',field) FROM tablename;
       
      Conn.Execute說明
      Execute方法
        該方法用于執(zhí)行SQL語句。根據(jù)SQL語句執(zhí)行后是否返回記錄集,該方法的使用格式分為以下兩種:
          1.執(zhí)行SQL查詢語句時,將返回查詢得到的記錄集。用法為:
          Set 對象變量名=連接對象.Execute("SQL 查詢語言")
         Execute方法調(diào)用后,會自動創(chuàng)建記錄集對象,并將查詢結(jié)果存儲在該記錄對象中,通過Set方法,將記錄集賦給指定的對象保存,以后對象變量就代表了該記錄集對象。

          2.執(zhí)行SQL的操作性語言時,沒有記錄集的返回。此時用法為:
          連接對象.Execute "SQL 操作性語句" [, RecordAffected][, Option]
            ·RecordAffected 為可選項,此出可放置一個變量,SQL語句執(zhí)行后,所生效的記錄數(shù)會自動保存到該變量中。通過訪問該變量,就可知道SQL語句隊多少條記錄進行了操作。
            ·Option 可選項,該參數(shù)的取值通常為adCMDText,它用于告訴ADO,應(yīng)該將Execute方法之后的第一個字符解釋為命令文本。通過指定該參數(shù),可使執(zhí)行更高效。

      ·BeginTrans、RollbackTrans、CommitTrans方法

       


      精妙Sql語句
      1. 判斷a表中有而b表中沒有的記錄

      select a.* from tbl1 a

      left join tbl2 b

      on a.key = b.key

      where b.key is null

      雖然使用in也可以實現(xiàn),但是這種方法的效率更高一些

      2. 新建一個與某個表相同結(jié)構(gòu)的表

      select * into b

      from a where 1<>1

      3.between的用法,between限制查詢數(shù)據(jù)范圍時包括了邊界值,not between不包括

      select * from table1 where time between time1 and time2

      select a,b,c, from table1 where a not between 數(shù)值1 and 數(shù)值2

      4. 說明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重復(fù)行而派生出一個結(jié)果表

      (select a from tableA ) except (select a from tableB) except (select a from tableC)

      5. 初始化表,可以將自增長表的字增長字段置為1

      TRUNCATE TABLE table1

      6.多語言設(shè)置數(shù)據(jù)庫或者表或者order by的排序規(guī)則

      --修改用戶數(shù)據(jù)庫的排序規(guī)則

      ater database dbname collate SQL_Latin1_General_CP1_CI_AS

      --修改字段的排序規(guī)則

      alter table a alter column c2 varchar(50) collate SQL_Latin1_General_CP1_CI_AS

      --按姓氏筆畫排序

      select * from 表名 order by 列名 Collate Chinese_PRC_Stroke_ci_as

      --按拼音首字母排序

      select * from 表名 order by 列名 Collate Chinese_PRC_CS_AS_KS_WS

      7.列出所有的用戶數(shù)據(jù)表:

      SELECT TOP 100 PERCENT o.name AS 表名

      FROM dbo.syscolumns c INNER JOIN

      dbo.sysobjects o ON o.id = c.id AND objectproperty(o.id, N'IsUserTable') = 1 AND

      o.name <> 'dtproperties' LEFT OUTER JOIN

      dbo.sysproperties m ON m.id = o.id AND m.smallid = c.colorder

      WHERE (c.colid = 1)

      ORDER BY o.name, c.colid

       

      8.列出所有的用戶數(shù)據(jù)表及其字段信息:

      SELECT TOP 100 PERCENT c.colid AS 序號, o.name AS 表名, c.name AS 列名,

      t.name AS 類型, c.length AS 長度, c.isnullable AS 允許空,

      CAST(m.[value] AS Varchar(100)) AS 說明

      FROM dbo.syscolumns c INNER JOIN

      dbo.sysobjects o ON o.id = c.id AND objectproperty(o.id, N'IsUserTable') = 1 AND

      o.name <> 'dtproperties' INNER JOIN

      dbo.systypes t ON t.xusertype = c.xusertype LEFT OUTER JOIN

      dbo.sysproperties m ON m.id = o.id AND m.smallid = c.colorder

      ORDER BY o.name, c.colid

      9.Left,right Join的另外一種簡潔的寫法

      select * from a,b where a.id *= b.id --(*= 相當(dāng)于 LEFT JOIN)

      select * from a,b where a.id =* b.id --(=* 相當(dāng)于 Right JOIN)

      10.Update from 和 delete from

      11.得到表中最小的未使用的ID號

      SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1)

      THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID

      FROM Handle

      WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)

      12.隨機取得記錄

      SELECT TOP 10 * FROM T1 ORDER BY NEWID()


      精妙SQL語句介紹

        如何從一位菜鳥蛻變成為高手,靈活使用的SQL語句是必不可少的。本文收集了部分比較經(jīng)典,常用的SQL語句供大家參考,希望對大家有所幫助。

        說明:復(fù)制表(只復(fù)制結(jié)構(gòu),源表名:a 新表名:b)  

        SQL: select * into b from a where 1<>1

        說明:拷貝表(拷貝數(shù)據(jù),源表名:a 目標(biāo)表名:b)  

        SQL: insert into b(a, b, c) select d,e,f from b;

        說明:顯示文章、提交人和最后回復(fù)時間  

        SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

        說明:外連接查詢(表名1:a 表名2:b)  

        SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

        說明:日程安排提前五分鐘提醒  

        SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5  

        說明:兩張關(guān)聯(lián)表,刪除主表中已經(jīng)在副表中沒有的信息

        SQL:   

        delete from info where not exists ( select * from infobz where info.infid=infobz.infid

        說明:--

        SQL:   

        SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE

         FROM TABLE1,

         (SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE

         FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND

         FROM TABLE2

         WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X,

         (SELECT NUM, UPD_DATE, STOCK_ONHAND

         FROM TABLE2

         WHERE TO_CHAR(UPD_DATE,'YYYY/MM') =

         TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') || '/01','YYYY/MM/DD') - 1, 'YYYY/MM') Y,

         WHERE X.NUM = Y.NUM (+)

         AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <> X.STOCK_ONHAND B

        WHERE A.NUM = B.NUM

        說明:--

        SQL:   

        select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名稱='"&strdepartmentname&"' and 專業(yè)名稱='"&strprofessionname&"' order by 性別,生源地,高考總成績

        說明:

        從數(shù)據(jù)庫中去一年的各單位電話費統(tǒng)計(電話費定額賀電化肥清單兩個表來源)

        SQL:  

        SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS telyear,

         SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01', a.factration)) AS JAN,

         SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02', a.factration)) AS FRI,

         SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03', a.factration)) AS MAR,

         SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04', a.factration)) AS APR,

         SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05', a.factration)) AS MAY,

         SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06', a.factration)) AS JUE,

         SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07', a.factration)) AS JUL,

         SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08', a.factration)) AS AGU,

         SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09', a.factration)) AS SEP,

         SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10', a.factration)) AS OCT,

         SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11', a.factration)) AS NOV,

         SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12', a.factration)) AS DEC

        FROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration

         FROM TELFEESTAND a, TELFEE b

         WHERE a.tel = b.telfax) a

        GROUP BY a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy')

        說明:四表聯(lián)查問題:  

        SQL: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

        說明:得到表中最小的未使用的ID號

        SQL: 

        SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID

         FROM Handle

         WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)

       

       


      一、基礎(chǔ)

      1、說明:創(chuàng)建數(shù)據(jù)庫
      CREATE DATABASE database-name
      2、說明:刪除數(shù)據(jù)庫
      drop database dbname
      3、說明:備份sql server
      --- 創(chuàng)建 備份數(shù)據(jù)的 device
      USE master
      EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'
      --- 開始 備份
      BACKUP DATABASE pubs TO testBack
      4、說明:創(chuàng)建新表
      create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
      根據(jù)已有的表創(chuàng)建新表:
      A:create table tab_new like tab_old (使用舊表創(chuàng)建新表)
      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中列加上后數(shù)據(jù)類型也不能改變,唯一能改變的是增加varchar類型的長度。
      7、說明:添加主鍵: Alter table tabname add primary key(col)
      說明:刪除主鍵: Alter table tabname drop primary key(col)
      8、說明:創(chuàng)建索引:create [unique] index idxname on tabname(col….)
      刪除索引:drop index idxname
      注:索引是不可更改的,想更改必須刪除重新建。
      9、說明:創(chuàng)建視圖:create view viewname as select statement
      刪除視圖:drop view viewname
      10、說明:幾個簡單的基本的sql語句
      選擇:select * from table1 where 范圍
      插入:insert into table1(field1,field2) values(value1,value2)
      刪除:delete from table1 where 范圍
      更新:update table1 set field1=value1 where 范圍
      查找:select * from table1 where field1 like ’%value1%’ ---like的語法很精妙,查資料!
      排序:select * from table1 order by field1,field2 [desc]
      總數(shù):select count as totalcount from table1
      求和:select sum(field1) as sumvalue from table1
      平均:select avg(field1) as avgvalue from table1
      最大:select max(field1) as maxvalue from table1
      最小:select min(field1) as minvalue from table1
      11、說明:幾個高級查詢運算詞
      A: UNION 運算符
      UNION 運算符通過組合其他兩個結(jié)果表(例如 TABLE1 和 TABLE2)并消去表中任何重復(fù)行而派生出一個結(jié)果表。當(dāng) ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復(fù)行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。
      B: EXCEPT 運算符
      EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復(fù)行而派生出一個結(jié)果表。當(dāng) ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復(fù)行。
      C: INTERSECT 運算符
      INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復(fù)行而派生出一個結(jié)果表。當(dāng) ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復(fù)行。
      注:使用運算詞的幾個查詢結(jié)果行必須是一致的。
      12、說明:使用外連接
      A、left outer join:
      左外連接(左連接):結(jié)果集幾包括連接表的匹配行,也包括左連接表的所有行。
      SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
      B:right outer join:
      右外連接(右連接):結(jié)果集既包括連接表的匹配連接行,也包括右連接表的所有行。
      C:full outer join:
      全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。

      二、提升

      1、說明:復(fù)制表(只復(fù)制結(jié)構(gòu),源表名:a 新表名:b) (Access可用)
      法一:select * into b from a where 1<>1
      法二:select top 0 * into b from a

      2、說明:拷貝表(拷貝數(shù)據(jù),源表名:a 目標(biāo)表名:b) (Access可用)
      insert into b(a, b, c) select d,e,f from b;

      3、說明:跨數(shù)據(jù)庫之間表的拷貝(具體數(shù)據(jù)使用絕對路徑) (Access可用)
      insert into b(a, b, c) select d,e,f from b in ‘具體數(shù)據(jù)庫’ where 條件
      例子:..from b in '"&Server.MapPath(".")&"data.mdb" &"' where..

      4、說明:子查詢(表名1:a 表名2:b)
      select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)

      5、說明:顯示文章、提交人和最后回復(fù)時間
      select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

      6、說明:外連接查詢(表名1:a 表名2:b)
      select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

      7、說明:在線視圖查詢(表名1:a )
      select * from (SELECT a,b,c FROM a) T where t.a > 1;

      8、說明:between的用法,between限制查詢數(shù)據(jù)范圍時包括了邊界值,not between不包括
      select * from table1 where time between time1 and time2
      select a,b,c, from table1 where a not between 數(shù)值1 and 數(shù)值2

      9、說明:in 的使用方法
      select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

      10、說明:兩張關(guān)聯(lián)表,刪除主表中已經(jīng)在副表中沒有的信息
      delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

      11、說明:四表聯(lián)查問題:
      select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

      12、說明:日程安排提前五分鐘提醒
      SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5

      13、說明:一條sql 語句搞定數(shù)據(jù)庫分頁
      select top 10 b.* from (select top 20 主鍵字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主鍵字段 = a.主鍵字段 order by a.排序字段

      14、說明:前10條記錄
      select top 10 * form table1 where 范圍

      15、說明:選擇在每一組b值相同的數(shù)據(jù)中對應(yīng)的a最大的記錄的所有信息(類似這樣的用法可以用于論壇每月排行榜,每月熱銷產(chǎn)品分析,按科目成績排名,等等.)
      select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

      16、說明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重復(fù)行而派生出一個結(jié)果表
      (select a from tableA ) except (select a from tableB) except (select a from tableC)

      17、說明:隨機取出10條數(shù)據(jù)
      select top 10 * from tablename order by newid()

      18、說明:隨機選擇記錄
      select newid()

      19、說明:刪除重復(fù)記錄
      Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

      20、說明:列出數(shù)據(jù)庫里所有的表名
      select name from sysobjects where type='U'

      21、說明:列出表里的所有的
      select name from syscolumns where id=object_id('TableName')

      22、說明:列示type、vender、pcs字段,以type字段排列,case可以方便地實現(xiàn)多重選擇,類似select 中的case。
      select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
      顯示結(jié)果:
      type vender pcs
      電腦 A 1
      電腦 A 1
      光盤 B 2
      光盤 A 2
      手機 B 3
      手機 C 3

      23、說明:初始化表table1

      TRUNCATE TABLE table1

      24、說明:選擇從10到15的記錄
      select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc

      三、技巧

      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、收縮數(shù)據(jù)庫
      --重建索引
      DBCC REINDEX
      DBCC INDEXDEFRAG
      --收縮數(shù)據(jù)和日志
      DBCC SHRINKDB
      DBCC SHRINKFILE

      3、壓縮數(shù)據(jù)庫
      dbcc shrinkdatabase(dbname)

      4、轉(zhuǎn)移數(shù)據(jù)庫給新用戶以已存在用戶權(quán)限
      exec sp_change_users_login 'update_one','newname','oldname'
      go

      5、檢查備份集
      RESTORE VERIFYONLY from disk='E:dvbbs.bak'

      6、修復(fù)數(shù)據(jù)庫
      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 -- 要操作的數(shù)據(jù)庫名
      SELECT @LogicalFileName = 'tablename_log', -- 日志文件名
      @MaxMinutes = 10, -- Limit on time allowed to wrap log.
      @NewSize = 1 -- 你想設(shè)定的日志文件的大小(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 < @OriginalSize / 16) AND (@Counter < 50000))
      BEGIN -- update
      INSERT DummyTrans VALUES ('Fill Log')
      DELETE DummyTrans
      SELECT @Counter = @Counter + 1
      END
      EXEC (@TruncLog)
      END
      SELECT 'Final Size of ' + db_name() + ' LOG is ' +
      CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
      CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
      FROM sysfiles
      WHERE name = @LogicalFileName
      DROP TABLE DummyTrans
      SET NOCOUNT OFF

      8、說明:更改某個表
      exec sp_changeobjectowner 'tablename','dbo'

      9、存儲更改全部表

      CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
      @OldOwner as NVARCHAR(128),
      @NewOwner as NVARCHAR(128)
      AS

      DECLARE @Name as NVARCHAR(128)
      DECLARE @Owner as NVARCHAR(128)
      DECLARE @OwnerName as NVARCHAR(128)

      DECLARE curObject CURSOR FOR
      select 'Name' = name,
      'Owner' = user_name(uid)
      from sysobjects
      where user_name(uid)=@OldOwner
      order by name

      OPEN curObject
      FETCH NEXT FROM curObject INTO @Name, @Owner
      WHILE(@@FETCH_STATUS=0)
      BEGIN
      if @Owner=@OldOwner
      begin
      set @OwnerName = @OldOwner + '.' + rtrim(@Name)
      exec sp_changeobjectowner @OwnerName, @NewOwner
      end
      -- select @name,@NewOwner,@OldOwner

      FETCH NEXT FROM curObject INTO @Name, @Owner
      END

      close curObject
      deallocate curObject
      GO


      10、SQL SERVER中直接循環(huán)寫入數(shù)據(jù)
      declare @i int
      set @i=1
      while @i<30
      begin
      insert into test (userid) values(@i)
      set @i=@i+1
      end

      小記存儲過程中經(jīng)常用到的本周,本月,本年函數(shù)
      Dateadd(wk,datediff(wk,0,getdate()),-1)
      Dateadd(wk,datediff(wk,0,getdate()),6)

      Dateadd(mm,datediff(mm,0,getdate()),0)
      Dateadd(ms,-3,dateadd(mm,datediff(m,0,getdate())+1,0))

      Dateadd(yy,datediff(yy,0,getdate()),0)
      Dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))

      上面的SQL代碼只是一個時間段
      Dateadd(wk,datediff(wk,0,getdate()),-1)
      Dateadd(wk,datediff(wk,0,getdate()),6)
      就是表示本周時間段.
      下面的SQL的條件部分,就是查詢時間段在本周范圍內(nèi)的:
      Where Time BETWEEN Dateadd(wk,datediff(wk,0,getdate()),-1) AND Dateadd(wk,datediff(wk,0,getdate()),6)
      而在存儲過程中
      select @begintime = Dateadd(wk,datediff(wk,0,getdate()),-1)
      select @endtime = Dateadd(wk,datediff(wk,0,getdate()),6)
      最后,再補充一些:
      分組group
        常用于統(tǒng)計時,如分組查總數(shù):
      select gender,count(sno)
      from students
      group by gender
      (查看男女學(xué)生各有多少)
        注意:從哪種角度分組就從哪列"group by"
        對于多重分組,只需將分組規(guī)則羅列。比如查詢各屆各專業(yè)的男女同學(xué)人數(shù) ,那么分組規(guī)則有:屆別(grade)、專業(yè)(mno)和性別(gender),所以有"group by grade, mno, gender"
      select grade, mno, gender, count(*)
      from students
      group by grade, mno, gender
        通常group還和having聯(lián)用,比如查詢1門課以上不及格的學(xué)生,則按學(xué)號(sno)分類有:
      select sno,count(*) from grades
      where mark<60
      group by sno
      having count(*)>1
        6.UNION聯(lián)合
        合并查詢結(jié)果,如:
      SELECT * FROM students
      WHERE name like ‘張%’
      UNION [ALL]
      SELECT * FROM students
      WHERE name like ‘李%’
        7.多表查詢
        a.內(nèi)連接
      select g.sno,s.name,c.coursename
      from grades g JOIN students s ON g.sno=s.sno
      JOIN courses c ON g.cno=c.cno
      (注意可以引用別名)
      b.外連接
      b1.左連接
      select courses.cno,max(coursename),count(sno)
      from courses LEFT JOIN grades ON courses.cno=grades.cno
      group by courses.cno
        左連接特點:顯示全部左邊表中的所有項目,即使其中有些項中的數(shù)據(jù)未填寫完全。
        左外連接返回那些存在于左表而右表中卻沒有的行,再加上內(nèi)連接的行。
        b2.右連接
        與左連接類似
        b3.全連接
      select sno,name,major
      from students FULL JOIN majors ON students.mno=majors.mno
        兩邊表中的內(nèi)容全部顯示
        c.自身連接
      select c1.cno,c1.coursename,c1.pno,c2.coursename
      from courses c1,courses c2 where c1.pno=c2.cno
        采用別名解決問題。
        d.交叉連接
      select lastname+firstname from lastname CROSS JOIN firstanme
        相當(dāng)于做笛卡兒積

       

       

       

      SQL語句大全

      --語 句 功 能
      --數(shù)據(jù)操作
      SELECT --從數(shù)據(jù)庫表中檢索數(shù)據(jù)行和列
      INSERT --向數(shù)據(jù)庫表添加新數(shù)據(jù)行
      DELETE --從數(shù)據(jù)庫表中刪除數(shù)據(jù)行
      UPDATE --更新數(shù)據(jù)庫表中的數(shù)據(jù)
      --數(shù)據(jù)定義
      CREATE TABLE --創(chuàng)建一個數(shù)據(jù)庫表
      DROP TABLE --從數(shù)據(jù)庫中刪除表
      ALTER TABLE --修改數(shù)據(jù)庫表結(jié)構(gòu)
      CREATE VIEW --創(chuàng)建一個視圖
      DROP VIEW --從數(shù)據(jù)庫中刪除視圖
      CREATE INDEX --為數(shù)據(jù)庫表創(chuàng)建一個索引
      DROP INDEX --從數(shù)據(jù)庫中刪除索引
      CREATE PROCEDURE --創(chuàng)建一個存儲過程
      DROP PROCEDURE --從數(shù)據(jù)庫中刪除存儲過程
      CREATE TRIGGER --創(chuàng)建一個觸發(fā)器
      DROP TRIGGER --從數(shù)據(jù)庫中刪除觸發(fā)器
      CREATE SCHEMA --向數(shù)據(jù)庫添加一個新模式
      DROP SCHEMA --從數(shù)據(jù)庫中刪除一個模式
      CREATE DOMAIN --創(chuàng)建一個數(shù)據(jù)值域
      ALTER DOMAIN --改變域定義
      DROP DOMAIN --從數(shù)據(jù)庫中刪除一個域
      --數(shù)據(jù)控制
      GRANT --授予用戶訪問權(quán)限
      DENY --拒絕用戶訪問
      REVOKE --解除用戶訪問權(quán)限
      --事務(wù)控制
      COMMIT --結(jié)束當(dāng)前事務(wù)
      ROLLBACK --中止當(dāng)前事務(wù)
      SET TRANSACTION --定義當(dāng)前事務(wù)數(shù)據(jù)訪問特征
      --程序化SQL
      DECLARE --為查詢設(shè)定游標(biāo)
      EXPLAN --為查詢描述數(shù)據(jù)訪問計劃
      OPEN --檢索查詢結(jié)果打開一個游標(biāo)
      FETCH --檢索一行查詢結(jié)果
      CLOSE --關(guān)閉游標(biāo)
      PREPARE --為動態(tài)執(zhí)行準(zhǔn)備SQL 語句
      EXECUTE --動態(tài)地執(zhí)行SQL 語句
      DESCRIBE --描述準(zhǔn)備好的查詢
      ---局部變量
      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 秒后才執(zhí)行SELECT 語句
      waitfor delay ’01:02:03’
      select * from employee
      --例 等到晚上11 點零8 分后才執(zhí)行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關(guān)鍵字的where子句中使用通配符)
      or stockpath = 'stock_path'
      or stocknumber < 1000
      and stockindex = 24
      not stock*** = '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)
      --------- 子查詢
      --------- 除非能確保內(nèi)層select只返回一個行的值,
      --------- 否則應(yīng)在外層where子句中用一個in限定符
      select distinct column_name form table_name --------- distinct指定檢索獨有的列值,不重復(fù)
      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.id *= table2.id -------- 左外部連接,table1中有的而table2中沒有得以null表示
      table1.id =* table2.id -------- 右外部連接
      select stockname from table1
      union [all] ----- union合并查詢結(jié)果集,all-保留重復(fù)行
      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*** --- 修改數(shù)據(jù)庫表結(jié)構(gòu)

      alter table database.owner.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 ......... ----- 實現(xiàn)刪除列的方法(創(chuàng)建新表)
      alter table table_name drop constraint Stockname_default ---- 刪除Stockname的default約束

      ***function(/*常用函數(shù)*/)***

      ----統(tǒng)計函數(shù)----
      AVG --求平均值
      COUNT --統(tǒng)計數(shù)目
      MAX --求最大值
      MIN --求最小值
      SUM --求和

      --AVG
      use pangu
      select avg(e_wage) as dept_avgWage
      from employee
      group by dept_id
      --MAX
      --求工資最高的員工姓名
      use pangu
      select e_name
      from employee
      where e_wage =
      (select max(e_wage)
      from employee)

      --STDEV()
      --STDEV()函數(shù)返回表達式中所有數(shù)據(jù)的標(biāo)準(zhǔn)差

      --STDEVP()
      --STDEVP()函數(shù)返回總體標(biāo)準(zhǔn)差
      --VAR()
      --VAR()函數(shù)返回表達式中所有值的統(tǒng)計變異數(shù)

      --VARP()
      --VARP()函數(shù)返回總體變異數(shù)
      ----算術(shù)函數(shù)----

      /***三角函數(shù)***/
      SIN(float_expression) --返回以弧度表示的角的正弦
      COS(float_expression) --返回以弧度表示的角的余弦
      TAN(float_expression) --返回以弧度表示的角的正切
      COT(float_expression) --返回以弧度表示的角的余切
      /***反三角函數(shù)***/
      ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角
      ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角
      ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角
      ATAN2(float_expression1,float_expression2)
      --返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
      DEGREES(numeric_expression)
      --把弧度轉(zhuǎn)換為角度返回與表達式相同的數(shù)據(jù)類型可為
      --INTEGER/MONEY/REAL/FLOAT 類型
      RADIANS(numeric_expression) --把角度轉(zhuǎn)換為弧度返回與表達式相同的數(shù)據(jù)類型可為
      --INTEGER/MONEY/REAL/FLOAT 類型
      EXP(float_expression) --返回表達式的指數(shù)值
      LOG(float_expression) --返回表達式的自然對數(shù)值
      LOG10(float_expression)--返回表達式的以10 為底的對數(shù)值
      SQRT(float_expression) --返回表達式的平方根
      /***取近似值函數(shù)***/
      CEILING(numeric_expression) --返回>=表達式的最小整數(shù)返回的數(shù)據(jù)類型與表達式相同可為
      --INTEGER/MONEY/REAL/FLOAT 類型
      FLOOR(numeric_expression) --返回<=表達式的最小整數(shù)返回的數(shù)據(jù)類型與表達式相同可為
      --INTEGER/MONEY/REAL/FLOAT 類型
      ROUND(numeric_expression) --返回以integer_expression 為精度的四舍五入值返回的數(shù)據(jù)
      --類型與表達式相同可為INTEGER/MONEY/REAL/FLOAT 類型
      ABS(numeric_expression) --返回表達式的絕對值返回的數(shù)據(jù)類型與表達式相同可為
      --INTEGER/MONEY/REAL/FLOAT 類型
      SIGN(numeric_expression) --測試參數(shù)的正負(fù)號返回0 零值1 正數(shù)或-1 負(fù)數(shù)返回的數(shù)據(jù)類型
      --與表達式相同可為INTEGER/MONEY/REAL/FLOAT 類型
      PI() --返回值為π 即3.1415926535897936
      RAND([integer_expression]) --用任選的[integer_expression]做種子值得出0-1 間的隨機浮點數(shù)

      ----字符串函數(shù)----
      ASCII() --函數(shù)返回字符表達式最左端字符的ASCII 碼值
      CHAR() --函數(shù)用于將ASCII 碼轉(zhuǎn)換為字符
      --如果沒有輸入0 ~ 255 之間的ASCII 碼值CHAR 函數(shù)會返回一個NULL 值
      LOWER() --函數(shù)把字符串全部轉(zhuǎn)換為小寫
      UPPER() --函數(shù)把字符串全部轉(zhuǎn)換為大寫
      STR() --函數(shù)把數(shù)值型數(shù)據(jù)轉(zhuǎn)換為字符型數(shù)據(jù)
      LTRIM() --函數(shù)把字符串頭部的空格去掉
      RTRIM() --函數(shù)把字符串尾部的空格去掉
      LEFT(),RIGHT(),SUBSTRING() --函數(shù)返回部分字符串
      CHARINDEX(),PATINDEX() --函數(shù)返回字符串中某個指定的子串出現(xiàn)的開始位置
      SOUNDEX() --函數(shù)返回一個四位字符碼
      --SOUNDEX函數(shù)可用來查找聲音相似的字符串但SOUNDEX函數(shù)對數(shù)字和漢字均只返回0 值
      DIFFERENCE() --函數(shù)返回由SOUNDEX 函數(shù)返回的兩個字符表達式的值的差異
      --0 兩個SOUNDEX 函數(shù)返回值的第一個字符不同
      --1 兩個SOUNDEX 函數(shù)返回值的第一個字符相同
      --2 兩個SOUNDEX 函數(shù)返回值的第一二個字符相同
      --3 兩個SOUNDEX 函數(shù)返回值的第一二三個字符相同
      --4 兩個SOUNDEX 函數(shù)返回值完全相同

      QUOTENAME() --函數(shù)返回被特定字符括起來的字符串
      /*select quotename('abc', '{') quotename('abc')
      運行結(jié)果如下
      ----------------------------------{
      {abc} [abc]*/

      REPLICATE() --函數(shù)返回一個重復(fù)character_expression 指定次數(shù)的字符串
      /*select replicate('abc', 3) replicate( 'abc', -2)
      運行結(jié)果如下
      ----------- -----------
      abcabcabc NULL*/

      REVERSE() --函數(shù)將指定的字符串的字符排列順序顛倒
      REPLACE() --函數(shù)返回被替換了指定子串的字符串
      /*select replace('abc123g', '123', 'def')
      運行結(jié)果如下
      ----------- -----------
      abcdefg*/

      SPACE() --函數(shù)返回一個有指定長度的空白字符串
      STUFF() --函數(shù)用另一子串替換字符串指定位置長度的子串

      ----數(shù)據(jù)類型轉(zhuǎn)換函數(shù)----
      CAST() 函數(shù)語法如下
      CAST() (<expression> AS <data_ type>[ length ])
      CONVERT() 函數(shù)語法如下
      CONVERT() (<data_ type>[ length ], <expression> [, style])

      select cast(100+99 as char) convert(varchar(12), getdate())
      運行結(jié)果如下
      ------------------------------ ------------
      199 Jan 15 2000

      ----日期函數(shù)----
      DAY() --函數(shù)返回date_expression 中的日期值
      MONTH() --函數(shù)返回date_expression 中的月份值
      YEAR() --函數(shù)返回date_expression 中的年份值
      DATEADD(<datepart> ,<number> ,<date>)
      --函數(shù)返回指定日期date 加上指定的額外日期間隔number 產(chǎn)生的新日期
      DATEDIFF(<datepart> ,<number> ,<date>)
      --函數(shù)返回兩個指定日期在datepart 方面的不同之處
      DATENAME(<datepart> , <date>) --函數(shù)以字符串的形式返回日期的指定部分
      DATEPART(<datepart> , <date>) --函數(shù)以整數(shù)值的形式返回日期的指定部分
      GETDATE() --函數(shù)以DATETIME 的缺省格式返回系統(tǒng)當(dāng)前的日期和時間
      ----系統(tǒng)函數(shù)----
      APP_NAME() --函數(shù)返回當(dāng)前執(zhí)行的應(yīng)用程序的名稱
      COALESCE() --函數(shù)返回眾多表達式中第一個非NULL 表達式的值
      COL_LENGTH(<'table_name'>, <'column_name'>) --函數(shù)返回表中指定字段的長度值
      COL_NAME(<table_id>, <column_id>) --函數(shù)返回表中指定字段的名稱即列名
      DATALENGTH() --函數(shù)返回數(shù)據(jù)表達式的數(shù)據(jù)的實際長度
      DB_ID(['database_name']) --函數(shù)返回數(shù)據(jù)庫的編號
      DB_NAME(database_id) --函數(shù)返回數(shù)據(jù)庫的名稱
      HOST_ID() --函數(shù)返回服務(wù)器端計算機的名稱
      HOST_NAME() --函數(shù)返回服務(wù)器端計算機的名稱
      IDENTITY(<data_type>[, seed increment]) [AS column_name])
      --IDENTITY() 函數(shù)只在SELECT INTO 語句中使用用于插入一個identity column列到新表中
      /*select identity(int, 1, 1) as column_name
      into newtable
      from oldtable*/
      ISDATE() --函數(shù)判斷所給定的表達式是否為合理日期
      ISNULL(<check_expression>, <replacement_value>) --函數(shù)將表達式中的NULL 值用指定值替換
      ISNUMERIC() --函數(shù)判斷所給定的表達式是否為合理的數(shù)值
      NEWID() --函數(shù)返回一個UNIQUEIDENTIFIER 類型的數(shù)值
      NULLIF(<expression1>, <expression2>)
      --NULLIF 函數(shù)在expression1 與expression2 相等時返回NULL 值若不相等時則返回expression1 的值


      sql中的保留字

      action add aggregate all
      alter after and as
      asc avg avg_row_length auto_increment
      between bigint bit binary
      blob bool both by
      cascade case char character
      change check checksum column
      columns comment constraint create
      cross current_date current_time current_timestamp
      data database databases date
      datetime day day_hour day_minute
      day_second dayofmonth dayofweek dayofyear
      dec decimal default delayed
      delay_key_write delete desc describe
      distinct distinctrow double drop
      end else escape escaped
      enclosed enum explain exists
      fields file first float
      float4 float8 flush foreign
      from for full function
      global grant grants group
      having heap high_priority hour
      hour_minute hour_second hosts identified
      ignore in index infile
      inner insert insert_id int
      integer interval int1 int2
      int3 int4 int8 into
      if is isam join
      key keys kill last_insert_id
      leading left length like
      lines limit load local
      lock logs long longblob
      longtext low_priority max max_rows
      match mediumblob mediumtext mediumint
      middleint min_rows minute minute_second
      modify month monthname myisam
      natural numeric no not
      null on optimize option
      optionally or order outer
      outfile pack_keys partial password
      precision primary procedure process
      processlist privileges read real
      references reload regexp rename
      replace restrict returns revoke
      rlike row rows second
      select set show shutdown
      smallint soname sql_big_tables sql_big_selects
      sql_low_priority_updates sql_log_off sql_log_update sql_select_limit
      sql_small_result sql_big_result sql_warnings straight_join
      starting status string table
      tables temporary terminated text
      then time timestamp tinyblob
      tinytext tinyint trailing to
      type use using unique
      unlock unsigned update usage
      values varchar variables varying
      varbinary with write when
      where year year_month zerofill

      說明:復(fù)制表(只復(fù)制結(jié)構(gòu),源表名:a 新表名:b)
      SQL: select * into b from a where 1<>1

      說明:拷貝表(拷貝數(shù)據(jù),源表名:a 目標(biāo)表名:b)
      SQL: insert into b(a, b, c) select d,e,f from b;

      說明:顯示文章、提交人和最后回復(fù)時間
      SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

      說明:外連接查詢(表名1:a 表名2:b)
      SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

      說明:日程安排提前五分鐘提醒
      SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5

      說明:兩張關(guān)聯(lián)表,刪除主表中已經(jīng)在副表中沒有的信息
      SQL:
      delete from info where not exists ( select * from infobz where info.infid=infobz.infid )

      說明:四表聯(lián)查問題:
      SQL: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

      說明:得到表中最小的未使用的ID號
      SQL:
      SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID
      FROM Handle
      WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)

      COALESCE
      返回其參數(shù)中第一個非空表達式。

      語法
      COALESCE ( expression [ ,...n ] )

        相關(guān)評論

        閱讀本文后您有什么感想? 已有人給出評價!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評論

        最新評論

        發(fā)表評論 查看所有評論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)