添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
多表连接:
  • 将多个表中的记录连接并返回结果

  • join方式

    • 交叉连接(cross join)
    • 内连接(inner join)
    • 外连接(outer join)
  • cross join:

    • 生成两张表的笛卡尔积
    • 返回的记录数为两张表记录数的乘积
  • inner join

    • 生成两张表的交集
    • 返回的记录数为两张表交集的记录数
  • outer join

    • left join(A,B) 返回表A的所有记录,另外表B中匹配的记录有值没有匹配的记录返回null
import sqlite3
db_path = 'test_join.sqlite'
conn = sqlite3.connect(db_path)
cur = conn.cursor()
# 建 depaetment 表,并插入数据
cur.execute("DROP TABLE IF EXISTS department")
cur.execute("CREATE TABLE department(\
                id INT PRIMARY KEY NOT NULL, \
                dept CHAR(50) NOT NULL, \
                emp_id INT NOT NULL)")
depts = (
        (1, 'IT Builing', 1),
        (2, 'Engineerin', 2),
        (3, 'Finance', 7)
cur.executemany("INSERT INTO department VALUES(?, ?, ?)", depts)
# 建 company 表,并插入数据
cur.execute("DROP TABLE IF EXISTS company")
cur.execute("CREATE TABLE company(\
                    id INT PRIMARY KEY NOT NULL, \
                    name CHAR(50) NOT NULL, \
                    age INT NOT NULL, \
                    address CHAR(50) NOT NULL,\
                    salary DOUBLE NOT NULL)")
companies = (
        (1, 'Paul', 32, 'California', 20000.0),
        (2, 'Allen', 25, 'Texas', 15000.0),
        (3, 'Teddy', 23, 'Norway', 20000.0),
        (4, 'Mark', 25, 'Rich-Mond', 65000.0),
        (5, 'David', 27, 'Texas', 85000.0),
        (6, 'Kim', 22, 'South-Hall', 45000.0),
        (7, 'James', 24, 'Houston', 10000.0)
cur.executemany("INSERT INTO company VALUES (?, ?, ?, ?, ?)", companies)
conn.commit()
cur.execute("SELECT emp_id, name, dept FROM company CROSS JOIN department;")
rows = cur.fetchall()
for row in rows:
    print(row)

运行结果:
在这里插入图片描述

cur.execute("SELECT emp_id, name, dept FROM company INNER JOIN department \
            ON company.id = department.emp_id;")
rows = cur.fetchall()
for row in rows:
    print(row)

运行结果:
在这里插入图片描述

# 左连接
cur.execute("SELECT emp_id, name, dept FROM company LEFT OUTER JOIN department \
            ON company.id = department.emp_id;")
rows = cur.fetchall()
for row in rows:
    print(row)

运行结果:
在这里插入图片描述

Python数据分析:数据库多表连接(SQLite)多表连接:将多个表中的记录连接并返回结果join方式交叉连接(cross join)内连接(inner join)外连接(outer join)cross join:生成两张表的笛卡尔积返回的记录数为两张表记录数的乘积inner join生成两张表的交集返回的记录数为两张表交集的记录数ou...
python 不同数据库之间数据同步 最近项目有这样的需求:不同数据库数据的同步操作。也就是从一个数据库数据插入到另一个数据库中。 import configparser import pymysql # 读取配置文件 conf = configparser.RawConfigParser() conf.read("D:\PycharmProjects\economic_relation\\venv\Include\control\conf.ini") # 获取源数据库参数
Python内置了SQLite3,在Python中使用SQLite,不需要安装任何东西,直接使用即可。 由于SQLite的驱动内置在Python标准库中,所以我们可以直接来操作SQLite数据库Python定义了一套操作数据库的API接口,任何数据库连接Python,只需要提供符合Python标准的数据库驱动即可。 使用SQLite需要了解的一些概念: 1、数据库中存放关系数据的集合,...
在sql server中: 用table1的 id 和 table2的 pid,关联table1 和 table2 ,将table2的num字段的值赋给table1的num字段 update table1 set num1 = t2.num2 FROM table1 t1 INNER JOIN table2 t2 ON t1.id=t2.pid; 很容易就关联起来了 sqlite却不支持这种关联 ,可以这样: 2.2>配置其它数据库 app.config['SQLALCHEMY_DATABASE_URI'] = r'mysql://myname:123456@127.0.00.1:8080' 基本格式:别名+驱动://用户名:密码@主机:端口/
The author selected the COVID-19 Relief Fund to receive a donation as part of the Write for DOnations program. 作者选择了COVID-19救济基金来接受捐赠,这是Write for DOnations计划的一部分。 介绍 (Introduction) SQLite is a sel...
引言:面试的时候面试官出的这道题,当时写的不是太好,面试结束后下来查了一下,发现大部分的博客都是使用工具包来实现,而且大部分的博客内容还都完全一样,连数字都没有变,找了半天也没找到几个有用的博客。其实这也是现在大部分博客的风气,互相抄袭,没有一点自己的思考内容,我都不明白写这样的博客有什么意义。所以自己打算实现一个不使用工具包来解决的方法,于是在别人的博客帮助下,实现了用回溯法来解决笛卡尔乘积,下面是总结一下解决这个问题的几个方法: 1、工具包 from itertools import produc