Mysql 中各種不支援的SQL特性及替換方法

2021-07-29 19:45:44 字數 921 閱讀 6192

今天要寫資料庫作業了所以就拿出資料庫的書來預習,但是由於sql部分學完沒有敲一遍書上的**,所以七七八八忘得差不多了。於是做作業前就打算把書上的**拿來敲一遍權當複習了。但是很驚奇的就是mysql有很多不支援的sql用法,這裡做個小小的總結,接下來幾天我會把書上的sql標準的**都敲一遍,遇到mysql中有特殊的方言的就會更新在部落格上。

第乙個是mysql不支援 intersect 和 except(minus) ,乙個是交運算乙個是差運算。感覺這兩個還挺好用的說,幸運的是我們完全可以用其他方法替這兩個。

intersect 可以用乙個 a inner join b using attr 來代替

except 當然可以用 select form table1 where not in (select from table2)來代替,另一種用left join的方法的思想則是運用在b不在a中的項用left join 會填入null這一性質。

第二個是mysql不支援full join 用法,不過這個很簡單,我們完全可以用乙個left join 的結果union 上乙個right join的結果,就得到full join的結果啦!

第三個是unique 檢查是否有重複元祖好像不能用,不過我們可以用 1 >= select count()來替代

第四個,mysql中沒有with。。。as。。。這個語法,如果你非要用的話,就用create table *** select。。。來代替吧

更新更新,又發現乙個,這次是在嘗試建立trigger的時候,希望能把插入有問題的行回滾掉,竟然不支援rollback!

報錯資訊是 explicit or implicit commit is not allowed ..... , 查了一下發現mysql 不支援rollback,commit這類事務, 暫時只能想到手動回滾。

看到一種好辦法就是用乙個報錯機制(error :。。。。)中斷這次執行。

mysql不支援 MySQL不支援的特性

mysql 1 不支援物化檢視。2 不支援位圖索引。3 不支援並行查詢。4 不支援雜湊關聯,mysql的所有關聯都是巢狀迴圈關聯。不過,可以通過建立乙個雜湊索引來曲線實現。5 不允許對同一表同時進行查詢和更新。報錯 update tb1 as outer tb1 set cnt select cou...

Mysql中不支援的Oracle函式

最近在更換資料庫,在改sql的時候有些oracle中的函式在mysql中不支援,記錄一下。1.oracle中的nvl 字段,替代值 此函式的意義為如果欄位是null那麼就用替代值代替這個空欄位對應的值 select nvl age,18 as age from user 這裡面如果某個人的age欄位...

SQLite不支援的SQL特性

sqlite 不支援的sql 特性 相對於試圖列出sqlite 支援的所有sql92 特性,只列出不支援的部分要簡單得多。下面顯示的就是sqlite 所不支援的sql92 特性。這個列表的順序關係到何時乙個特性可能被加入到sqlite 接近列表頂部的特性更可能在不遠的將來加入。接近列表底部的特性尚且...