a스포츠 토토 결과 표현테이블을 계산합니다. 스포츠 토토 결과 표현에는가 포함됩니다.From선택적으로 뒤 따르는 조항여기서, 그룹 by및조항. 사소한 스포츠 토토 결과 표현식은 단순히 소위베이스 인 디스크의 스포츠 토토 결과을 참조합니다. 표이지만 더 복잡한 표현을 사용하여 수정하거나 기본 스포츠 토토 결과을 다양한 방식으로 결합하십시오.
선택 사항여기서, 그룹 by및스포츠 토토 결과 표현식의 조항은 연속의 파이프 라인을 지정합니다. 에서 파생 된 테이블에서 수행 된 변환From절. 이 모든 변환은 a 전달되는 행을 제공하는 가상 스포츠 토토 결과 쿼리의 출력 행을 계산하려면 목록을 선택하십시오.
theFrom절은 스포츠 토토 결과을 도출합니다 쉼표로 구분 된 스포츠 토토 결과에 주어진 하나 이상의 다른 스포츠 토토 결과에서 참조 목록.
Fromtable_reference[, table_reference[, ...]]
스포츠 토토 결과 참조는 스포츠 토토 결과 이름 일 수 있습니다 (아마도 스키마 자격) 또는 하위 쿼리와 같은 파생 스포츠 토토 결과 스포츠 토토 결과 조인 또는 이들의 복잡한 조합. 둘 이상 스포츠 토토 결과 참조는에 나열되어 있습니다.12224_12230조항은 교차 조정 (아래 참조)을 형성합니다 그런 다음 적용 할 수있는 중간 가상 테이블 의 변환여기서, 그룹 by및조항과 마침내 결과입니다 전체 스포츠 토토 결과 표현.
스포츠 토토 결과 참조가 수퍼 스포츠 토토 결과 인 스포츠 토토 결과의 이름을 지정할 때 스포츠 토토 결과 상속 계층 구조의 스포츠 토토 결과 참조가 생성됩니다 그 스포츠 토토 결과뿐만 아니라 모든 미묘한 후계자 행, 키워드가 아니라면전용앞에 스포츠 토토 결과 이름. 그러나 참조는 열만 생성합니다 이름이 지정된 스포츠 토토 결과에 나타납니다 --- 추가 된 열 하위 스포츠 토토 결과은 무시됩니다.
결합 된 스포츠 토토 결과은 다른 두 가지에서 파생 된 스포츠 토토 결과입니다 (Real 또는 파생) 특정 조인의 규칙에 따른 스포츠 토토 결과 유형. 내부, 외부 및 크로스 조인을 사용할 수 있습니다.
타입 조인
T1크로스 조인T2
각 행 조합마다T1andT2, 파생 된 스포츠 토토 결과이 있습니다 모든 열로 구성된 행 포함T1T2. 테이블이있는 경우 n과 m 행에 각각, 결합 된 테이블은 n을 * m 줄. 크로스 조인은에 해당합니다.참으로 내부 조인.
팁 : FromT1크로스 조인T2FromT1, T2.
T1[내부] | 왼쪽 | 오른쪽 | 가득한 [외부] joinT2onboolean_expression T1[내부] | 왼쪽 | 오른쪽 | 가득한 [외부] 조인T2사용 ( 사용열 목록에 가입)T1천연 [내부] | 왼쪽 | 오른쪽 | 가득한 [외부] joinT2
단어내부and외부는 모두 선택 사항입니다 양식.내부기본값입니다;왼쪽, 오른쪽및full외부 조인을 암시합니다.
the조건 조정is 에 지정됨on또는사용조항 또는 암시 적으로 단어천연. 가입 조건은 두 소스의 행을 결정합니다 스포츠 토토 결과은로 간주됩니다."매치", 자세히 설명 된대로 아래에.
theon절이 가장 중요합니다 일반적인 가입 조건 : 부울이 필요합니다 a와 같은 종류의 가치 표현여기서절. 한 쌍의 행 에서T1andT2일치on표현식은 true로 평가됩니다 그들을.
사용는 속기입니다 표기법 : 쉼표로 구분 된 열 목록이 필요합니다 결합 된 스포츠 토토 결과이 공통적으로 가져야하는 이름, 각각의 동등성을 지정하는 결합 조건을 형성합니다 이 쌍의 열. 또한 a의 출력사용하기하나에 열이 하나 있습니다 각 동일 한 입력 열 쌍, 다음에 각 테이블의 다른 모든 열. 따라서,사용 (A, B, C)동등합니다 에게on (t1.a = t2.a 및 t1.b = t2.b 및 t1.c = t2.c)if 예외on사용됩니다 열a, B및C결과,사용각각 중 하나만있을 것입니다.
마지막으로,천연는 속기 형태의입니다.사용: a를 형성합니다.사용정확히 그것들로 구성된 목록 두 입력 스포츠 토토 결과 모두에 나타나는 열 이름. 와 마찬가지로사용,이 열이 나타납니다 출력 스포츠 토토 결과에서 한 번만.
자격을 갖춘 조인의 가능한 유형은 다음과 같습니다.
T1의 각 행 R1에 대해 결합 된 테이블에는 조인을 만족시키는 T2의 각 행에 대한 행 R1이있는 상태
먼저 내부 조인이 수행됩니다. 그런 다음 조인을 만족하지 않는 T1의 각 행 T2에 행이있는 상태, 결합 된 행은 T2 열에 널 값이 추가됩니다. 따라서, 결합 된 테이블에는 무조건적으로 하나가 있습니다 T1의 각 행에 대한 행
먼저 내부 조인이 수행됩니다. 그런 다음 조인을 만족하지 않는 T2의 각 행 T1에 행이있는 상태, 결합 된 행은 T1의 열에 널 값이 추가됩니다. 이것은 왼쪽 결합의 반대 : 결과 테이블 무조건적으로 각 행에 행이 있습니다 T2.
먼저 내부 조인이 수행됩니다. 그런 다음 조인을 만족하지 않는 T1의 각 행 T2에 행이있는 상태, 결합 된 행은 T2 열에 널 값이 추가됩니다. 또한, 조인을 만족하지 않는 T2의 각 행에 대해 T1의 모든 행이있는 상태, 결합 된 행 T1 열의 널 값이 추가됩니다.
모든 유형의 결합은 함께 연결되거나 중첩 될 수 있습니다. 둘 중 하나 또는 둘 다T1andT2결합 된 테이블이있을 수 있습니다. 괄호는 주변에 사용될 수 있습니다Join조인 순서를 제어하기위한 조항. 없을 때 괄호,Join클로즈 둥지 왼쪽에서 오른쪽으로.
이것을 합치려면 스포츠 토토 결과이 있다고 가정합니다T1
Num | 이름 -----+------ 1 | 에이 2 | 비 3 | 기음
andT2
Num | 값 -----+------- 1 | 트리플 엑스 3 | YYY 5 | 쿨쿨
그런 다음 다양한 결과를 얻습니다 조인 :
= 선택 *에서 T1 Cross 조인 T2;에서 선택하십시오.Num | 이름 | Num | 값 -----+------+-----+------- 1 | A | 1 | 트리플 엑스 1 | A | 3 | YYY 1 | A | 5 | 쿨쿨 2 | B | 1 | 트리플 엑스 2 | B | 3 | YYY 2 | B | 5 | 쿨쿨 3 | C | 1 | 트리플 엑스 3 | C | 3 | YYY 3 | C | 5 | 쿨쿨 (9 줄)= 선택 *에서 t1 내부 t2에서 t2에서 t2를 결합하여 t2 = t2.num;Num | 이름 | Num | 값 -----+------+-----+------- 1 | A | 1 | 트리플 엑스 3 | C | 3 | YYY (2 줄)= 선택 *에서 T1 내부 조인 T2를 사용하여 (NUM);Num | 이름 | 값 -----+------+------- 1 | A | 트리플 엑스 3 | C | YYY (2 줄)= 선택 *에서 T1 Natural Inner Join T2;Num | 이름 | 값 -----+------+------- 1 | A | 트리플 엑스 3 | C | YYY (2 줄)= 선택 *에서 * T1 왼쪽에서 t2에 t2를 결합하여 t2 = t2.num;Num | 이름 | Num | 값 -----+------+-----+------- 1 | A | 1 | 트리플 엑스 2 | B | | 3 | C | 3 | YYY (3 줄)= select * from t1 왼쪽 왼쪽 왼쪽 t2를 사용하여 (num);Num | 이름 | 값 -----+------+------- 1 | A | 트리플 엑스 2 | B | 3 | C | YYY (3 줄)= 선택 *에서 T1에서 T1에 가입하여 t1.num = t2.num;Num | 이름 | Num | 값 -----+------+-----+------- 1 | A | 1 | 트리플 엑스 3 | C | 3 | YYY | | 5 | 쿨쿨 (3 줄)= 선택 *에서 t1에서 t1에서 t2에서 t2를 가입하십시오 .num = t2.num;Num | 이름 | Num | 값 -----+------+-----+------- 1 | A | 1 | 트리플 엑스 2 | B | | 3 | C | 3 | YYY | | 5 | 쿨쿨 (4 줄)
지정된 조정 조건on그렇지 않은 조건도 포함 할 수도 있습니다 가입과 직접 관련됩니다. 이것은 일부에게 유용 할 수 있습니다 쿼리이지만 신중하게 생각해야합니다. 을 위한 예:
= select *에서 t1에서 t1 왼쪽에서 t2를 결합하여 t1.num = t2.num 및 t2.value = 'xxx';Num | 이름 | Num | 값 -----+------+-----+------- 1 | A | 1 | 트리플 엑스 2 | B | | 3 | C | | (3 줄)
테이블 및 복잡한 테이블에 임시 이름이 제공 될 수 있습니다. 도출 된 테이블에 대한 참조에 사용되는 참조 추가 처리. 이것을 A라고합니다.스포츠 토토 결과 별명.
스포츠 토토 결과 별칭을 만들려면 쓰기
table_referenceasalias
또는
Fromtable_reference alias
theas키워드는 소음입니다.alias식별자.
일반적인 스포츠 토토 결과 별칭의 적용은 단락을 할당하는 것입니다. 조인 조항을 유지하기 위해 긴 스포츠 토토 결과 이름에 식별자 읽을 수 있습니다. 예를 들어:
선택 *에서 * some_very_long_table_name s onther_fairly_long_name a on s.id = a.num; 가입
별칭은 테이블 참조의 새 이름이됩니다. 현재 쿼리 - 더 이상 원래 이름으로 테이블. 따라서
선택 * My_table에서 my_table.a 5;에서 my_table에서 my_table에서 선택하십시오.
유효한 SQL 구문이 아닙니다. 실제로 일어날 일 (이것은 IS APostgreSQL확장 표준)은 암시 적 테이블 참조가 다음에 추가된다는 것입니다. 그만큼From절은 쿼리입니다 마치 작성된 것처럼 처리
선택 * My_table에서 my_table as where my_table.a 5;에서 my_table에서 my_table을 선택하십시오.
이로 인해 크로스 조인이 발생합니다. 당신이 원하는 것.
테이블 별칭은 주로 표기법 편의를위한 것이지만 테이블에 연결할 때 사용해야합니다. 예 :
선택 * My_table에서 크로스로 결합하여 my_table as b ...
또한 표를 참조하면 별칭이 필요합니다 하위 쿼리입니다 (참조섹션 4.2.1.3).
괄호는 모호성을 해결하는 데 사용됩니다. 다음 명령문은 별칭을 할당합니다Bto 이전 예와 달리 조인의 결과 :
선택 *에서 (my_table as a cross join my_table) as b ...
다른 형태의 스포츠 토토 결과 앨리어싱도 임시 이름을 제시합니다 표의 열에 :
Fromtable_reference[as]alias(컬럼 1[, 컬럼 2[, ...]])
컬럼 별칭이 실제보다 지정된 경우 스포츠 토토 결과에는 열이 있으며 나머지 열에 이름이 바뀌지 않습니다. 이 구문은 특히자가 요인에 유용합니다 하위 쿼리.
별명이 A의 출력에 적용되는 경우Join조항, 이러한 양식을 사용하여 별칭은 내에서 원래 이름을 숨 깁니다.Join. 예를 들어,
선택 a.* my_table에서 a as your_table as b on ...
유효한 SQL이지만
선택 a.*에서 (my_table as as your_table as b on ...) as c
유효하지 않음 : 스포츠 토토 결과 별명a별칭 외부에서 보이지 않습니다C.
파생 된 스포츠 토토 결과을 지정하는 하위 쿼리는 포함되어야합니다 괄호 및필수스포츠 토토 결과 별명을 할당해야합니다 이름. (보다섹션 4.2.1.2.) 예 :
From (select * from table1) as alias_name
이 예제는와 같습니다.Alias_name as table1. 더 흥미로운 경우 평범한 결합으로 축소 할 수 없습니다. 하위 퀘스트가 발생하면 발생합니다. 그룹화 또는 집계가 포함됩니다.
의 구문여기서절 이다
여기서search_condition
여기서search_conditionis 정의 된 모든 값 표현식섹션 1.2값을 반환합니다 유형부울.
처리 후From조항이 완료되며, 파생 된 가상 테이블의 각 행은 검색 조건에 대해 확인했습니다. 결과의 결과 조건은 사실입니다. 행은 출력 테이블에 보관됩니다. 그렇지 않으면 (즉, 결과가 False 또는 Null이면) 폐기. 검색 조건은 일반적으로 최소한 참조됩니다 에서 생성 된 테이블의 일부 열From절; 이것은 필요하지 않지만 그렇지 않으면 그만큼어디절은 공정하게됩니다 쓸모 없는.
참고 :|Join구문, 그것을 넣어야했습니다 내부 조인 조건에 가입어디절. 예를 들어,이 테이블 표현은 동일합니다 :
a, b에서 b, 여기서 a.id = b.id 및 b.val 5및
a 내부 조인 B on (a.id = b.id)에서 b.val 5또는 아마도
자연 조인 B에서 B.Val 5에서.당신이 사용하는 이들 중 어느 것이 주로 스타일의 문제입니다. 그만큼Join구문의From조항은 아마도 휴대용이 아닐 것입니다 다른 SQL 데이터베이스 제품. 외부 조인의 경우 아니요 어떤 경우에도 선택 :에서 수행해야합니다From절.on/사용조항 외부 조인은notA와 동등한여기서조건 행 추가를 결정합니다 (타의 추종없는 입력 행의 경우) 최종 결과에서 행을 제거 할뿐만 아니라
다음은의 몇 가지 예입니다.여기서클로즈 :
선택 ... FDT에서 C1 5 선택 ... FDT에서 C1 in (1, 2, 3) 선택 ... FDT에서 C1 in (T2에서 C1 선택) 선택 ... FDT에서 C1 in (T2에서 C3를 선택하십시오. 여기서 C2 = Fdt.c1 + 10) 선택 ... FDT에서 C1 사이의 C1 (T2에서 C3를 선택하여 C2 = FDT.C1 + 10)과 100 선택 ... FDT에서 존재하는 곳 (T2에서 C1을 선택하여 C2 FDT.C1)
FDT|From절. 만나지 않는 행 의 검색 조건여기서절 에서 제거됩니다FDT. 주목하십시오 스칼라 하위 쿼리를 값 표현식으로 사용합니다. 어떤 것과 마찬가지로 다른 쿼리, 하위 쿼리는 복잡한 테이블을 사용할 수 있습니다 표현. 주목 방법FDTIS 하위 쿼리에서 참조됩니다. 자격C1asfdt.c1전용입니다 필요한 경우C1또한 a의 이름이기도합니다 서브 쿼리의 파생 입력 테이블의 열. 자격 열 이름은 필요하지 않은 경우에도 명확성을 추가합니다. 이것 외부 쿼리의 열명 범위가 어떻게 확장되는지 보여줍니다. 내부 쿼리로.
통과 후여기서필터, 파생 입력 테이블은를 사용하여 그룹화 될 수 있습니다.그룹 by조항 및 제거 를 사용하는 그룹 행절.
selectselect_list[어디서 ...] 그룹 byGrouping_Column_Reference[, Grouping_Column_Reference] ...
the그룹 by절은 사용됩니다 동일한 값을 공유하는 테이블에 행을 함께 그룹화하십시오. 나열된 모든 열. 열이있는 순서 나열된 것은 중요하지 않습니다. 목적은 각 그룹을 줄이는 것입니다 공통 값을 하나의 그룹 행으로 공유하는 행 그룹의 모든 행을 대표합니다. 이것은 끝났습니다 출력 및/또는 계산 골재의 중복성을 제거합니다 이 그룹에 적용됩니다. 예를 들어:
= 선택 *에서 test1;x | 와이 ---+--- A | 3 C | 2 B | 5 A | 1 (4 줄)= X; Test1 Group에서 X를 선택하십시오.x --- 에이 비 기음 (3 줄)
두 번째 쿼리에서는 글을 쓸 수 없었습니다선택 *에서 Test1 Group by x에서 선택가 있기 때문입니다 열에 대한 단일 값 없음y각 그룹과 관련 될 수 있습니다. 그룹화 된 열은 할 수 있습니다 알려진 목록에서 참조됩니다. 그룹당 일정한 가치.
일반적으로 테이블이 그룹화되면 사용되지 않는 열 그룹화에서 집계를 제외하고는 참조 할 수 없습니다 표현. 골재 표현이있는 예는 다음과 같습니다.
= x, x, sum (y)을 선택하여 x;x | 합집합 ---+----- A | 4 B | 5 C | 2 (3 줄)
여기sum ()는 집계 함수입니다 이는 전체 그룹에 걸쳐 단일 값을 계산합니다. 더 사용 가능한 집계 기능에 대한 정보는 다음과 같습니다 에서 발견사설 토토 사이트 :.
팁 :집계 표현이없는 그룹화 a.의 별개의 값 세트를 효과적으로 계산합니다 열. 이것은 또한를 사용하여 달성 할 수 있습니다.별도의절 (참조섹션 4.3.3).
여기에 또 다른 예가 있습니다 :Sum (Sales)
제품 코드로 그룹화 된 스포츠 토토 결과에서
총 판매가 아닌 각 제품의 총 판매량을 제공합니다.
모든 제품.
Product_id, P.Name, (sum (s.units) * P.Price)을 판매로 선택하십시오 제품 P에서 왼쪽 왼쪽에 가입 판매 (product_id) Product_id, P.Name, P.Price;의 그룹
이 예에서 열product_id, p.name및P.Price그룹 by조항에서 참조되므로
쿼리 선택 목록. (제품 스포츠 토토 결과의 정확한 방법에 따라
설정되면 이름과 가격이 제품에 완전히 의존 할 수 있습니다.
추가 그룹화는 이론적으로 될 수 있습니다
불필요하지만 아직 구현되지 않았습니다.) 열S.units그룹 byList에서만 사용되므로
골재 표현 (sum ()
),
이는 제품 판매 그룹을 나타냅니다. 각각에 대해
제품, 요약 행은 모든 판매에 대해 반환됩니다.
제품.
엄격한 SQL에서그룹 by할 수 있습니다 소스 스포츠 토토 결과의 열별 그룹이지만PostgreSQL허용하도록 이것을 확장합니다그룹 by목록을 선택하십시오. 단순한 대신 가치 표현식으로 그룹화합니다 열 이름도 허용됩니다.
스포츠 토토 결과이 a를 그룹화 한 경우그룹 by조항이지만 특정 그룹 만 관심이 있습니다,조항 캔 a처럼 사용됩니다.여기서조항, to 그룹화 된 테이블에서 그룹을 제거하십시오. 구문은 다음과 같습니다.
selectselect_listFrom ... [어디서 ...] Group by ... hadeboolean_expression
표현절 그룹화 된 표현식과 그룹화되지 않은 것을 참조 할 수 있습니다 표현식 (반드시 집계가 포함됩니다 기능).
예 :
= sum (y) 3;에 의해 test1 그룹에서 x, sum (y)을 선택하십시오.x | 합집합 ---+----- A | 4 B | 5 (2 줄)= x < 'c';에 의해 test1 그룹에서 x, sum (y)을 선택합니다.x | 합집합 ---+----- A | 4 B | 5 (2 줄)
다시, 더 현실적인 예 :
Product_id, P.Name, (sum (s.units) * (p.price -p.cost))))는 이익 제품 P에서 왼쪽 왼쪽에 가입 판매 (product_id) 여기서 s.date current_date- 간격 '4 주' product_id, p.name, p.price, p.cost의 그룹 합계 (p.price * s.units) 5000;
위의 예에서여기서절 항목은 그룹화되지 않은 열에 따라 행을 선택하고 있습니다. 그만큼조항은 출력을 제한합니다 총 매출이 5000 이상인 그룹에. 집계 표현이 반드시 동일 할 필요는 없습니다. 어디에나.