1. 程式人生 > >MySql資料庫常用DML | 黃喬國PHP

MySql資料庫常用DML | 黃喬國PHP

MySQL中資料操作語言DML總結。

再MySQL中我們用的最多的就是DML了,特此總結一下。

DML主要分為增刪查改,即CURD也就是對應到:insert/update/select/delete

一、插入資料相關

①全部插入

insert into tab_name values(欄位值1,欄位值2,欄位值n);
②部分欄位插入
insert into tab_name(欄位1,欄位2,欄位n) values(欄位值1,欄位值2,欄位值n);
③多條資料同時插入
insert into tab_name values(欄位值1,欄位值2,欄位值n),(欄位值1,欄位值2,欄位值n),(欄位值1,欄位值2,欄位值n)....(欄位值1,欄位值2,欄位值n);

二、更新資料

①單欄位更新

update tab_name set 欄位名=新欄位值 [where條件]
②多欄位更新
update tab_name set 欄位名1=新欄位值,欄位名2=新欄位值,....欄位名2=新欄位值 [where條件]
三、資料查詢(DML中的重中之重)

①全查詢

select * from tab_name [where條件];
②按需查詢
select 欄位名1,欄位名2,...欄位名n from tab_name [where 條件];
③排序查詢:order by(asc 升序,desc 降序)
select * from tab_name [where 條件]  order by 排序欄位名 [asc | desc];
④分組查詢:group by
select * from tab_name [where 條件] group by 分組欄位名;
⑤包含having的查詢

傳送門:http://blog.csdn.net/love_xsq/article/details/42417917

⑥多表查詢

select * from tab1 as t1,tab2 as t2 where t1.id=t2.id; 
⑦join查詢

left join:以左表資料為基準

select * from tab1 t1 LEFT JOIN tab2 t2 ON t1.id=t2.id [where 條件]
right join:以右表資料為基準
select * from tab1 t1 RIGHT JOIN tab2 t2 ON t1.id=t2.id [where 條件] [group by] [order by]....;
inner join:以共有資料為基準
select * from tab1 t1 INNER JOIN tab2 t2 ON t1.id=t2.id [where 條件] [group by] [order by]....;
 ⑧限制查詢:limit
limit 有兩個引數,limit start,length
如果只有一個引數則引數表示length即:limit length,開始則從始終從0開始。
//查詢前五條記錄
select * from tab limit 5;
//查詢6到10條記錄
select * from tab limit 5,5;

⑨模糊查詢:like
//全模糊
select * from tab where tab.欄位名 like "%值%";
//以什麼開始
select * from tab where tab.欄位名 like "值%";
//以什麼結束
select * from tab where tab.欄位名 like "%值";
//佔位符:一個 _ 佔一個字元
select * from tab where tab.欄位名 like "_值";
如果查詢的內容裡面包括%,_那麼我們就應該使用escape
select * from tab where tab.欄位名 like "%\%" escape "\\";//以百分號結束
 注意沒有使用 \ 轉義的字元依然表示原來的意思。
⑩正則查詢:REGEXP | RLIKE  []
select * from tab where tab.欄位名 REGEXP "a[123]";
上面的sql語句將匹配欄位名中包括a1或a2或a3。
語法就是正則的語法。
①①.子查詢
1.where型子查詢
select cat_id,goods_id,goods_name from goods where goods_id in(select max(goods_id) from goods group by cat_id);
 2.from型子查詢
select name from (select name,count(*) as gk from stu having gk >=2) as t;
 3.exists型子查詢(把外層查詢結果拿到內層,看內層的查詢是否成立)
#查詢哪些欄目下有商品,欄目表category,商品表goods
select cat_id,cat_name from category where exists(select * from goods where goods.cat_id = category.cat_id);
 ①②去重查詢:distinct
select distinct 欄位名1,欄位名2,....欄位名n from tab;
注意:distinct只能放在欄位前面
①③合併查詢:union
把兩個查詢的結果合併起來,單欄位必須一致。
union:會自動去除掉相同的行
union all:不會去掉相同的行


四、刪除相關:delete
delete from tab [where];

以上是MySQL常用DML語句,如有遺漏請留言,後期會補上