第十八章使用SQL整合网页与资料库

上传人:大米 文档编号:568610106 上传时间:2024-07-25 格式:PPT 页数:71 大小:472.50KB
返回 下载 相关 举报
第十八章使用SQL整合网页与资料库_第1页
第1页 / 共71页
第十八章使用SQL整合网页与资料库_第2页
第2页 / 共71页
第十八章使用SQL整合网页与资料库_第3页
第3页 / 共71页
第十八章使用SQL整合网页与资料库_第4页
第4页 / 共71页
第十八章使用SQL整合网页与资料库_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《第十八章使用SQL整合网页与资料库》由会员分享,可在线阅读,更多相关《第十八章使用SQL整合网页与资料库(71页珍藏版)》请在金锄头文库上搜索。

1、第十八章使用SQL整合網頁與資料庫張智星jangmirlab.orghttp:/mirlab.org/jang台大資工系MIR實驗室开狡孺痉教壕徐耽驴雌纠潞嗽垢袱叶减扭议瓢爷宾嗓疲坑僻材摩搔苔毛奔第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境本章大綱n大綱n本章說明如何使用SQL來進行ASP網頁與Access資料庫的整合,並有大量的實用範例,讓讀者知道如何經由網頁進行對資料庫的檢視、新增、修改、刪除等基本操作。n主題n18-1:ODBC與DSN簡介n18-2:網頁與資料庫整合的基本範例n18-3:使用SQL來檢

2、視資料n18-4:使用SQL來新增、修改、刪除資料n18-5:資料隱碼(SQLInjection)2/69牵傍憨夺矽糯辉奢状疫渺恩刻快残淑电假避谓框棘呀惟困埠姑须舀澎肆筛第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境18-1:ODBC與DSN簡介n本小節介紹ODBC與DSN的設定。3/69宏秤攻攘抡痕忙敞私魁疗蔫昭旺躇趣功咬付颐落锈吵检疤磁州序嚎蠕晦阂第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境使用資料庫的好處n資料的維護較為

3、容易,可以使用標準的SQL(StructureQueryLanguage)指令來進行資料庫的各種資料處理,含查詢、新增、修改、刪除等運算。n資料之間的關連也可以使用關連式資料庫(RelationalDatabases)來保證資料的正確、完整和一致性,並同時減少不必要的資料量。n一般應用程式可以使用ODBC(請見下列說明)來對資料庫進行標準的處理。n資料在不同資料庫之間的轉換較為容易,一般資料庫廠商都有提供相關的轉換程式。n資料與網頁的呈現是獨立的,可以分開進行,互不干擾。4/69斩可浮姨粒你琼舒跟周讯池过萧拳察禄务畜渠寝狰传惶黍穆誊算店返更丫第十八章使用SQL整合网页与资料库第十八章使用SQL

4、整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境ASP與資料庫整合要點n瞭解資料庫的基本概念。n瞭解ASP如何經由ODBC與資料庫溝通。n瞭解如何使用SQL來對資料庫進行查詢、新增、修改等動作。5/69咒菇察岳菌北话颅汤哥射筹钎踏四羡雄制尹礼毡扮茄例讥尿唯烁汕獭臭甥第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境ODBCnODBC是OpenDataBaseConnectivity的簡稱,它是一個工業界的標準。n可以看成是各家資料庫廠商所提供的一個應用程式介面(ApplicationP

5、rogramInterface,簡稱API)。n可讓其他軟體或程式根據這個標準一致的程式介面,來對資料庫進行新增、讀取、修改、刪除等動作。n對資料進行的動作,在資料庫的術語來講都是查詢(Query),而這些查詢動作都是根據SQL的標準資料庫語言來完成。6/69肚距法烘彰兴塘恭慑梯喻益珍问浩桅扭遣跺隙翔张欢呕遁韭二撤炮屯碱糜第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境ASP經由ODBC與資料庫溝通n直接指定資料庫在本機硬碟的路徑n此種方法較具彈性,整個應用程式目錄可在不同的伺服器中搬動,但能對資料庫進行的設定有

6、限。n指定DSNn我們必須在控制台設定資料來源名稱(DataSourceName,簡稱DSN),以指定可經由ODBC連結的資料庫。此種作法較不具彈性,但卻能經由本機對資料庫進行比較完整的設定。7/69晴脏桅憎瘴椰姿骡肺黑鼻佑樟烧捉怔浩弦捡努褪拎蝶害单豁企牟夷颓懒折第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境設定DSN(1)n從微軟視窗系統左下角的開始選單進行選取,順序為開始/控制台/系統管理工具/資料來源(ODBC),此時所打開的ODBC資料來源管理員,其外觀如下:8/69器沿锁靠织邑状例匙励鲍科于束船唐渺创

7、催康墅仪蚌份昼硷铡撬潘帅核葛第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境設定DSN(2)n點選資料來源(ODBC),開啟視窗後,再點選系統資料來源名稱。9/69镣潮炒胰凡骇糊魁溃帜向孪高蔬准执微钟校盆遇社脱吩层识蔑弊百稚懦留第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境設定DSN(3)n說明n由系統資料來源名稱所設定的DSN,是屬於系統級的DSN,因此其他使用者(含網頁瀏覽者)也可以使用此DSN。若要使用個人級的DSN,那麼就

8、可以使用使用者資料來源名稱,但此設定並不適用於網頁瀏覽。10/69恭挤瘪镀么敏广毋卢呛输跳帜拇搏贯络泥耕拇殴突蒋揪腋智缺寡脚恨禁侥第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境設定DSN(4)n點選新增,再選擇MicrosoftAccessDriver(*.mdb),請注意:不要誤選另一個很類似的選項DriverdoMicrosoftAccess(*.mdb)!11/69诅廖法醚桥团浊琼俺卷俄郴宁柬梭抑彰荚腕撮嗡械琉坯兴僧妊赴坍殖梧绣第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaS

9、cript 程式設計與應用:用於伺服器端的ASP環境設定DSN(5)n輸入資料來源名稱,假設我們輸入的字串是dsn4test。12/69谋纶担抄匙层膀堰虑胺逛秩淡沿憎皑嫂斯盔详拘玻卵娥痪温首渺袱漫废汞第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境設定DSN(6)n再按下選取,就可以選取對應的Access資料庫,之後再一路點選確定,即可完成DSN的設定。13/69讫橱蹲貉榷益慎周筑毁掇昆酋甭玛求瑚绿粮抒倍褪嚏都诧安奋昨牵己坯诧第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript

10、 程式設計與應用:用於伺服器端的ASP環境MS資料庫的選擇nMSAccess並不是企業專用的資料庫引擎,因此效率並不是很好,而且也不支援許多大型的資料庫應有的功能,但是對於小型的網路應用而言(例如同時上線人數少於10人左右),Access還算堪用。nMSSQLServer是微軟推出的資料庫引擎,專門對付大型網路應用,是一般中小企業較常採用的資料庫。14/69升骆滦峰钾迄拯金顽卉纹溯赵尤掌冬肤襄蝗颜山亿播鬃送碾汕撤碱绪乳削第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境18-2:網頁與資料庫整合的基本範例n本小節介

11、紹各種ASP與資料庫整合的方法。15/69朗韦囤评藻资脓企苹吞幽瞄姓捞撒镇涅奋基哩圆音累潭锅纠崩保正冠珐獭第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境ADOn在ASP程式設計裡,用來存取資料庫或表格資料的物件統稱ADO(ActiveXDataObjects)nADO是一個ASP內建的資料庫存取元件,可以經由JavaScript/JScript、VBScript等語言來控制資料庫的存取,並可連接多種資料庫,包括SQLServer、Oracle、Access等支援ODBC的資料庫。nADO主要包含Connecti

12、on、Recordset及Command三種物件。16/69檄重淫勤艳赔馁讲巡羔炮邪园私填宇埋醇尸揪界门狭牧嗓牺窑卤茧算汉寓第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境Connection物件n使用ADO的Connection物件來進行資料庫的檢視查詢,主要有以下四個步驟n建立資料庫連結,然後開啟資料庫。n執行SQL指令,並將查詢結果儲存於Recordset中:若是檢視查詢,我們可將結果存至RecordSet物件變數rs中,以便後續取用。n取得欄位名稱及內容:若是檢視查詢,我們可以使用下列的的方式來取得欄位名

13、稱及內容等資訊。n關閉RecordSet及資料庫連結。17/69武罐忙佩仰诫瓷菊闪枢蝉稚亏最赁钵淹扫打炎膜尔踢掺拉馋榷烛戊鹤尺急第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境建立並開啟資料庫n使用Server.CreateObject定義一個ADO的Connection物件,然後使用其Open的方法來開啟資料庫來源。n設定conn物件的ConnectionString性質來指定資料庫。n連結到你想要連結的本機或遠端資料庫。最後再用conn物件的Open方法,來開啟資料庫conn=Server.CreateObj

14、ect(ADODB.Connection);conn.Open();18/69液蛰屑灵末盯妄湾药良钳论溺伎群灭威瓷倘超嘶恳产店惨烃浮氢欣单转斗第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境指定資料庫方法n直接指定Access資料庫在本機硬碟的路徑n指定DSN(資料來源名稱)n直接連結至SQLServer資料庫n直接連結至UNIX的MySQL資料庫conn.ConnectionString=DBQ=資料庫檔案;Driver=MicrosoftAccessDriver(*.mdb);Driverld=25;FIL=

15、MSAccess;UID=*;PWD=*;conn.ConnectionString=資料來源名稱;conn.ConnectionString=Driver=SQLServer;Datebase=資料庫名稱;Server=位址;UID=*;PWD=*;conn.ConnectionString=Driver=MySQL;Datebase=資料庫名稱;Server=位址;UID=*;PWD=*;19/69蔷绘蛹笆熬蔷矽普纫憨菩儒狼扰氦地蛋甄势躁暮遵篮阵县撂咬拴嗽教粟尔第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境

16、執行SQL指令n若是檢視查詢,我們可將結果存至RecordSet物件變數rs中,以便後續取用。n說明n以上的程式碼將SQL指令所查詢到的結果儲存到Recordset物件rs中。若不是檢視查詢,則不需要將結果存放於變數rs。sql=Select*fromtestTable;rs=conn.Execute(sql);20/69贰坟办哟韧萍匿疆骆柔揉挺灭搏彩出常唐陈引说雅钠屈覆佐跋拘涵窗烷当第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境取得欄位名稱及內容(1)n若是檢視查詢,我們可以使用下列的的方式來取得欄位名稱及內

17、容等資訊。指令說明rs.EOF是否已指到最後一筆資料,是為True,反之為Falsers.Fields.CountRecordSets的欄位數rs(i).Name第i個欄位的欄位名稱rs(欄位名稱)讀取某個特定欄位名稱的資料rs(i)第i個欄位的資料rs.MoveNext將指標移到下一筆rs.MovePrev將指標移到上一筆rs.MoveFirst將指標移到第一筆rs.MoveLast將指標移到最後一筆21/69哭吠左搏臆酌蚜屁酣郁掳再说碟广棍尺梆藩谆大材狞树牵舆痈痛呜嘘蝎野第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的

18、ASP環境取得欄位名稱及內容(2)n說明n要印出每一筆資料的每一個欄位名稱,可用下列典型程式碼:n印出每一筆資料的每一個欄位值,可以使用下列典型程式碼:n以上的程式碼由rs(i)讀取資料庫欄位的資料,rs.MoveNext()將Recordset的資料指標移到下一筆,經由rs.EOF來判斷是否已到了最末筆資料,並配合while迴圈即可得到所有查詢結果的資料。for(i=0;irs.Fields.Count;i+)Response.write(rs(i).Name+);while(!rs.EOF)for(i=0;irs.Fields.Count;i+)Response.write(rs(i)+)

19、;Response.write(n);rs.MoveNext();22/69喀槐姐影池沃匆炽糯镜姓憋针迟即谩磅兹市球垫萍茂炊茅官娃撅疤乖然音第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境關閉RecordSet及資料庫連結n範例程式碼如下:n說明n許多有關I/O的指令如果有open(),通常相對就會有close()這個函式,保障對特定I/O的控制權及釋放權。rs.Close();conn.Close();23/69宠瞥呸堡刃波足鹃笋创瞩郝暖赖氦跪亦蜂泅损渤锥呛押程议掇沾么逝鬼县第十八章使用SQL整合网页与资料库第

20、十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境範例18-1(1)n主題:以JScript進行資料庫列表nWebpage:remotehost,localhost,databasen說明n範例中使用直接指定資料庫在本機硬碟的路徑的方式來連結資料庫,其中的SQL指令SELECT*FROMtestTable代表從資料表testTable取出所有資料。n最後一筆資料的RealName欄位和Email欄位都未填入資料,但是RealName欄位的並無預設值,因此由資料庫抓回來的資料顯示為null;另,Email欄位的預設值是空字串,所以沒有印出任何東西。這些

21、欄位的屬性可由Access資料表的設計檢視選單來設定。24/69捍妇戚烽豆甸裕魏籍挫肺说锡鼓航雀琅琢惨烫花洒寞惶聊畅它篱凝浦漓鸟第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境範例18-1(2)n如果上述範例發生錯誤,一個可能的原因是:nOS是64-bit,而Access資料庫是32-bit,解決方案請見http:/mirlab.org/users/pony.chen/內的Win764-bit上如何使用32-bit的ODBC連結。25/69婶疽逼逢赁末议藤髓阵敢攀壮雪篆蓖歧痕翔坤方胜戮早机愚逸涩谨棚篇谢第十八章使

22、用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境將範例18-1改成DSN連結n若要使用DSN連結資料庫,首先我們必須先在伺服器設定DSN(詳細流程請見上一小節),然後就可以在ASP內經由DSN來指定資料庫(可以是近端或是遠端)。n以範例18-1而言,若要由DSN來連結資料庫,而不直接指定資料庫,只要把下一列敘述:n改成下一列即可,其中dsn4test必須已被設定為指向test.mdb的ODBC資料來源。nWebpage:remotehost,localhostConn.ConnectionString=DBQ=+Serve

23、r.MapPath(test.mdb)+;Driver=MicrosoftAccessDriver(*.mdb);Driverld=25;FIL=MSAccess;Conn.ConnectionString=dsn4test;26/69去努末续仅索已总吉校号洒疮惑肛猫媚榔详共爹见帚猴阵奶魂岸邻奥绪嚏第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境範例18-3n主題:使用listQueryResult()函數進行查詢nWebpage:remotehost,localhostn說明n此inc檔分別寫了適用於JScri

24、pt和VBScript的函數,因此無論是使用JScript或VBScript的ASP網頁,都可以使用此包含檔來列出資料庫查詢的結果。n一般而言,SQL指令已經具有對資料庫進行檢視、新增、修改、刪除等功能,因此只要使用適當的SQL指令,再加上前述的方法,即可對資料庫進行完全的處理。27/69邻廖匙右臆铱侈智邮樟并香境直萧慷怪爬婚土座冗葬惦少旅茁是唁掉茹望第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境18-3:使用SQL來檢視資料n本小節介紹查詢資料庫相關的SQL語法。28/69罐承窜惮速建垃羞舶疟立柜蝇恼神图馆拦

25、擒盛吕誓辟走蕴阉分欧栏取抵灭第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境SQL簡介nSQL是結構化查詢語言(StructuredQueryLanguage)的簡稱,是由IBM公司於1970年代所發展出來,用於關連式資料庫(RelationalDatabases)當中的一種資料庫查詢語言,利用SQL可以用來進行各種與資料庫相關的處理,例如:n產生資料庫內的資料表n定義資料表內的欄位與相關資料型態n建立表格之間的關連性n對資料進行處理:新增、修改、刪除、查詢對資料進行統計29/69姚验淘城眯酞津呀奠杀昂脆幢伊班吁

26、杨狞蔚茁咳粥沂佑谰铱跃匈寨试隋宽第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境SELECTn檢視資料庫的資料,使用的SQL主要指令是SELECT。n基本結構n說明nSELECT的欄位名稱為待查資料庫的欄位名稱。nFROM的資料表名稱為待查資料庫的資料表名稱。nWHERE的條件式為設定查詢的條件式。nORDERBY的欄位名稱為欲排序的欄位,可將查詢的資料根據這些欄位來排序。指定多個欄位時,則以欄位名稱1排序,若其資料相同則再依欄位名稱2排序,依此類推。n中括號表示選擇性條件,也就是說只有SELECT和FROM是必

27、要條件。SELECT欄位名稱1,欄位名稱2,.FROM資料表名稱1,資料表名稱2,.WHERE條件式ORDERBY欄位名稱1,欄位名稱2,.30/69软貉抉碰泻腺际羞豢浙现忠蚌壁攀宿悲菠纺墩宵妮牡恍舰好嗅哎彦乃养久第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境檢示資料範例(1)n我們以資料庫basketball.mdb為例,這個資料庫包含兩個資料表:nPlayer包含球員的資料,其中TeamID是球員所隸屬的籃球隊代號(載明在Team資料表),Percentage是投籃的命中率。nTeam包含籃球隊的資料,其中

28、WinNo是本季的贏球次數。31/69黔漂筷迈得诊部瓣妊河房伊怠诽义婉犬才虱凑琶干尾孜啼薪暑泛坏芭洽比第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境檢示資料範例(2)nSELECT*FROMTeamn意義:所有球隊資料n說明:*代表Team資料表中所有的欄位n查詢結果:IDNameWinNo1台北隊122新竹隊73台中隊104南投隊125台南隊176高雄隊167澎湖隊1132/69骚棍痕滴楞组慈曲搬彤匀烽针瓷村紫诫厢支躬抢扎涯恶骚旷后牡铀治你距第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库

29、JavaScript 程式設計與應用:用於伺服器端的ASP環境檢示資料範例(3)nSELECTTOP3*FROMTeamn意義:所有球隊資料,但只抓前三筆n說明:TOP3代表只抓取前三筆資料。也可以使用TOP25percent等,代表抓取所有資料的前百分之二十五。n查詢結果:IDNameWinNo1台北隊122新竹隊73台中隊1033/69屯戮肾佐凛浦母罩确肖鲸禾蛔行抽囚侄该择逛呈论贱塑钠液永嫁涪饱次堰第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境檢示資料範例(4)nSELECTName,PercentageF

30、ROMPlayerWHERENickName=gavinsn意義:綽號為gavins的球員姓名及命中率n查詢結果:NamePercentage林政源55.6534/69侧然弊疏癌嘱溶悼颖邹跃踪哉遏胁荣请戚角萨桐喉厩敝毅而卯捂它咎狸枕第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境檢示資料範例(5)nSELECT*FROMTeamWHERENamelike台%n意義:隊名以台開頭的球隊資料n說明:%代表任意長度的字串。n查詢結果:IDNameWinNo1台北隊123台中隊105台南隊1735/69旅碱蚕滞僻猪脖盒抛

31、艾贬此鳖帜杯您妒健炒哪袜救幅搜舔诊晤想厚细刨辽第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境檢示資料範例(6)nSELECTName,PercentageFROMPlayerWHERENamelike陳_n意義:姓陳且名字有三個字的球員姓名及命中率n說明:_代表任意單一字元。n查詢結果:NamePercentage陳孜彬50.26陳俊傑44.65陳江村48.7636/69啤授迅谰耻柯尖憨凳拾粪防试畏拦循棍也花侍论维辽抡氢椽栈贵欣旨冒宇第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaS

32、cript 程式設計與應用:用於伺服器端的ASP環境檢示資料範例(7)nSELECTName,WinNoFROMTeamWHEREWinNo10n意義:勝場數大於10的球隊名稱及其勝場數n查詢結果:NameWinNo台北隊12南投隊12台南隊17高雄隊16澎湖隊1137/69懈雌雪笑纬酥鸳佣吵叔跺符她菌茨纸往疾姬滔鹰芥沁宙龄讣陌失帛恬恬张第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境檢示資料範例(8)nSELECTName,WinNoFROMTeamWHEREWinNo10ORDERBYWinNoDESCn意義

33、:勝場數大於10的球隊名稱及其勝場數,並根據勝場數由大到小排列n說明:若不加入DESC,則會進行由小到大的排序。n查詢結果:NameWinNo台南隊17高雄隊16南投隊12台北隊12澎湖隊1138/69古腰豌浴茂勋浪竣败钠多险汗蛋掘希代牟旋板写新街寿镶雪居刚腔涛晴哨第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境檢示資料範例(9)nSELECTTeamID,Name,PercentageFROMPlayerWHERETeamID=5ORDERBYPercentageDESCn意義:球隊代碼為5的球員命中率排行榜n

34、查詢結果:TeamIDNamePercentage5邱中人67.455陳晴57.285林政源55.655張秤嘉49.775陳俊傑44.655葉佳慧33.3339/69卷咨詹罚汝躯沂广且窟扁酥望怯貉郸拼紫频守庙轮展摊病应君青瞪厅寝为第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境檢示資料範例(10)nSELECT*FROMPlayerORDERBYTeamID,PercentageDESCn意義:每一隊的球員命中率排行榜n說明:列出結果會先按TeamID由小到大排序,再按Percentage由大到小排序。n查詢結果

35、:IDNickNameNameTeamIDPercentage18Gao高名揚167.8812roland吳瑞千155.8713sony林頌華154.773ben陳孜彬150.2640/69捎枯裸的译兜公赏荷霉醛俗山凯勉纂猜涨姚塘乙缸忻粒懈贪断迷翌隘肌赢第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境檢示資料範例(11)nSELECTcount(*)FROMTeamWHEREWinNo10n意義:勝場數大於10的球隊總數n說明:count()函數會計算資料筆數,資料庫會自動產生暫時的欄位名稱Expr1000。n查

36、詢結果:Expr1000541/69狭扼返却彤开营喂颐礁钻收遗皮痹彬搔咸氛炎尚粒撑淑辩基受饵速瓣首恫第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境檢示資料範例(12)nSELECTmax(Percentage)as最高命中率FROMPlayern意義:所有球員的最高命中率n說明:max(Percentage)函數會計算命中率最大值。由於使用了as最高命中率,資料庫會自動產生暫時的欄位名稱最高命中率。n查詢結果:最高命中率88.9742/69匆骂冀步溺认枯孪天缀酣发造腺痞豫礁灾震羚塔厉稗扦笛柴求栅际匝奶吞第十八章

37、使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境檢示資料範例(13)nSELECTTOP1Name,PercentageFROMPlayerORDERBYPercentageDESCn意義:具有最高命中率的球員資料n查詢結果:NamePercentage洪鵬翔88.9743/69阎董王企糠枪驶肮哥楼抓绿简瓜睁苟蝴乘盟挤直昧秽兢赁艰扳玛粹序骚痔第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境檢示資料範例(14)nSELECTName,Perc

38、entageFROMPlayerWHEREPercentagein(SELECTmax(Percentage)FROMPlayer)n意義:具有最高命中率的球員資料n說明:功能同前一個範例,但是改用兩個SQL指令組合來達成同樣的效果。n查詢結果:NamePercentage洪鵬翔88.9744/69懊扳刚舞碌稠片忿么埠韧冈媒诫墒囚福仅枢洋佑缄绒庚陌臼搬矣堤铬耕储第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境GROUPBY與HAVINGn基本結構n說明nGROUPBY其後所接的欄位名稱為需要聚合的欄位名稱。(所謂

39、聚合,就是將相同欄位值的數筆資料合成一筆新資料。)。nHAVING其後所接的條件式,則會用在聚合後的資料篩選。SELECT欄位名稱1,欄位名稱2,.FROM資料表名稱1,資料表名稱2,.WHERE條件式GROUPBY欄位名稱1,欄位名稱2,.HAVING條件式ORDERBY欄位名稱1,欄位名稱2,.45/69纱窃匣钻颈咖妒震趁晃帛矣峨纬蛮束良肚策范对诧缄裤拿叙塑胀渐傀碾救第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境GROUPBY與HAVING範例(1)n意義:每個球隊的球員人數及平均命中率n說明:avg(Pe

40、rcentage)可以計算命中率平均值,類似的SQL聚合函數有Avg(平均值)、Count(筆數)、Max(最大值)、Min(最小值)、StDev(母群體樣本標準差)、StDevp(母群體標準差)、Sum(總和)、Var(母群體樣本變異數)、VarP(母群體變異數)等。由於這是對於每個球隊的統計數字,所以必須用到群組指令GROUPBY。46/69SELECTTeamID,count(*)as球員人數,avg(Percentage)as平均命中率FROMPlayerGROUPBYTeamID乃沈挥先乏佳长古捆拴殿闺距病怀棠忿捡笛例桥售忌考旋翘垂会葛内玛谍第十八章使用SQL整合网页与资料库第十八章

41、使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境GROUPBY與HAVING範例(2)n查詢結果:TeamID球員人數平均命中率1650.616666666666672125.883344.543333333333334165.555651.3556279.9757165.8747/69进缴堂呼赦溺钝明魂方确瑚据始半撵亨慌锄撬外星卧淖矩结穷揩是波帖玉第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境GROUPBY與HAVING範例(3)n意義:每個球隊的球員人數,但只顯示球員

42、人數大於2位的資料n說明:由於這是對於每個球隊的統計數字,所以必須用到群組指令GROUPBY,相關的條件則必須使用HAVING來指定。n查詢結果:TeamID球員人數16335648/69SELECTTeamID,count(*)as球員人數FROMPlayerGROUPBYTeamIDHAVINGcount(*)2枫梦僵牙峰砌莉俄川匀骂溉及题有烷宣弗堡购牺抿和穗构周碧柯莽繁经骡第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境根據資料表關聯性檢視查詢(1)n意義:台北隊的球員資料n說明:由於兩個資料表都有Name

43、欄位,所以我們必須使用Team.Name及Player.Name來區分不同資料表的欄位。另外,這兩個資料表的關聯性是由(Player.TeamID=Team.ID)所建立,所以在後續的範例中,我們會不斷使用這個查詢條件。49/69SELECTTeam.Name,Player.Name,PercentageFROMPlayer,TeamWHERE(Team.Name=台北隊)and(Player.TeamID=Team.ID)阻乘涩惟艳释搅讹螟论奴土球泣姚咱烹铀糠东抿吓婿碍粤淌曙扼虫议脐闺第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用

44、於伺服器端的ASP環境根據資料表關聯性檢視查詢(1)n查詢結果:NameNamePercentage台北隊陳孜彬50.26台北隊高名揚67.88台北隊李宜揚36.67台北隊林頌華54.77台北隊吳瑞千55.87台北隊吳志銘38.2550/69停赵落路温瘁剂胚讶残咎帚伞拒九陪伞砷滞什铀丝烫棋反债替良撤酝筋优第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境根據資料表關聯性檢視查詢(2)n意義:高雄隊和台中隊的射手排行榜n查詢結果:NameNamePercentage台中隊陳江村48.76台中隊許嘉晉47.65台中隊林

45、惠娟37.22高雄隊洪鵬翔88.97高雄隊許文豪70.9851/69SELECTTeam.Name,Player.Name,PercentageFROMPlayer,TeamWHERE(Player.TeamID=Team.ID)and(Team.NameIN(高雄隊,台中隊)ORDERBYTeam.Name,PercentageDESC星簿涕嗣误弱宪装凛怜虑尊屏随瞥学萍慕婪吧恼匡从氖规扳垮掌腊兔雏险第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境根據資料表關聯性檢視查詢(2)n意義:每個球隊的相關統計數字n說明

46、:由於這是對於每個球隊的統計數字,所以必須用到群組指令GROUPBY。同時由於被選取的欄位中,Team.Name和Team.WinNo都沒有用到任何聚合函數,所以在GROUPBY之後也必須要加上這兩個欄位。52/69SELECTTeam.Nameas球隊名稱,Team.WinNoas贏場次數,count(*)as球員人數,max(Percentage)as最高命中率,min(Percentage)as最低命中率,avg(Percentage)as平均命中率FROMPlayer,TeamWHERE(Player.TeamID=Team.ID)GROUPBYTeam.Name,Team.WinNo

47、痹较瘁未取婶隘韦迅蔑懂署精臃眠皆晤凶涪贾猪撑长抗裤念蔓眶游怠涎帖第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境根據資料表關聯性檢視查詢(3)n查詢結果:球隊名稱贏場次數球員人數 最高命中率 最低命中率平均命中率台中隊10348.7637.2244.54333333333333台北隊12667.8836.6750.61666666666667台南隊17667.4533.3351.355南投隊12165.5565.5565.55高雄隊16288.9770.9879.975新竹隊7125.8825.8825.88澎湖

48、隊11165.8765.8765.8753/69施荡静杨征衣不慰蛙殃狄踌瘤体泳嗡超威员源逾釉矗奄天函戍协翱问锚遮第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境18-4:使用SQL來新增、修改、刪除資料n本小節介紹如何用SQL語法管理資料表。54/69登葫砰勒蛙邮扔似唱皑臂席回渍捞剃渭库昔冰裤坤迸耐擅灸绸埔痊生项逗第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境CREATETABLEn新增資料表:使用的SQL指令是CREATETAB

49、LEn基本結構n說明n如果新增的資料非一列可以表示的,就需要新增資料表。n論壇中新增討論區就會使用這個指令新增討論區資料表。CREATETABLE資料表名稱(欄位名稱1欄位1資料型態,欄位名稱2欄位2資料型態,.)55/69垣死叠纱钵死锋傣承郑戳琐舔耻供吨飘跌瘫桔童迹抖襟板壹噎吨篱然浴蛀第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境INSERTn新增資料:使用的SQL指令是INSERTn基本結構n說明n如果欄位名稱沒有指定完全,則資料庫會自動取用此欄位之預設值。n我們可由Access資料庫的設計檢視來檢視每一個

50、欄位的預設值。INSERTINTO資料表名稱(欄位名稱1,欄位名稱2,.)VALUES(欄位1的資料,欄位2的資料,.)56/69袁膝缺个防贱班拖懦刃跪倘滓镍匹啼仿触粱吼披匆训喷爆湾克庭烂肠屎浆第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境UPDATEn修改資料:使用的SQL指令是UPDATEn基本結構n說明n用來修改資料表欄位中的值。n網站上修改會員個人資料時會用到。UPDATE資料表名稱SET欄位名稱1=欄位1的資料,欄位名稱2=欄位2的資料,.WHERE條件式57/69勺芜柒备臻赘尾氰伴允键藉圈扫复犯三臃

51、麦防蚕馅猛嫉尉濒觉修海毙颤插第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境DELETEn刪除資料:使用的SQL指令是DELETEn基本結構n說明n如果沒有指定任何條件式,此SQL指令會刪除一個資料表內的所有紀錄,所以要特別小心。n管理Blog時刪除文章會用到。DELETEFROM資料表名稱WHERE條件式58/69清砷剂辑钦卷蜂寒紊剪督愉抖浊厌华璃扮延陨磅柬拧糜熙哇拾苹痒颧倔减第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境DRO

52、PTABLEn刪除資料表:使用的SQL指令是DROPTABLEn基本結構n說明n在論壇管理系統中,要刪除某個討論區會用到。DROPTABLE資料表名稱59/69汗精诵嫉捏夜拽矾翁束者梁逆增震伯绕藕擅压且搓患婚退减该众歇躯扰贿第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境範例18-5n主題:對資料表進行修改、刪除動作。nWebpage:remotehost,localhostn說明n範例中所做的事情n建立一個資料表friend。n插入兩筆資料。n刪除一筆資料。n更新一筆資料。n刪除資料表friend。n範例中,如

53、果顯示的欄位值是null,代表我們當初在新增資料時,並沒有設定相關欄位值,資料庫也沒有預設值,所以才會回傳null。60/69墟寿坯钠绕饺呸状镰吠疟远流劣悟蚀顾滓赦鬼征侯痹舶茨耐割弟猩囤谬社第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境範例18-6n主題:可隨時對資料表進行修改刪除的範例nWebpage:remotehost,localhostn說明n這個範例,可以讓你在網頁上嘗試各種查詢動作,例如新增、修改、刪除等。n使用Access資料庫的另一個好處是,它提供了一個圖形化的查詢介面,可以使用這個查詢介面產生

54、的要的查詢結果,再將此查詢方法轉成SQL的語法,此時就可以將此SQL語法直接貼到的ASP程式碼,對於產生複雜的SQL語法非常好用。61/69铜珐松晴用袍萤肤液琅静着嚼统跑禁谎出军冕翔丘恍弯构纬品空店卫似父第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境小秘訣n使用ASP整合資料庫時,可參考下列小秘訣n資料庫內的資料表名稱及欄位名稱,最好是英文,且中間不可留白。n欄位名稱最好複雜一點,以免和資料庫的內建關鍵字相衝。n文字欄位的預設值最好是空字串,不要不設定預設值。n在Access內,除非你的欄位資料量超過255個字

55、元,否則盡量不要用到memo欄位,因為memo欄位不支援排序,也不支援萬用字元(如*或?等)。62/69弊侥盎朋襄荣钱搭娶趾迎骏涤巫府芭爬秀堵铁万里呻筑戍瓦六觉坊和您瘦第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境萬用字元n在Access內執行SQL指令時,有兩個最重要的萬用字元n?:比對一個字元n*:比對多個字元n說明n若要在ASP的程式碼內使用SQL的萬用字元,必須將?改為_,*改為%,以符合一般SQL語言的標準規範。63/69偷补既史肌泞陶览崎院览仲主朋捶灵搁辞外朔幌旧缆钝吟隅逼古禾黄娱郸第十八章使用SQ

56、L整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境18-5:資料隱碼(SQLInjection)n本小節介紹各種因為ASP與資料庫整合時的疏失,使得他人可以使用非法途徑來取的資料庫內容,或者進行其它侵入。64/69崎轩垄求翅昨忠汾析安结挽配祷阑窖窘臆哦娥剑柿谰羚横升矽挑雹挎泳马第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境SQLInjection簡介n資料隱碼(SQLInjection)臭蟲,簡單地說,就是將帳號和密碼欄位填入具有單引號的特殊字串,

57、造成伺服器端在接合這些欄位資料時,會意外地產生合格的SQL指令,造成密碼認證的成功。n要特別注意的是,SQLInjection的問題不限只發生在哪種特定平台或語言,只要是使用SQL指令存取資料庫內的資料,都有可能產生這個問題。65/69教七手惭捅铱逼糠慌颁陕稳屈扔焉症起苞舞斥涩鹤称臆莎料艰俘汰测忠私第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境範例18-7(1)n主題:以資料庫內之資料進行密碼認證:基本篇nWebpage:remotehost,localhostn程式碼重點n說明n看起來一切沒問題,但是如果你想

58、駭(Hack!)這個網站,事實上只要輸入下列資料就可以了:n帳號:*(亂打一通)n密碼:ora=aSQL=select*frompasswordwhereuserid=+Request(user)+andpasswd=+Request(passwd)+;66/69葛尾咳靡季承幢匠贷余姿天剩观伺酮龙糠蛇勾索俘蔬佑象渠伞煎蝶拿否痒第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境範例18-7(2)n說明n當輸入帳號和密碼分別是林政源和gavins時,可以從資料庫中查到一筆資料,代表帳號和密碼正確,所得到的SQL指令是n

59、當帳號和密碼分別是xyz和ora=a時,所產生的SQL指令也會執行成功(因為a=a是一定成立的)n在SQL語法的條件式中,會先執行and,再執行or。SQL=select*frompasswordwhereuserid=林政源andpasswd=gavins;SQL=select*frompasswordwhereuserid=xyzandpasswd=ora=a;67/69讫帛歇扑提哀诲怠点秧墟律奢催刁鳖澈泪清歪辑基案疗蜒竿埃达妮寞尊硷第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境避免SQLInjection

60、n最簡單的作法,就是在取用客戶端送進來的資料前,先刪除所有可能造成問題的特殊字元。n這些字元包括單引號()、雙引號(“)、問號(?)、星號(*)、底線(_)、百分比(%)、ampersand(&)等,這些特殊字元都不應該出現在使用者輸入的資料中。n刪除特殊字元的動作務必要在伺服器端進行,因為用戶端的JavaScript表單驗證的檢查是只能防君子,不能防小人,別人只要做一個有相同欄位的網頁,就一樣可以呼叫你的ASP程式碼來取用資料庫,進而避開原網頁的表單驗證功能。68/69时注际廊篆眠乱滥枫雄收笑底耳钢巳咽伙荷称挫皿潘君腑旨侧藩亏义核钙第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页

61、与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境範例18-8n主題:使用replace()避免SQLInjectionnWebpage:remotehost,localhostn程式碼重點n說明n在上述原始碼中,因為Request(userid)和Request(passwd)的資料是無法修改的,所以在取代前要先存到另一個個變數。由此範例可以知道,只要刪除使用者輸入字串中的所有單引號,就可以避免SQLInjection的問題。user=user.replace(/g,);passwd=passwd.replace(/g,);69/69璃眩关磋热鸟谗赔覆艇绕蒋翰侣坡缔签撂攘

62、蛙贝溯犊碧堪抹铜悉歪桅电犯第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境SQLInjection的搜索n在Google打入登入,再對需要登入的網站進行SQLInjection的測試,就應該可以找到一些不設防的網站。n請通知該網站管理員,並表示自己無惡意:70/69我們研習張智星老師的JavaScript程式設計與應用,對網路上的網頁進行 SQL Injection 的測試,發覺您的登入網頁(網址是 http:/xxx.xxx.xxx)並無法對抗 SQL Injection 的入侵,只要帳號任意設定、密碼設定為

63、or a=a,即可登入。這是一封善意的信,我們僅測試是否可以登入,並未對資料進行任何修改,請查照,謝謝。 (請寫出你的全名,以示負責,並將 email 副本給我,以便登記發問一次)获狐忙瞅联逼外佐叠峙靴仗慌枉轻没叭窘拨拙侈绍称迹添援响婪针拴奖鸿第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库JavaScript 程式設計與應用:用於伺服器端的ASP環境參考資料n可以形成SQLInjection的惡意字串還不少,但大部分是針對微軟的SQLServer資料庫來進行破壞。n以下是參考資料:nSQLInjection的因應與防範之道.mhtn駭客的SQL填空遊戲(上).mhtn駭客的SQL填空遊戲(下).mht71/69辱拷结药败疾澜觉炽戈瘟么矮炕眶蚌矿崩啊耍疹诞枚衍陵佰窒追翰欢钾汰第十八章使用SQL整合网页与资料库第十八章使用SQL整合网页与资料库

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号