Mysql的連線 子查詢

2021-09-26 15:21:53 字數 3421 閱讀 3518

前幾天我們介紹django的資料操作,寫完那篇文章之後我就開始想到我之前學的mysql操作了,感覺熟悉又陌生。是時候找個機會把它複習鞏固一下了,不然就會忘了之前的所學內容了。但由於mysql的內容有些多,今天就複習一下資料庫的連線、子查詢、索引吧。

我這裡有兩個表,乙個是學生表,乙個是班級表,要想使這兩個表聯合起來,就需要進行連線查詢。

表結構如下:

class表;

student表;

內連線inner  join   on

要想把兩個表合併倒一塊,就需要進行如下操作。

select * from student inner join class on student.id =student_id;

結果輸出:

左連線:leftjoin   on

連線的兩張表中以左側的表為準,右側的表匹配左側的表,如果有左側資料沒有對應右表,則顯示

null.

在這裡的意思是,如果有學生還沒加入班,那右側班級資料顯示

null.

右連線:

和左連線意思相近,我這裡就不作贅述了。

全連線:

我在這裡只舉了左連線的例子,大家可以根據我的表去實踐一下。或者自己建立表實際一下,我在這裡就不作贅述了。

in  將乙個查詢語句巢狀到另乙個查詢語句中

在子查詢中需要注意的是,巢狀的語句一般根據外來鍵查詢符合某種條件的id,外語句通過id查詢需要的結果。要查詢的字段一般都寫在外語句。

這裡我們查詢:班主任是楊麗萍的學生的名字

1.先查詢楊麗萍學生的id

select student_id from class where boss='楊麗萍'

2.再根據學生id去查詢相應的名字。

select `name` from  student where id

3.將兩個條件用in 進行結合

select `name` from student where id in (select student_id from class where boss='楊麗萍')

結果輸出:

概念

索引在mysql中是一種「鍵」,是儲存引擎用於快速找到記錄的一種資料結構。索引對於良好的檢索效能,非常關鍵,尤其是當表中的資料量越大,索引對於效能的提公升越顯得重要。

索引優化是對查詢效能優化最有效的手段。索引能夠輕易將查詢效能提高好幾個數量級。索引相當於書的目錄,要查某一部分的內容,如果不使用目錄,則需要從幾百頁中逐頁去查,這個開銷是巨大的。

2.索引方法

mysql的索引方法有兩種,一種是btree,一種是hash. b樹索引是主流使用,一般都選擇這個。hash索引有很多的約束,比如hash 索引僅僅能滿足」=」,」in」和」<=>」查詢,不能使用範圍查詢,還有hash 索引不能利用部分索引鍵查詢。

3.索引型別

normal 普通索引:這個是最基本的索引,大多數情況可以用這個。

建立方式:

create index

索引名on

`表名`(`字段`);

unique 唯一索引: 唯一索引,與普通索引類似,但是不同的是唯一索引要求所有的類的值是唯一的,這一點和主鍵索引一樣.但是他允許有空值。例如身份證號、學號等

建立方式:create unique index

索引名on

`表名`(`字段`);

full text 全文索引:表示全文收索,在檢索長文字的時候,效果最好,短文本建議使用index,例如用於搜尋很長一篇文章

建立方式:create full text index

索引名on

`表名`(`字段`);

4.使用索引

一開始我也在找索引的使用方法,然後找不到。到最後才發現,索引對使用者是透明的,它的使用方式就和咱們平常的方式一樣。具體的執行過程由資料庫內部的資料引擎來做。

例子:create

index

id_index

on`student`(`id`);

select * from student where id= 1;

這裡就用了索引,只是我們感覺不到。

第二種建立、使用索引的方式:

(這是原始表)

(這是建立索引)

5. 索引優點

建立索引可以大大提高檢索的資料,以及減少表的檢索行數

查詢中使用索引 可以提高效能

在表連線的連線條件 可以加速表與表直接的相連

6.索引缺點

索引檔案會占用物理空間,除了資料表需要占用物理空間之外,每乙個索引還會占用一定的物理空間

當資料進行增刪改操作時,還需要對索引進行維護,這樣就會降低了資料的維護速度。

7.索引注意事項

在經常需要搜尋的列上,可以加快索引的速度

主鍵列上可以確保列的唯一性

不要在列上進行運算,這樣會使得mysql索引失效,也會進行全表掃瞄

定義為text和image和bit資料型別的列不應該增加索引,

連線子查詢

資料庫 adventureworks 功能需求 查詢所有同時訂購了商品名為 hl mountain front wheel 和 hl mountain rear wheel 的客戶資訊 實現邏輯 利用連線子查詢和連線查詢 join 的語法來實現 select distinct sc.accountn...

oracle 資料庫內連線外連線,子查詢

多表查詢中的一些概念 笛卡爾積 select from emp e,dept d 等值連線 select from emp e,dept d where e.deptno d.deptno 內連線 select from emp e inner join dept d on e.deptno d.d...

oracle基本使用 5 表的連線 子查詢

在熟悉了表的增刪改查,表中資料的增刪改查,本文將著重闡述如何進行表連線以及子查詢。所謂表連線,就是多張表在一起做笛卡爾乘積,它有多種形式 所謂子查詢就是把乙個sql查詢的結果作為另外乙個sql執行之前的輸入。在windows命令列下連線scott sqlplus scott tiger 通常意義上的...