[PHP+SQL] MySQL 基礎指令表
1. 基礎動作
搜尋資料為
select 對象欄位 from 資料表
ex:
SELECT * FROM `w02_account`
SELECT player FROM `w02_account`
撈取對象-
* 代表 ALL全部欄位
player 代表 該名為player之欄位
新增
有兩種格式寫法
insert into 資料表(欄位名稱) value 新增內容
選擇想新增資料的欄位名稱及對應輸入的內容
ex:
INSERT INTO `w02_table`(`w02_table_name`, `w02_table_chi`, `w02_table_mat`) VALUES ("阿九",77,88)
insert into 資料表 value 新增內容 (不宣告欄位名稱時對應內容需全部提及,空值為null)
INSERT INTO `w02_table` VALUES (null,"阿十",77,88)
另外,如果要連續多筆新增到同一個資料表,可用逗號分別(多利用排版)
INSERT INTO `w02_table`
(`w02_table_name`, `w02_table_chi`, `w02_table_mat`) VALUES
("阿八",87,88),
("阿七",77,88),
("阿六",67,88),
("阿五",57,88),
("阿四",47,88),
("阿三",37,88)
修改
update 資料表 set 被修改的欄位名 = 被修改的內容 where 對象欄位 = 值
UPDATE w02_table SET w02_table_mat = 50 WHERE w02_table.w02_table_sn = 10;
刪除
delete from 資料表 (該資料表的全部項目)
"DELETE FROM `w02_table`
delete from 資料表 where 指定的欄位 = 指定的內容
"DELETE FROM `w02_table` WHERE `w02_table`.`w02_table_sn` = 15"
小技巧: 工程師在進行刪除前會先習慣將delete改成select做一個檢查動作,確保選定的資料是否正確後,再改回delete做執行。
2. 條件式操作(適用搜尋、修改、刪除)
where 為判斷對象、判斷方式、判斷內容等等(時間、字串需標記""或'')
判斷方式有 '>'、'<'、'>='、'<='、'<>'、'='共6種,字串只可使用'='、'<>'
ex:
SELECT * FROM `w02_account` WHERE `w02_acc_seq` > 2
SELECT * FROM `w02_account` WHERE `w02_acc_name` = '小白'
可以使用AND與OR做多筆條件
ex:
SELECT * FROM `w02_account` WHERE `w02_acc_name` = '小白' OR 'w02_acc_name' ='小綠'
SELECT * FROM `w02_account` WHERE `w02_acc_seq` > 2 AND w02_acc_name = '小綠'
小技巧:SQL語法的欄位前後使用``是系統預設。" "跟' '是指定向,也可以不輸入前後框號,一來精簡二來可降低資料讀取工作量。只有在單字的字串時才使用" "或' '。
3. 模糊條件操作
like %對象%,而%代表不固定,組合略分三種模式
%A => A結尾的字串
A% => A開頭的字串
%A% = > 字串含A的對象
ex:
SELECT * FROM `w02_account` WHERE w02_acc_id like '%r%'
4. 時間格式 "Y-M-D HH:MM:SS"
資料庫的時間格式是固定的,如果網頁的顯示有所不同,依樣由資料庫的時間撈出來後便化成需要的樣子。
ex: 2018-10-03 =>10-03-2018 (M-D-Y)
5. LIMIT 區間條件 (適用於:搜尋、修改、刪除)
select * from 'class' limit 3
限制只搜尋出3筆資料(依索引順序)
select * from 'class' limit 5,3
限制搜尋第5筆資料(不含)後的3筆資料(依索引順序)
6. 排序 (預設為遞增)
ORDER BY 對象 與 GROUP BY 對象
前者為單純排序,後者為排序時同時群組化(不重複)
select * from 'class' order by 'acc_number'
加上desc則遞減
select * from 'class' order by 'acc_number' desc
如果排序需要參考多組(ex:同分時,採學號遞減)
select * from 'class' order by 'acc_math' desc, 'acc_id' desc
自訂標題名稱 AS
select w02_table_name as 名稱 ,w02_table_chi as 中文成績, w02_table_mat as 數學成績,(w02_table_mat+w02_table_chi)/2 as 平均成績 from w02_table
小節練習
ex1: 搜尋[w02_table_mat] 60以上的[w02_table_name]
SELECT w02_table_name FROM `w02_table` WHERE w02_table_mat >= 60
ex2: 搜尋[w02_table_name]中性別張的[w02_table_name]與[w02_table_cji]
SELECT w02_table_name,w02_table_chi FROM `w02_table` WHERE w02_table_name like '張%'
ex3: 使用語法新增三個學生資料
學生名稱 國文 數學
蘋果 100 100
鳳梨 99 50
檸檬 50 43
INSERT INTO `w02_table` (`w02_table_name`, `w02_table_chi`, `w02_table_mat`) VALUES ('蘋果', 100,100), ('鳳梨', 99, 50), ('檸檬', 50, 43)
ex4: 呈上,數學成績不到60的人,數學自動+10分
UPDATE w02_table SET w02_table_mat=w02_table_mat+10 WHERE w02_table_mat < 60
ex5: 呈上,如果國文成績+10分後會超過100分的同學資料刪除
DELETE FROM `w02_table` WHERE w02_table_chi+10 > 100
or
DELETE FROM `w02_table` WHERE w02_table_chi > 90 (精簡提高效能)
ex6: 搜尋資料表並顯示國文成績最好的三個人[同學名稱]
SELECT w02_table_name FROM w02_table ORDER BY w02_table_chi DESC LIMIT 3
ex7: 搜尋資料表並顯示數學成績第6名的[同學名稱]
SELECT w02_table_name FROM w02_table ORDER BY w02_table_mat DESC LIMIT 5,1
ex8:呈上,顯示平均成績最差的三個人
select w02_table_name as 名稱 ,w02_table_chi as 中文成績, w02_table_mat as 數學成績, (w02_table_mat+w02_table_chi)/2 as 平均成績 from w02_table ORDER BY `平均成績` LIMIT 3
搜尋資料為
select 對象欄位 from 資料表
ex:
SELECT * FROM `w02_account`
SELECT player FROM `w02_account`
撈取對象-
* 代表 ALL全部欄位
player 代表 該名為player之欄位
新增
有兩種格式寫法
insert into 資料表(欄位名稱) value 新增內容
選擇想新增資料的欄位名稱及對應輸入的內容
ex:
INSERT INTO `w02_table`(`w02_table_name`, `w02_table_chi`, `w02_table_mat`) VALUES ("阿九",77,88)
insert into 資料表 value 新增內容 (不宣告欄位名稱時對應內容需全部提及,空值為null)
INSERT INTO `w02_table` VALUES (null,"阿十",77,88)
另外,如果要連續多筆新增到同一個資料表,可用逗號分別(多利用排版)
INSERT INTO `w02_table`
(`w02_table_name`, `w02_table_chi`, `w02_table_mat`) VALUES
("阿八",87,88),
("阿七",77,88),
("阿六",67,88),
("阿五",57,88),
("阿四",47,88),
("阿三",37,88)
修改
update 資料表 set 被修改的欄位名 = 被修改的內容 where 對象欄位 = 值
UPDATE w02_table SET w02_table_mat = 50 WHERE w02_table.w02_table_sn = 10;
刪除
delete from 資料表 (該資料表的全部項目)
"DELETE FROM `w02_table`
delete from 資料表 where 指定的欄位 = 指定的內容
"DELETE FROM `w02_table` WHERE `w02_table`.`w02_table_sn` = 15"
小技巧: 工程師在進行刪除前會先習慣將delete改成select做一個檢查動作,確保選定的資料是否正確後,再改回delete做執行。
2. 條件式操作(適用搜尋、修改、刪除)
where 為判斷對象、判斷方式、判斷內容等等(時間、字串需標記""或'')
判斷方式有 '>'、'<'、'>='、'<='、'<>'、'='共6種,字串只可使用'='、'<>'
ex:
SELECT * FROM `w02_account` WHERE `w02_acc_seq` > 2
SELECT * FROM `w02_account` WHERE `w02_acc_name` = '小白'
可以使用AND與OR做多筆條件
ex:
SELECT * FROM `w02_account` WHERE `w02_acc_name` = '小白' OR 'w02_acc_name' ='小綠'
SELECT * FROM `w02_account` WHERE `w02_acc_seq` > 2 AND w02_acc_name = '小綠'
小技巧:SQL語法的欄位前後使用``是系統預設。" "跟' '是指定向,也可以不輸入前後框號,一來精簡二來可降低資料讀取工作量。只有在單字的字串時才使用" "或' '。
like %對象%,而%代表不固定,組合略分三種模式
%A => A結尾的字串
A% => A開頭的字串
%A% = > 字串含A的對象
ex:
SELECT * FROM `w02_account` WHERE w02_acc_id like '%r%'
4. 時間格式 "Y-M-D HH:MM:SS"
資料庫的時間格式是固定的,如果網頁的顯示有所不同,依樣由資料庫的時間撈出來後便化成需要的樣子。
ex: 2018-10-03 =>10-03-2018 (M-D-Y)
5. LIMIT 區間條件 (適用於:搜尋、修改、刪除)
select * from 'class' limit 3
限制只搜尋出3筆資料(依索引順序)
select * from 'class' limit 5,3
限制搜尋第5筆資料(不含)後的3筆資料(依索引順序)
6. 排序 (預設為遞增)
ORDER BY 對象 與 GROUP BY 對象
前者為單純排序,後者為排序時同時群組化(不重複)
select * from 'class' order by 'acc_number'
加上desc則遞減
select * from 'class' order by 'acc_number' desc
如果排序需要參考多組(ex:同分時,採學號遞減)
select * from 'class' order by 'acc_math' desc, 'acc_id' desc
自訂標題名稱 AS
select w02_table_name as 名稱 ,w02_table_chi as 中文成績, w02_table_mat as 數學成績,(w02_table_mat+w02_table_chi)/2 as 平均成績 from w02_table
小節練習
ex1: 搜尋[w02_table_mat] 60以上的[w02_table_name]
SELECT w02_table_name FROM `w02_table` WHERE w02_table_mat >= 60
ex2: 搜尋[w02_table_name]中性別張的[w02_table_name]與[w02_table_cji]
SELECT w02_table_name,w02_table_chi FROM `w02_table` WHERE w02_table_name like '張%'
ex3: 使用語法新增三個學生資料
學生名稱 國文 數學
蘋果 100 100
鳳梨 99 50
檸檬 50 43
INSERT INTO `w02_table` (`w02_table_name`, `w02_table_chi`, `w02_table_mat`) VALUES ('蘋果', 100,100), ('鳳梨', 99, 50), ('檸檬', 50, 43)
ex4: 呈上,數學成績不到60的人,數學自動+10分
UPDATE w02_table SET w02_table_mat=w02_table_mat+10 WHERE w02_table_mat < 60
ex5: 呈上,如果國文成績+10分後會超過100分的同學資料刪除
DELETE FROM `w02_table` WHERE w02_table_chi+10 > 100
or
DELETE FROM `w02_table` WHERE w02_table_chi > 90 (精簡提高效能)
ex6: 搜尋資料表並顯示國文成績最好的三個人[同學名稱]
SELECT w02_table_name FROM w02_table ORDER BY w02_table_chi DESC LIMIT 3
ex7: 搜尋資料表並顯示數學成績第6名的[同學名稱]
SELECT w02_table_name FROM w02_table ORDER BY w02_table_mat DESC LIMIT 5,1
ex8:呈上,顯示平均成績最差的三個人
select w02_table_name as 名稱 ,w02_table_chi as 中文成績, w02_table_mat as 數學成績, (w02_table_mat+w02_table_chi)/2 as 平均成績 from w02_table ORDER BY `平均成績` LIMIT 3
留言
張貼留言
留言請注意禮節與尊重他人,良好的交流環境需要你我共同維護。
VtigerCRM 相關留言討論,請改至FaceBook社團申請加入使用
https://www.facebook.com/groups/vTigerCRMtoTaiwan/