zoukankan      html  css  js  c++  java
  • 单表查询、多表查询、符合条件查询、子查询

    1.单表查询

      having:二次筛选,having后面的字段只能是分组(group by)之后字段 

    1.查询各岗位内包含的员工个数小于2的岗位名、岗位内包含员工名字、个数
    select post,group_concat(name),count(1) from employee group by post having count(1) < 2;
    
    2. 查询各岗位平均薪资大于10000的岗位名、平均工资
    select * from employee where salary  not in (select avg(salary) as A from employee group by post having A > 10000);
                    select post,avg(salary) as A from employee group by post having A > 10000
                    
    3. 查询各岗位平均薪资大于10000且小于20000的岗位名、平均工资
    select post,avg(salary) from employee group by post having avg(salary) between 10000 and 20000;
                order by
                    asc 升序
                    desc 降序
                    
                limit 0,5 第一个参数起始位置,第二个参数显示的个数
    例子

    2.多表查询

                select employee.name as a,department.name as b from employee,department where employee.dep_id = department.id and employee.name = 'egon';
            
                select * from (select employee.name as a,department.name as b from employee,department where employee.dep_id = department.id) as A where A.a ='egon';
                    
                        
                select * from employee,department where employee.dep_id = department.id
                外链接操作    
                    
                 内连接: 符合条件查询 只连接匹配的行
                    select * from employee inner join department on employee.dep_id = department.id;
                
                    
                 左连接: 优先显示左表记录
                    select * from employee left join department on employee.dep_id = department.id;
                 
                 右连接: 优先显示右边记录
                    select * from employee right join department on employee.dep_id = department.id;
                    
                    
                 全外连接:
                     select * from employee left join department on employee.dep_id = department.id
                          union
                     select * from employee right join department on employee.dep_id = department.id
    View Code

    3.符合条件查询

                以内连接的方式查询employee和department表,并且employee表中的age字段值必须大于25,
                即找出年龄大于25岁的员工以及员工所在的部门
                select department.name,employee.name from employee inner join department on employee.dep_id = department.id where age > 25
    View Code

    4.子查询

      子查询是将一个查询语句嵌套在另一个查询语句中。

      一个查询语句查询的结果作为另一个查询语句的条件

                1、查询平均年龄在25岁以上的部门名
                
                select name from department where id in (select dep_id from employee group by dep_id having avg(age) > 25);
                2、查看不足1人的部门名
                
                select name from department where id not in (select dep_id from employee group by dep_id);
                    
                3、查询大于所有人平均年龄的员工名与年龄
                select name,age from employee where age > (select avg(age) from employee);
                
                4、查询大于部门内平均年龄的员工名、年龄
            思路:
              (1)先对员工表(employee)中的人员分组(group by),查询出dep_id以及平均年龄。
               (2)将查出的结果作为临时表,再对根据临时表的dep_id和employee的dep_id作为筛选条件将employee表和临时表进行内连接。
               (3)最后再将employee员工的年龄是大于平均年龄的员工名字和年龄筛选。
               
               select * from employee inner join (select dep_id,avg(age) as b from employee group by dep_id) as A on employee.dep_id = A.dep_id where employee.age > A.b;
               
               
               
               5.查询每个部门最新入职的那位员工
               
               select name from employee 
                    inner join 
               (select post,max(hire_date) as newTime from employee group by post) as A 
                    on employee.post = A.post 
                where employee.hire_date = A.newTime;
    View Code

    5.pymysql模块的使用

      1.引入pymysql模块:pip3 install pymysql

    import pymysql
    
    username = input("请输入用户名:")
    pwd = input("请输入密码:")
    #建立连接
    conn = pymysql.connect(
        host="localhost",
        user="root",
        password="",
        database="db2",
        port=3306,
        charset="utf8"
    )
    #创建游标
    cur = conn.cursor()
    sql = 'select * from userInfo where name=%s and pwd=%s'
    print(sql)    
    
    res = cur.execute(sql,[username,[pwd]])
    print(res)
    #游标关闭,连接关闭
    cur.close()
    conn.close()
    if res:
        print("登录成功")
    else:
        print("登录失败")
  • 相关阅读:
    如何安装Anaconda和Python
    Vue 语法的一些小问题
    uni-app 常用框架内置方法 更新中 .....
    uni-app 生命周期函数
    Koa2 遇到Method Not Allowed 获取不到返回值
    安装 NodeJ Koa2、3 + 独立插件 cli脚手架 npm cnpm Vue
    vue使用video.js解决m3u8视频播放格式
    Oracle迁移至MySQL
    Spring的15点总结
    全文搜索引擎选 ElasticSearch 还是 Solr?
  • 原文地址:https://www.cnblogs.com/qq849784670/p/9804784.html
Copyright © 2011-2022 走看看