![lch2003](/http://i34.photobucket.com/albums/d122/c000c000c/009.gif)
[分享] SQL語法教學
@ 2006-7-28 06:16 PM自從上次被 熊小
![](/images/smilies/icons5.gif)
結果我找到「SQL語法入門」
大家參考一下
![](/images/smilies/icons18.gif)
( 基本上這個不算是「入門」, 而是「進階」
![](/images/smilies/dizzy.gif)
7 評論
MySQL中文參考手冊
http://linux.tnc.edu.tw/techdoc/mysql/mysql_doc/manual_toc.html
初學就熟用四大語法
SELECT
INSERT INTO
UPDATE
DELETE FROM
發佈者 : laikyo
@ 2006-7-29 03:21 AM
若是要用 MySQL,用這種 GUI 介面,脫拉就完成 SQL 語法雛型:
http://www.mysql.com/products/to ... /build_queries.html
還有語法可直接查詢。
query browser 顯示中文若出現亂碼,可到 mysql administrator 裡設定
Startup Variables>>Advanced>>Def. Chr Set
5.1 中文版手冊
http://twpug.net/docs/mysql-5.1/
SQL 每家都有差異,建議選一家資料庫後再去學它的 SQL。不然可能很容易陣亡。
[jocosn 在 2006-7-31 07:11 AM 作了最後編輯]
發佈者 : jocosn
@ 2006-7-31 01:22 AM
真的是蠻進階的連union都出來了
![](/images/smilies/biggrin.gif)
關聯式資料庫我覺得重要的還是觀念問題,
語法方面不要跑預存程序的話大部份都一樣,
我的經驗是這樣,
1.盡量減少連線次數 :
比如時常為了跑複雜的表格運算等等的會跑一個大迴圈,假設一千筆資料,在這
個大迴圈內又每圈再跟資料庫查詢一次資料,這個會極大伏度的降低效率。
2.與資料庫連線時只抓取所需要的資料即可,
例如Select * From xxxTable這樣把所有欄位都一次select出來自然會比較慢,
這其實牽涉到硬碟原理,
假設我的硬碟是sata 傳輸速率為80mbps好了,但是因
為多抓取一個欄位,每個欄位大概有1kbytes的資料,一次又抓取了10000筆資料
,實際上佔用的硬碟空間可能是10000*1kbytes=10000kbytes=10mbytes = sata硬碟傳輸速度(80mbps/8=10mbytes),多抓取一個欄位的資料就會多出1s的時間,當然實際上會根據各家的檔案系統及資料庫效率會有所差異,
3.cpu的速度>RAM>>HDD:
就是因為這樣才會有許多快取機制,硬碟sata理想通道寬度是150mbps sata2是300mbps,現在隨便一台電腦的記憶體寫入速度都有3g以上,更何況硬碟又有硬碟磁頭所造成的效能瓶頸,除非砸大本錢去買光纖通道的storage(最高可達4gmbps),不然其實程式方面多下點功夫還是值得的。
我遇到很多軟體工程師基本上是不想碰硬體這一塊的,但是我覺得多了解一些硬體原理絕對會增加程式的執行效率(雖然我功力還是很弱
![](/images/smilies/kiss.gif)
發佈者 : steven211
![等級: 4](/images/twed2k/star_level3.gif)
補充一下 (都是針對MS SQL的情況):
1.
其實跟database拉資料的時候,
如果在進for loop之前就把connection建立好,
結束for loop之後才把connection結束,
在for loop裡面讀取100次跟1000次在速度上的差別是不大的.
2.
不要因為懶就用SELECT * FROM是狠重要的,
常常在maintain程式的時候發現明明只要1, 2個column的資料,
卻一次抓了所有column的資料回來.
讀取的時間影響倒是還好 (因為db server的memory通常相當大),
重要的是浪費了好幾倍的memory.
另外,
如果要做簡單的排序這些動作,
最好能夠直接在SQL query中處理.
第一個是省下記憶體,
第二個是效率也會比較好.
有機會再補充囉.
發佈者 : ithinkurdumb
@ 2007-3-4 01:11 AM
還真不賴, 整理的真好!
入門及進階都含括了.
剩下優化的部份就靠各位多多提供了!
感恩! 感恩!
發佈者 : aleck
![等級: 4](/images/twed2k/star_level3.gif)
http://www.1keydata.com/tw/sql/sql.html 這網站真的很棒!!
感謝樓主分享!
發佈者 : PresarioNeil
@ 2007-6-1 01:12 PM
一般來說,趕案子的時候,根本顧不了效能的部份,應該是說
資料正確 > 畫面功能,美觀 > 讀取速度 的重要性
所以通常都是案子快結束還有剩下時間的話(通常不可能)或是日後維護的時候再來做 最佳化
不過這也就是 高工 和一般工程師的差別 ^_^
發佈者 : chrixtal
@ 2008-2-19 02:53 PM
可打印版本 | 推薦給朋友 | 評分 |