单表查询:select * from 表 where 条件 group by 分组 having 过滤 order by 排序 limit n;
  1. 语法:

    select distinct 字段1,字段2... from 表名 where 条件 group by 组名 having 筛选 order by 排序 limit 限制条数

    1. 找到表:from
    2. 拿着where指定的约束条件,去文件/表中取出一条条记录
    3. 将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组
    4. 执行select(去重):select * from 表名;
    5. 将分组的结果进行having过滤
    6. 将结果按条件排序:order by
    7. 限制结果的显示条数
  2. 优先级:from > where > group by> select > distinct> having>order by >limit

  3. 避免重复:distinct:

    • select distinct xx from 表名;
  4. 通过四则运算查询:

    • select xx(+ - * /) as 新名字 from 表名;
  5. 重命名:

    1. select emp_name,salary*12 as annul_salary from employee;
    2. select emp_name,salary*12 annul_salary from employee;
  6. concat():用于连接字符串

    • select concat('姓名 :',emp_name),concat('年薪:',salary*12) from employee;

    • CONCAT_WS() 第一个参数为分隔符,select concat_ws('|','a','b','c')用管道符分割数据

    • 结合CASE语句:case when语句 == if条件判断句

      SELECT
      (
      CASE
      WHEN emp_name = 'jingliyang' THEN
      emp_name
      WHEN emp_name = 'alex' THEN
      CONCAT(emp_name,'_BIGSB')
      ELSE
      concat(emp_name, 'SB')
      END
      ) as new_name
      FROM
      employee;
  7. where 约束:select xx,xxx from 表名 where xx=="值";

    1. 比较运算符:> < >= <= <> !=

      • 格式:select xx,xxx,xxxx from employee where 条件;
    2. between 80 and 100 值在80到100之间(包括80和100)
      • 格式:select xx,xxx,xxxx from employee where xx between xx and xx;
    3. in(80,90,100) 值是80或90或100
      • SELECT 字段 FROM employee

        WHERE 字段条件 in (xxxx,xx,xxxx,xxxx) ;
    4. like 'e%': 通配符可以是%或 _ ,%表示任意多字符,_ 表示一个字符
      • select * from 表名 where 字段名 like 'xx%';
    5. regexp 正则匹配:select * from employee where emp_name regexp '^jin'
    6. 逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not
    7. 关键字IS NULL(判断某个字段是否为NULL不能用等号,需要用IS)
      • select * from 表名 where 字段 is null;
  8. GROUP BY分组聚合

    1. 单独使用:

      1. select 字段名 from 表名 group by 字段名;
      2. select * from 表 where 条件 group by 分组:加条件
    2. GROUP BY关键字和GROUP_CONCAT()函数一起使用:
      • SELECT post,GROUP_CONCAT(emp_name) FROM employee GROUP BY post;#按照岗位分组,并查看组内成员名,
      • SELECT post,GROUP_CONCAT(emp_name) as emp_members FROM employee GROUP BY post;
    3. GROUP BY与聚合函数一起使用
      1. select post,count(id) as count from employee group by post;#按照岗位分组,并查看每个组有多少人
  9. 聚合函数:聚合函数聚合的是组的内容,若是没有分组,则默认一组

    1. count(字段名):计数
    2. max(字段名):最大值
    3. min(字段名):最小值
    4. avg(字段名):平均值
    5. sum(字段名):求和
    6. 格式:
      1. select count/sum/max/min/avg(字段名) from 表名;
      2. select count/sum/max/min/avg(字段名) from 表名 where 条件;
  10. having过滤(group by + 聚合函数):

    1. 执行优先级从高到低:where > group by > having

    2. Where 发生在分组group by之前,因而Where中可以有任意字段,但是绝对不能使用聚合函数。

    3. Having发生在分组group by之后,因而Having中可以使用分组的字段,无法直接取到其他字段,可以使用聚合函数

      例子:查询各岗位内包含的员工个数小于2的岗位名、岗位内包含员工名字、个数
      select post,emp_name,count(id) from employee group by post having count(id)<2
  11. order by排序

    1. 单列排序:

      1. select * from 表名 order by 字段名;默认升序
      2. select * from 表名 order by 字段名 asc; 升序
      3. select * from 表名 order by 字段名 desc;降序
    2. 多列排序:
      1. 例子:先按照age排序,如果年纪相同,则按照薪资排序

        1. select * from 表名 order by age,salary desc;
        2. select * from employee order by age desc,salary;
  12. limit:限制查询记录数

    1. select * from 表 order by 列 limit n; 取前n条
    2. select * from 表 order by 列 limit m,n; 从m+1开始,取n条
    3. select * from 表 order by 列 limit n offset m; 从m+1开始,取n条

从入门到自闭之Python--MySQL数据库的单表操作的更多相关文章

  1. Python/MySQL(二、表操作以及连接)

    Python/MySQL(二.表操作以及连接) mysql表操作: 主键:一个表只能有一个主键.主键可以由多列组成. 外键 :可以进行联合外键,操作. mysql> create table y ...

  2. MySQL数据库之单表查询中关键字的执行顺序

    目录 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 2 执行顺序 3 关键字使用语法 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from ...

  3. MySQL数据库语法-单表查询练习

    MySQL数据库语法-单表查询练习 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要是对聚合函数和分组的练习. 一.数据表和测试数据准备 /* @author :yinz ...

  4. django连接mysql数据库以及建表操作

    django连接mysql数据库需要在project同名的目录下面的__init__.py里面加入下面的东西 import pymysql pymysql.install_as_MySQLdb() 找 ...

  5. java对mysql数据库进行单表筛选备份、还原操作

    最近在做的一个项目需要对mysql数据库中的单个表格进行备份 其中,一部分表格需要进行筛选备份(例如对最近插入的1000条记录进行备份) 思路:java调用系统命令完成备份操作 假设现在有数据库tes ...

  6. 基于MySql数据库的单表与多表联合查询

    这里以学生 班级 身份证 以及课程为例 1,启动MySql数据库  开启服务 2.1.0新建一张班级表 备注:CHARSET = UTF8 (指定编码格式为utf8 防止中文乱码) /*班级表*/ C ...

  7. mysql数据库之单表查询多表查询

    单表查询 前期表准备 create table emp( id int not null unique auto_increment, name varchar(20) not null, sex e ...

  8. mysql数据库之单表查询

    单标查询 单表查询语句 关键字执行的优先级 简单查询 where约束 group by 聚合函数 HAVING过滤 order by 查询排序 LIMIT限制查询的记录数 使用正则表达式查询 单表查询 ...

  9. JAVA 操作远程mysql数据库实现单表增删改查操作

    package MysqlTest; import java.sql.DriverManager; import java.sql.ResultSet; import com.mysql.jdbc.C ...

随机推荐

  1. javascript数据结构之顺序表

    关于线性表的概念这里就不赘述了,可以自行百度和查阅资料,线性表按照存储(物理)结构分为顺序存储和链式存储,每种存储方式的不同决定了它的实现代码是不同的: 顺序存储的特点就是在内存中选一块连续的地址空间 ...

  2. centos7下面装fastdfs

    首先我完全是按照这个链接上面来的,其中也算有点小错https://blog.csdn.net/ty5546/article/details/79245648 环境准备编译环境 yum install ...

  3. pom标签大全

    [原文链接]:Maven POM | 菜鸟教程 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...

  4. shell脚本编程数组

    数组: 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的集合 数组名和索引 索引:编号从0开始,属于数值索引 注意:索引可支持使用自定义的格式,而不仅是数值格式,即为 ...

  5. adb、pm命令操作apk包

    1.adb shell pm list package 打印出来所有安装到手机上的APP包名 2.adb shell pm path com.xxx.xxx 找出安装后的包名应用的apk所在位置 3. ...

  6. SpringBoot几种定时任务的实现方式 和多线程执行任务

    定时任务实现的几种方式: Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让你的程序按照某一个频度执行, ...

  7. [Java读书笔记] Effective Java(Third Edition) 第 3 章 对于所有对象都通用的方法

    第 10 条:覆盖equals时请遵守通用约定 在不覆盖equals方法下,类的每个实例都只与它自身相等. 类的每个实例本质上都是唯一的. 类不需要提供一个”逻辑相等(logical equality ...

  8. 安装cni网络插件-非必须

    安装cni网络插件 安装cni # 安装 cni # 百度云链接:https://pan.baidu.com/s/1-PputObLs5jouXLnuBCI6Q 密码:tzqm cd /server/ ...

  9. TypeScript01 编译环境的搭建、字符串特性、类型特性

    知识准备:JavaScript满足ES5前端规范.TypeScript满足ES6前端规范 1 TypeScript开发环境 TypeScript代码不能直接被浏览器识别,必须先转换成JS代码:通常是利 ...

  10. Git学习教程三之分支管理

    实战流程: 1:代码库克隆一份至本地 2:新分支操作 2.1  在需要的文件中创建并指向新的分支方便写代码  git checkout -b <name>                2 ...