Szukaj…


Przegląd

Relacyjna algebra nie jest pełnoprawnym językiem SQL , ale raczej sposobem na uzyskanie teoretycznego zrozumienia przetwarzania relacyjnego. Jako taki nie powinien zawierać odniesień do bytów fizycznych, takich jak tabele, rekordy i pola; powinien zawierać odniesienia do abstrakcyjnych konstrukcji, takich jak relacje, krotki i atrybuty. Mówiąc to, nie będę używać terminów akademickich w tym dokumencie i będę trzymać się bardziej znanych terminów laickich - tabel, zapisów i pól.

Kilka zasad algebry relacyjnej zanim zaczniemy:

  • Operatory używane w algebrze relacyjnej działają na całych tabelach, a nie na pojedynczych rekordach.
  • Wynikiem wyrażenia relacyjnego zawsze będzie tabela (nazywa się to właściwością zamknięcia )

W całym tym dokumencie będę odnosić się do następujących dwóch tabel:

Przykładowe tabele

WYBIERZ

Operator select zwraca podzbiór głównej tabeli.
wybierz <tabela> gdzie <warunek>

Na przykład sprawdź wyrażenie:

wybierz Osoby, w których DepartmentID = 2

Można to zapisać jako:
wprowadź opis zdjęcia tutaj

Spowoduje to powstanie tabeli, której rekordy obejmują wszystkie rekordy w tabeli Ludzie, w których wartość DepartmentID jest równa 2:
wprowadź opis zdjęcia tutaj

Można również dołączyć warunki, aby dodatkowo ograniczyć wyrażenie:

wybierz Osoby, w których StartRok> 2005 i DepartmentID = 2

spowoduje następującą tabelę:
wprowadź opis zdjęcia tutaj

PROJEKT

Operator projektu zwróci różne wartości pól z tabeli.
project <table> over <lista pól>

Na przykład sprawdź następujące wyrażenie:
projekt People over StartYear

Można to zapisać jako:
wprowadź opis zdjęcia tutaj

Spowoduje to powstanie tabeli zawierającej różne wartości przechowywane w polu StartYear tabeli Ludzie .
wprowadź opis zdjęcia tutaj

Zduplikowane wartości są usuwane z tabeli wynikowej ze względu na właściwość zamknięcia tworzącą tabelę relacyjną: wszystkie rekordy w tabeli relacyjnej muszą być odrębne.

Jeśli lista pól zawiera więcej niż jedno pole, wynikowa tabela jest odrębną wersją tych pól.
Projekt People over StartYear, DepartmentID zwróci:
wprowadź opis zdjęcia tutaj
Jeden rekord został usunięty z powodu powielenia 2006 StartYear i 1 DepartmentID .

DAJĄCY

Wyrażenia relacyjne można łączyć ze sobą, nazywając poszczególne wyrażenia za pomocą podanego słowa kluczowego lub osadzając jedno wyrażenie w innym.

<wyrażenie algebry relacyjnej> podające <nazwa aliasu>

Weźmy na przykład następujące wyrażenia:
wybierz Osoby, w których DepartmentID = 2 daje A
projekt A nad PersonName daje B

Spowoduje to powstanie poniższej tabeli B, przy czym tabela A będzie wynikiem pierwszego wyrażenia.
wprowadź opis zdjęcia tutaj

Pierwsze wyrażenie jest oceniane, a wynikowa tabela otrzymuje alias A. Ta tabela jest następnie używana w drugim wyrażeniu, aby dać końcową tabelę z aliasem B.

Innym sposobem napisania tego wyrażenia jest zastąpienie aliasu tabeli w drugim wyrażeniu całym tekstem pierwszego wyrażenia zawartym w nawiasach:
projekt ( wybierz Osoby, gdzie DepartmentID = 2) nad PersonName, podając B

Jest to nazywane wyrażeniem zagnieżdżonym .

NATURALNE DOŁĄCZENIE

Naturalne łączenie scala dwie tabele razem, używając wspólnego pola dzielonego między tabelami.

połącz <tabela 1> i <tabela 2> gdzie <pole 1> = <pole 2>
zakładając, że <pole 1> znajduje się w <tabela 1>, a <pole 2> znajduje się w <tabela 2>.

Na przykład następujące wyrażenie łączenia połączy osoby i departamenty na podstawie kolumn DepartmentID i ID w odpowiednich tabelach:
dołącz do osób i działów, w których DepartmentID = ID

wprowadź opis zdjęcia tutaj

Zauważ, że pokazany jest tylko DepartmentID z tabeli People , a nie ID z tabeli Department . Musi zostać pokazane tylko jedno z porównywanych pól, które na ogół jest nazwą pola z pierwszej tabeli w operacji łączenia.

Chociaż nie pokazano w tym przykładzie, możliwe jest, że połączenie tabel może spowodować, że dwa pola będą miały ten sam nagłówek. Na przykład, jeśli użyłem nagłówka Nazwa do zidentyfikowania pól PersonName i Dept (tj. Do zidentyfikowania nazwiska osoby i nazwy działu). Kiedy pojawia się taka sytuacja, używamy nazwy tabeli, aby zakwalifikować nazwy pól za pomocą notacji kropkowej: People.Name and Departments.Name

join w połączeniu z select i project mogą być używane razem do pobierania informacji:

dołącz do osób i działów, w których DepartmentID = ID daje A
wybierz A, gdzie StartRok = 2005 i Dział = „Produkcja”, podając B
projekt B nad PersonName daje C

lub jako wyrażenie łączone:

projekt ( wybierz ( dołącz do osób i działów, gdzie DepartmentID = ID) gdzie StartYear = 2005 i Dept = 'Production') nad PersonName, dając C

Spowoduje to powstanie tej tabeli:
wprowadź opis zdjęcia tutaj

ALIAS

PODZIELIĆ

UNIA

SKRZYŻOWANIE

RÓŻNICA

AKTUALIZACJA (: =)

CZASY



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow