學習資料庫是需要sql基礎的,一個學習sql的好去處:W3c SQL教程
Mysql 介紹
(占位符)
Mysql的使用
mysql 關鍵字
核心關鍵字
名稱 | 作用 |
---|---|
select | 指定需傳回的字段 |
left/right/inner join on | 指定執行多表的左/右/内 連接配接操作 |
where | 指定傳回結果集限制條件(不可協同函數) |
group by | 指定傳回結果集合并條件 |
having | 指定傳回結果集限制條件(可協同函數) |
order by | 指定傳回結果集根據什麼排序 |
limit | 指定傳回結果集取值起止位置 |
常用關鍵字
名稱 | 作用 |
---|---|
as | 将 as 後的名稱指定為 as 前參數的别名 |
union | 将 union 前後的結果集進行合并 |
truncate | 重置(原理類似删除表然後重建結構相同的表,表自增字段index會重置) |
delete | 删除(比truncate慢的原因——周遊表并對各記錄删除一次,表自增字段index會保留,指定條件删除部分記錄) |
drop | 廢棄,删庫和删表用 |
mysql 關鍵字順序
mysql 的sql語句是需要符合一定規範的,其中之一便是關鍵字的順序,需要注意的是,書寫順序無法決定關鍵字的執行順序。
(栗子:單句sql語句中。select、where序号分别為1、4,是以where隻能書寫在select之後 如: select ……where……;)
書寫順序:
- select
- from
- left/right join on
- where
- group by
- having
- order by
- limit
(栗子:單句sql語句中。在即使用了where關鍵字又使用了having關鍵字的情況下,where、having序号分别為3、5,是以在語句執行時,先會執行where的條件來過慮傳回的結果集,在一定時間後再執行having的條件來過慮傳回的結果集)
執行順序:
- from
- left/right join on
- where
- group by
- having
- select
- order by
- limit
mysql 函數
常見函數
類别 | 含義 |
---|---|
count(指定目标) | 計算指定目标的個數 |
avg(指定目标) | 計算指定目标的平均值 |
max(指定目标) | 計算指定目标中的最大數 |
min(指定目标) | 計算指定目标中的最小數 |
abs(指定目标) | 計算指定目标中的絕對值 |
更多函數
mysql 指令實操
Mysql指令大全傳送門
mysql 語句實際問題
1.自定排序
表結構
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX90zZOJTTE1keRRkT4FEVkZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TO0kjMzUTN0EzMyITM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
SELECT
*
FROM
massage
WHERE
mid IN (, , )
選擇message表中mid為23、7、2的字段,也許你在期待按23、7、2的順序來顯示三條字段。但結果卻不是,原因是mysql 預設沒寫order by時按主鍵進行預設方式排序(數字類型預設按從小到大,字元串類型預設字典排序,可手工設定)
但如果真想按23、7、2的順序輸出記錄呢?
SELECT
*
FROM
massage
WHERE
mid IN (, , )
ORDER BY field(mId,,,) // field 為資料庫提供的一個函數 filed(“指定目标”,順序……)
// 此處為 mid 以 23、7、2的順序傳回結果集
2.多表查詢時的連接配接文法
MySQL各join文法示例傳送門
3.查詢表屬性
SELECT
*
FROM
information_schema. COLUMNS
WHERE
table_name = '查詢目标表名'
執行上述 SQL 會得到表查詢結果集,需要特定結果在 select * 上做處理即可
(占位符)