程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySql學習-查詢/子查詢/連接查詢/聯合查詢

MySql學習-查詢/子查詢/連接查詢/聯合查詢

編輯:MySQL綜合教程

MySql學習-查詢/子查詢/連接查詢/聯合查詢


數據庫查詢

設定兩張數據庫表

第一個表格user包含: user_id username age sex 1 Alps1992 22 man 第二個表格toy包含 user_id toyname 1 OnePiece

普通查詢:

查詢關鍵字:

AS, SUM, DESC, GROUP BY, ORDER BY, AVG, MIN, MAX, COUNT, LIMIT;

關鍵字查詢例子

select * from user as u order by age limit 5;
// as 用來做別名, order by 用來排序(從小到大,從大到小是DESC), limit用來取結果的條數。

select sum(age) from user group by sex;
// sum分別求出user中男性年齡的和,還有女性的年齡和,group by分組。

avg是求平均, min是求最小值, max是最大值,和sum用法一樣

select count(user_id) from user;
//返回user_id個數,也就是表中人數。

//查詢所有人的信息,並按照年齡排序:
select * from user order by age;

//查詢名叫chen的信息:
select * from user where username='chen';

//查詢年齡為18的人的姓名,並讓id從大到小排序
select username from user where age=18 order by user_id DESC;

子查詢:

關鍵字:

IN, NOT IN, EXISTS, NOT EXISTS。

//查詢所有擁有toyname為pig的人的姓名:
select username from user where user_id in (select user_id from toy where toyname='onepiece');

聯接查詢:

首先交叉連接:cross join

select u.username, t.toyname from user as u cross join toy as t;
//交叉連接就是把所有第一個表和第二個表的值一一對應
//例如:假如第一個表格有5個值,第二個表有4個值,這個結果就應該有20條記錄。

內聯接:inner join

相等連接:(equal join)

select u.username, t.toyname from user as u inner join toy as t on(也可以用where) u.user_id = t.user_id;
//這個的結果就是各自擁有的玩具了。

不等連接:(non-equal join)

select u.username, t.toyname from user as u inner join toy as t on(也可以用where) u.user_id <> t.user_id order by u.username;
//這個的結果是各自沒有的玩具

自然連接:(natural join)

這個是有在連接的兩個表格中的列名稱相等的時候才能用。

select u.username, t.toyname from user as u natural join toy as t; //和上面的相等連接的結果是一樣的。

外連接:outer join

左外聯接、右外聯接比較相似:left outer join ; right outer join;

select u.usrename, t.toyname from user u inner join toy t on (這裡不能用where) u.user_id = t.user_id;
//這個是查詢用戶姓名和他所擁有的玩具名字

select u.username, t.toyname from user u left outer join toy t on u.user_id = t.user_id;
//這個是以左表(user)為基准,來查詢所有用戶姓名和他所擁有的玩具名字。

select u.username, t.toyname from user u right outer join toy t on u.user_id = t.user_id;
//這個是以右表(toy)為基准,來查詢所有玩具的擁有者姓名,對於沒有擁有者的為NULL

聯合:UNION, INTERSECT, EXCEPT

聯合查詢就是合並幾次的查詢結果到一張表裡

select user_id from user union select user_id from toy order by user_id;
//聯合的兩個查詢語句的列必須相同, union可以連接多個, 假如排序在最後一條語句後面加order by;(重復自動去除)

union all:

select user_id from user union all select user_id from toy order by user_id;
//和union的運作方式一樣,就是union all的結果裡會返回所有值,而不是每個值的復制,包裹重復的也會列出來。

用union來創建表格:

create table m_union as select user_id from user union select user_id from toy;
//這樣會把user裡的user_id和toy表裡的user_id的內容都拿出來放到心創建的m_union表格裡。

INTERSECT,EXCEPT

INTERSECT是交集. EXCEPT是差集的意思

select user_id from user intersect select user_id from toy;
//就是返回這兩個select查詢相同的部分.(這裡就是有玩具的孩子的user_id)

select user_id from user except select user_id from toy;
//就是返回第一個select 減去第二個select 結果的部分。(這裡就是沒有玩具的孩子的user_id)

大致先這麼多,以後再說聯接轉換子查詢

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved