ความสัมพันธ์ใน SQL

Python เบื้องต้นสำหรับฐานข้อมูล

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

ความสัมพันธ์

  • ช่วยหลีกเลี่ยงข้อมูลซ้ำซ้อน
  • แก้ไขข้อมูลได้ในที่เดียว
  • เหมาะสำหรับแยกข้อมูลที่ไม่ค่อยได้ใช้ออกจากตาราง
Python เบื้องต้นสำหรับฐานข้อมูล

ความสัมพันธ์

Python เบื้องต้นสำหรับฐานข้อมูล

การ join อัตโนมัติ

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

  • รับตารางและนิพจน์เสริมที่อธิบายความสัมพันธ์ระหว่างสองตาราง
  • ไม่จำเป็นต้องระบุนิพจน์ หากกำหนดความสัมพันธ์ไว้ล่วงหน้าผ่าน reflection
  • ใช้ต่อจาก select() และก่อน where(), order_by() หรือ group_by()
Python เบื้องต้นสำหรับฐานข้อมูล

select_from()

  • ใช้แทน FROM clause แบบปกติด้วยการ join
  • ครอบ join() clause ไว้
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 ตารางที่ไม่มีความสัมพันธ์กำหนดไว้ล่วงหน้า

  • Join รับตารางและนิพจน์เสริมที่อธิบายความสัมพันธ์ระหว่างสองตาราง
  • เชื่อมเฉพาะข้อมูลที่ตรงกันระหว่างสองคอลัมน์
  • หลีกเลี่ยงการ 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...