Зв'язки в SQL

Вступ до баз даних у Python

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Зв'язки

  • Дають змогу уникати дублювання даних
  • Полегшують зміну в одному місці
  • Корисно винести рідко потрібну інформацію в окрему таблицю
Вступ до баз даних у Python

Зв'язки

Вступ до баз даних у Python

Автоматичні об'єднання

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'),
 ...
Вступ до баз даних у Python

Join

  • Приймає таблицю та необов'язковий вираз, що пояснює зв'язок між таблицями
  • Вираз не потрібен, якщо зв'язок заданий наперед і доступний через рефлексію
  • Одразу після select(), перед where(), order_by() або group_by()
Вступ до баз даних у Python

select_from()

  • Використовується, щоб замінити типове, похідне FROM на з'єднання
  • Огортає вираз join()
Вступ до баз даних у Python

Приклад 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
Вступ до баз даних у Python

Об'єднання таблиць без наперед визначеного зв'язку

  • Join приймає таблицю та необов'язковий вираз, що пояснює зв'язок між таблицями
  • Об'єднує лише рядки з відповідними значеннями в обох стовпцях
  • Уникайте об'єднання стовпців різних типів
Вступ до баз даних у Python

Приклад 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
Вступ до баз даних у Python

Давайте потренуємось!

Вступ до баз даних у Python

Preparing Video For Download...