MySQL學習筆記 第七講 子查詢

2021-06-16 11:16:51 字數 3359 閱讀 1588

第七講:子查詢

1.定義:語句內部的查詢語句,就是子查詢語句,子查詢語句需要用括號括起來;

2.子查詢分類

①不同的分類會有不同的使用方式;

② 分類標準:子查詢出現的位置:where型:where後;from型:from後;exists型;

子查詢返回值形式:單一值、一列、多列、表(多行多列);

列子查詢,強調的是一列,使用集合類的操作符來完成in|not in;還有其他集合操作符any(任何乙個)、all(全部)

其中,=any()等同於in,!=all()等同於not in;

③返回一行

在參與比較時,使用括號可以構建一行(filed1,filed2)

例:select t_name,gender,c_name from teacher_class where (gender,c_name) =

(select distinct gender,c_name from teacher_class where t_name = '李白' and c_name = 'php115

');

④返回乙個表

如果用於在from子句內,要求使用乙個表,不能是乙個結果,應該給這個結果起個名字;

select * from (select t_name,c_name,days from teacher_class where days >15) as temp

where t_name like '李%';

注:外部查詢所使用列名,是由子查詢指定;

⑤exists:exists(subquery)

判斷依據:如果子查詢可以返回資料,則認為exists表示式返回真,否則,返回假;

例:select * from teacher_class where exists(select * from teacher where  teacher_class.id = t_id;

3.連線查詢(join)

每個實體乙個表,乙個業務邏輯,使用多個實體的資料,多張表應該在一起使用,將多個表記錄連線起來

總體思路:將所有的資料,按照某種條件連線起來,再進行篩選處理。

連線分類:根據連線條件不同分類:內連線、外連線、自然連線

①內連線:資料內部連線,要求連線的多個資料必須存在才能進行連線

語法:tbl_left inner join tbl_right on 連線條件

例:select * from join_teacher inner join join_teacher_class on join_teacher.id = join_teacher_class.t_id;

注:不存在連線不到的資料;

②外連線:如果負責連線的乙個或多個資料不真實存在,則稱之為外連線。

語法:tbl_left left outer join tbl_fight on 連線條件

例:select * from join_teacher left outer join join_teacher_class on join_teacher.id = join_teacher_class.t_id;

③內連線的處理

ⅰ.內連線,在連線時,是可以省略條件的,意味著所有左表資料都要與右表的資料連線,存在m*n個連線;

這種連線稱之為:交叉連線,或者笛卡爾積;此時可以使用cross join代替inner  join

注:mysql中cross join與inner join相同,但在資料庫定義上,交叉連線就是笛卡爾積,是沒有條件的內連線;

mysql inner join是預設的連線方案,可以省略inner

ⅱ.有條件的內連線會過濾非法的連線

連線條件:where條件:過濾條件;on 條件:連線條件;using 條件:負責連線的兩個欄位名稱一致。

④ 外連線的處理

ⅰ.分類:左外連線、右外連線、全外連線(暫不支援)

ⅱ.左連線 left outer join (outer可以省略):

在連線時,如果出現左邊表資料連線不上右邊表的情況,則左邊表達的資料在最終結果內保留;

如果出現右表的資料連線不到左表的情況,右表資料被丟棄;

ⅲ.右連線:右表保留左表丟棄,right join

注:外連線條件:on、using 不能使用where(using會去掉結果中的重複字段,並放在列前)

不能使用沒有條件的外連線;

⑤自然連線:內:natural join、左外:natural left join、右外:natural right join

通過mysql自己的判斷完成連線過程,不需要指定連線條件,mysql會使用多表內的相同字段作為連線條件;

4.select匯出語句

將檢索到的資料,儲存到伺服器的檔案內

例:select * into outfile 'e:/amp/one' from teacher_class;

注:可以自動建立檔案,不可以重寫已建立檔案

生成檔案格式:行用來區分記錄,製表符區分字段;

機器學習第七講

第七講 最優化 1.優化目標 2.梯度下降 隨機梯度下降sgd 訓練乙個樣本,更新 次引數 mini batch是sgd的推廣,通常所說sgd即是mini batch。病態條件 病態條件 不同方向有不同的梯度 學習率的選擇困難。區域性最小 區域性最小 local minima 權重空間是對稱的 放大...

讀書筆記(第七講)

本講主要是講述迴圈控制語句包括 while,do.while,for語句。跟前面講的差不多,這些不是物件導向程式設計,以上講的都是一些語言學習的基礎。在任何語言上都會接觸到。對於迴圈控制語句有乙個比較經典的例子就是從1加到100,求和!這題目已經百做都厭了。public class whiletes...

java學習基礎第七講

for 表示式 判斷條件 表示式 執行順序 看表示式 值賦給變數 變數去判斷條件,如果條件成立執行迴圈體 如果不成立不執行.for迴圈變數的作用域問題 在for迴圈表示式內定義的變數只能在當前迴圈體使用,如果變數在for迴圈體外面 則作用域在for迴圈外使用,for迴圈內不可重複定義 while 判...