婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 從兩種SQL表連接寫法來了解過去

從兩種SQL表連接寫法來了解過去

熱門標簽:廣東防封卡外呼系統原理是什么 分享百度地圖標注多個位置 外呼系統改進 地圖標注牌 湖南電腦外呼系統平臺 電銷機器人公司 需要哪些牌照 菏澤語音電銷機器人加盟公司 知名電銷機器人價格 長沙智能外呼系統
例如:一個二表連接的SQL,有兩種寫法:
(1)select A.c1,A.c2,B.c1,B.c2
from table1 A,table2 B
where A.id=B.id

(2)select A.c1,A.c2,B.c1,B.c2
from table1 A join table2 B
on A.id=B.id

哪種寫法好呢?現在提倡用哪一種?
你喜歡用哪一種?
復制代碼 代碼如下:

select * from a,b where a.id=b.id
select * from a inner join b on a.id=b.id


---這兩個哪個好?

其中11樓的回答最為深入。其實這個問題還是有一定的歷史原因的,不管你習慣什么樣的寫法只要知道來龍去脈就不會再被細枝末節來迷惑了。以下觀點為個人認識,如有偏差歡迎指正。

簡單的說,前者是ansi sql 86標準后者是ansi sql 92標準(*****) ,這個觀點最容易被人接受。

什么是ansi?美國國家標準局,iso的重要成員之一,1918年就有了。
什么是ansi sql?就是ansi注意到了sql的生產力,于是規范化了一下。

什么是sql?他是ibm發明的,oracle發揚廣大的一門語言。

為什么是兩家公司?。
70年代初因為ibm內部各方利益斗爭激烈,導致某大牛的研究成果只能以論文方式發表。
70年代末某小公司把此技術用在商業領域就成了oracle,直到n年后ibm db2才出來。

所以,sql不是ansi 發明的,ansi 標準也不能通吃所有數據庫平臺。

比如下面這個是什么數據庫的語法?反正ansi 標準在他那里是報錯的。
select * from (a inner join b on a.id=b.id) inner join c on a.id=c.id

那么在ansi86之前的數據庫有哪些?oracle和db2是肯定的了。另外還有一些當時的小角色:Informix,dbase系列等。

而sybase的數據庫和SQLServer是86年之后出來的,而前面那個奇怪的join語法的access是90后的。

古老的sqlserver和oracle我都沒有用過,反正在02年用oracle8i時還不支持ansi 92的inner join,他是97年生的。一直到本世紀發布的oacle9i 才改了過來。用多了t-sql的人會問 left join咋辦,where a.id=b.id(+) 就可以了,人家沒那么笨的,t-sql以前還有*=這樣的表示。


那么這么看貌似ansi的規范力度不夠?其實不是,國際標準化也不可能一刀切,在ansi92 當中定義了4個級別,n多條款。大意就是大家符合入門級就行了,其他高級別僅供參考,甚至iso根本不會驗證其他級別..而諸如inner join和left join之類的都是過渡級的,囧。


所以我前面打了5個星星的那句話并不是完全正確的,正確的應該是

前者符合ansi 86 標準和ansi 92入門級標準,后者符合ansi92 過渡級標準。

不是oracle8i不符合ansi92,而是沒有符合ansi92的高級別規范,而完全實現高級別標準的數據庫系統是沒有的。

早在oracle7就已經完全符合ansi92了,當然是指入門級,而且他就是ansi92 的模版范例。

--回到上面的話題,這兩個哪個好?
性能當然完全一樣,區別只是習慣和喜好,但也因為標準級別不同而具有不同的風險。

如果想要優雅而易于維護且不容易寫錯的代碼,當然用高標準的第二種方法。
如果必要考慮風險這個因素,比如涉及到多種平臺的遷移或者整合,你應該用第一種,起碼在兩個表的情況下他還是比較安全的。

----
順帶提一句,ansi標準一直在修訂:具體有多少版本就不列舉了,我們得到的好處自然是多多的,比如遞歸、對象、數組、xml等等在各主流數據庫的新版本中都陸續實現了
您可能感興趣的文章:
  • sql表連接查詢使用方法(sql多表連接查詢)
  • SQL多表連接查詢實例分析(詳細圖文)
  • SQL學習筆記八 索引,表連接,子查詢,ROW_NUMBER
  • SQL SELECT 語句的表連接
  • SQL 多表連接查詢實現語句
  • sql 多表連接查詢
  • SQL表連接圖解

標簽:泉州 美容院 商洛 呼和浩特 天水 西寧 珠海 福建

巨人網絡通訊聲明:本文標題《從兩種SQL表連接寫法來了解過去》,本文關鍵詞  從,兩種,SQL,表,連接,寫法,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《從兩種SQL表連接寫法來了解過去》相關的同類信息!
  • 本頁收集關于從兩種SQL表連接寫法來了解過去的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 韶山市| 高碑店市| 华阴市| 松潘县| 永安市| 资源县| 三都| 祁门县| 扶绥县| 平果县| 安达市| 习水县| 常山县| 崇阳县| 红原县| 张家港市| 南康市| 吉木萨尔县| 辽中县| 杂多县| 鄱阳县| 西平县| 文水县| 通许县| 高要市| 平武县| 泰宁县| 和龙市| 永宁县| 共和县| 武安市| 台湾省| 辉南县| 密山市| 施甸县| 垫江县| 敦化市| 青海省| 江油市| 绍兴市| 县级市|