Relacje SQL

Wprowadzenie do baz danych w Pythonie

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Relacje

  • Pozwalają unikać duplikowania danych
  • Ułatwiają wprowadzanie zmian w jednym miejscu
  • Przydatne do wyodrębnienia rzadko potrzebnych informacji z tabeli
Wprowadzenie do baz danych w Pythonie

Relacje

Wprowadzenie do baz danych w Pythonie

Automatyczne złączenia

stmt = select([census.columns.pop2008, 
        state_fact.columns.abbreviation])

results = connection.execute(stmt).fetchall() print(results)
[(95012, u'IL'),
 (95012, u'NJ'),
 (95012, u'ND'),
 (95012, u'OR'),
 (95012, u'DC'),
 (95012, u'WI'),
 ...
Wprowadzenie do baz danych w Pythonie

Join

  • Przyjmuje tabelę i opcjonalne wyrażenie opisujące relację między tabelami
  • Wyrażenie nie jest wymagane, gdy relacja jest predefiniowana i dostępna przez refleksję
  • Następuje bezpośrednio po klauzuli select(), przed where(), order_by() lub group_by()
Wprowadzenie do baz danych w Pythonie

select_from()

  • Zastępuje domyślną klauzulę FROM złączeniem
  • Opakowuje klauzulę join()
Wprowadzenie do baz danych w Pythonie

Przykład select_from()

stmt = select([func.sum(census.columns.pop2000)])

stmt = stmt.select_from(census.join(state_fact))
stmt = stmt.where(state_fact.columns.circuit_court == '10')
result = connection.execute(stmt).scalar() print(result)
14945252
Wprowadzenie do baz danych w Pythonie

Łączenie tabel bez predefiniowanej relacji

  • Join przyjmuje tabelę i opcjonalne wyrażenie opisujące relację między tabelami
  • Łączy tylko wiersze z pasującymi danymi w obu kolumnach
  • Unikaj łączenia kolumn różnych typów
Wprowadzenie do baz danych w Pythonie

Przykład select_from()

stmt = select([func.sum(census.columns.pop2000)])

stmt = stmt.select_from( census.join(state_fact, census.columns.state == state_fact.columns.name))
stmt = stmt.where( state_fact.columns.census_division_name == 'East South Central')
result = connection.execute(stmt).scalar() print(result)
16982311
Wprowadzenie do baz danych w Pythonie

Czas na ćwiczenia!

Wprowadzenie do baz danych w Pythonie

Preparing Video For Download...