mysql 常用語法及命令行總結

前言

總結一下mysql常用的sql語法 以及 命令行工具的簡單使用。

開始

常用命令行示例

登錄
	mysql -uroot -p 回車
	輸入密碼 回車

登錄後的終端操作:
	show databases;  顯示所有 數據庫
	use [database];  使用某個數據庫;後續sql爲針對該數據庫的查詢;
	show tables;   顯示所有表名
	select * from [tablename] limit 10;
	… 可直接使用sql語句進行查詢數據 

備份還原: 
備份:mysqldump [-h主機名 -P端口] -u用戶名 -p密碼 dbName > 絕對路徑.sql
還原:mysql -u用戶名 -p密碼 dbName_copy < 絕對路徑.sql --default-character-set=utf8

查用sql示例

假設有如下數據庫表:

會員表 member( id, phone, );
訂單表 order( id, member_id, total_amount, status );
訂單明細表 order_item( id, order_id, product_name );

它們之前的關係大概是: 一個會員會產生多個訂單,通過訂單表的 member_id 與 member 表連接;一個訂單有多個明細,通過明細表的 order_id 與 order 表 連接。

下面是常用的查詢sql語句示例:

-- 查詢全部會員
select * from member ;

-- 查詢id爲1000的會員
select * from member where id = 1000 ; 

-- 查詢id大於1000的會員
select * from member where id > 1000 ; 

-- 查詢 id 在 1000(不包含) 到 2000(包含)之前的會員,且不包含id等於1500的會員
select * from member 
where id > 1000
    and id <= 2000
    and id <> 1500;

-- 在上面條件下,並且電話號碼以182開頭的會員
select * from member 
where id > 1000
    and id <= 2000
    and id <> 1500;
    and phone like '182%'

-- 在上面條件下,並且電話號碼包含999的會員
select * from member 
where id > 1000
    and id <= 2000
    and id <> 1500;
    and phone like '%999%';

-- 在上面的條件下,查詢會員,查詢結果按照 id 倒序排序
select * from member 
where id > 1000
    and id <= 2000
    and id <> 1500;
    and phone like '%999%';
ORDER BY id desc;

-- 查詢所有訂單 (因爲 "order by" 是 關鍵字,所以若表名爲order,需要加 點號(鍵盤歎號左邊) 區分)
select * from `order`;

-- 查詢訂單,狀態值爲3 並且 總金額大於 30 的
select * from `order`
where `status` = 3
    and total_amount > 30;

-- 在上面的查詢條件下,統計用戶訂單數
select member_id,count(*) from `order`
where `status` = 3
    and total_amount > 30
GROUP BY member_id ;

-- 在 上面的條件下,對分組查詢結果進行篩選,只查詢訂單數大於5的行
select member_id,count(*) from `order`
where `status` = 3
    and total_amount > 30
GROUP BY member_id 
HAVING count(*) > 5;

-- 查詢狀態值爲3並且金額大於30的訂單,以及對應的會員的手機號 (子查詢作爲結果中的一個字段)
select 
    a.id,
    a.member_id,
    (select phone from member where id=a.member_id) as phone,
    a.total_amount
from `order` a
where a.`status` = 3
    and a.total_amount > 30


-- 按照會員id分組查詢總金額的合計值 ,查詢每個會員的所有訂單的總金額,並按照合計金額倒序排序
select member_id,SUM(total_amount) from `order`
where `status` = 3
GROUP BY member_id 
ORDER BY SUM(total_amount) desc ;


--  order_item 表通過order_id 與 order 表 左連接 ,查詢對應的order.id, 對應會員的手機號,order的金額,以及order_item的商品名 ,結果按照訂單的金額正序排序

select 
    a.id,
    (select phone from member where id=a.member_id) as phone,
    a.total_amount,
    b.product_name
from `order` a 
left join order_item b on b.order_id = a.id 
where a.`status`=3
ORDER BY a.total_amount asc ;

-- 在上面的條件下,追加查詢條件 :訂單對應會員的手機號包含 '999'
select 
    a.id,
    (select phone from member where id=a.member_id) as phone,
    a.total_amount,
    b.product_name
from `order` a 
left join order_item b on b.order_id = a.id 
where a.`status`=3
    and a.member_id in (
        select id from member where phone like '%999%'
    )
ORDER BY a.total_amount asc ;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章