您好,登錄后才能下訂單哦!
這篇文章主要介紹了SQL SERVER如何實現(xiàn)連接與合并查詢,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
CREATE table MyStudentInfo ( Id int not null primary key, Name varchar(16), Age int, Gender varchar(2), Phone varchar(16), Address varchar(50), GradeId int )
INSERT INTO MyStudentInfo SELECT 1,'張三',20,'1','15801258912','上海',1 UNION SELECT 2,'李四',22,'1','12345678901','北京',1 UNION SELECT 3,'王五',16,'1','13976891234','天津',2 UNION SELECT 4,'趙六',19,'1','18676891234','重慶',3 UNION SELECT 5,'小紅',21,'2','17776891234','廣州',4 UNION SELECT 6,'小王',25,'2','13176891234','深圳',5 UNION SELECT 7,'小劉',18,'2','13374591234','南京',6 UNION SELECT 8,'小張',16,'1','13974596734','長沙',6 UNION SELECT 9,'小羅',27,'1','13175122786','武漢',7 UNION SELECT 10,'小袁',21,'2','17715872346','石家莊',8
CREATE table GradeInfo ( Id int not null primary key, GradeName varchar(16) )
聯(lián)合插入多條數(shù)據(jù)
INSERT INTO GradeInfo SELECT 1,'.NET' UNION SELECT 2,'Android' UNION SELECT 3,'PHP' UNION SELECT 4,'UI' UNION SELECT 5,'HTML5' UNION SELECT 6,'JAVA' UNION SELECT 9,'HADOOP' UNION SELECT 10,'大數(shù)據(jù)'
內(nèi)鏈接是從結(jié)果表中刪除其他被鏈接表中沒有匹配的所有行,所以我們說內(nèi)鏈接可能丟失數(shù)據(jù)
SELECT s.Id,s.Name,s.Age,s.Gender,s.Phone,s.GradeId,g.GradeName FROM MyStudentInfo s INNER JOIN GradeInfo g ON s.GradeId=g.Id
左外聯(lián)接,關(guān)鍵字LEFT JOIN
左外聯(lián)接,結(jié)果集中包括左表中的所有行,如果左表的某一行在右表中沒有匹配行,則在關(guān)聯(lián)的結(jié)果集行中,
來自右表的所有選擇列表均為NULL
SELECT s.Id,s.Name,s.Age,s.Gender,s.Phone,s.GradeId,g.GradeName FROM MyStudentInfo s LEFT JOIN GradeInfo g ON s.GradeId=g.Id
GIGHT JOIN進行聯(lián)接
是左外聯(lián)接的反向聯(lián)接,將返回右表的所有行,如果右表的某一行在左表中沒有匹配行,則將為左表返回NULL
SELECT s.Id,s.Name,s.Age,s.Gender,s.Phone,s.GradeId,g.GradeName FROM MyStudentInfo s RIGHT JOIN GradeInfo g ON s.GradeId=g.Id
關(guān)鍵字是FULL JOIN
完整外聯(lián)接使用了FULL JOIN進行聯(lián)接,當某一行在另一表中沒有匹配行,另一表的選擇列表將返回NULL
SELECT s.Id,s.Name,s.Age,s.Gender,s.Phone,s.GradeId,g.GradeName FROM MyStudentInfo s FULL JOIN GradeInfo g ON s.GradeId=g.Id
CORSS JOIN 沒有where 也沒有on,返回行數(shù)是兩表行數(shù)的乘積
SELECT s.Id,s.Name,s.Age,s.Gender,s.Phone,s.GradeId,g.GradeName FROM MyStudentInfo s CROSS JOIN GradeInfo g
UNION必須遵循
1.兩個SELECT語句選擇列表中的列數(shù)目必須一樣,而且對應(yīng)位置上的列的數(shù)據(jù)類型必須相同或者兼容,每條 SELECT 語句中的列的順序必須相同
2.UNION 結(jié)果集中的列名總是等于 UNION 中第一個 SELECT 語句中的列名
3.union默認自動去除重復行
4.如果需要手動排序,order by語句必須加在最后一個select語句之后,但是他所使用的排序列名必須是第一個select選擇列表中的列名
SELECT Age,Name FROM MyStudentInfo UNION SELECT Id,GradeName FROM GradeInfo ORDER BY Age DESC
1.加上ALL關(guān)鍵字之后,功能就是不刪除重復行,也不對行進行自動排序
2.如果希望把不同數(shù)據(jù)類型的字段合并查詢,必須進行類型轉(zhuǎn)換使其相對應(yīng)的數(shù)據(jù)類型相同或者兼容
3.當合并兩個表,列數(shù)不同時.只要向其中一個表源中添加列,就可以使其兩個表的列數(shù)相同
SELECT Age,Name,Address FROM MyStudentInfo UNION ALL SELECT Id,GradeName,NULL FROM GradeInfo ORDER BY Age DESC
1.在合并中,兩個表的數(shù)量和數(shù)據(jù)類型必須相同 ; 在聯(lián)接中,一個表的行可能與另一個表的行有很大的區(qū)別
2.在合并中,行的數(shù)量是兩個表行的"和" ; 在聯(lián)接中,行的最大數(shù)目是他們的"乘積"
感謝你能夠認真閱讀完這篇文章,希望小編分享的“SQL SERVER如何實現(xiàn)連接與合并查詢”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。