[分享] SQL語法教學

@ 2006-7-28 06:16 PM

自從上次被 熊小 叫我再學習 SQL,
結果我找到「SQL語法入門
大家參考一下
( 基本上這個不算是「入門」, 而是「進階」 )

7 評論

MySQL中文參考手冊
http://linux.tnc.edu.tw/techdoc/mysql/mysql_doc/manual_toc.html
初學就熟用四大語法
SELECT
INSERT INTO
UPDATE
DELETE FROM


發佈者 : laikyo 等級: 10等級: 10等級: 10  @ 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 等級: 15等級: 15等級: 15等級: 15等級: 15  @ 2006-7-31 01:22 AM


引用:
lch2003寫到:
自從上次被 熊小 叫我再學習 SQL,
結果我找到「SQL語法入門
大家參考一下
( 基本上這個不算是「入門」, 而是「進階」 )

真的是蠻進階的連union都出來了
關聯式資料庫我覺得重要的還是觀念問題,
語法方面不要跑預存程序的話大部份都一樣,
我的經驗是這樣,
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),不然其實程式方面多下點功夫還是值得的。
我遇到很多軟體工程師基本上是不想碰硬體這一塊的,但是我覺得多了解一些硬體原理絕對會增加程式的執行效率(雖然我功力還是很弱)。

發佈者 : steven211 等級: 4  @ 2006-7-31 09:08 PM

補充一下 (都是針對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 等級: 11等級: 11等級: 11等級: 11  @ 2007-3-4 01:11 AM


引用:
lch2003寫到:
自從上次被 熊小 叫我再學習 SQL,
結果我找到「SQL語法入門
大家參考一下
( 基本上這個不算是「入門」, 而是「進階」 )

還真不賴, 整理的真好!
入門及進階都含括了.
剩下優化的部份就靠各位多多提供了!
感恩! 感恩!

發佈者 : aleck 等級: 4  @ 2007-3-4 11:34 PM

http://www.1keydata.com/tw/sql/sql.html 這網站真的很棒!!
感謝樓主分享!

發佈者 : PresarioNeil 等級: 1  @ 2007-6-1 01:12 PM

一般來說,趕案子的時候,根本顧不了效能的部份,應該是說
資料正確 > 畫面功能,美觀 > 讀取速度 的重要性

所以通常都是案子快結束還有剩下時間的話(通常不可能)或是日後維護的時候再來做 最佳化

不過這也就是 高工 和一般工程師的差別 ^_^

發佈者 : chrixtal 等級: 10等級: 10等級: 10  @ 2008-2-19 02:53 PM

   


  可打印版本 | 推薦給朋友 | 評分