Mysql知識點總結2
內連線,外連線總結:
內連線:INNER JOIN 、CROSS JOIN
◦外連線:左外連線(LEFT OUTER JOIN)、右外連線(RIGHT OUTER JOIN)、全外連線(FULL OUTER JOIN)
◦自連線:當table1和table2本質上是同一張表,只是用取別名的方式虛擬成兩張表以代表不同的意義
◦內連線:只顯示重合的資料(兩表同時滿足條件)返回。
隱式內連線:
select * from t1,t2 where t1.= t2.;
顯示內連線
select * from t1 inner join t2 on t1.=t2.;
外連線:
隱式左/右連線:(outer 可以省略)
select * from t1 left join t2 on t1.=t2.
左連線:左邊表資料行全部保留,右邊表保留符合連線條件的行。
select * from t1 right join t2 on t1.* = t2.*
外連線:左邊表資料行全部保留,右邊表保留符合連線條件的行。
顯示左/外連線:
select * from t1 left outer join t2 on t1.=t2.
select * from t1 right outer join t2 on t1.=t2.
全連線:(顯示兩個表所有資訊)
select * from t1 full join t2 on t1.* = t2.*
交叉連線(笛卡爾積)
select * from t1 cross join t2 on t1.* = t2.*
別名AS
語法:AS 別名
說明:
(1)可以給欄位取別名、可以給表名取別名
(2)AS 可以省略
(3)如果給欄位取別名,如果別名中包含特殊符號,例如“空格”等,建議給別名加上雙引號或單引號
(4)如果是給表名取別名,那麼不能加雙引號或單引號,也不能有特殊符號,例如“空格”等
(5)建議別名簡短,見名知意
著重號
例如:selectname
from t_stu;
可以給欄位或表名加著重號
如果欄位名或表名與關鍵字一樣更要加著重號了
MySQL的運算子
(1)算術運算子:+ - * /(除也可以寫成div,div取整) %(取模可以寫成mod)
(2)比較運算子:= > >= < <= !=(不等於還可以寫成<>) <=>(安全等於)
(3)邏輯運算子:&&(邏輯與也可以寫成and) ||(邏輯或也可以寫成or) not(邏輯非) xor(邏輯異或)
(4)範圍:表示式 between ... and ... (也可以寫成 表示式>=... and 表示式 <=...)
表示式 not between ... and ...(也可以寫成 表示式<... || 表示式 >...)
(5)集合:in (值,值,值...) not in(值,值,值...)
(6)模糊查詢:LIKE NOT LIKE,萬用字元:%表示0-n個字元,_下劃線代表一個字元
(7)位運算子:&(按位與) |(按位或)^(按位異或)~(按位取反)>>(右移)<<(左移)
(8)NULL值判斷,is null 或 is not null,如果使用null=null,null<>null,null=0,null<>0,null=false等都不對
不過xxx is null 可以使用xxx <=> null ,xxx is not null 可以寫成 not xxx <=> null
結論:所有的運算子遇到NULL結果都是NULL,除了<=>