當前位置:首頁 » 編程語言 » sql中查找連接
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql中查找連接

發布時間: 2022-07-09 14:34:56

sql Server查看有哪些用戶連接資料庫

1、通過系統的「性能」來查看:
開始->管理工具->性能(或者是運行裡面輸入 mmc)然後通過
添加計數器添加 SQL 的常用統計 然後在下面列出的項目裡面選擇用戶連接就可以時時查詢到sql server資料庫連接數了。
不過此方法的話需要有訪問那台計算機的許可權,就是要通過windows賬戶登陸進去才可以添加此計數器。

2、通過系統表來查詢:
SELECT * FROM
[Master].[dbo].[SYSPROCESSES] WHERE [DBID]
IN
(
SELECT
[DBID]
FROM
[Master].[dbo].[SYSDATABASES]
WHERE
NAME='databaseName'
)
databaseName 是需要查看的資料庫,然後查詢出來的行數,就是當前的sql server資料庫連接數。不過裡面還有一些別的狀態可以做參考用。

3、通過系統過程來查詢:
SP_WHO 'loginName'
loginName 是當然登陸Sql的用戶名,一般程序裡面都會使用一個username來登陸SQL這樣通過這個用戶名就能查看到此用戶名登陸之後佔用的連接了。
如果不寫loginName,那麼返回的就是所有的sql server資料庫連接。

⑵ 在SQL中 如何正確使用各種聯接查詢

SELECT--SQL語法
從一個或多個表中檢索數據。SELECT SQL 命令是與其它 Vfp一樣的內置的 Vfp命令。當你使用 SELECT 來生成查詢時, Vfp翻譯查詢並從表中獲取指定數據。你可以從以下地方創建 SELECT 查詢:

「命令」窗口中
帶有其它任何 Vfp命令的 Vfp程序中
查詢設計器中
SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]] [Alias.] Select_Item
[[AS] Column_Name] [, [Alias.] Select_Item [[AS] Column_Name] ...]
FROM [FORCE] [DatabaseName!] Table [[AS] Local_Alias]
[ [INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN DatabaseName!]
Table [[AS] Local_Alias] [ON JoinCondition ...]
[[INTO Destination] | [TO FILE FileName [ADDITIVE] | TO PRINTER [PROMPT] | TO SCREEN]]
[PREFERENCE PreferenceName] [NOCONSOLE] [PLAIN] [NOWAIT]
[WHERE JoinCondition [AND JoinCondition ...] [AND | OR FilterCondition [AND | OR FilterCondition ...]]]
[Group By GroupColumn [, GroupColumn ...]] [HAVING FilterCondition] [UNION [ALL] SELECTCommand]
[Order By Order_Item [ASC | DESC] [, Order_Item [ASC | DESC] ...]]
參數
SELECT
在 SELECT 子句中指定在查詢結果中包含的欄位、常量和表達式。
ALL
查詢結果中包含所有行 ( 包括重復值 )。ALL 是默認設置。
DISTINCT
在查詢結果中剔除重復的行。每一個 SELECT 子句只能使用一次 DISTINCT。
TOP nExpr [PERCENT]
在符合查詢條件的所有記錄中,選取指定數量或百分比的記錄。TOP 子句必須與 ORDER BY 子句同時使用。ORDER BY 子句指定查詢結果中包含的列上由Top字句決定的行數, TOP 子句根據此排序選定最開始的 nExpr個或 nExpr% 的記錄。

您可以指定選取 1 到 32767 個記錄。使用 ORDER BY 子句指定的欄位進行排序,會產生並列的情況,比如,可能有多個記錄,它們在選定的欄位上相同;所以,如果您指定 nExpr 為 10,在查詢結果中可能多於 10 個記錄,因為可能有幾個記錄位置並列。

如果包含 PERCENT 關鍵字指定查詢結果中的記錄數,得到記錄數的可能是小數,這時進行取整。包含 PERCENT 關鍵字時,nExpr 的范圍是 0.01 到 99.99。

[Alias.] Select_Item
限定匹配項的名稱。Select_Item 指定的每一項在查詢結果中都生成一列。一個項可以是以下一個
FROM 子句所包含的表中的欄位名稱。
一個常量,查詢結果中每一行都出現這個常量值。
一個表達式,可以是用戶自定義函數名。
關於使用用戶定義函數的詳細信息, 參見注釋節中的帶用戶定義函數的 SELECT。

你用 Select_Item 指定的各項生成一個查詢結果列。

如果兩個或更多的項具有相同的名稱, 在項名前包含表別名和一個句點來避免列重復。

[AS] Column_Name
為查詢輸出中的列指定顯示名。Column_Name 可以是表達式但不能包含不允許的字元, 如, 欄位名中的空格。
當 Select_Item 是一個表達式或包含一個欄位函數而且你想給該列一個有意義的名字時該選項是有用的。

FROM [FORCE] DatabaseName!
列出所有從中檢索數據的表。
FORCE 指定連接表時按它們出現在 FROM 子句中的順序。如果省略 FORCE, Vfp會試圖對查詢進行優化。但是, 使用 FORCE 子句,避免了優化過程,可能加快查詢執行的速度。

當包含表的資料庫不是當前資料庫時,DatabaseName! 指定這個資料庫的名稱。如果資料庫不是當前資料庫,就必須指定包含表的資料庫名稱。應在資料庫名稱之後表名之前加上感嘆號(!)分隔符。

[[AS] Local_Alias]
為 Table 中的表指定一個臨時名稱。如果指定了本地別名,那麼在整個SELECT 語句中必須都用這個別名代替表名。本地別名不影響 Visual FoxPro環境。INNER JOIN 只有在其他表中包含對應記錄(一個或多個)的記錄才出現在查詢結果中。
INNER JOIN 只有在其他表中包含對應記錄(一個或多個)的記錄才出現在查詢結果中。

LEFT [OUTER] JOIN 在查詢結果中包含:JOIN 左側表中的所有記錄,以及JOIN 右側表中匹配的記錄。OUTER 關鍵字可被省略;包含 OUTER 強調這是一個外連接 (outer join)。

RIGHT [OUTER] JOIN 在查詢結果中包含:JOIN 右側表中的所有記錄,以及 JOIN 左側表中匹配的記錄。OUTER 關鍵字可被省略;包含 OUTER 強調這是一個外連接接 (outer join)。

FULL [OUTER] JOIN 在查詢結果中包含:JOIN 兩側所有的匹配記錄,和不匹配的記錄;包含 OUTER 強調這是一個外連接 (outer join)。

關於連接的詳細信息, 參見備注段中的 Joins。

ON JoinCondition 指定連接條件。

INTO Destination
指定在何處保存查詢結果。Destination 可以是下列子句之一:
ARRAY ArrayName ,將查詢結果保存到變數數組中。
如果查詢結果中不包含任何記錄,則不創建這個數組。

CURSOR CursorName [NOFILTER | READWRITE] 將查詢結果保存到臨時表中。
要創建一個查用於子查詢中的游標, 用 NOFILTER。關於 NOFILTER 的詳細信息, 參見備注節。

要指定游標是臨時的和可修改的, 使用 READWRITE。如果源表或表使用 autoincrementing, 該設置不會被 READWRITE 游標繼承。

DBF | TABLE TableName [DATABASE DatabaseName [NAME LongTableName]] 保存查詢結果到一個表中。
包含 DATABASE DatabaseName 以指定添加了表的資料庫。

包含 NAME LongTableName 可以為該表命一個最多可包括 128 個字元的並且可以在資料庫中代替短名字的長名。

如果沒有包括 INTO 子句, 查詢結果顯示在一個「瀏覽」窗口中。也可以用 TO FILE 子句來定向查詢結果到列印機或一個文件。

TO FILE FileName [ADDITIVE] | TO PRINTER [PROMPT] | TO SCREEN
定向查詢結果到列印機或一個文件。
ADDITIVE 添加查詢輸出到 TO FILE FileName 中指定的已存在的文本文件內容中。

TO PRINTER 定向查詢輸出到一個列印機。在列印開始之前,使用可選的 PROMPT 子句顯示一個對話框。您可以根據當前安裝的列印機驅動程序調整列印機的設置。將 PROMPT 子句放置在緊跟 TO PRINTER 之後。

TO SCREEN 使查詢結果定向輸出到 Vfp主窗口或活動的用戶自定義窗口中。

PREFERENCE PreferenceName
如果查詢結果送往瀏覽窗口,就可以使用 PREFERENCE 保存瀏覽窗口的屬性和選項以備後用。關於 PREFERENCE 功能的詳細信息, 參見備注節。
NOCONSOLE
不顯示送到文件、列印機或 Vfp主窗口的查詢結果。
PLAIN
防止列標題出現在顯示的查詢結果中。不管有無 TO 子句都可使用 PLAIN子句。如果 SELECT 語句中包括 INTO 子句,則忽略 PLAIN 子句。
NOWAIT
打開瀏覽窗口並將查詢結果輸出到這個窗口後繼續程序的執行。程序並不等待關閉瀏覽窗口,而是立即執行緊接在 SELECT 語句後面的程序行。關於如何使用 NOWAIT 的說明, 參見備注節。
WHERE JoinCondition
指定 Vfp的查詢結果中只包括符合指定條件的記錄。JoinCondition 指定位於 FROM 子句中的欄位連接表。關於指定連接條件的詳細信息, 參見備注節。
WHERE 支持 JoinCondition 的 ESCAPE 操作符, 讓你可以執行包含有百分號 (%) 和下劃線 (_) 通配符的 SELECT SQL 命令查詢。ESCAPE 允許你指定一個按原字樣處理的 SELECT SQL 命令通配符。在 ESCAPE 子句中, 一旦一個字元被放到通配符字元之前,就表示這個通配符被看作一個文字字元。

FilterCondition
指定將包含在查詢結果中記錄必須符合的條件。使用 AND 或 OR 操作符,您可以包含隨意數目的過濾條件。您還可以使用 NOT 操作符將邏輯表達式的值取反,或使用 EMPTY() 函數以檢查空欄位。
SELECT SQL 命令在篩選條件中支持 "<field> IS / IS NOT NULL"。要學習如何使用 FilterCondition。

Group By GroupColumn [, GroupColumn ...]
按列的值對查詢結果的行進行分組。GroupColumn 可以是常規的表欄位名,也可以是一個包含 SQL 欄位函數的欄位名,還可以是一個數值表達式,指定查詢結果表中的列位置(最左邊的列編號為 1 )。
HAVING FilterCondition
指定包括在查詢結果中的組必須滿足的篩選條件。HAVING 應該同 GROUP BY一起使用。它能包含數量不限的篩選條件,篩選條件用 AND 或 OR 連接,還可以使用 NOT 來對邏輯表達式求反。可以在 HAVING 子句中使用本地別名和欄位函數。 關於你可以使用的欄位函數的詳細信息, 參見備注節。FilterCondition 不能包含子查詢。
可以使用帶 HAVING 子句的 Group By。使用 HAVING 子句的命令如果沒有使用 GROUP BY 子句,則它的作用與WHERE 子句相同。
如果 HAVING 子句不包含欄位函數的話,使用 WHERE 子句可以獲得較快的速度。

HAVING 子句應該出現在 INTO 子句前否則產生錯誤。

[UNION [ALL] SELECTCommand]
把一個 SELECT 語句的最後查詢結果同另一個 SELECT 語句最後查詢結果組合起來。默認情況下,UNION 檢查組合的結果並排除重復的行。
要組合多個UNION 子句,可使用括弧。可以用 UNION 子句模擬一個外部聯接。
ALL 防止 UNION 刪除組合結果中重復的行。

當一個列是備注或通用型時, 不允許連接不同類型的列。

在 Vfp8.0 以前的版本中, 當在兩個不同類型的欄位上執行 UNION 操作時你需要執行明確的轉換。
Vfp現在對支持它的數據類型支持隱含數據類型轉換。關於隱含數據類型轉換和數據類型優先, UNION 子句允許的規則, 以及其它信息的詳細內容, 參見備注節中的數據類型轉換和優先。

Order By Order_Item [ASC | DESC]
根據列的數據對查詢結果進行排序。每個 Order_Item 都必須對應查詢結果中的一列。它可以是下列之一:
FROM 子句中表的欄位,同時也是 SELECT 主句(不在子查詢中)的一個選擇項。
一個數值表達式,表示查詢結果中列的位置(最左邊列編號為 1 )。
ASC 指定查詢結果根據排序項以升序排列。它是 ORDER BY 的默認選項。

DESC 指定查詢結果以降序排列。

備注
在使用 FROM 子句時如果沒有打開表, Vfp顯示「打開」對話框讓你指定文件位置。一但打開後, 表在查詢完成後仍然保持打開。

當在 Destination 參數中使用 CURSOR 子句時, 如果你指定了一個打開的表的名字, Vfp產生一條錯誤信息。在 SELECT 執行後, 臨時游標保持打開並是活動的和只讀的除非你指定了 READWRITE 選項。當你關閉該臨時游標時, 它被刪除。游標可以指定 SORTWORK 而成為存在於驅動器或卷上的臨時文件。

當在 Destination 參數中使用 CURSOR 子句時, 你現在可以使用 NOFILTER 來創建一個可用於後來的查詢的游標。在早期版本的 Vfp中, 你需要包括一個額外的常數或表達式作為篩選。例如, 添加一個邏輯 true 作為篩選表達式來創建一個可用於後來的查詢的查詢:

SELECT *, .T. FROM customers INTO CURSOR myquery
但是, 包括 NOFILTER 會降低查詢性能因為要在磁碟上創建一個臨時表。臨時表在游標關閉時從磁碟上刪除。

當在 Destination 參數中使用 DBF | TABLE 子句時, 如果你指定了一個已經打開的表, 而且 SET SAFETY 是設置為 OFF, Vfp不警告地復寫該表。如果你沒有指定一個擴展名, Vfp給表一個 .dbf 擴展名。在 SELECT 執行後表保持打開並且是活動的。

如果你在相同查詢中包括 INTO 和 TO 子句, Vfp忽略 TO 子句。如果你包括 TO 子句但沒有包括 INTO 子句, 你可以定向查詢結果到一個名為 FileName 的 ASCII 文本文件, 到列印機, 或到 Vfp主窗口。

PREFERENCE 把特徵, 屬性或參數選項長期保存在 FoxUser.dbf 資源文件中。Preferences 可以在任何時候獲取。第一次執行有 PREFERENCE Preference Name 的 SELECT 命令時創建參數選項。以後執行有相同參數選項名的 SELECT 命令時便將瀏覽窗口恢復到原來的參數選項狀態。當瀏覽窗口關閉時,更新參數選項。如果您按下 CTRL+Q+W 鍵退出「瀏覽」窗口,您對「瀏覽」窗口所做的更改不會保存到資源文件中。

SELECT 命令中包括 TO SCREEN 可以把查詢結果定向輸出到 Vfp主窗口或用戶自定義窗口。如果顯示時 Vfp主窗口或用戶自定義窗口中寫滿了一屏,就暫停輸出。按任意鍵可以查看查詢結果後面的內容。但是,如果命令中包括了 NOWAIT 子句,顯示查詢結果時就不會暫停,等待按鍵,而是在 Vfp主窗口或用戶自定義窗口中連續滾過所有內容。如果命令中包含有 INTO 子句,忽略 NOWAIT 子句。

在一個 SQL 查詢的 WHERE 子句中包括 EVALUATE() 函數會返回不正確的數據。

如果包括一個以上的表在查詢中, 你應該在第一個以後為每一個表指定一個連接條件。連接條件可以包含篩選條件。

注意 每一個 SELECT 語句的最大連接數是 9.
必須用 AND 操作符來連接多個連接條件。各連接條件具有以下格式:

當你在串中使用 = 操作符時, 它的動作根據 SET ANSI 的設置會不同。當 SET ANSI 設置為 OFF 時, Vfp只比較串到較短串結束。當 SET ANSI 設置為 ON 時, Vfp遵循 ANSI 標準的字元串比較。關於 Vfp如果執行字元串比較的額外信息, 參見 SET ANSI 和 SET EXACT。

下列欄位函數可以與選定項一起使用,選定項可以是一個欄位或包含欄位的表達式:

AVG(Select_Item), 計算列中數值的平均值。
COUNT(Select_Item), 計算列中選定項的數目。計算查詢輸出的行數。COUNT(*) 計算查詢輸出中的行數。
MIN(Select_Item), 確定列中 Select_Item 的最小值。
MAX(Select_Item), 確定列中 Select_Item 的最大值。
SUM(Select_Item), 計算列中數值的和。
欄位函數不能嵌套使用。

UNION 子句遵守下列規則:

不能使用 UNION 來組合子查詢。
兩個 SELECT 命令的查詢結果中的列數必須相同。
兩個 SELECT 查詢結果中的對應列必須有相同的數據類型和寬度。
只有最後的 SELECT 中可以包含 ORDER BY 子句,而且必須按編號指出所輸出的列。如果包含了一個 ORDER BY 子句,它將影響整個結果。
當你用 UNION 連接查詢中的兩個表時, 僅匹配連接欄位值的記錄會出現在查詢結果中。如果在父表中的記錄在子表中沒有相應的記錄, 父表中的記錄不會出現在查詢結果中。一個外部聯接允許你包括父表中的所有記錄到輸出結果中, 連同子表中的匹配記錄一起。要在 Vfp中創建一個外部聯接, 你需要要使用一個嵌套的 SELECT 命令
注意 確信在每一個分號前包括一個空格。否則, Vfp產生一個錯誤。
上例中, 在 UNION 子句前的部分的命令從兩個表中選擇具有匹配值的記錄。不包括沒有相關的發票的客戶公司。命令中 UNION 子句後的部分選擇客戶表中的在訂單表中無匹配記錄的記錄。

關於第二部分的命令, 注意以下幾點:

包括在園括弧中的 SELECT 語句首先處理。該語句的結果是選擇訂單表中的所有客戶編號。
WHERE 子句找出 customer 表中的在 orders 表沒有相關記錄的所有客戶編號。由於第一節中的命令提供了所在 orders 表中有客戶編號的公司, Customer 表中的所有公司現在都包含在查詢結果中了。
因為在 UNION 中的表的結構必須相同, 有兩個佔位符在第二個 SELECT 語句中來代表第一個 SELECT 語句中的 orders.order_id 和 orders.emp_id。
注意 佔位符必須與它們所代表的欄位有相同類型。如果欄位是日期型, 佔位符應該是 。如果欄位是一個字元欄位, 佔位符應該是一個空串 ("")。

如果你沒有在 Order By 子句中指定排序, 查詢結果顯示為未排序。

當你發出 SET TALK ON 並執行 SELECT 時, Vfp顯示查詢使用的時間和結果中的記錄數。 _TALLY 包含了在查詢結果中的記錄數。

SET FILTER 設置的篩選條件對 SELECT 命令不起作用。

注意 下面部分提到的子查詢, 是指在 SELECT 命令中包含的 SELECT 命令。子查詢必須包括在園括弧中。在 SELECT 命令的 WHERE 子句中可以包含最多兩個平級的(非嵌套)的子查詢。子查詢中可以有多個連接條件 (join conditions)。
在你創建查詢輸出時, 列的命名遵循如下規則:

如果選擇項是具有唯一名稱的欄位,則用欄位名作為輸出列名。
如果多個選擇項具有相同名稱。例如,如果名為 Customer 的表有一個STREET 欄位,而名為 Employees 的表也有一個 STREET 欄位,則輸出列命名為 Extension_A 和 Extension_B (STREET_A 和 STREET_B)。如果選擇項名稱有 10 字元長,可以將名稱截短後再加下劃線和字母。例如,DEPARTMENT 變為 DEPARTME_A。
如果選擇項是表達式,它的輸出列命名為 EXP_A。其他表達式分別命名為EXP_B、EXP_C,依此類推。
如果選擇項包含諸如 COUNT() 這樣的欄位函數,則輸出列命名為CNT_A。如果另一個選擇項包含 SUM(),它的輸出列命名為 SUM_B。
用戶定義函數和 在 SELECT 子句中使用用戶自定義函數有明顯優點,但使用時應考慮以下限制:

SELECT 子句的運行速度會受用戶自定義函數執行速度的影響。因此,如果使用戶自定義函數的操作量很大,則這些函數的功能最好調用 C 語言或匯編語言編寫的 API 或用戶自定義函數來完成。
在 SELECT 激活的用戶自定義函數中,很難預測 Vfp輸入/輸出(I/O)和表的環境。一般來說,不知道選擇的工作區是哪一個,不知道當前表的名稱,甚至不知道正在處理的欄位名。這些變數的值完全取決於用戶自定義函數在優化過程的什麼地方激活。
在 SELECT 子句調用的用戶自定義函數中修改 VfpI/O 或表的環境是很不安全的。一般來說,這樣做的結果難以預料。
從 SELECT 將值傳遞給用戶自定函數唯一可靠的方法,是激活用戶自定義函數時以參數的形式傳遞。
經過實踐,有可能發現某種被認為是違法的操作在某種 FoxPro 版本中運行正確,但這並不保證它在以後的版本中也能正確運行。
拋開這些限制不說,用戶自定義函數在 SELECT 語句中還是可接受的。但不要忘記使用 SELECT 可能要降低性能。要學習如何在 SELECT 中使用用戶定義函數, 參見示例節。

連接 Vfp支持 ANSI SQL '92 連接 (Join) 語法,通過比較兩個或多個表中的欄位,將它們的記錄連接到一起,生成查詢。例如,內部連接 (inner join) 是將兩個表中連接欄位 (joined field) 值相同的記錄選取到查詢中。Vfp支持嵌套連接(nested joins)

由於 SQL 是派生於數學集合理論, 各表可以代表一個環。指定連接條件的 ON 子句確定交接點, 它代表匹配的行集合。對於一個內部聯接, 交接發生在兩個環的內部或 "inner" 部分。一個外聯接不僅僅包括這些表內部的交叉區域匹配的行, 也包括環的外面的左或右部的交集的行。

⑶ 如何通過sql查看mysql資料庫連接

可以使用MySQL推出的MySQLConnector/Net組件,該組件是MySQL為ADO.NET訪問MySQL資料庫設計的.NET專用訪問組件,完成該組件後,需要在項目中引用這個組件,之後在程序中引用命名空間MySql.Data.MySqlClient,即可開始進行連接MySQL資料庫的操作了,示例如下:
protected voidMySqlCon()
{
//資料庫連接字元串跟連接SQLSERVER沒有區別
string constr = "server=localhost;UserId=root;password=root;Database=test";
//下面使用MySql Connector/net提供的專用對象
MySqlConnection mycon = new MySqlConnection(constr);
mycon.Open();
MySqlCommandmycmd = new MySqlCommand("select * from users", mycon);
MySqlDataReader myreader = mycmd.ExecuteReader();
while (myreader.Read())
{
if (myreader.HasRows)
{
MessageBox.Show(myreader.GetString("email") );
}
}
myreader.Close();
mycon.Close();

⑷ SQL 連接查詢

不懂就看看
SQL-92標准所定義的FROM子句的連接語法格式為:

FROM join_table join_type join_table

[ON (join_condition)]

其中join_table指出參與連接操作的表名,連接可以對同一個表操作,也可以對多表操作,對同一個表操作的連接又稱做自連接。

join_type 指出連接類型,可分為三種:內連接、外連接和交叉連接。內連接(INNER JOIN)使用比較運算符進行表間某(些)列數據的比較操作,並列出這些表中與連接條件相匹配的數據行。根據所使用的比較方式不同,內連接又分為等值連接、自然連接和不等連接三種。

外連接分為左外連接(LEFT OUTER JOIN或LEFT JOIN)、右外連接(RIGHT OUTER JOIN或RIGHT JOIN)和全外連接(FULL OUTER JOIN或FULL JOIN)三種。與內連接不同的是,外連接不只列出與連接條件相匹配的行,而是列出左表(左外連接時)、右表(右外連接時)或兩個表(全外連接時)中所有符合搜索條件的數據行。

交叉連接(CROSS JOIN)沒有WHERE 子句,它返回連接表中所有數據行的笛卡爾積,其結果集合中的數據行數等於第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數。

連接操作中的ON (join_condition) 子句指出連接條件,它由被連接表中的列和比較運算符、邏輯運算符等構成。

無論哪種連接都不能對text、ntext和image數據類型列進行直接連接,但可以對這三種列進行間接連接。例如:

SELECT p1.pub_id,p2.pub_id,p1.pr_info

FROM pub_info AS p1 INNER JOIN pub_info AS p2

ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)

(一)內連接

內連接查詢操作列出與連接條件匹配的數據行,它使用比較運算符比較被連接列的列值。內連接分三種:

1、等值連接:在連接條件中使用等於號(=)運算符比較被連接列的列值,其查詢結果中列出被連接表中的所有列,包括其中的重復列。

2、不等連接: 在連接條件使用除等於運算符以外的其它比較運算符比較被連接的列的列值。這些運算符包括>、>=、<=、<、!>、!<和<>。

3、自然連接:在連接條件中使用等於(=)運算符比較被連接列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,並刪除連接表中的重復列。

例,下面使用等值連接列出authors和publishers表中位於同一城市的作者和出版社:

SELECT *

FROM authors AS a INNER JOIN publishers AS p

ON a.city=p.city

又如使用自然連接,在選擇列表中刪除authors 和publishers 表中重復列(city和state):

SELECT a.*,p.pub_id,p.pub_name,p.country

FROM authors AS a INNER JOIN publishers AS p

ON a.city=p.city

(二)外連接

內連接時,返回查詢結果集合中的僅是符合查詢條件( WHERE 搜索條件或 HAVING 條件)和連接條件的行。而採用外連接時,它返回到查詢結果集合中的不僅包含符合連接條件的行,而且還包括左表(左外連接時)、右表(右外連接時)或兩個邊接表(全外連接)中的所有數據行。

如下面使用左外連接將論壇內容和作者信息連接起來:

SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b

ON a.username=b.username

下面使用全外連接將city表中的所有作者以及user表中的所有作者,以及他們所在的城市:

SELECT a.*,b.*

FROM city as a FULL OUTER JOIN user as b

ON a.username=b.username

(三)交叉連接

交叉連接不帶WHERE 子句,它返回被連接的兩個表所有數據行的笛卡爾積,返回到結果集合中的數據行數等於第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數。

例,titles表中有6類圖書,而publishers表中有8家出版社,則下列交叉連接檢索到的記錄數將等

於6*8=48行。

SELECT type,pub_name

FROM titles CROSS JOIN publishers

ORDER BY type

⑸ SQL連接查詢

算機科學技術專業簡介

一、培養目標及規格

本專業培養社會主義建設所需要的,德、智、體全面發展並能適應市場經濟需要的,面 向基層的應用型高等專門人才。
在政治思想道德方面,擁護黨的基本路線,熱愛祖國,具有全心全意為人民服務精神; 遵紀守法,有良好的社會公共道德和職業道德。
在業務知識和能力方面,掌握本專業所必需的數學、外語、計算機電路、計算機組成原 理、匯編與高級語言程序設計、數據結構、操作系統、計算機網路等理論知識,熟練的微機 操作技能和OFFICE辦公軟體、圖象處理軟體、工具軟體的使用方法;並具備一定的自學及跟 蹤新技術發展的能力。
1. 計算機控制方向:
(1) 畢業後能夠從事計算機硬體系統應用與維護和小型控制系統的應用、開發與維 護工作。
(2)掌握本方向所必需的計算機電路、微機介面技術、單片機技術、計算機外部設備 、計算機控制技術及其實現等基礎知識;並且掌握程序設計的基本方法和控制系統的調試技 能。
2. 計算機應用軟體開發方向:
(1)畢業後能夠從事一般應用軟體與CAD、CAI軟體的開發、應用與維護工作。
(2)掌握本方向所必需的多媒體技術、多媒體程序設計、軟體工程、應用軟體開發技 術等基礎知識;並且熟悉開發平台,掌握常用開發工具,了解軟體開發的基本方法。
3. 計算機信息管理方向:
(1)畢業後能夠從事信息管理系統的應用、開發與維護工作。
(2)掌握本方向所必需的管理學、軟體工程、資料庫原理及相關的管理學科 的基礎知識;並且掌握計算機網路環境下的計算機信息管理系統開發的基本方法和維護技能 。
4. 計算機網路方向:
(1)畢業後能夠參加計算機網路建設、從事管理以及應用開發工作。
(2) 掌握本方向所必需的數據通信和計算機網路、組網和網路管理、網路操作系統、IN TERNET和INTRANET應用以及JAVA語言程序設計等基礎知識;並且掌握計算機組網的基本方法 和技能;具備一定的網路信息建設和網路管理的能力。

二、課程設置及教學管理

(—)統設專業教學計劃中設統設必修課、選修課和集中實踐環節。其中統設必修課程由 中央電大統—開設,執行統一教學大綱、統一教材、統一考試、統—評分標准。
(二) 教學計劃中所列選修課程供地方電大制定實施性教學計劃時選用,亦可根據培養 目標及當地需要自開有針對性的選修課。地方自開課程的教材、教學管理及考試工作由各省 級電大負責。
(三) 學生可以從公共選修課大表中選修課程,也允許學生跨科類選修,如選修經濟、 文科的課程。但這部分課程的學分不得超過課程總學分的 10%。
(四) 有實驗、大作業的課程,必須按要求組織完成。凡未做實驗、大作業或實驗、大 作業不及格者,不能取得該門課程的學分。
(五)本計劃集中實踐環節主要包括:計算機操作技能訓練,流行實用軟體使用,課程 設計,生產實習和畢業設計。其中「計算機入門及操作技能訓練」和「OFFICE辦公軟體」部 分由中央電大提供統設服務(即統一實驗大綱和實驗教材),地方電大應認真組織落實。而 集中實踐環節的其他部分,均全部由地方電大組織實施。此外,學生應完成規定的課程設計 ,課程設計的內容應在本技術方向安排的大作業內容基礎上,進行綜合性課題設計。
(六)本計劃畢業設計安排10 周。重點培養學生綜合運用所學理論知識和技能解決實際 問題的能力,選題要符合教學要求,並盡量選擇與現實任務相聯系的題目。
(七)本教學計劃中的專業技術培養方向由各地電大根據培養人才的實際需要選定。

三、修業年限與畢業

實行完全學分制,學生注冊後8年內取得的學分均為有效。
中央電大按三年脫產學習安排教學計劃。
本專業最低畢業總學分為114學分。
學生修完課程,達到畢業總學分的要求,思想品德經鑒定符合要求,准予畢業並頒發畢 業證書,國家承認其高等教育三年制專科學歷。

四、課程說明

統設必修課程:

1. 計算機數學基礎
本課程4學分,課內學時72,開設一學期。
課程的主要內容:線性代數、概率基礎、數理統計基礎等。

2. 計算機電路基礎 (1)
本課程4學分,課內學時72,其中實驗18學時,開設一學期。
本課程是計算機應用專業的專業基礎課。主要內容包括:電路基本概念(電路與電路模 型、電路基本物理量、電路基本元件、基爾霍夫定律、簡單的電阻電路),半導體基本器件 ;開關理論基礎,門電路,組合邏輯電路與時序邏輯電路,可編程邏輯器件(隨機讀寫存貯 器、只讀存貯器、可編程邏輯陣列、通用邏輯陣列、現場可編程門陣列、在系統(ISP)編 程技術),數字系統的組成。
本課程後續課程:計算機電路基礎(2)等。

3. 計算機電路基礎(2)
本課程4學分,課內學時72,其中實驗14學時,開設一學期。
本課程是計算機應用專業計算機控制方向的一門必修課。主要內容包括:模擬電路基本 概念,運算放大器的原理及應用,功率放大及穩壓電路;測試技術概述,機電系統運動參 數 (位移、速度、加速度、力、力矩、應變及應力等)的測試,過程系統參數(壓力、溫 度、 流量等),測試數據處理。
本課程先修課程:計算機電路基礎(1)等。
本課程後續課程:微機介面技術、計算機控制技術等。

4. C++語言程序設計
本課程5學分,90學時,開設一學期。
C++語言程序設計是計算機應用專業的專業基礎課。該課程的主要內容:算術、邏輯、 比較、位、條件、逗號、賦值、輸入、輸出等運算符和表達式,分支和循環控制結構,模塊 化程序設計(函數定義、函數調用、函數重載、庫函數、變數作用域和存貯類),數據類 型 (整型、實型、字元型、枚舉、數組、結構、指針、類等),動態存儲空間的分配與釋 放, C++操作環境、編譯預處理、文件鏈接和工程文件的使用,類與對象的概念,操作符重 載與 函數模板,C++標准輸入輸出流、文件流和串流,等等。
本課程先修課程:計算機入門及操作技能訓練(在集中實踐環節中)、計算機組成原理 與匯編語言等。

5. 計算機組成原理與匯編語言
本課程5學分,課內學時90,開設一學期。
本課程是計算機應用專業的專業基礎課。主要內容包括:計算機系統概述,計算機中數 據的表示,運算方法和運算器,指令系統,控制器,存貯器組織,輸入輸出系統;匯編語 言 ,匯編語言基本程序設計,程序設計舉例(輸入輸出程序設計、中斷程序設計、系統調 用及 程序設計)。
本課程先修課程:計算機電路基礎(1)等。
本課程後續課程:操作系統,計算機網路等。

6. 數據結構
本課程5學分,90學時,其中實驗佔27學時,大作業佔18學時,開設一學期。
數據結構是計算機應用專業的專業基礎課。該課程的主要內容:線性表、棧、隊列的定 義、順序存貯和鏈接存貯結構,進行插入和刪除等運算的演算法;樹、二叉樹、二叉排序樹 、 哈夫曼樹的定義、性質、存貯結構及建立過程,二叉樹的先序、中序和後序遍歷演算法, 二叉 排序樹的查找、插入和生成演算法,圖的定義,圖的鄰接矩陣、鄰接表和邊集數組存貯 結構, 圖的深度優先和廣度優先遍歷演算法,求圖的最小生成樹和最短路徑演算法,拓撲排序 演算法,數 據查找和排序的各種演算法,文件的概念和組織方法等。
本課程先修課程:計算機組成原理與匯編語言、C++語言程序設計等。

7. 微機介面技術
本課程5學分,課內學時90,其中實驗27學時,大作業18學時,開設一學期。
本課程是計算機應用專業計算機控制方向的一門必修課。主要內容包括:微機介面技術 概述,模擬量輸出輸入通道(A/D、D/A變換及其介面電路),數字量輸出輸入通道,常用 可編程並、串列介面電路,工業控制計算機匯流排技術,人機界面介面技術。
本課程先修課程:計算機組成原理與匯編語言、計算機電路基礎(2)等。
本課程後續課程:計算機控制技術、單片機技術等。

8. 資料庫基礎與應用
本課程6學分,108學時,開設一學期。
資料庫基礎與應用是計算機應用專業信息管理方向的一門必修課,其它方向的選修課。 該課程的主要內容:資料庫系統的概念、組成和主要功能,資料庫保護和數據模型,關系 模 型和各種關系運算,利用SQL進行資料庫的定義、查詢、更新、插入和刪除數據,關系規 范 化和函數依賴,第一、二、三範式和BCNF範式,資料庫的概念結構設計、邏輯結構設計 和物 理結構設計,FoxPro資料庫的建立、顯示、修改、查詢、統計、復制、索引、排序、 更新、 關聯等,Foxpro應用程序設計和用戶界面設計。
先修課程:計算機入門及操作技能訓練(在集中實踐環節中)、離散數學等

⑹ SQL里3個表的連接查詢的語句怎麼寫呀

select * from 表1,表2,表3 where 表1.欄位=表2.欄位 and 表1.欄位=表3.欄位。

結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統。

一、簡介

(1)SQL語言1974年由Boyce和Chamberlin提出,並首先在IBM公司研製的關系資料庫系統SystemR上實現。由於它具有功能豐富、使用方便靈活、語言簡潔易學等突出的優點,深受計算機工業界和計算機用戶的歡迎。

(2)1980年10月,經美國國家標准局(ANSI)的資料庫委員會X3H2批准,將SQL作為關系資料庫語言的美國標准,同年公布了標准SQL,此後不久,國際標准化組織(ISO)也作出了同樣的決定。

SQL從功能上可以分為數據定義、數據操縱和數據控制。SQL的核心部分相當於關系代數,但又具有關系代數所沒有的許多特點,如聚集、資料庫更新等。它是一個綜合的、通用的、功能極強的關系資料庫語言。其特點是:

1、數據描述、操縱、控制等功能一體化。

2、兩種使用方式,統一的語法結構。SQL有兩種使用方式。一是聯機交互使用,這種方式下的SQL實際上是作為自含型語言使用的。另一種方式是嵌入到某種高級程序設計語言(如C語言等)中去使用。

前一種方式適合於非計算機專業人員使用,後一種方式適合於專業計算機人員使用。盡管使用方式不向,但所用語言的語法結構基本上是一致的。

3、高度非過程化。SQL是一種第四代語言(4GL),用戶只需要提出「干什麼」,無須具體指明「怎麼干」,像存取路徑選擇和具體處理操作等均由系統自動完成。

4、語言簡潔,易學易用。盡管SQL的功能很強,但語言十分簡潔,核心功能只用了9個動詞。SQL的語法接近英語口語,所以,用戶很容易學習和使用。

二、功能

SQL具有數據定義、數據操縱和數據控制。

1、SQL數據定義功能

能夠定義資料庫的三級模式結構,即外模式、全局模式和內模式結構。在SQL中,外模式有叫做視圖(View),全局模式簡稱模式( Schema),內模式由系統根據資料庫模式自動實現,一般無需用戶過問。

2、SQL數據操縱功能

包括對基本表和視圖的數據插入、刪除和修改,特別是具有很強的數據查詢功能。

3、SQL的數據控制功能

主要是對用戶的訪問許可權加以控制,以保證系統的安全性。

三、語句結構

結構化查詢語言包含6個部分:

1、數據查詢語言(DQL:Data Query Language)

其語句,也稱為「數據檢索語句」,用以從表中獲得數據,確定數據怎樣在應用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其它類型的SQL語句一起使用。

2、數據操作語言(DML:Data Manipulation Language)

其語句包括動詞INSERT、UPDATE和DELETE。它們分別用於添加、修改和刪除。

3、事務控制語言(TCL)

它的語句能確保被DML語句影響地表的所有行及時得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存點)命令、ROLLBACK(回滾)命令。

(6)sql中查找連接擴展閱讀:

SQL的語言特點

1、SQL風格統一

SQL可以獨立完成資料庫生命周期中的全部活動,包括定義關系模式、錄入數據、建立資料庫、查詢、更新、維護、資料庫重構、資料庫安全性控制等一系列操作,這就為資料庫應用系統開發提供了良好的環境,在資料庫投入運行後,還可根據需要隨時逐步修改模式,且不影響資料庫的運行,從而使系統具有良好的可擴充性。

2、高度非過程化

非關系數據模型的數據操縱語言是面向過程的語言,用其完成用戶請求時,必須指定存取路徑。而用SQL進行數據操作,用戶只需提出「做什麼」,而不必指明「怎麼做」,因此用戶無須了解存取路徑,存取路徑的選擇以及SQL語句的操作過程由系統自動完成。這不但大大減輕了用戶負擔,而且有利於提高數據獨立性。

3、面向集合的操作方式

SQL採用集合操作方式,不僅查找結果可以是元組的集合,而且一次插入、刪除、更新操作的對象也可以是元組的集合。

參考資料來源:網路-結構化查詢語言

⑺ 關於SQL鏈接查詢的幾種方式

一、概述 通過連接運算符可以實現多個表查詢。連接是關系資料庫模型的主要特點,也是它區別於其它類型資料庫管理系統的一個標志。多表連接查詢是使用Sql的基本操作,但連接的方式卻有多種,熟練使用這些連接方式能夠簡化Sql語句,提高資料庫運行效率。 在關系資料庫管理系統中,表建立時各數據之間的關系不必確定,常把一個實體的所有信息存放在一個表中。當檢索數據時,通過連接操作查詢出存放在多個表中的不同實體的信息。連接操作給用戶帶來很大的靈活性,他們可以在任何時候增加新的數據類型。為不同實體創建新的表,然後通過連接進行查詢。 連接可以在SELECT 語句的FROM子句或WHERE子句中建立,似是而非在FROM子句中指出連接時有助於將連接操作與WHERE子句中的搜索條件區分開來。所以,在Transact-SQL中推薦使用這種方法。 二、基本語法與方法 SQL-92標准所定義的FROM子句的連接語法格式為:FROM join_table join_type join_table [ON (join_condition)] 其中join_table指出參與連接操作的表名,連接可以對同一個表操作,也可以對多表操作,對同一個表操作的連接又稱做自連接。 join_type 指出連接類型,可分為三種:內連接、外連接和交叉連接。內連接(INNER JOIN)使用比較運算符進行表間某(些)列數據的比較操作,並列出這些表中與連接條件相匹配的數據行。根據所使用的比較方式不同。 1、內連接又分為等值連接、自然連接和不等連接三種。 2、外連接分為左外連接(LEFT OUTER JOIN或LEFT JOIN)、右外連接(RIGHT OUTER JOIN或RIGHT JOIN)和全外連接(FULL OUTER JOIN或FULL JOIN)三種。與內連接不同的是,外連接不只列出與連接條件相匹配的行,而是列出左表(左外連接時)、右表(右外連接時)或兩個表(全外連接時)中所有符合搜索條件的數據行。 3、交叉連接(CROSS JOIN)沒有WHERE 子句,它返回連接表中所有數據行的笛卡爾積,其結果集合中的數據行數等於第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數。 連接操作中的ON (join_condition) 子句指出連接條件,它由被連接表中的列和比較運算符、邏輯運算符等構成。 無論哪種連接都不能對text、ntext和image數據類型列進行直接連接,但可以對這三種列進行間接連接。例如:SELECT p1.pub_id,p2.pub_id,p1.pr_info FROM pub_info AS p1 INNER JOIN pub_info AS p2 ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info) (一)內連接 內連接查詢操作列出與連接條件匹配的數據行,它使用比較運算符比較被連接列的列值。內連接分三種: 1、等值連接:在連接條件中使用等於號(=)運算符比較被連接列的列值,其查詢結果中列出被連接表中的所有列,包括其中的重復列。 2、不等連接: 在連接條件使用除等於運算符以外的其它比較運算符比較被連接的列的列值。這些運算符包括>、>=、

⑻ 通過plsql查看資料庫連接配置

1.安裝PLSQL Developer

Oracle資料庫和PL/SQL Developer的安裝步驟,這里就不做敘述了,網路安裝方法的時候有說在安裝PL/SQL Developer軟體時,不要安裝在Program Files (x86)目錄下,不然無法啟動PL/SQL Developer,這個我也沒試過,既然有人遇到了這個情況,大家還是不要直接安裝到x86下面。安裝完成後運行PLSQL,會出現如下畫面,username和password就是你的資料庫的賬戶密碼,DataBase你會發現這個時候是沒有內容的,是正常的,點擊calcle跳過,直接進入主界面。

進入主界面後點擊Tools下的preferences進入參數設置頁面

配置oracle home和oci library兩個參數,home名字可以自己隨便取,也可以設置到資料庫的安裝目錄,oci library直接下拉,就會出現配置路徑,點擊確定並退出,重新點開PLSQL,如果DataBase出現你自己安裝的oracle資料庫的信息,便可輸入賬號密碼用PLSQL對資料庫表進行操作管理了,如果你安裝的64位的資料庫,可能還是會出現按照上述步驟後,還是無法出現資料庫信息的情況,那些進行如下操作

2.安裝oracle Clinet

當安裝第一步完成後database並沒有出現資料庫信息,點擊跳過後報錯,彈出信息框Mark sure you have the 32 batis oracle client installed ,這個時候就需要去oracle官網下載一個oracleClinet的安裝包,安裝包為綠色版本的,解壓及用官網地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html記得下載32batis版本的,還有就是下載資源需要有oracle的賬戶,免費的,如果沒有注冊一個就OK了將下載的Oracle Client文件instantclient-basic-win32解壓到需要安裝的盤符。然後在解壓後的D:\instantclient,在目錄下新建NETWORK\ADMIN目錄,在ADMIN目錄下新建tnsnames.ora文件,添加資料庫TNS。

ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = chiclewu-PC)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
tnsnames.ora文件也可以從Oracle資料庫HOME目錄的NETWORK\ADMIN目錄,還要把sqlnet.ora拷貝過來,然後放在NETWORK\ADMIN目錄下。
完成後再次運行PLSQL並跳過登錄,直接進入參數設置界面,將Oracle Home路徑指定為Oracle Client目錄(D:\instantclient_11_2),同樣,home這個名字可以自己取。OCI Libaray路徑為Oracle Client目錄的oci.dll(D:\instantclient_11_2\oci.dll)。

保存後再次運行PLSQL,就會發現database出現資料庫安裝信息了,選擇用戶名密碼及需要登錄的資料庫,點擊登錄,就可以進入主界面管理資料庫了。

3.PLSQL Developer常用操作

進入主界面後在桌面選擇myobject,並選擇table對象,就可以看到當前資料庫下的所有的表

選擇需要查看的表,滑鼠郵件-->query data就可以查看錶內的所有數據及表結構

如果想使用SQL語句通過條件對表格進行查詢,或者想出現SQL語句輸入界面,可以點擊左上角的文件圖標並選擇SQL windows選項即可,sql語句書寫完成後點擊運行按鈕(一個齒輪圖標),即可對選中的sql語句進行運行。

運行SQL語句按鈕

選中表格右鍵Edit即可對表格信息進行編輯

查看錶中的索引
選中表,右鍵, view -->indexes就可以查看到表中的索引

這里只能看到表中那些數據列有索引,但是如果先知道查詢語句是否使用索引,還需使用SQL語句進行查詢

--需要分析有無索引的SQL語句,for後面的
EXPLAIN PLAN FOR SELECT sex FROM people where sex like '男%';
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
以上語句需要兩條同時運行,從語句運行結果可以發現,此語句sex列有使用到索引

以上就是PLSQL的基本操作流程,剩餘操作有空再進行整理補充。

^_^

⑼ SQL多表連接查詢實例分析(詳細圖文)

新建兩張表:
表1:student
截圖如下:
表2:course
截圖如下:
(此時這樣建表只是為了演示連接SQL語句,當然實際開發中我們不會這樣建表,實際開發中這兩個表會有自己不同的主鍵。)
一、外連接
外連接可分為:左連接、右連接、完全外連接。
1、左連接
left
join

left
outer
join
SQL語句:select
*
from
student
left
join
course
on
student.ID=course.ID
執行結果:
左外連接包含left
join左表所有行,如果左表中某行在右表沒有匹配,則結果中對應行右表的部分全部為空(NULL).
註:此時我們不能說結果的行數等於左表數據的行數。當然此處查詢結果的行數等於左表數據的行數,因為左右兩表此時為一對一關系。
2、右連接
right
join

right
outer
join
SQL語句:select
*
from
student
right
join
course
on
student.ID=course.ID
執行結果:
右外連接包含right
join右表所有行,如果左表中某行在右表沒有匹配,則結果中對應左表的部分全部為空(NULL)。
註:同樣此時我們不能說結果的行數等於右表的行數。當然此處查詢結果的行數等於左表數據的行數,因為左右兩表此時為一對一關系。
3、完全外連接
full
join

full
outer
join
SQL語句:select
*
from
student
full
join
course
on
student.ID=course.ID
執行結果:
完全外連接包含full
join左右兩表中所有的行,如果右表中某行在左表中沒有匹配,則結果中對應行右表的部分全部為空(NULL),如果左表中某行在右表中沒有匹配,則結果中對應行左表的部分全部為空(NULL)。
二、內連接
join 或
inner
join
SQL語句:select
*
from
student
inner
join
course
on
student.ID=course.ID
執行結果:
inner
join
是比較運算符,只返回符合條件的行。
此時相當於:select
*
from
student,course
where
student.ID=course.ID
三、交叉連接
cross
join
1.概念:沒有
WHERE
子句的交叉聯接將產生連接所涉及的表的笛卡爾積。第一個表的行數乘以第二個表的行數等於笛卡爾積結果集的大小。
SQL語句:select
*
from
student
cross
join
course
執行結果:
如果我們在此時給這條SQL加上WHERE子句的時候比如SQL:select
*
from
student
cross
join
course
where
student.ID=course.ID
此時將返回符合條件的結果集,結果和inner
join所示執行結果一樣。
四、兩表關系為一對多,多對一或多對多時的連接語句
當然上面兩表為一對一關系,那麼如果表A和表B為一對多、多對一或多對多的時候,我們又該如何寫連接SQL語句呢?
其實兩表一對多的SQL語句和一對一的SQL語句的寫法都差不多,只是查詢的結果不一樣,當然兩表也要略有改動。
比如表1的列可以改為:
Sno
Name
Cno
表2的列可以改為:
Cno
CName
這樣兩表就可以寫一對多和多對一的SQL語句了,寫法和上面的一對一SQL語句一樣。
下面介紹一下當兩表為多對多的時候我們該如何建表以及些SQL語句。
新建三表:
表A:
student
截圖如下:
表B:
course
截圖如下:
表C:
student_course
截圖如下:
一個學生可以選擇多門課程,一門課程可以被多個學生選擇,因此學生表student和課程表course之間是多對多的關系。
當兩表為多對多關系的時候,我們需要建立一個中間表student_course,中間表至少要有兩表的主鍵,當然還可以有別的內容。
SQL語句:select
s.Name,C.Cname
from
student_course
as
sc
left
join
student
as
s
on
s.Sno=sc.Sno
left
join
course
as
c
on
c.Cno=sc.Cno
執行結果:
此條SQL執行的結果是學生選課的情況。