mysql初級學習之旅
來自專欄初級——數據分析之路
資料庫就是放數據的地方,mysql就是資料庫的操作系統之一,sql語句就是操作數據的語言,嗷嗷嗷
一、資料庫設計
資料庫的設計我主要分為了四個方面
庫操作
表操作
欄位操作
數據操作
此外也包含了一些資料庫的導入導出,備份和恢復的知識點。
二、基本操作
基本操作主要是是關於單表查詢的,select本身就是相當於取集合。這裡需要理解sql語言的執行順序,已經各種條件是取行還是取列的邏輯思維。
- 常見錯誤
1 在SELECT子句中書寫了多餘的列
使用聚合函數時,SELECT 子句中只能存在以下三種元素
常數
聚合函數
GROUP BY子句中指定的列名(聚合鍵)
把聚合鍵之外的列名寫在了select子句之中
SELECT product_name, purchase_price, COUNT(*) FROM Product
GROUP BY purchase_price;
2 在GROUP BY子句中寫了列的別名
在GROUP BY子句中不能使用select子句定義的別名
代碼執行順序的問題
3 GROUP BY子句顯示的結果能排序嘛
Group by子句的結果是無序的
4 在where子句用聚合函數
只有 SELECT 子句、HAVING子句、ORDER BY子句能夠使用COUNT等聚合函數
三、鏈接等高級sql語言
個人遇到的問題主要是關聯子查詢,這點比較難以理解,經過查詢知道關聯子查詢的信息流是雙向的,即外部查詢的每行數據傳遞一個值給子查詢,然後子查詢為每一行數據執行一次並返回它的記錄。此外,結合條件一定要寫在子查詢中。
此外還有函數、謂詞、CASE 表達式等用法,這個需要多練。
- 表的加法——UNION
- 以【行】為單位進行操作(行數增減);【列】沒有變
- 聯結(join)
- 以【列】為單位進行操作,進行「添加列」的運算;
四、關於sqlzoo
sqlzoo大部分的都可以做出來,主要是多練,時間充裕可以多做幾遍,主要是題目的理解、多表時的欄位的fk關係、設計的思路。
總結:
1 表的設計思路和欄位的理解很重要
2 理解mysql背後的數學原理
3 mysql才剛剛入門,學習之路還很長
推薦閱讀:
※MySQL基礎(二):列類型、列屬性
※資料庫優化,自己瞎扒的
※MySQL之wait/interactive_timeout
※採用Jquery+Ajax+PHP+MySQL實現分類列表管理 上
※令人迷惑的SQL查詢結果
TAG:MySQL |