从入门到自闭之Python--MySQL数据库的单表操作
单表查询:select * from 表 where 条件 group by 分组 having 过滤 order by 排序 limit n;
语法:
select distinct 字段1,字段2... from 表名 where 条件 group by 组名 having 筛选 order by 排序 limit 限制条数
- 找到表:from
- 拿着where指定的约束条件,去文件/表中取出一条条记录
- 将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组
- 执行select(去重):select * from 表名;
- 将分组的结果进行having过滤
- 将结果按条件排序:order by
- 限制结果的显示条数
优先级:from > where > group by> select > distinct> having>order by >limit
避免重复:distinct:
- select distinct xx from 表名;
通过四则运算查询:
- select xx(+ - * /) as 新名字 from 表名;
重命名:
- select emp_name,salary*12 as annul_salary from employee;
- select emp_name,salary*12 annul_salary from employee;
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;
where 约束:select xx,xxx from 表名 where xx=="值";
- 比较运算符:> < >= <= <> !=
- 格式:select xx,xxx,xxxx from employee where 条件;
- between 80 and 100 值在80到100之间(包括80和100)
- 格式:select xx,xxx,xxxx from employee where xx between xx and xx;
- in(80,90,100) 值是80或90或100
- SELECT 字段 FROM employee
WHERE 字段条件 in (xxxx,xx,xxxx,xxxx) ;
- SELECT 字段 FROM employee
- like 'e%': 通配符可以是%或 _ ,%表示任意多字符,_ 表示一个字符
- select * from 表名 where 字段名 like 'xx%';
- regexp 正则匹配:select * from employee where emp_name regexp '^jin'
- 逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not
- 关键字IS NULL(判断某个字段是否为NULL不能用等号,需要用IS)
- select * from 表名 where 字段 is null;
- 比较运算符:> < >= <= <> !=
GROUP BY分组聚合
- 单独使用:
- select 字段名 from 表名 group by 字段名;
- select * from 表 where 条件 group by 分组:加条件
- 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;
- GROUP BY与聚合函数一起使用
- select post,count(id) as count from employee group by post;#按照岗位分组,并查看每个组有多少人
- 单独使用:
聚合函数:聚合函数聚合的是组的内容,若是没有分组,则默认一组
- count(字段名):计数
- max(字段名):最大值
- min(字段名):最小值
- avg(字段名):平均值
- sum(字段名):求和
- 格式:
- select count/sum/max/min/avg(字段名) from 表名;
- select count/sum/max/min/avg(字段名) from 表名 where 条件;
having过滤(group by + 聚合函数):
执行优先级从高到低:where > group by > having
Where 发生在分组group by之前,因而Where中可以有任意字段,但是绝对不能使用聚合函数。
Having发生在分组group by之后,因而Having中可以使用分组的字段,无法直接取到其他字段,可以使用聚合函数
例子:查询各岗位内包含的员工个数小于2的岗位名、岗位内包含员工名字、个数
select post,emp_name,count(id) from employee group by post having count(id)<2
order by排序
- 单列排序:
- select * from 表名 order by 字段名;默认升序
- select * from 表名 order by 字段名 asc; 升序
- select * from 表名 order by 字段名 desc;降序
- 多列排序:
- 例子:先按照age排序,如果年纪相同,则按照薪资排序
- select * from 表名 order by age,salary desc;
- select * from employee order by age desc,salary;
- 例子:先按照age排序,如果年纪相同,则按照薪资排序
- 单列排序:
limit:限制查询记录数
- select * from 表 order by 列 limit n; 取前n条
- select * from 表 order by 列 limit m,n; 从m+1开始,取n条
- select * from 表 order by 列 limit n offset m; 从m+1开始,取n条
从入门到自闭之Python--MySQL数据库的单表操作的更多相关文章
- Python/MySQL(二、表操作以及连接)
Python/MySQL(二.表操作以及连接) mysql表操作: 主键:一个表只能有一个主键.主键可以由多列组成. 外键 :可以进行联合外键,操作. mysql> create table y ...
- MySQL数据库之单表查询中关键字的执行顺序
目录 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 2 执行顺序 3 关键字使用语法 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from ...
- MySQL数据库语法-单表查询练习
MySQL数据库语法-单表查询练习 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要是对聚合函数和分组的练习. 一.数据表和测试数据准备 /* @author :yinz ...
- django连接mysql数据库以及建表操作
django连接mysql数据库需要在project同名的目录下面的__init__.py里面加入下面的东西 import pymysql pymysql.install_as_MySQLdb() 找 ...
- java对mysql数据库进行单表筛选备份、还原操作
最近在做的一个项目需要对mysql数据库中的单个表格进行备份 其中,一部分表格需要进行筛选备份(例如对最近插入的1000条记录进行备份) 思路:java调用系统命令完成备份操作 假设现在有数据库tes ...
- 基于MySql数据库的单表与多表联合查询
这里以学生 班级 身份证 以及课程为例 1,启动MySql数据库 开启服务 2.1.0新建一张班级表 备注:CHARSET = UTF8 (指定编码格式为utf8 防止中文乱码) /*班级表*/ C ...
- mysql数据库之单表查询多表查询
单表查询 前期表准备 create table emp( id int not null unique auto_increment, name varchar(20) not null, sex e ...
- mysql数据库之单表查询
单标查询 单表查询语句 关键字执行的优先级 简单查询 where约束 group by 聚合函数 HAVING过滤 order by 查询排序 LIMIT限制查询的记录数 使用正则表达式查询 单表查询 ...
- JAVA 操作远程mysql数据库实现单表增删改查操作
package MysqlTest; import java.sql.DriverManager; import java.sql.ResultSet; import com.mysql.jdbc.C ...
随机推荐
- SQLAlchemy框架
Python 的 ORM 框架 SQLAlchemy 有些同学已经听说过这个框架的大名了,也听说了 SQLAlchemy 没有 Django 的 Models 好用 我在这里官宣辟谣一下啊, Mode ...
- free 内存检测
free打印出的内存信息主要分为两种,一种是安装的内存,一种是用磁盘虚拟的内存,就是这里的Swap,相信装过Linux系统的同学肯定不陌生交换分区,这里Swap大小就是我们分区的时候分配的大小. 下面 ...
- Codeforces 1106E. Lunar New Year and Red Envelopes(DP)
E. Lunar New Year and Red Envelopes 题意: 在长度为n的时间轴上,有k个红包,每个红包有领取时间段[s,t],价值w,以及领了个这个红包之后,在时间d到来之前无法再 ...
- JavaWeb_(Spring框架)Spring整合Hibernate
Dao层类要继承HibernateDaoSupport.java父类 原先使用Hibernate框架hibernate.cfg.xml配置数据库 <hibernate-configuration ...
- PowerShell入门学习
一.概要 Powershell是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境. powershell需要.NET环境的支持,同时支持.NET对象.之所以将Powershell ...
- Java-NIO 之 Buffer 与 Channel
NIO:一种同步非阻塞的 I/O 模型,也是 I/O 多路复用的基础. 同步与异步 同步:发起一个调用后,被调用者未处理完请求之前,调用不返回. 异步:发起一个调用后,立刻得到被调用者的回应表示已接收 ...
- 相似系数_杰卡德距离(Jaccard Distance)
python机器学习-乳腺癌细胞挖掘(博主亲自录制视频)https://study.163.com/course/introduction.htm?courseId=1005269003&ut ...
- C++ STL——map和multimap
目录 一 map和multimap 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 map和multimap map相对于set的区别:map具有键值和实值,所有元素根据键值自动排序.pai ...
- JVM学习笔记之初识JVM(三)
一.JVM在计算机中的位置 JVM调用操作系统,操作系统调用硬件,硬件反馈信息至操作系统,操作系统反馈信息至JVM 二.JVM的体系结构 JVM在执行过程中对内存的管理分为5个区域: 1.PC寄存器 ...
- 关于XMind软件文件格式的一些思考
1,安装XMind软件,看见可以导入Markdown文件 2,因此新建了测试.md文件,代码格式为左图,显示效果为右图. 3,导入到XMind中显示为下图 4,也就是XMind中子标题对应着Markd ...