sql >> Databáze >  >> RDS >> Access

Úvod do datových spojení a vztahů

Možnosti datových spojení

Sloučení dat a neplatnost záznamu

Někdy budete mít tabulku, kde v poli chybí nějaké záznamy. Zde je příklad seznamu zaměstnanců, kde některé záznamy neurčují oddělení, do kterého zaměstnanec patří:

SELECT Employees.EmployeeNumber AS [Employee #],
       Employees.FirstName,
       Employees.LastName,
       Employees.DepartmentCode AS Department
FROM Employees;

Výsledkem by bylo:

Pokud vytvoříte dotaz vnitřního spojení dvou tabulek, které mají vztah, a některým záznamům podřízené tabulky chybí některé hodnoty ve sloupci cizího klíče, dotaz vytvoří pouze záznamy, které mají hodnotu. Zde je příklad:

SELECT Employees.EmployeeNumber AS [Employee #],
       Employees.FirstName,
       Employees.LastName,
       Departments.DepartmentName AS Department
FROM   Departments INNER JOIN Employees
       ON Departments.DepartmentCode = Employees.DepartmentCode;

Výsledkem by bylo:

Všimněte si, že dotaz vytváří méně záznamů. Jak se stává, databázové stroje nemají rády nulové záznamy, zejména ve sdílených polích, polích, která jsou zapojena do vztahů. Chcete-li se ujistit, že všechny záznamy podřízené tabulky jsou vytvářeny dotazem, vytvořte výchozí hodnotu pro záznamy, jejichž hodnoty chybí. Pokud vztah používá jednoduché celé číslo, vytvořte záznam s hodnotou 0. Pokud vztah používá řetězec, můžete vytvořit záznam s hodnotou 'N/A'. Pokud jsou záznamy zpracovávány počítačem, můžete vytvořit záznam s obecnou/náhodnou hodnotou, jako je 00000 nebo něco podobného.

Praktické učení:Zacházení se spojeními dat a neplatností záznamů

  1. Spusťte aplikaci Microsoft Access
  2. Ze zdrojů, které doprovázejí tyto lekce, otevřete databázi Altair Realtors3
  3. Na pásu karet klikněte na Vytvořit a poté na Návrh dotazu
  4. V dialogovém okně Zobrazit tabulku poklepejte na Vlastnosti a klikněte na Zavřít
  5. V seznamu Vlastnosti poklepejte na PropertyNumber, City a State
  6. Přepněte dotaz do zobrazení datového listu:

  7. Všimněte si počtu záznamů:48.
    Přepněte dotaz do návrhového zobrazení
  8. Klikněte pravým tlačítkem na prázdnou oblast v horní části okna a klikněte na Zobrazit tabulku
  9. V dialogovém okně Zobrazit tabulku poklepejte na PropertyTypes a klikněte na Zavřít
  10. V seznamu PropertyTypes poklepejte na PropertyType

  11. Přepněte dotaz do zobrazení datového listu

  12. Všimněte si tentokrát počtu záznamů:44.
    Zobrazte pohled SQL dotazu a změňte jeho kód následovně:
    SELECT Properties.PropertyNumber,
           Properties.City,
           Properties.State,
           Conditions.Condition
    FROM   Properties INNER JOIN Conditions
           ON Properties.Condition = Conditions.Condition;
  13. Přepněte dotaz do zobrazení datového listu

  14. Všimněte si počtu záznamů:38.
    Zavřete dotaz bez jeho uložení
  15. V navigačním podokně poklepejte na formulář PropertyTypes
  16. Vytvořte nový záznam následovně:
    Typ vlastnosti Popis Neznámý Typ vlastnosti není k dispozici nebo není jasný. Ilustrace
  17. Zavřete tabulku PropertyTypes
  18. V navigačním podokně poklepejte na formulář Podmínky
  19. Vytvořte nový záznam následovně:
    Typ vlastnosti Popis Neznámý Současný stav nebo vzhled (interiér a/nebo exteriér) nemovitosti nebyl zkontrolován, nebyl posouzen nebo není jasně znám.
  20. Zavřete tabulku podmínek
  21. V navigačním podokně klikněte pravým tlačítkem na tabulku Vlastnosti a klikněte na Návrhové zobrazení
  22. V horní části okna klikněte na PropertyType
  23. Ve spodní části klikněte na Výchozí hodnotu a zadejte Neznámé
  24. V horní části okna klikněte na Podmínka
  25. Ve spodní části klikněte na Výchozí hodnotu a zadejte Neznámé
  26. Uložte tabulku a přepněte ji do zobrazení datového listu
  27. Ve sloupci PropertyType vyberte pro každou prázdnou buňku možnost Neznámé
  28. Ve sloupci Podmínka vyberte pro každou prázdnou buňku možnost Neznámé
  29. Všimněte si, že existuje výchozí hodnota pro sloupce PropertyType a Condition
  30. Nastavením pouze uvedených hodnot vytvořte nové záznamy následovně:
    Vlastnost # Typ vlastnosti Město Stát PSČ Ložnice Koupelny Dokončený suterén Krytá garáž Podmínka Tržní hodnota 476005 Single Family Hanover PA 17331 3 2,50 Zkontrolováno 425790 152466 Martinsburg WV 1 1,00 135670 427048 Condominium Alexandria VA 3 2,00 Potřebuje opravu 622845 297427 Matinsburg Excelent 729336 Alexandria VA 3 Repair.06070 Need Harrisburg 2,05 705 Need Harrisburg Zkontrolováno Dobrý tvar 515885

  31. Zavřete tabulku
  32. Na pásu karet klikněte na Vytvořit a poté na Návrh dotazu
  33. V dialogovém okně Zobrazit tabulku poklepejte na Vlastnosti a klikněte na Zavřít
  34. V seznamu Vlastnosti poklepejte na PropertyNumber, City a State
  35. Přepněte dotaz do zobrazení datového listu
  36. Všimněte si počtu záznamů:51.
    Přepněte dotaz do návrhového zobrazení
  37. Klikněte pravým tlačítkem na prázdnou oblast v horní části okna a klikněte na Zobrazit tabulku
  38. V dialogovém okně Zobrazit tabulku poklepejte na PropertyTypes a klikněte na Zavřít
  39. V seznamu PropertyTypes přetáhněte PropertyType a pusťte jej na City v dolní části
  40. V seznamu Vlastnosti poklepejte na Ložnice a koupelny

  41. Přepněte dotaz do zobrazení datového listu

  42. Všimněte si tentokrát počtu záznamů:51.
    Zavřete dotaz bez jeho uložení
  43. Otevřete databázi Lambda Square Apartments1 vytvořenou a používanou dříve
  44. Na pásu karet klikněte na Vytvořit a poté na Návrh dotazu
  45. V dialogovém okně Zobrazit tabulku dvakrát klikněte na Platby a klikněte na Zavřít
  46. V seznamu Platby dvakrát klikněte na ReceiptNumber, PaymentDate, ProcessedBy, RegistrationNumber a PaymentAmount
  47. Přepněte dotaz do zobrazení datového listu

  48. Všimněte si počtu záznamů:63.
    Přepněte dotaz do návrhového zobrazení
  49. Klikněte pravým tlačítkem na prázdnou oblast v okně a klikněte na Zobrazit tabulku...
  50. V dialogovém okně Zobrazit tabulku dvakrát klikněte na Zaměstnanci a klikněte na Zavřít
  51. Přetáhněte EmployeeNumber a umístěte jej na ProcessedBy
  52. Ve spodní části okna nahraďte ProcessedBy za
    Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"

  53. Přepněte dotaz do zobrazení datového listu

  54. Všimněte si počtu záznamů:46.
    Zavřete dotaz bez jeho uložení
  55. V navigačním podokně poklepejte na tabulku Zaměstnanci a vytvořte nový záznam následujícím způsobem (to se týká transakcí provedených v bance, jako je nájemce, který vloží peníze z pronájmu přímo v bance):
    EmployeeNumber Jméno Příjmení Název 00000 Automatické zpracování elektronické transakce
  56. Zavřete tabulku Zaměstnanci
  57. V navigačním podokně klikněte pravým tlačítkem na tabulku Platby a klikněte na Návrhové zobrazení
  58. V horní části okna klikněte na Zpracováno
  59. Ve spodní části klikněte na Výchozí hodnotu a zadejte "00000"
  60. Uložte a zavřete tabulku
  61. Otevřete tabulku Platby
  62. Do sloupce ProcessedBy zadejte do každé prázdné buňky 00000
  63. Zavřete tabulku Platby
  64. Na pásu karet klikněte na Vytvořit a poté na Návrh dotazu
  65. V dialogovém okně Zobrazit tabulku poklepejte na položku Platby a zaměstnanci
  66. Klikněte na tlačítko Zavřít
  67. Přetáhněte EmployeeNumber a umístěte jej na ProcessedBy
  68. V seznamu Platby dvakrát klikněte na Číslo potvrzení a Datum platby
  69. Stiskněte tabulátor a zadejte
    Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
  70. V seznamu Platby poklepejte na RegistrationNumber a PaymentAmount
  71. Přepněte dotaz do zobrazení datového listu
  72. Všimněte si počtu záznamů:63.
    Zavřete dotaz bez jeho uložení

Spojení více než dvou stolů

Naše spojení zatím zahrnovalo pouze dvě tabulky. Ve skutečnosti můžete použít více tabulek. Základní vzorec pro spojení tří tabulek je:

SELECT field-name(s) FROM first-table
first-join-type second-table ON condition1
second-join-type third-table ON condition2

Výraz zahájíte spojením první tabulky s druhou, což znamená, že obě tabulky by měly sdílet sloupec ve vztahu primární klíč-cizí klíč. Stejným způsobem můžete vytvořit druhé spojení. Druhá a třetí tabulka by samozřejmě měly mít společný sloupec. Ve většině případů by měl existovat sloupec, který sdílejí všechny tři tabulky. Většinu času začíná vztah sloupcem primárního klíče z nadřazené tabulky. Tento sloupec je pak reprezentován jako cizí klíč v dalších dvou tabulkách.

Praktické učení:Spojení více než dvou stolů

  1. Na pásu karet klikněte na Vytvořit a poté na Návrh formuláře
  2. V listu vlastností klikněte na kartu Vše.
    Klikněte na Zdroj záznamu a klikněte na tlačítko se třemi tečkami
  3. V tabulce Zobrazit poklepejte na položku Zaměstnanci, registrace a byty
  4. Klikněte na tlačítko Zavřít
  5. Přetáhněte EmployeeNumber ze seznamu Employees a umístěte jej na ProcessedBy v seznamu Registrations
  6. Přetáhněte kód bytu ze seznamu apartmánů a pusťte jej na PropNbr v seznamu registrací

  7. V seznamu Registrací poklepejte na RegistrationID a RegistrationDate
  8. Stiskněte klávesu Tab a zadejte
    Employee: [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")"
  9. V seznamu Registrací dvakrát klikněte na Jméno, Příjmení, Manželský stav a Počet dětí
  10. Stiskněte Tab a zadejte:
    Apartment: "Apart # " & [UnitNumber] & ", " & [Bedrooms] & " bedroom(s), " & [Bathrooms] & " bathroom(s), Rate: " & [MonthlyRate] & "/month"
  11. Zobrazte SQL pohled na dotaz:
    SELECT Registrations.RegistrationID AS [Regist #],
           Registrations.RegistrationDate AS [Regist Date],
           [EmployeeNumber] & " - " & [EmployeeName] & " (" & [Title] & ")" AS Employee,
           Registrations.FirstName,
           Registrations.LastName,
           Registrations.MaritalSituation AS Status,
           Registrations.NumberOfChildren AS Children,
           "Apart # " & [UnitNumber] & ", " & [Bedrooms] & " bedroom(s), " & [Bathrooms] & " bathroom(s), Rate: " & [MonthlyRate] & "/month" AS Apartment
    FROM   Apartments INNER JOIN (Employees INNER JOIN Registrations
           ON Employees.EmployeeNumber = Registrations.ProcessedBy)
           ON Apartments.ApartmentCode = Registrations.PropNbr;
  12. Zavřete Tvůrce dotazů
  13. Po dotázání, zda chcete změny uložit, klikněte na Ano
  14. Uložte formulář jako Alokace nájemného
  15. Dvakrát klikněte na tlačítko v průsečíku pravítek
  16. V listu vlastností změňte následující vlastnosti:
    Popis:Apartmány na náměstí Lambda – přidělování nájemného
    Výchozí hodnota:Nepřetržitý formulář
    Automatické vycentrování:Ano
    Navigační tlačítka:Ne
  17. Na pásu karet klikněte na Návrh
  18. V části Nástroje klikněte na Přidat existující pole
  19. V seznamu polí klikněte na Byt, stiskněte a podržte klávesu Shift, klikněte na Registrovat # a uvolněte klávesu Shift.
  20. Přetáhněte výběr do formuláře
  21. Na pásu karet klikněte na Uspořádat a poté na Tabelární
  22. Přetáhněte výběr doleva
  23. Stisknutím Ctrl + A vyberte všechny ovládací prvky
  24. Na pásu karet klikněte na Odebrat rozvržení
  25. Dokončete návrh formuláře. Zde je příklad:

  26. Uložte a zavřete formulář

Sloučení dat a analýzy záznamů

Třídění záznamů

V dosud vytvořených spojeních dat jsme vzali v úvahu všechny záznamy a nechali databázový stroj vypsat je pouze pomocí pravidel spojení vestavěných v SQL. Aby byl takový seznam více omezující, můžete použít některé podmínky, podle kterých izolujete některé záznamy. Filtry můžete vizuálně vytvořit v návrhovém zobrazení dotazu nebo v podobném okně. Můžete také vytvořit filtr v SQL. Stejně jako v předchozích lekcích zahrnout kritérium do SELECT můžete vytvořit KDE doložka.

Praktické učení:Představujeme spojení a analýzu dat

  1. Otevřete dříve používanou databázi Monson University1
  2. Chcete-li zahájit dotaz, na pásu karet klikněte na Vytvořit a poté na Návrh dotazu
  3. V dialogovém okně Zobrazit tabulku klikněte na Zavřít
  4. Klikněte pravým tlačítkem na horní stranu okna a klikněte na SQL View
  5. Výpis změňte následovně:
    SELECT EmployeeNumber AS [Employee #],
           FirstName      AS [First Name],
           LastName       AS [Last Name],
           Title,
           DepartmentName AS Department
    FROM   Employees, Departments
    WHERE  Employees.DepartmentCode = Departments.DepartmentCode
    ORDER  BY LastName;
  6. Náhled výsledků v zobrazení datového listu
  7. V případě potřeby klikněte na pásu karet na Domů.
    Změňte následující vlastnosti:
    Název písma:Californian FB (pokud toto písmo nemáte, vyberte Times New Roman)
    Barva písma:modrá, akcent 1, světlejší 80 % (barvy motivu:5. sloupec, 2. řádek)
    Barva pozadí:Více barev:Červená:195, Zelená:95, Modrá:15
    Mřížka:Horizontální
    Barva alternativní řady:Více barev:Červená:128, Zelená:0, Modrá:0

  8. Zavřete dotaz bez jeho uložení
  9. Zavřete Microsoft Access

  1. Jak změnit omezení

  2. Vyhodnocování, když je vyhodnocen výraz v dotazu

  3. Vývojářské nástroje pro přímý přístup k databázím

  4. Použití docker-compose k vytvoření tabulek v databázi postgresql