Relasi SQL

Pengantar Basis Data di Python

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

Relasi

  • Menghindari data duplikat
  • Memudahkan perubahan di satu tempat
  • Berguna memisahkan info dari tabel yang jarang dibutuhkan
Pengantar Basis Data di Python

Relasi

Pengantar Basis Data di Python

Join otomatis

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'),
 ...
Pengantar Basis Data di Python

Join

  • Menerima Table dan ekspresi opsional yang menjelaskan hubungan kedua tabel
  • Ekspresi tidak diperlukan jika relasi sudah didefinisikan dan tersedia via refleksi
  • Diletakkan tepat setelah klausa select() dan sebelum where(), order_by(), atau group_by()
Pengantar Basis Data di Python

select_from()

  • Menggantikan klausa FROM bawaan (turunan) dengan join
  • Membungkus klausa join()
Pengantar Basis Data di Python

Contoh 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
Pengantar Basis Data di Python

Menggabungkan tabel tanpa relasi bawaan

  • Join menerima Table dan ekspresi opsional yang menjelaskan hubungan kedua tabel
  • Hanya menggabungkan data yang cocok di antara kolom
  • Hindari join pada kolom dengan tipe berbeda
Pengantar Basis Data di Python

Contoh 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
Pengantar Basis Data di Python

Ayo berlatih!

Pengantar Basis Data di Python

Preparing Video For Download...