9.MySQL数据查询SQL

9.MySQL数据查询SQL

语法格式:

select 字段列表|* from 表名

[where 搜索条件]

[group by 分组字段 [having 分组条件]]

[order by 排序字段 排序规则]

[limit 分页参数]

基础查询

# 查询表中所有列 所有数据

select * from users;

# 指定字段列表进行查询

select id,name,phone from users;

Where 条件查询

可以在where子句中指定任何条件

可以使用 and 或者 or 指定一个或多个条件

where条件也可以运用在update和delete语句的后面

where子句类似程序语言中if条件,根据mysql表中的字段值来进行数据的过滤

示例:

-- 查询users表中 age > 22的数据

select * from users where age > 22;

-- 查询 users 表中 name=某个条件值 的数据

select * from users where name = '王五';

-- 查询 users 表中 年龄在22到25之间的数据

select * from users where age >= 22 and age <= 25;

select * from users where age between 22 and 25;

-- 查询 users 表中 年龄不在22到25之间的数据

select * from users where age < 22 or age > 25;

select * from users where age not between 22 and 25;

-- 查询 users 表中 年龄在22到25之间的女生信息

select * from users where age >= 22 and age <= 25 and sex = '女';

and和or 使用时注意

假设要求 查询 users 表中 年龄为22或者25 的女生信息

select * from users where age=22 or age = 25 and sex = '女';

思考上面的语句能否返回符合条件的数据?

实际查询结果并不符合要求?

select * from users where age=22 or age = 25 and sex = '女';

+------+--------+------+-------+-------+------+------+

| id | name | age | phone | email | sex | mm |

+------+--------+------+-------+-------+------+------+

| 1 | 章三 | 22 | | NULL | 男 | 0 |

| 1002 | cc | 25 | 123 | NULL | 女 | NULL |

+------+--------+------+-------+-------+------+------+

2 rows in set (0.00 sec)

-- 上面的查询结果并不符合 查询条件的要求。

-- 问题出在 sql 计算的顺序上,sql会优先处理and条件,所以上面的sql语句就变成了

-- 查询变成了为年龄22的不管性别,或者年龄为 25的女生

-- 如何改造sql符合我们的查询条件呢?

-- 使用小括号来关联相同的条件

select * from users where (age=22 or age = 25) and sex = '女';

+------+------+------+-------+-------+------+------+

| id | name | age | phone | email | sex | mm |

+------+------+------+-------+-------+------+------+

| 1002 | cc | 25 | 123 | NULL | 女 | NULL |

+------+------+------+-------+-------+------+------+

1 row in set (0.00 sec)

Like 子句

我们可以在where条件中使用=,<,> 等符合进行条件的过滤,但是当想查询某个字段是否包含时如何过滤?

可以使用like语句进行某个字段的模糊搜索,

例如: 查询 name字段中包含五的数据

-- like 语句 like某个确定的值 和。where name = '王五' 是一样

select * from users where name like '王五';

+----+--------+------+-------+-----------+------+------+

| id | name | age | phone | email | sex | mm |

+----+--------+------+-------+-----------+------+------+

| 5 | 王五 | 24 | 10011 | ww@qq.com | 男 | 0 |

+----+--------+------+-------+-----------+------+------+

1 row in set (0.00 sec)

-- 使用 % 模糊搜索。%代表任意个任意字符

-- 查询name字段中包含五的

select * from users where name like '%五%';

-- 查询name字段中最后一个字符 为 五的

select * from users where name like '%五';

-- 查询name字段中第一个字符 为 王 的

select * from users where name like '王%';

-- 使用 _ 单个的下划线。表示一个任意字符,使用和%类似

-- 查询表中 name 字段为两个字符的数据

select * from users where name like '__';

-- 查询 name 字段最后为五,的两个字符的数据

select * from users where name like '_五';

注意:where子句中的like在使用%或者_进行模糊搜索时,效率不高,使用时注意:

尽可能的不去使用%或者_

如果需要使用,也尽可能不要把通配符放在开头处

Mysql中的统计函数(聚合函数)

max(),min(),count(),sum(),avg()

# 计算 users 表中 最大年龄,最小年龄,年龄和及平均年龄

select max(age),min(age),sum(age),avg(age) from users;

+----------+----------+----------+----------+

| max(age) | min(age) | sum(age) | avg(age) |

+----------+----------+----------+----------+

| 28 | 20 | 202 | 22.4444 |

+----------+----------+----------+----------+

-- 上面数据中的列都是在查询时使用的函数名,不方便阅读和后期的调用,可以通过别名方式 美化

select max(age) as max_age,

min(age) min_age,sum(age) as sum_age,

avg(age) as avg_age

from users;

+---------+---------+---------+---------+

| max_age | min_age | sum_age | avg_age |

+---------+---------+---------+---------+

| 28 | 20 | 202 | 22.4444 |

+---------+---------+---------+---------+

-- 统计 users 表中的数据量

select count(*) from users;

+----------+

| count(*) |

+----------+

| 9 |

+----------+

select count(id) from users;

+-----------+

| count(id) |

+-----------+

| 9 |

+-----------+

-- 上面的两个统计,分别使用了 count(*) 和 count(id),结果目前都一样,有什么区别?

-- count(*) 是按照 users表中所有的列进行数据的统计,只要其中一列上有数据,就可以计算

-- count(id) 是按照指定的 id 字段进行统计,也可以使用别的字段进行统计,

-- 但是注意,如果指定的列上出现了NULL值,那么为NULL的这个数据不会被统计

-- 假设有下面这样的一张表需要统计

+------+-----------+------+--------+-----------+------+------+

| id | name | age | phone | email | sex | mm |

+------+-----------+------+--------+-----------+------+------+

| 1 | 章三 | 22 | | NULL | 男 | 0 |

| 2 | 李四 | 20 | | NULL | 女 | 0 |

| 5 | 王五 | 24 | 10011 | ww@qq.com | 男 | 0 |

| 1000 | aa | 20 | 123 | NULL | 女 | NULL |

| 1001 | bb | 20 | 123456 | NULL | 女 | NULL |

| 1002 | cc | 25 | 123 | NULL | 女 | NULL |

| 1003 | dd | 20 | 456 | NULL | 女 | NULL |

| 1004 | ff | 28 | 789 | NULL | 男 | NULL |

| 1005 | 王五六 | 23 | 890 | NULL | NULL | NULL |

+------+-----------+------+--------+-----------+------+------+

9 rows in set (0.00 sec)

-- 如果按照sex这一列进行统计,结果就是8个而不是9个,因为sex这一列中有NULL值存在

mysql> select count(sex) from users;

+------------+

| count(sex) |

+------------+

| 8 |

+------------+

聚合函数除了以上简单的使用意外,通常情况下都是配合着分组进行数据的统计和计算

Group BY 分组

group by 语句根据一个或多个列对结果集进行分组

一般情况下,是用与数据的统计或计算,配合聚合函数使用

-- 统计 users 表中 男女生人数

-- 很明显按照上面的需要,可以写出两个语句进行分别统计

select count(*) from users where sex = '女';

select count(*) from users where sex = '男';

-- 可以使用分组进行统计,更方便

select sex,count(*) from users group by sex;

+------+----------+

| sex | count(*) |

+------+----------+

| 男 | 4 |

| 女 | 5 |

+------+----------+

-- 统计1班和2班的人数

select classid,count(*) from users group by classid;

+---------+----------+

| classid | count(*) |

+---------+----------+

| 1 | 5 |

| 2 | 4 |

+---------+----------+

-- 分别统计每个班级的男女生人数

select classid,sex,count(*) as num from users group by classid,sex;

+---------+------+-----+

| classid | sex | num |

+---------+------+-----+

| 1 | 男 | 2 |

| 1 | 女 | 3 |

| 2 | 男 | 2 |

| 2 | 女 | 2 |

+---------+------+-----+

# 注意,在使用。group by分组时,一般除了聚合函数,其它在select后面出现的字段列都需要出现在grouop by 后面

Having 子句

having时在分组聚合计算后,对结果再一次进行过滤,类似于where,

where过滤的是行数据,having过滤的是分组数据

-- 要统计班级人数

select classid,count(*) from users group by classid;

-- 统计班级人数,并且要人数达到5人及以上

select classid,count(*) as num from users group by classid having num >=5;

Order by 排序

我们在mysql中使用select的语句查询的数据结果是根据数据在底层文件的结构来排序的,

首先不要依赖默认的排序,另外在需要排序时要使用orderby对返回的结果进行排序

Asc 升序,默认

desc降序

-- 按照年龄对结果进行排序,从大到小

select * from users order by age desc;

-- 从小到大排序 asc 默认就是。可以不写

select * from users order by age;

-- 也可以按照多个字段进行排序

select * from users order by age,id; # 先按照age进行排序,age相同情况下,按照id进行排序

select * from users order by age,id desc;

Limit 数据分页

limit n 提取n条数据,

limit m,n 跳过m跳数据,提取n条数据

-- 查询users表中的数据,只要3条

select * from users limit 3;

-- 跳过前4条数据,再取3条数据

select * from users limit 4,3;

-- limit一般应用在数据分页上面

-- 例如每页显示10条数据,第三页的 limit应该怎么写? 思考

第一页 limit 0,10

第二页 limit 10,10

第三页 limit 20,10

第四页 limit 30,10

-- 提取 user表中 年龄最大的三个用户数据 怎么查询?

select * from users order by age desc limit 3;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文了解物联网主控芯片架构之争

文/Boone来源&#xff1a;中关村在线&#xff0c;智慧产品圈等中兴事件引起了全球的轰动&#xff0c;大家的目光聚集在服务器、计算机、存储底层芯片技术缺乏之上。紫光等国产芯片供应商股票应声上涨。此次事件反应出了我国在芯片及其产业链上较为薄弱&#xff1b;毕竟PC时代&a…

10.Mysql数据库导入导出和授权

10.Mysql数据库导入导出和授权 数据导出 1.数据库数据导出 # 不要进入mysql&#xff0c;然后输入以下命令 导出某个库中的数据 mysqldump -u root -p tlxy > ~/Desktop/code/tlxy.sql 导出一个库中所有数据&#xff0c;会形成一个建表和添加语句组成的sql文件之后可以用这…

nagios 整合 ganglia 设置邮件、短信报警

要学的东西还有很多呢&#xff0c;慢慢来~&#xff01; 环境&#xff1a; 操作系统&#xff1a;ubuntu 10.10 软件&#xff1a;ganglia-monitor 3.1.7-1&#xff0c;gmetad 3.7.1-1&#xff0c;nagios 3.2.1-2 步骤&#xff1a; 1.下载安装nagios&#xff1a;sudo apt-get inst…

AI产业投融资情况回顾、中美科技巨头AI产业投资布局以及领先投资机构AI产业投资布局...

来源&#xff1a;投中研究院编辑&#xff1a;余瑞琦未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&…

❤️ 2021年9月,程序员薪资公布【前排围观】❤️

&#x1f345; 作者主页&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家&#x1f3c6;、信息技术智库公号作者✌ 华为云享专家、HDZ核心组成员 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 简历模板、PPT模板、…

课题研究的方法

教育课题研究的基本方法主要有以下几种&#xff1a;一、观察法1&#xff0e;观察法&#xff1a;为了了解事实真相&#xff0c;从而发现某种现象的本质和规律。2&#xff0e;观察法的步骤&#xff1a;观察法的实施分为以下三个步骤&#xff0c;步骤之一就是进行观察研究的设计&a…

未来的设计:我们正在进入“计算设计”时代

来源&#xff1a;资本实验室摘要&#xff1a;随着各种新技术的引入&#xff0c;设计行业正在经历一场新的变革。聚焦前沿科技创新与传统产业升级根据施耐德电气最近的一份研究&#xff0c;新技术正在推动设计行业进入“计算设计”时代。大数据、人工智能、可视化等技术带来设计…

信息技术智库

&#x1f345; 行业资料&#xff1a;关注即可领取PPT模板、简历模板、行业经典书籍PDF。&#x1f345; 交流加群&#xff1a;大佬指点迷津&#xff0c;你的问题往往有人遇到过&#xff0c;求资源在群里喊一声。&#x1f345; 面试题库&#xff1a;由技术群里的小伙伴们共同投稿…

Unix发展历史

转载于:https://www.cnblogs.com/istrong/archive/2012/11/09/2762958.html

❤️ 爆肝三万字《数据仓库体系》轻松拿下字节offer ❤️【建议收藏】

&#x1f345; 作者主页&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家&#x1f3c6;、信息技术智库公号作者✌ 华为云享专家、HDZ核心组成员。 简历模板、PPT模板、学习资料、面试题库、技术互助&#xff0c;点击下方「信息技术智库」跳转文末都给你&…

谷歌入华,抢在搜索之前的是Waymo无人驾驶

来源&#xff1a;网易智能摘要&#xff1a;据国家企业信用信息公示系统显示&#xff0c;一家名为慧摩商务咨询&#xff08;上海&#xff09;有限公司&#xff08;以下简称“慧摩公司”&#xff09;5月22日在上海自贸区注册&#xff0c;该公司为WAYMO LLC 100%持股&#xff0c;而…

职场必备《10个超级实用的在线网站》【果断收藏】

1、今日热榜 https://tophub.today/ 互联网时代&#xff0c;最重要的就是信息。信息具有先导性&#xff0c;它的传播具有滞后性。 有了这个综合所有平台、涉及科技、娱乐、财经、人文的热榜&#xff0c;各大平台的时事热搜一目了然。你的视野将会变得更加开阔&#xff0c;思考…

脑分享 | 脑结构、脑工作原理最详细图解

来源&#xff1a;深度学习进阶学习社摘要&#xff1a;这个帖子很好地提醒了小编我&#xff0c;为什么愿意跟如此美丽可爱的大脑一起工作。因为真正的大脑非常不可爱&#xff0c;长得也难看。但是&#xff0c;过去一个月&#xff0c;我一直生活在充斥着红色血管的 Google 图像的…

QQ空间及邮箱验证码登录的校验方式及自动登录的解决方案

目前有很多的SNS社区或类SNS的网站&#xff0c;例如开心、51、校内等&#xff0c;但是发现大多数社区在邀请好友的时候都没有提供对QQ邮箱或者QQ空间好友列表获取的功能&#xff0c;不过似乎海内支持&#xff0c;但是网上相关QQ的文章还不是很多&#xff0c;希望这篇文章能给你…

❤ CSDN精心打造一款插件,让你的浏览器:解锁黑科技、个性十足、沉浸式体验 ❤

&#x1f345; 作者&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家&#x1f3c6;、HDZ核心组成员&#x1f4aa;、C站总榜前10名✌ &#x1f345; 粉丝专属福利&#xff1a;简历模板、PPT模板、学习资料、面试题库。文末领取 &#x1f345; 如觉得文章…

马云:新一轮技术革命来袭,未来90%的制造业会在互联网上

来源&#xff1a;世界科技创新论坛摘要&#xff1a;这一次技术革命带来的变化远远超出我们的想象&#xff0c;传统制造业必须向新制造转变才有机会。”8月23日&#xff0c;首届中国国际智能产业博览会在重庆开幕&#xff0c;阿里巴巴董事局主席马云表示&#xff0c;新零售之后&…

《算法小白历险记》3.最长公共前缀【python-简单】

&#x1f345; 粉丝专属福利&#xff1a;简历模板、PPT模板、学习资料、面试题库。直接去文末领取 &#x1f345; 如觉得文章不错&#xff0c;欢迎点赞、收藏、评论 题目&#xff1a; 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀&#xff0c;返回空字…

这四大因素决定了中国将在2030年领先全球人工智能市场

来源&#xff1a;资本实验室去年7月&#xff0c;中国制定了《新一代人工智能发展规划》&#xff0c;引起了众多外媒的关注。著名未来学家、奇点大学创始人彼得戴曼迪斯对此也表达了自己的看法。他认为四个方面的因素决定了中国将在2030年领导全球AI市场&#xff1a;丰富的数据资…

❤️《10个超级常用Python方法总结》复制即用丨小白捷径【文末赠书2本】❤️

&#x1f345; 作者&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家&#x1f3c6;、HDZ核心组成员&#x1f4aa;、C站总榜前10名✌ 欢迎点赞、收藏、评论 &#x1f345; 粉丝专属福利&#xff08;文末送书2本&#xff09;&#xff1a;简历模板、PPT模板…

前端开发推荐-创建一个精美的jquery图片库效果

在Web和图形设计的世界&#xff0c;jquery它是使用最广泛的技术。 在他的帮助下&#xff0c;我们可以创建很多伟大的事情。丰富的jQuery插件&#xff0c;在互联网上&#xff0c;使我们能够毫不费力地创建幻灯片&#xff0c;表格&#xff0c;动画和其他各种良好的效果 在本教程中…