mysql数据库基本操作(五)
表纪录之查(单表查询)2
上一篇讲了4类查询的方式,现在接着上一篇继续看还有哪些方式。
group by 分组查询
顾名思义,分组查询要分组,因为mysql5.7之后默认不支持group by语句,需要改配置文件,我没有去改,如果需要用到group by的可以百度一下如何修改配置文件,再练习下面这个例子。
CREATE TABLE order_menu(
id INT PRIMARY KEY auto_increment,
product_name VARCHAR (20),
price FLOAT(6,2),
born_date DATE,
class VARCHAR (20)
);
INSERT INTO order_menu (product_name,price,born_date,class) VALUES
("苹果",20,20170612,"水果"),
("香蕉",80,20170602,"水果"),
("水壶",120,20170612,"电器"),
("被罩",70,20170612,"床上用品"),
("音响",420,20170612,"电器"),
("床单",55,20170612,"床上用品"),
("草莓",34,20170612,"水果");
-- 注意,按分组条件分组后每一组只会显示第一条记录
-- group by字句,其后可以接多个列名,也可以跟having子句,对group by 的结果进行筛选。
-- 按位置字段筛选
select * from order_menu group by 5;
-- 练习:对购物表按类名分组后显示每一组商品的价格总和
select class,SUM(price)from order_menu group by class;
-- 练习:对购物表按类名分组后显示每一组商品价格总和超过150的商品
select class,SUM(price)from order_menu group by class
HAVING SUM(price)>150;
/*
having 和 where两者都可以对查询结果进行进一步的过滤,差别有:
<1>where语句只能用在分组之前的筛选,having可以用在分组之后的筛选;
<2>使用where语句的地方都可以用having进行替换
<3>having中可以用聚合函数,where中就不行。
*/
-- GROUP_CONCAT() 函数
SELECT id,GROUP_CONCAT(name),GROUP_CONCAT(JS) from ExamResult GROUP BY
聚合函数
聚合函数感觉像python的内置函数,先不要管聚合函数要干嘛,先把要求的内容查出来再包上聚合函数即可。(一般和分组查询配合使用),直接开始吧,根据聚合函数功能不同,我们先看 统计表中所有记录的聚合函数:
1.COUNT(列名):统计行的个数
我们可以用来统计学生个数吧:
select count(*) from result;

统计一下语文成绩80分以上同学的个数试试:
select count(*) from result where chinese>80;
注意:count(*)统计所有行; count(字段)不统计null值.比如我统计一下语文成绩的个数:
select count(chinese) from result;

2.SUM(列名):统计满足条件的行的内容和
求和函数在各种语言里面用的都还比较多,我们先求一个语文成绩的总分:
select sum(chinese) as 语文总成绩 from result;

各科成绩都求个总分吧:
select sum(chinese) as 语文总成绩,
-> sum(english) as 英语总成绩,
-> sum(math) as 数学总成绩 from result;

有了总成绩,是不是可以求所有成绩和平均分啦?
select sum(chinese)/count(*) from result; #包括Lily的
select sum(chinese)/count(chinese) from result; #不包括Lily的
3. AVG(列名):
求平均值,这个可以直接求平均值了,就不用sum那样了,试一下:
select AVG(chinese) from result;

这个和sum求的不包括Lily的平均一样,说明AVG会自己去除null。
4.Max、Min
这个也很好理解了,最大值最小值。先看看英语最高分是多少:
select MAX(english) from result;

不多说了,直接找到总分最高和最低的,注意两个最低分的区别。
select MAX(english+chinese+math) from result;
select MIN(english+chinese+math) from result;
select MIN(ifnull(english,0)+ifnull(chinese,0)+ifnull(math,0)) from result;
注意:null 和所有的数计算都是null,所以需要用ifnull将null转换为0!ifnull(Chinese,0),其他的聚合函数就不做过多介绍了,用法都很简单。
limit使用
当数据很多是,我们只想显示部分,就可以用limit来控制,我只显示第一行:
select * from result limit 1;

看一下下面一条是什么意思:
select * from result limit 2,5;

从结果得到答案,就是跳过前2行,再显示后面5行,用法很简单。
使用正则表达式查询
在python中学过正则表达式模块re,在sql中同样存在正则,其实我们上一篇说where的时候,说的就是正则,这里再补充几个例子:
1.找名字以P开头的信息,这个和p%很像:
select * from result where name REGEXP '^p';

2.找名字以y结尾的信息:
select * from result where name REGEXP 'y$';

3.找名字以p开头且重复至少1次的所有数据,因为重复两次我们没有这样的数据嘛:
select * from result where name REGEXP 'p{1}';

sql 的正则和python的用法其实很像的,掌握一种另一种就很容易明白,这里就不多讲了。还有一点需要注意的是where、order by、group by这些运行的先后顺序,Mysql在执行sql语句时的执行顺序:from先于where先于select先于group by先于having先于order by,了解了这个顺序,再看看那些报错就清晰很多了,这个还是需要记住的,很重要。
mysql数据库基本操作(五)的更多相关文章
- mysql数据库基本操作sql语言
mysql的启动与关闭 启动 /etc/init.d/mysql start 多实例使用自建脚本启动 2种关闭数据库方法 mysqladmin -uroot -p密码 shutdown #优雅关闭/e ...
- day39 mysql数据库基本操作
什么是数据库 用来存储数据的仓库 数据库可以在硬盘及内存中存储数据 主要学习硬盘中存储数据,因为内存中的数据总有一天会丢失 数据库与文件存储数据区别 (公司的开发是综合内容的) 数据库本质也是通过文件 ...
- (三)mysql数据库基本操作
(1)SQL语句:结构化查询语句 DDL语句 数据定义语言:数据库丶表丶视图丶索引丶存储过程丶函数丶create drop alter DML语句 数据库操作语言:插入数据insert,删除数据del ...
- Django/MySql数据库基本操作&ORM操作
数据库配置: #第一步在settings里面 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'dbna ...
- Mysql数据库基本操作 (一)
1.使用mysql数据库的必备要素 a. 安装MySQL服务端 b. 安装MySQL客户端 c. [客户端]连接[服务端] d. [客户端]发送命令给[服务端MySQL]服务的接受命令并执行相应操作( ...
- mysql数据库基本操作以及获取数据库强大帮助文档
MySQL数据库强大帮助文档 mysql 中help等价于\h或者? mysql> ? create database;(查看创建数据库的语法) mysql> ? drop databas ...
- MySQL数据库 基本操作语句
操作MySQL数据库 1.创建数据库 create database 数据库名: 2.查看数据库 show databases: 3.选择指定数据库 use 数据库名: 4.删除数据库 drop da ...
- MySQL数据库(五)--用户管理、pymysql模块
一.用户管理(权限管理) 在MySQL中自带的mysql数据库中有4个表用于用户管理的 # 优先级从高到低 user > db > tables_priv > columns_pri ...
- MySQL数据库基本操作以及SQL语句
连接mysql的语法 mysql -u用户名 -p密码 [-h主机名] [-P端口号] 在一个mysql服务器中, 可以有多个mysql数据库(本质是一个文件夹) 在一个mysql数据库中, 可以有多 ...
- MySQL数据库(五)—— 用户管理、pymysql模块
用户权限管理.pymysql模块 一.用户管理(权限管理) 在MySQL中自带的mysql数据库中有4个表用于用户管理的 # 优先级从高到低 user > db > tables_priv ...
随机推荐
- OSX: diskutil命令-转换成自由空间并再对其分区
声明:本文涉及的操作非常可能会破坏你的系统文件,造成数据丢失.请谨慎模仿,一切后果作者均不承担不论什么责任. 目的: 尽管说比較熟悉diskutil命令和它的GUI前端程序磁盘工具(Disk Util ...
- postgresql 导出建表语句的方法-类似describe table
https://www.youtube.com/watch?v=PMfcsYzj-9M 这个视频不错, The Definitive Guide to Object-Oriented JavaScr ...
- 天津政府应急系统之GIS一张图(arcgis api for flex)解说(二)鹰眼模块
解说GIS功能模块实现之前,先大概说一下flexviewer的核心配置文件config.xml,系统额GIS功能widget菜单布局.系统的样式.地图资源等等都是在这里配置的,这里对flexviewe ...
- js跳出循环的方法区别( break, continue, return ) 及 $.each 的(return true 和 return false)
js编程语法之break语句: break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句. 由于它是用来退出循环或者switch语句,所以只有当它出现在这些语句时,这种形式的 ...
- MRP Force Reservation的作用
生产单根据BOM计算出相应的物料需求,生产领料单stock.picking ( internal moves) Stock.picking使用工作流自动计算库存量,如果库存量够,则使用 test_as ...
- mongodb+php通过_id查询
在php中通过_id 在mongodb中查找特定记录: <?php $conn=new Mongo("127.0.0.1:27017"); #连接指定端口远程主机 $db=$ ...
- iOS 小动画
一.图片旋转 CABasicAnimation* rotationAnimation; rotationAnimation = [CABasicAnimation animationWithKeyPa ...
- Python常用的包
Python常用的处理数据的包和它的Tutorial(点击每个包的名称): Numpy:提供对多维数组的支持,支持矢量运算,速度快 matplotlib.pyplot:图表的绘制 Pandas:基于 ...
- A new session could not be created. (Original error: Requested a new session but one was in progress) )错误解决办法
z在desiredCapabilities里新增这俩居然fix了问题,原因暂时不得而知: capabilities.setCapability("unicodeKeyboard", ...
- Json的简单介绍和解析
Json:JavaScript对象表示法(JavaScript Object Noatation) Json是存储和交换文本信息的语法,类似XML.它采用键值对的方式来组织,易于人们阅读和编写,同时也 ...