zoukankan      html  css  js  c++  java
  • 6. Navicat pymysql 多表查询

     https://www.cnblogs.com/clschao/articles/10023248.html  Navicat 和  pymysql

    https://www.cnblogs.com/clschao/articles/9995815.html#_label2 多表查询

    # 昨日内容回顾

    行记录的增删改查

    增加

    ```
    insert into 表名 values(1,2),(1,2);
    ```

    删除

    ```
    delete from 表名 where id = 1;
    清空表
    truncate 表名;清空表 自增重置
    ```

    修改

    ```
    update 表名 set 要修改的字段名称=改后的值 where id=1;
    ```

    查询

    ```
    select distinct 字段1 as a,字段2... from 库名.表名 (如果没有use连接到某个库,需要写上库名)
    where     条件
    group by   分组依据字段
    having     分组后再过滤
    order by   排序 order by 字段 asc,字段 desc;
    limit    limit 3    limit 5,5 从索引为5的记录(第六条)开始算上这一条取5条

    ```

    聚合函数

    ```
    sum avg count 等等
    ```

    # 今日内容

    多表查询

    ​ 1.笛卡尔积:将两表所有的数据一一对应,生成一张大表

    ```

    select * from dep,emp; #两个表拼一起
    select * from dep,emp where dep.id = emp.dep_id; #找到两表之间对应的关系记录
    select * from dep,emp where dep.id = emp.dep_id and dep.name='技术'; #筛选部门名称为技术的大表中的记录
    select emp.name from dep,emp where dep.id = emp.dep_id and dep.name='技术'; #拿到筛选后的记录的员工姓名字段数据

    ```

    2. 连表查询

    1. inner join 内连接

    ```
    第一步:连表
    select * from dep inner join emp on dep.id=emp.dep_id;
    第二步: 过滤
    select * from dep inner join emp on dep.id=emp.dep_id where dep.name='技术';
    第三步:找对应字段数据
    select emp.name from dep inner join emp on dep.id=emp.dep_id where dep.name='技术';
    ```

    left join 左连接(left join左边的表为主表,主表记录必须全部显示,辅表没办法对应上的,就通过null来补全)

    ```
    select * from dep left join emp on dep.id=emp.dep_id;
    ```

    right join 右连接

    ```
    select * from dep right join emp on dep.id=emp.dep_id;
    ```

    union 全连接

    ```
    mysql> select * from dep left join emp on dep.id=emp.dep_id
    -> union
    -> select * from dep right join emp on dep.id=emp.dep_id;
    ```

    子查询:(一个查询结果集作为另一个查询的条件)

    ```
    select name from emp where dep_id = (select id from dep where name = '技术');
    ```

    Navicat工具使用

    ​ 看博客

    pymysql python连接mysql的客户端

    ```
    import pymysql
    conn = pymysql.connect(
    host='127.0.0.1', #主机
    port=3306, #端口号
    user='root',#用户名
    password='666', #密码
    database='day43', #需要连接的库
    charset='utf8'
    )
    cursor = conn.cursor()

    sql = "select * from dep;"
    ret = cursor.execute(sql) #ret 受影响的行数
    print(cursor.fetchall()) #取出所有的
    print(cursor.fetchmany(3)) #取出多条
    print(cursor.fetchone()) #取出单条

    cursor.scroll(3,'absolute') #绝对移动,按照数据最开始位置往下移动3条
    cursor.scroll(3,'relative') #相对移动,按照当前光标位置往下移动3条

    conn.commit() #增删改操作时,需要进行提交


    sql注入:解决方案
    cursor.execute(sql,[参数1,参数2...])

    ```

  • 相关阅读:
    企业nginx应用实例(功能拆分记录)
    Squid代理服务器的安装与配置
    关于mysql主从架构master宕机后,请求转移问题解决办法
    记一次innobackupex备份恢复数据库过程
    elasticsearch6.6及其插件安装记录(较详细)
    redis一主二从加哨兵
    nginx反向代理proxy_pass的问题
    spring程序打包war,直接通过-jar启动,并指定spring.profiles.active参数控制多环境配置
    Debian下配置防火墙iptables
    内连接和外连接
  • 原文地址:https://www.cnblogs.com/zhuangdd/p/13150787.html
Copyright © 2011-2022 走看看