MySQL資料庫學習 子查詢與連線

2021-07-25 00:05:44 字數 2957 閱讀 7391

一、

子查詢(

subquery

)是指出現在其他

sql語句內的

select子句

例:select * from t1 where col1 =

(selectcol2 from t2

);其中

select * from t1

,稱為quter query/outer statement

,select col2 fromt2

,稱為subquery。

子查詢指:巢狀在查詢內部,且必須始終出現在圓括號內。

子查詢可以包含多個關鍵字或條件, 如

distinct

,group by

,orderby

,limit

,函式等。

子查詢的外層查詢可以是:

select

,insert

,update

,set或do

子查詢可以返回標量、一行、一列或子查詢

使用比較運算子的子查詢 =

,>, =, <=, <>, !=, <=>

語法結構

operand comparison_operatorsubquery

當子查詢出的結果為多個時,可以通過

any,

some

,all

來修飾比較符。

any為滿足任意乙個,

some

為滿足某些,

all為全滿足

使用[not] in

的子查詢

operand comparison_operator[not] in (subquery)

= any

運算子與

in等效。 !

= all

或<> all

運符與not in

等效。

使用[not] exists

的子查詢

如果子查詢返回任何行,

exists

將返回true

;否則為

false。

將查詢結果寫入資料表

insert [into]表名[

列名]select …

例:insert tdb_goods_cates(cate_name) select goods_cate fromtdb_goods group by goods_cate;

二、多表更新

update table_references

set列名

例:將表

tdb_goods

與tdb_goods_cates

中的goods_cate

和cate_name

相同的項鏈結起來,將表中

tdb_goods_cates

的cate_id

的值賦給

tdb_goods

中的goods_cate

updatetdb_goods inner join tdb_goods_cates on goods_cate = cate_name

set goods_cate =cate_id;

三、建立資料表並將查詢結果寫入到資料表

create table [if not exists] tbl_name [(create_definition…)]

select_statement例:

四、連線

mysql

在select

語句、多表更新、多表刪除語句中支援

join操作

table_reference

[outer] join}

table_reference

on conditional_expr

連線方式

inner join

內連線,在

mysql

中join

,cross join

和innerjoin

是等價的

left [outer] join

左外連線

right [outer] join

右外連線

內連線:顯示兩個表中共有的部分

左連線:顯示左表中全部和與右表中共有的。

右連線:顯示右表的全部和與左表中共有的。 五、

無限級分類表

type_id type_name parent_id;

通過自身連線實現

資料庫 子查詢《mysql子查詢的弱點》

mysql的子查詢的優化不是很友好,一直有受業界批評比較多.關於mysql的查詢有兩個知識點 1.第乙個為mysql在處理所有的查詢的時候都強行轉換為聯接來執行,將每個查詢包括多表中關聯匹配,關聯 子查詢,union,甚至單錶的的查詢都處理為聯接,接著mysql執行聯接,把每個聯接在處理為乙個巢狀迴...

MySQL資料庫 使用子查詢

selcet語句是sql的查詢。迄今為止我們所看到的所有selcet都是簡單查詢,即從單個資料庫表中檢索資料的單條語句。sql還允許建立子查詢,就是巢狀在其他查詢內的查詢!part 1 使用子查詢進行過濾 select coder.code id from coder where id in sel...

mysql資料庫 子查詢(9)

mysql資料庫 子查詢 把乙個查詢巢狀在另乙個查詢當中的方式,返回結果是根據兩個查詢共同作用的結果。子查詢語法格式 select filed,filed from tbname where 例如 select frome tbname in select frome tbname not in s...