수색…


개요

관계형 대수학 은 완전한 SQL 언어가 아니라 오히려 관계형 처리에 대한 이론적 이해를 얻는 방법입니다. 따라서 테이블, 레코드 및 필드와 같은 물리적 개체에 대한 참조를 만들어서는 안됩니다. 관계, 튜플 및 속성과 같은 추상 구문을 참조해야합니다. 이 문서에서 학문적 용어를 사용하지 않고 테이블, 레코드 및 필드와 같이 널리 알려진 평신도 용어를 고수 할 것입니다.

우리가 시작하기 전에 몇 가지 관계 대수 규칙 :

  • 관계형 대수학에서 사용되는 연산자는 개별 레코드보다는 전체 테이블에서 작동합니다.
  • 관계형 표현식의 결과는 항상 테이블이 될 것입니다 (이것을 클로저 속성 이라고합니다)

이 문서 전체에서 다음 두 테이블을 참조 할 것입니다.

예제 테이블

고르다

select 연산자는 주 테이블의 하위 집합을 반환합니다.
<table>을 선택하십시오. 여기서 <condition>

예를 들어 다음 표현식을 살펴보십시오.

사람을 선택할 경우 DepartmentID = 2

이것은 다음과 같이 쓸 수 있습니다 :
여기에 이미지 설명을 입력하십시오.

그러면 DepartmentID 값이 2 인 People 테이블의 모든 레코드로 구성된 레코드가있는 테이블이 생성됩니다.
여기에 이미지 설명을 입력하십시오.

조건을 결합하여 표현을 더 제한 할 수도 있습니다.

사람을 선택할 경우 StartYear> 2005 DepartmentID = 2

다음 표가 생성됩니다.
여기에 이미지 설명을 입력하십시오.

계획

프로젝트 운영자는 테이블에서 고유 한 필드 값을 반환합니다.
프로젝트 <table> over <field list>

예를 들어, 다음 표현식을 검사하십시오.
StartYear를 넘는 사람들 프로젝트

이것은 다음과 같이 쓸 수 있습니다 :
여기에 이미지 설명을 입력하십시오.

그러면 People 테이블의 StartYear 필드에 보유 된 고유 한 값으로 구성된 테이블이 작성됩니다.
여기에 이미지 설명을 입력하십시오.

관계형 테이블을 작성하는 닫는 특성 으로 인해 결과 테이블에서 중복 값이 ​​제거됩니다. 관계형 테이블의 모든 레코드는 구별되어야합니다.

필드 목록 이 하나 이상의 필드로 구성되는 경우 결과 테이블은 이러한 필드의 고유 한 버전입니다.
프로젝트 StartUear 이상의 사람들, DepartmentID는 다음을 반환 할 것입니다 :
여기에 이미지 설명을 입력하십시오.
2006 StartYear 및 1 DepartmentID 의 중복으로 인해 하나의 레코드가 제거됩니다.

GIVING

관계식은 give 키워드를 사용하여 개별 표현식의 이름을 지정하거나 다른 표현식에 하나의 표현식을 포함시킴으로써 함께 연결될 수 있습니다.

<관계 대수 표현> 제공 <별명>

예를 들어, 다음 표현식을 고려하십시오.
제공 DepartmentID = 2를 선택하는 사람들
B를 주는 PersonName 통한 프로젝트 A

그러면 테이블 A가 첫 x 째 표현의 결과가되는 아래의 테이블 B가됩니다.
여기에 이미지 설명을 입력하십시오.

첫 번째 표현식이 평가되고 결과 테이블에 별칭 A가 제공됩니다.이 테이블은 두 번째 표현식 내에서 사용되어 최종 테이블에 별칭 B를 부여합니다.

이 표현식을 작성하는 또 다른 방법은 두 번째 표현식의 테이블 별명을 대괄호로 묶은 첫 번째 표현식의 전체 텍스트로 바꾸는 것입니다.
프로젝트는 (사람을 선택할 경우 DepartmentID = 2)으로 PersonName가 B를 제공을 통해

이를 중첩 된 표현식 이라고합니다.

NATURAL JOIN

자연 결합은 테이블간에 공유되는 공통 필드를 사용하여 두 개의 테이블을 함께 고정시킵니다.

<표 1>과 <표 2> <1 필드> = <필드 2> 합류
<field 1>이 <table 1>에 있고 <field 2>가 <table 2>에 있다고 가정합니다.

예를 들어 다음 조인 식은 각 테이블의 DepartmentIDID 열을 기반으로 People and Departments 를 조인합니다.
사람과 부서에 참여 DepartmentID은 = ID

여기에 이미지 설명을 입력하십시오.

People 테이블의 DepartmentID 만 표시되고 Department 테이블의 ID 는 표시되지 않습니다. 비교되는 필드 중 하나만 표시되어야하는데, 일반적으로 조인 작업의 첫 번째 테이블에있는 필드 이름입니다.

이 예에서는 표시되지 않았지만 테이블을 조인하면 동일한 표제를 갖는 두 개의 필드가 나타날 수 있습니다. 예를 들어, Name 이라는 제목을 사용하여 PersonNameDept 필드를 식별 한 경우 (즉, Person Name과 Department Name을 식별하는 경우). 이 상황이 발생하면 테이블 이름을 사용하여 점 표기법을 사용하여 필드 이름을 한정합니다 ( People.NameDepartments.Name).

선택프로젝트결합조인을 함께 사용하여 정보를 가져올 수 있습니다.

DepartmentID = ID는주는 사람과 부서에 가입
선택할 경우 = 2005 StartYear 부서는 = '생산'B을 제공
으로 PersonName가 C를 제공을 통해 프로젝트 B

또는 결합 된 표현으로 :

프로젝트 (선택 (사람과 부서에 참여할 경우 = 2005 StartYear 부서 = '생산'DepartmentID = ID))으로 PersonName 이상이 C를 제공

이 결과는 다음 표와 같습니다.
여기에 이미지 설명을 입력하십시오.

별명

분할

노동 조합

중개

업데이트 (: =)

타임스



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow