SQL基礎語句總結_第1頁
SQL基礎語句總結_第2頁
SQL基礎語句總結_第3頁
SQL基礎語句總結_第4頁
SQL基礎語句總結_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、sql基礎語句總結寫在前面本節主要講述一些基本的,常用的sql語句,而非數據庫方面的基本知識。數據庫方面的 知識留待以后再講,現在就我們平常常用的一些sql語句展開論述。木節會涉及到sql的基木句法,sql的執行順序,sqlz間的組合,動態sql語旬四個 方面。這四個方面z間沒有前后順序z分,是相輔相成,其內在還是有很多聯系的。%1. 四種基本的sql語句1. 查詢select * from table2. 更新update tabic set ficld=valuc3. 插入insert into table (field) values(value)4. 刪除delete from tab

2、le%1. 語句的執行順序1 語法分析分析語句中語法是否符合規范,衡量語句中各表達式的意義。2. 語義分析檢杏語句屮涉及的所有數據庫對象是否存在,且用戶有相丿應的權限。3選擇優化器不同的數據庫有不同的算法(這個涉及到數據結構),數據庫會根據自己的理解(數據庫本身)為sql語句選擇不同的優化器,不同的優化器會選擇不同的“執行計劃”4. 運行“執行計劃”根據“執行計劃”執行sql語句。以上所述是數據執行吋的大體路線。5. select語句的執行順序借用 itzik ben-gan> lubor kollar> dejan sarka 所著的sql server 2005 技術內幕:t-

3、sql 查詢的一段話足以說明:(8) select (9) distinct (11) <top_specification > <select_list>(1 )from<lef t_table>(3) <join_type> join <right_table>(2) on <join _condition>(4) where <whcrc_condition>(5) group by <group_by_list>(6) with cubelrollup(7) having(having_co

4、ndition)(10) order by <order_by_condition>從這個順序可以看出,所有的查詢語句都是從fem開始執行的。在執行過程中,每個步驟 都會為下一個步驟牛成一個虛擬表,這個虛擬表將作為下一個執行步驟的基礎。第一步:from首先對from子句屮的前兩個表執行一個笛卡爾乘積,此時生成虛擬表vtl .第一步:on接下來便是應用on篩選器,on中的邏輯表達式將應用到vtl中的各個行,篩選出滿足on 邏輯表達式的行,生成虛擬表vt2.第三步:join 如果是outer join那么這一步就將添加外部行,left outer jion就把左表在第二步小過濾的添 加

5、進來,如果是right outer join那么就將右表在笫二步中過濾掉的行添加進來,這樣牛成虛 擬表vt3.第四步:多表如果from子句中的表數目多余兩個表,那么就將vt3和第三個表連接從而計算笛卡爾乘積, 主成虛擬表,該過程就是一個重復1-3的步驟,最終得到一個新的虛擬表vt3.第五步:where應川where篩選器,對上一步生產的虛擬表引川where篩選器,生成虛擬表vt4,在這冇個 比較重要的細節不得不說一卜,對于包含outer join子句的杳詢,就有一個讓人感到困惑的 問題,到底在on篩選器還是用where篩選器指定邏輯表達式呢? on和where的最人區別在 于,如果在on應用邏

6、輯表達式那么在第三步outejoin中還可以把移除的行再次添加回來, 而where的移除的最終的。第六步:group by分組,生成虛擬表vt4第七步:having對vt4應用having篩選器,生成虛擬表vt5第八步:select處理select列表,牛成虛擬表vt6第九步:distinct將vt6中重復的行去掉,牛成虛擬表vt7第十步:order by將vt7屮的行按order by子句中的列列表排序,生成一個游標vc8第一步:top從vc8的開始處選擇指定數量或比例的行,生成虛擬表vt9,并返回給調用者%1. sql語句擴展1 .select 1.1選擇性插入語句1.1.1 insert

7、 into table 1 (field 1 ) select field2 from table2要求table 1必須存在。1.1.2 select field 1 into table 1 from table2要求table 1不存在,在運行時會自動創建表名為tablcl,字段名為field 1的一個表。1.2打開其它數據源/* oraclesvr為鏈接服務器名,木示例假定已經創建了一個名為orcldb的oracle數據 庫別名。*/exec sp_addlinkedserver 'oraclesvr', 鏈接服務器名 oraclesvr, sysname 類型'

8、;msdaora1, provider_name 數據源提供程序,此處為 oracle'orcldb* -數據源名稱goselect * from openquery(oraclesvr, 'select name, id from joe.titles1)如果冇多個sql server實例:select *from servernameinstancename.pubs.dbo.authors.注意:一個對彖的完整名稱包括四個標識符:服務器名稱、數據庫名稱、所有者名稱和對象 名稱。其格式如下:serve匚database j . owner_name . object_nam

9、e111間的名稱可以省略,但是.不可以省略。女u : server- -object_name2.update2.1多表更新update table 1 set table 1.field i=table2.field2 fromtable 1, tablc2 /*猜測下連接方式全聯接 full outer join */where tablel.field3= table2 .filed3知識:sql server的update語句屮from示可跟多個表,oracle則不支持該用法oracle 中:update table 1 set table 1.field 1=(select tabl

10、e2.field! from table2 where .field3= table2 .filed3)3. insert3.1插入語句的規范問題在 sql server 2000,sql server 2005 中標準語句:insert into table(field) values (value)提示:在access中不正確,原因sql語句不規范,因此在書寫sql語句的過程屮一定要按正 規的語法來寫。4. delete4.1標準刪除標準句:delete from table where condition提示:同insert4.2其它刪除4.2.1 truncate語法:truncate

11、 table table_name刪除表中所冇行,不記錄單個行刪除操作,不記錄口志,,所冇速度比delete快。4.2.2 drop語句: drop table table_name刪除表及相關,有fk約束的不能刪,先去年fk;系統表不能使用。5.order by功能:排序 技巧:order by newid()隨機排序%1. 動態sql語句4.1基本原則4.1預編譯問題在execute執行z前,數據庫不會編譯execute語句內的語句,動態sql語句就是放 到存儲過程中,它也不會預先編譯。4.1.2什么時候使用動態sql語句字段名,表名,數據庫名作為變量時,必須用動態sq1語句4.2.exe

12、cutej4.2.1語法exec ( select * from table_name where name=j +name+,) 括號不能少4.2.2傳遞參數-假設存儲過程test_sp中需婆一個參數:類型nvarchar(50)名稱parmdeclare parms nvarchar(50)set parms=,測試變量'exec test_sp parm=j parms -方括號內的可以省略如果是批處理中的第一句,則可以省略exec4.2.3輸出參數declare num int, field int,sqls nvarchar(40()0)set field=lset sqls= select a=count(*) from tablc_namc where ficld= field* exec sp_executesql sqls,n'a int output, field intnum output fieldselect num43sp_cxccutcsql語法:execute sp_executesql n select * from table_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論