數(shù)據(jù)庫高級操作——查詢

查詢

1岖寞、子查詢

子查詢:允許把一個查詢嵌套在另一個查詢當中的查詢

Table: student
+----+-----------+-----+-----+
| id | name      | age | sex |
+----+-----------+-----+-----+
|  1 | 小明      |  18 | 男  |
|  2 | 李四      |  20 | 女  |
|  3 | 王五      |  30 | 男  |
|  4 | 王明剛    |  40 | 男  |
+----+-----------+-----+-----+

Table: score
+------+------------+---------+-------+
| id   | student_id | subject | score |
+------+------------+---------+-------+
|    1 |          1 | 語文    |    80 |
|    2 |          2 | 語文    |    70 |
+------+------------+---------+-------+

舉個例子:查詢小明的語文成績

SELECT score FROM score WHERE subject = '語文' AND student_id = (
SELECT id FROM student_info WHERE name = '小明'
);

2、聯(lián)結(jié)查詢

聯(lián)結(jié)就是一種機制柜蜈,用來在一條SELECT語句中關(guān)聯(lián)表仗谆,因此稱之為聯(lián)結(jié)。 其意義在于:在用戶查看數(shù)據(jù)的時候, 需要顯示的數(shù)據(jù)來自多張表淑履。

1. 內(nèi)聯(lián)結(jié)

又叫等值聯(lián)結(jié)隶垮,基于兩個表之間的相等測試,返回兩個或者多個表之間相等關(guān)系的數(shù)據(jù)鳖谈,用數(shù)學關(guān)系來看岁疼,相當于求交集。

內(nèi)聯(lián)結(jié).JPG

語法:

SELECT * FROM table1 AS t1 INNER JOIN table2 AS t2 ON t1.column = t2.column;

舉個例子:查詢學生表中有成績的學生

mysql> SELECT s1.name, s2.subject, s2.score FROM student_info AS s1 INNER JOIN score AS s2 ON s1.id = s2.student_id;
+--------+---------+-------+
| name   | subject | score |
+--------+---------+-------+
| 小明   | 語文    |    80 |
| 李四   | 語文    |    70 |
+--------+---------+-------+
2 rows in set (0.00 sec)
2. 外聯(lián)結(jié)

外聯(lián)結(jié)又可以分為左外聯(lián)結(jié)和右外聯(lián)結(jié)

左外聯(lián)結(jié):以左表為主表缆娃,返回左表中的所有數(shù)據(jù)

左外聯(lián)結(jié).JPG

語法:

SELECT * FROM table1 AS t1 LEFT JOIN table2 AS t2 ON t1.column = t2.column;

舉個例子:返回所有學生的成績

mysql> SELECT s1.name, s2.subject, s2.score FROM student_info AS s1 LEFT JOIN score AS s2 ON s1.id = s2.student_id;
+-----------+---------+-------+
| name      | subject | score |
+-----------+---------+-------+
| 小明      | 語文    |    80 |
| 李四      | 語文    |    70 |
| 王五      | NULL    |  NULL |
| 王明剛    | NULL    |  NULL |
+-----------+---------+-------+
4 rows in set (0.00 sec)

右外聯(lián)結(jié):以右邊為主表,返回右表中的所有數(shù)據(jù)

右外聯(lián)結(jié).JPG

語法:

SELECT * FROM table1 AS t1 RIGHT JOIN table2 AS t2 ON t1.column = t2.column;

舉個例子:返回有成績的學生

select t1.name,t2.subject,t2.score from student as t1 right join score as t2 on t1.id=t2.student_id;
+-----------+---------+-------+
| name      | subject | score |
+-----------+---------+-------+
| 小明      | 語文    |    80 |
| 李四      | 語文    |    70 |
+-----------+---------+-------+

3瑰排、組合查詢

MySQL允許執(zhí)行多個查詢(多條SELECT語句)贯要,并將結(jié)果作為單個查詢結(jié)果集返回。這些組合查詢通常稱為并(union)符合查詢(compound query)椭住。

語法:

SELECT * FROM table1 WHERE condition 
UNION
SELECT * FROM table2 WHERE condition;

舉個例子:查詢學生表中年齡超過20歲或者是男生的

mysql> SELECT * FROM student_info WHERE age > 20 
    -> UNION 
    -> SELECT * FROM student_info WHERE sex = '男';
+----+-----------+-----+-----+
| id | name      | age | sex |
+----+-----------+-----+-----+
|  3 | 王五      |  30 | 男  |
|  4 | 王明剛    |  40 | 男  |
|  1 | 小明      |  18 | 男  |
+----+-----------+-----+-----+
3 rows in set (0.05 sec)

三種查詢方式的區(qū)別:

1崇渗、查詢過程的區(qū)別:

子查詢是由內(nèi)到外的查詢;聯(lián)結(jié)查詢是從多張表中取出信息進行匹配京郑;組合查詢是同時執(zhí)行多條查詢語句宅广,并將查詢結(jié)果一起返回

2、查詢效率的區(qū)別:

子查詢是從里到外的查詢些举,效率比較低跟狱;

3、使用場景的區(qū)別:

  • 查詢的表過多時户魏,子查詢嵌套結(jié)構(gòu)復雜驶臊,可讀性低挪挤;
  • 聯(lián)結(jié)查詢用于從多張表中獲取數(shù)據(jù);
  • 在單個查詢中关翎,從不同表中返回類似結(jié)構(gòu)的數(shù)據(jù)以及對單個表執(zhí)行多個查詢扛门,按照單個查詢返回數(shù)據(jù)時,使用組合查詢
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纵寝,一起剝皮案震驚了整個濱河市论寨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌爽茴,老刑警劉巖政基,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異闹啦,居然都是意外死亡沮明,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門窍奋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荐健,“玉大人,你說我怎么就攤上這事琳袄〗。” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵窖逗,是天一觀的道長址否。 經(jīng)常有香客問我,道長碎紊,這世上最難降的妖魔是什么佑附? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮仗考,結(jié)果婚禮上音同,老公的妹妹穿的比我還像新娘。我一直安慰自己秃嗜,他們只是感情好权均,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锅锨,像睡著了一般叽赊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上必搞,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天必指,我揣著相機與錄音,去河邊找鬼顾画。 笑死取劫,一個胖子當著我的面吹牛匆笤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谱邪,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼炮捧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了惦银?” 一聲冷哼從身側(cè)響起咆课,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扯俱,沒想到半個月后书蚪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡迅栅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年殊校,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片读存。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡为流,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出让簿,到底是詐尸還是另有隱情敬察,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布尔当,位于F島的核電站莲祸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏椭迎。R本人自食惡果不足惜锐帜,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侠碧。 院中可真熱鬧抹估,春花似錦、人聲如沸弄兜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽替饿。三九已至,卻和暖如春贸典,著一層夾襖步出監(jiān)牢的瞬間视卢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工廊驼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留据过,地道東北人惋砂。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像绳锅,于是被迫代替她去往敵國和親西饵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容