zoukankan      html  css  js  c++  java
  • python 数据库表查询

    # 数据的
    # 增
    # insert into 表 values (值)
    # insert into 表(字段,字段2) values (值,值2)
    # insert into 表(字段,字段2) select 字段1,字段2 from 表2
    # 删
    # delete from 表 where 条件;
    # truncate table 表名;
    # 改
    # update 表 set 字段=值 where 条件;
    # 查
    # select 字段 from 表
    # where 条件 根据条件筛选符合条件的行
    # group by 分组
    # having 过滤条件 根据分组之后的内容进行组的过滤
    # order by 排序
    # limit m,n 取从m+1开始的前n条

    # 1.where条件中不能用select字段的重命名
    # 2.order by 或者having可以使用select字段的重命名
    # 主要是因为order by 在select语句之后才执行
    # having经过了mysql的特殊处理,使得它能够感知到select语句中的重命名

    # 拓展
    # 在执行select语句的时候,实际上是通过where,group by,having这几个语句锁定对应的行
    # 然后循环每一行执行select语句



        # 所谓连表
    # 总是在连接的时候创建一张大表,里面存放的是两张表的笛卡尔积
    # 再根据条件进行筛选就可以了

    # 表与表之间的连接方式
    # 内连接 inner join ... on ...
    # select * from 表1,表2 where 条件;(了解)
    # select * from 表1 inner join 表2 on 条件
    # select * from department inner join employee on department.id = employee.dep_id;
    # select * from department as t1 inner join employee as t2 on t1.id = t2.dep_id;
    # 外连接
    # 左外连接 left join ... on ...
    # select * from 表1 left join 表2 on 条件
    # select * from department as t1 left join employee as t2 on t1.id = t2.dep_id;
    # 右外连接 right join ... on ...
    # select * from 表1 right join 表2 on 条件
    # select * from department as t1 right join employee as t2 on t1.id = t2.dep_id
    # 全外连接 full join
    # select * from department as t1 left join employee as t2 on t1.id = t2.dep_id
    # union
    # select * from department as t1 right join employee as t2 on t1.id = t2.dep_id;

    # 1.找到技术部的所有人的姓名
    # select * from department d inner join employee e on e.dep_id = d.id;
    # select e.name from department d inner join employee e on e.dep_id = d.id where d.name='技术';

    # 2.找到人力资源部的年龄大于40岁的人的姓名
    # select * from department d inner join employee e on e.dep_id = d.id
    # select * from department d inner join employee e on e.dep_id = d.id where d.name='人力资源' and age>40;

    # 3.找出年龄大于25岁的员工以及员工所在的部门
    # select * from department d inner join employee e on e.dep_id = d.id;
    # select e.name,d.name from department d inner join employee e on e.dep_id = d.id where age>25;

    # 4.以内连接的方式查询employee和department表,并且以age字段的升序方式显示
    # select * from department d inner join employee e on e.dep_id = d.id order by age;

    # 5.求每一个部门有多少人
    # select d.name,count(e.id) from department d left join employee e on e.dep_id = d.id group by d.name;
    # 且按照人数从高到低排序
    # select d.name,count(e.id) c from department d left join employee e on e.dep_id = d.id group by d.name order by c desc;

    # 所谓连表就是把两张表连接在一起之后 就变成一张大表 从from开始一直到on条件结束就看做一张表
    # 之后 where 条件 group by 分组 order by limit 都正常的使用就可以了
    子查询
    
    
    # 查询平均年龄在25岁以上的部门名
    # select name from department where id in (
    # select dep_id from employee group by dep_id having avg(age)>25);

    # 查看技术部员工姓名
    # 先查询技术部的部门id
    # select id from department where name = '技术';
    # 再根据这个部门id找到对应的员工名
    # select name from employee where dep_id =(select id from department where name = '技术');
    # select name from employee where dep_id in (select id from department where name = '技术');

    # 查看不足1人的部门名
    # 先把所有人的部门id查出来
    # select distinct dep_id from employee;
    # 然后查询部门表,把不在所有人部门id这个范围的dep_id找出来
    # select name from department where id not in (select distinct dep_id from employee);

    # 查询大于所有人平均年龄的员工名与年龄
    # 求平均年龄
    # select avg(age) from employee;
    # select * from employee where age >28;
    # select name,age from employee where age >(select avg(age) from employee);

    # 查询大于部门内平均年龄的员工名、年龄
    # select dep_id,avg(age) from employee group by dep_id;
    # select name,age from employee as t1 inner join (select dep_id,avg(age) avg_age from employee group by dep_id) as t2
    # on t1.dep_id = t2.dep_id where age>avg_age;





  • 相关阅读:
    #JavaScript 闭包问题详解 #打倒心魔
    Typora + cnblog 图片自动上传 (超详细哦)
    #FUNCTION#CALL对象中的函数内作用域问题.md
    #windows #Github #HOST
    #######对象迭代器######
    #为什么不建议使用for...in 去遍历数组
    #前后端附件传输,去重的一种方式#解决方案
    #页面滚动刷新的实现原理 #下拉刷新#上拉刷新#drag to fresh
    自己动手实现一个阻塞队列
    APC注入
  • 原文地址:https://www.cnblogs.com/shaohuagu/p/12308086.html
Copyright © 2011-2022 走看看