一、Union連接兩張表之前,怎么判斷要連接的另一張表是否存在
那你這個(gè)必須通過(guò)程序判斷 或者存儲(chǔ)過(guò)程去實(shí)現(xiàn),只用一條SQL是解決不了的。
若是MySQL數(shù)據(jù)庫(kù),做法:
IF 去information_schema讀取tables 表,判斷指定庫(kù)名的某表是否存在;
存在,則是UNION的SQL語(yǔ)句
ELSE
不存在,則是單條表SQL語(yǔ)句
END IF
首先,Union操作是求集合,主要是查詢(xún)結(jié)果的并集的。其次,在需求分析,邏輯結(jié)構(gòu)設(shè)計(jì)等部分,表就應(yīng)該已經(jīng)定義了。如果是一些數(shù)據(jù)庫(kù)提供了臨時(shí)表,那也是應(yīng)用系統(tǒng)負(fù)責(zé)邏輯判斷。
union用于連接兩個(gè)以上的 SELECT 語(yǔ)句的結(jié)果組合到一個(gè)結(jié)果集合中。多個(gè) SELECT 語(yǔ)句會(huì)刪除重復(fù)的數(shù)據(jù)。
使用union操作符會(huì)將多張表中相同的數(shù)據(jù)取值一次,如果想將表1和表2中的值完整的顯示出來(lái),可以使用union all。
延伸閱讀:
二、聲明式與命令式
命令式(Imperative)和聲明式(Declarative)是很早就有的概念,比如 SQL、HTML、CSS 是典型的聲明式語(yǔ)言,而我們使用的絕大部分編程語(yǔ)言都是命令式的。
命令式編程就像它的名字一樣,它由開(kāi)發(fā)者我們一步一步的告述計(jì)算機(jī),執(zhí)行一系列的操作,然后得到想要的結(jié)果,起主要作用的是開(kāi)發(fā)者,計(jì)算機(jī)只是幫助開(kāi)發(fā)者執(zhí)行計(jì)算而已。
而聲明式編程卻與此相反,它不是告述計(jì)算機(jī)做什么做,而是直接告述計(jì)算它想要的結(jié)果,至于怎么做,由預(yù)先寫(xiě)好的程序依據(jù)一定的算法由計(jì)算機(jī)自動(dòng)推算出來(lái)。
聲明式與命令式的主要區(qū)別在于,聲明式描述的是結(jié)果,它不關(guān)心過(guò)程。比如 SQL,我們告述數(shù)據(jù)庫(kù)的是,我們要查詢(xún)某張表滿(mǎn)足某某條件的數(shù)據(jù),但我們并不會(huì)告述數(shù)據(jù)庫(kù)怎么去查,怎么查數(shù)據(jù)是數(shù)據(jù)庫(kù)系統(tǒng)自己關(guān)心的事情。