SQL 왼쪽 외부 연결,오른쪽 외부 연결,전체 연결,내부 연결
23238 단어 sql
연결 은 다음 과 같은 몇 가지 로 나 눌 수 있 습 니 다.
내부 연결.전형 적 인 연결 연산 은=또는<>와 같은 비교 연산 자 를 사용한다.포괄 하 다
동일 한 연결 과 자연 연결.
내부 연결 은 비교 연산 자 를 사용 하여 표 마다 공 유 된 열의 값 에 따라 두 표 의 줄 과 일치 합 니 다.예 를 들 어 students 와 courses 표 중 학생 표지 번호 가 같은 모든 줄 을 검색 합 니 다.
외부 연결.외부 연결
왼쪽 외부 연결,오른쪽 외부 연결 또는 전체 외부 연결
。
FROM 자구 에서 외부 연결 을 지정 할 때 다음 몇 개의 키워드 중 한 그룹 으로 지정 할 수 있 습 니 다.
LEFT JOIN 또는 LEFT OUTER JOIN.
왼쪽 에서 밖으로 연 결 된 결과 집합 은 LEFTOUTER 자구 에서 지정 한 왼쪽 표 의 모든 줄 을 포함 합 니 다.연결 열 에 일치 하 는 줄 만 있 는 것 이 아 닙 니 다.왼쪽 표 의 한 줄 이 오른쪽 표 에 일치 하 는 줄 이 없다 면 연 결 된 결과 집합 줄 에서 오른쪽 표 의 모든 선택 목록 열 은 빈 값 입 니 다.
라이트 존 이나 라이트 아웃 터 존.
오른쪽 에서 바깥으로 연결 하 는 것 은 왼쪽 에서 바깥으로 연결 하 는 역방향 연결 이다.
오른쪽 표 의 모든 줄 을 되 돌려 줍 니 다.오른쪽 표 의 한 줄 이 왼쪽 표 에 일치 하 는 줄 이 없 으 면 왼쪽 표 에 빈 값 을 되 돌려 줍 니 다.
FULL JOIN 또는 FULL OUTER JOIN.
전체 외부 연결 은 왼쪽 표 와 오른쪽 표 의 모든 줄 을 되 돌려 줍 니 다.한 줄 이 다른 표 에 일치 하 는 줄 이 없 을 때 다른 표 의 선택 목록 열 은 빈 값 을 포함 합 니 다.표 사이 에 일치 하 는 줄 이 있 으 면 전체 결과 집합 줄 은 기본 표 의 데이터 값 을 포함 합 니 다.
교차 연결.
교차 연결 은 왼쪽 표 의 모든 줄 을 되 돌려 줍 니 다.왼쪽 표 의 모든 줄 과 오른쪽 표 의 모든 줄 을 조합 합 니 다.교차 연결 을 피리 칼 적 이 라 고도 한다.
예 를 들 어 아래 의 내부 연결 검색 은 특정한 출판사 와 같은 주 와 도시 에 사 는 작가 이다.
USE pubs
SELECT a.au_fname, a.au_lname, p.pub_name
FROM authors AS a INNER JOIN publishers AS p
ON a.city = p.city
AND a.state = p.state
ORDER BY a.au_lname ASC, a.au_fname ASC
FROM 자구 의 표 나 보 기 는 내부 연결 또는 전체 외부 연결 을 통 해 임의의 순서 로 지정 할 수 있 습 니 다.그러나 왼쪽 이나 오른쪽 으로 지 정 된 표 나 보 기 를 밖으로 연결 할 때 표 나 보기 의 순서 가 중요 합 니 다.왼쪽 이나 오른쪽 을 밖으로 연결 하 는 목록 에 대한 더 많은 정 보 는 외부 연결 을 참조 하 십시오.
예:
a 표 id name b 표 id job parentid
1 장.3,1,23,1.
2 이사 2 34 2
왕 무
a.id 와 parentid 존재
내부 연결
select a.*,b.* from a inner join b on a.id=b.parent_id
결국
1 장.3,1,23,1.
2 이사 2 34 2
왼쪽 연결
select a.*,b.* from a left join b on a.id=b.parent_id
결국
1 장.3,1,23,1.
2 이사 2 34 2
3 왕 무 null
오른쪽 연결
select a.*,b.* from a right join b on a.id=b.parent_id
결국
1 장.3,1,23,1.
2 이사 2 34 2
null 3 34 4
완전 연결
select a.*,b.* from a full join b on a.id=b.parent_id
결국
1 장.3,1,23,1.
2 이사 2 34 2
null 3 34 4
3 왕 무 null
SQL code
DECLARE
@TA TABLE (IDA INT,VA VARCHAR(10))
DECLARE
@TB TABLE (IDB INT,VB VARCHAR(10))
INSERT INTO @TA
SELECT
1,'AA' UNION SELECT
2,'BC' UNION SELECT
3,'CCC'
INSERT INTO @TB
SELECT
1,'2' UNION SELECT
3,'58' UNION SELECT
4,'67'
--
SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A,@TB B
WHERE A.IDA=B.IDB
--
SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A INNER JOIN @TB B
ON A.IDA=B.IDB
SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A JOIN @TB B
ON A.IDA=B.IDB
--
SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A LEFT JOIN @TB B
ON A.IDA=B.IDB
SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A LEFT OUTER JOIN @TB B
ON A.IDA=B.IDB
--
SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A RIGHT JOIN @TB B
ON A.IDA=B.IDB
SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A RIGHT OUTER JOIN @TB B
ON A.IDA=B.IDB
--
SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A FULL JOIN @TB B
ON A.IDA=B.IDB
SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A FULL OUTER JOIN @TB B
ON A.IDA=B.IDB
--
SELECT A.IDA,A.VA,B.IDB,B.VB FROM @TA A CROSS JOIN @TB B
--
SELECT A.IDA,A.VA,B.IDA,B.VA FROM @TA A,@TA B WHERE A.IDA=B.IDA+1
:
-- table1,table2:
create table table1(id int,name varchar(10))
create table table2(id int,score int)
insert into table1 select 1,'lee'
insert into table1 select 2,'zhang'
insert into table1 select 4,'wang'
insert into table2 select 1,90
insert into table2 select 2,100
insert into table2 select 3,70
-------------------------------------------------
table1|table2|
-------------------------------------------------
idname|idscore|
1lee|190|
2zhang|2100|
4wang|370|
-------------------------------------------------
、
1. : 、
2. :left join left outer join
(1) LEFT OUTER , 。 , (null)。
(2)sql
select * from table1 left join table2 on table1.id=table2.id
------------- -------------
idnameidscore
------------------------------
1lee190
2zhang2100
4wangNULLNULL
------------------------------
: table1 , table2 , null
3. :right join right outer join
(1) 。 。 , 。
(2)sql
select * from table1 right join table2 on table1.id=table2.id
------------- -------------
idnameidscore
------------------------------
1lee190
2zhang2100
NULLNULL370
------------------------------
: table2 , table1 , null
4. :full join full outer join
(1) 。 , 。 , 。
(2)sql
select * from table1 full join table2 on table1.id=table2.id
------------- -------------
idnameidscore
------------------------------
1lee190
2zhang2100
4wangNULLNULL
NULLNULL370
------------------------------
: ( 、 )
、
1. :
2. :join inner join
3.sql
select * from table1 join table2 on table1.id=table2.id
------------- -------------
idnameidscore
------------------------------
1lee190
2zhang2100
------------------------------
: table1 table2
4. ( )
A:select a.*,b.* from table1 a,table2 b where a.id=b.id
B:select * from table1 cross join table2 where table1.id=table2.id ( :cross join where, on)
、 ( )
1. : WHERE 。 。(table1 table2 3*3=9 )
2. :cross join ( where...)
3.sql
select * from table1 cross join table2
------------- -------------
idnameidscore
------------------------------
1lee190
2zhang190
4wang190
1lee2100
2zhang2100
4wang2100
1lee370
2zhang370
4wang370
------------------------------
: 3*3=9 ,
4. ( )
A:select * from table1,table2
:http://www.cnblogs.com/youzhangjin/archive/2009/05/22/1486982.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
깊이 중첩된 객체를 정확히 일치 검색 - PostgreSQL목차 * 🚀 * 🎯 * 🏁 * 🙏 JSON 객체 예시 따라서 우리의 현재 목표는 "고용주"사용자가 입력한 검색어(이 경우에는 '요리')를 얻고 이 용어와 정확히 일치하는 모든 사용자 프로필을 찾는 것입니다. 즐거운 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.