MySQL数据库学习(3)

news2024/11/19 17:30:12

MySQL中select语句语法简单介绍:
基本语法规则:
SELECT {* | <字段列名>}
[FROM <表 1>, <表 2>…
[WHERE <表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]]
{*|<字段列名>}包含星号通配符的字段列表,表示所要查询字段的名称。
<表 1>,<表 2>…,表 1 和表 2 表示查询数据的来源,可以是单个或多个。
WHERE <表达式>是可选项,如果选择该项,将限定查询数据必须满足该查询条件。
GROUP BY< 字段 >,该子句告诉 MySQL 如何显示查询出来的数据,并按照指定的字段分组。
[ORDER BY< 字段 >],该子句告诉 MySQL 按什么样的顺序显示查询出来的数据,可以进行的排序有升序(ASC)和降序(DESC),默认情况下是升序。
[LIMIT[<offset>,]<row count>],该子句告诉 MySQL 每次显示查询出来的数据条数。

(1)使用"*"查询表的所有字段 :SELECT * FROM 表名; select * from test_db;
列出表的所有字段:SELECT id,name,dept_id,age,sex,height,login_date FROM test_db;
(2)去重查询:SELECT DISTINCT <字段名> FROM <表名>;         
DISTINCT 关键字的主要作用就是对数据表中一个或多个字段重复的数据进行过滤,只返回其中的一条数据给用户        
使用 DISTINCT 关键字时需要注意以下几点:
DISTINCT 关键字只能在 SELECT 语句中使用。
在对一个或多个字段去重时,DISTINCT 关键字必须在所有字段的最前面。
如果 DISTINCT关键字后有多个字段,则会对多个字段进行组合去重,也就是说,只有多个字段组合起来完全是一样的情况下才会被去重。
lg:SELECT DISTINCT age FROM test_db;
SELECT DISTINCT dept_id,sex FROM test_db;


(3)指定位置开始显示指定数量的记录    
LIMIT 初始位置,记录数
LIMIT 记录数 OFFSET 初始位置
注意:LIMIT 后的两个参数必须都是正整数。
初始位置可以不写,默认从第0条记录开始显示
lg:SELECT * FROM test_db LIMIT 3,5;
SELECT * FROM test_db LIMIT 5; 
SELECT * FROM test_db LIMIT 5 OFFSET 3;   

(4)查询排序
ORDER BY <字段名> [ASC|DESC]
字段名:表示需要排序的字段名称,多个字段时用逗号隔开。
ASC|DESC:ASC表示字段按升序排序;DESC表示字段按降序排序。其中ASC为默认值。
使用 ORDER BY 关键字应该注意以下几个方面:
ORDER BY 关键字后可以跟子查询(关于子查询后面教程会详细讲解,这里了解即可)。
当排序的字段中存在空值时,ORDER BY 会将该空值作为最小值来对待。
ORDER BY 指定多个字段进行排序时,MySQL 会按照字段的顺序从左到右依次进行排序。
SELECT * FROM test_db ORDER BY height;
SELECT name,height FROM test_db ORDER BY height,name;
SELECT * FROM test_db ORDER BY height desc;#升序排列
SELECT * FROM test_db ORDER BY height asc;#降序排列


注意:在对多个字段进行排序时,排序的第一个字段必须有相同的值,才会对第二个字段进行排序。如果第一个字段数据中所有的值都是唯一的,MySQL 将不再对第二个字段进行排序
(5)条件查询
WHERE 查询条件
查询条件可以是:
带比较运算符和逻辑运算符的查询条件,如> >= < <= == !=  AND(&&)、OR(||)、XOR
带 BETWEEN AND 关键字的查询条件
带 IS NULL 关键字的查询条件
带 IN 关键字的查询条件
带 LIKE 关键字的查询条件
SELECT name,height FROM test_db WHERE height=170;
SELECT name,age FROM test_db WHERE age<22;
SELECT name,age,height FROM test_db WHERE age>21 AND height>=175;

 
(6)模糊查询
[NOT] LIKE  '字符串'
NOT :可选参数,字段中的内容与指定的字符串不匹配时满足条件。
字符串:指定用来匹配的字符串。“字符串”可以是一个很完整的字符串,也可以包含通配符。
LIKE 关键字支持百分号“%”和下划线“_”通配符。如果需要区分大小写,可以加入 BINARY 关键字。
“%”是 MySQL 中最常用的通配符,它能代表任何长度的字符串,字符串的长度可以为 0。
注意:匹配的字符串必须加单引号或双引号。
“_”只能代表单个字符,字符的长度不能为 0。
使用通配符的一些注意事项:
注意大小写。MySQL 默认是不区分大小写的。如果区分大小写,像“Tom”这样的数据就不能被“t%”所匹配到。
注意尾部空格,尾部空格会干扰通配符的匹配。例如,“T% ”就不能匹配到“Tom”。
注意 NULL。“%”通配符可以到匹配任意字符,但是不能匹配 NULL。也就是说 “%”匹配不到 tb_students_info 数据表中值为 NULL 的记录。
图sq20

(7)范围查询
[NOT] BETWEEN 取值1 AND 取值2
NOT:可选参数,表示指定范围之外的值。如果字段值不满足指定范围内的值,则这些记录被返回。
取值1:表示范围的起始值。
取值2:表示范围的终止值。
SELECT name,age FROM test_db WHERE age BETWEEN 23 AND 24;
SELECT name,age FROM test_db WHERE age NOT BETWEEN 23 AND 24;

(8)空值查询
IS [NOT] NULL “NOT”是可选参数,表示字段值不是空值时满足条件。
空值不同于 0,也不同于空字符串。
注意:IS NULL 是一个整体,不能将 IS 换成“=”

(9)分组查询
GROUP BY  <字段名>   “字段名”表示需要分组的字段名称,多个字段时用逗号隔开。
GROUP BY 关键字可以和 GROUP_CONCAT() 函数一起使用。GROUP_CONCAT() 函数会把每个分组的字段值都显示出来。
GROUP BY 关键字经常和聚合函数一起使用,如:COUNT(),SUM(),AVG(),MAX()和 MIN()
聚合函数详情可查看MySQL函数大全:http://m.biancheng.net/mysql/function/
WITH POLLUP 关键字用来在所有记录的最后加上一条记录,这条记录是上面所有记录的总和,即统计记录数量。

(10)过滤分组
HAVING <查询条件>
HAVING 关键字和 WHERE 关键字都可以用来过滤数据,且 HAVING 支持 WHERE 关键字中所有的操作符和语法。
但是 WHERE 和 HAVING 关键字也存在以下几点差异:
一般情况下,WHERE 用于过滤数据行,而 HAVING 用于过滤分组。
WHERE 查询条件中不可以使用聚合函数,而 HAVING 查询条件中可以使用聚合函数。
WHERE 在数据分组前进行过滤,而 HAVING 在数据分组后进行过滤 。
WHERE 针对数据库文件进行过滤,而 HAVING 针对查询结果进行过滤。也就是说,WHERE 根据数据表中的字段直接进行过滤,而 HAVING 是根据前面已经查询出的字段进行过滤。
WHERE 查询条件中不可以使用字段别名,而 HAVING 查询条件中可以使用字段别名。

 

注意:
在 SELECT 关键字后已经查询出了 height 字段,所以 HAVING 和 WHERE 都可以使用。但是如果 SELECT 关键字后没有查询出 height 字段,MySQL 就会报错。
如果 SELECT 关键字后没有查询出 HAVING 查询条件中使用的 height 字段,MySQL 会提示错误信息:“having子句”中的列“height”未知”
如果在 WHERE 查询条件中使用聚合函数,MySQL 会提示错误信息:无效使用组函数。
(11)交叉连接
交叉连接(CROSS JOIN)一般用来返回连接表的笛卡尔积。
笛卡尔积(Cartesian product)是指两个集合 X和 Y的乘积。
例如:
A = {1,2}   B = {3,4,5}
集合 A×B 和 B×A 的结果集分别表示为:
A×B={(1,3), (1,4), (1,5), (2,3), (2,4), (2,5) };
B×A={(3,1), (3,2), (4,1), (4,2), (5,1), (5,2) };
以上 A×B和 B×A的结果就叫做两个集合的笛卡尔积。
两个集合相乘,不满足交换率,即 A×B≠B×A。
A集合和 B集合的笛卡尔积是 A集合的元素个数 ×B集合的元素个数。
语法格式如下:
SELECT <字段名> FROM <表1> CROSS JOIN <表2> [WHERE子句]
或  SELECT <字段名> FROM <表1>, <表2> [WHERE子句] 
字段名:需要查询的字段名称。
<表1><表2>:需要交叉连接的表名。
WHERE子句:用来设置交叉连接的查询条件。
注意:多个表交叉连接时,在 FROM后连续使用 CROSS JOIN或,即可。以上两种语法的返回结果是相同的,但是第一种语法才是官方建议的标准写法。
select * from course cross join test_db;
select * from course crosee join test_db where test_db.dept_id=course.id;
交叉连接会在表内产生非常多冗余的信息,会导致访问会非常非常慢。一般情况下不建议使用交叉连接。
(12)内连接
语法格式如下:SELECT <字段名> FROM <表1> INNER JOIN <表2> [ON子句]
字段名:需要查询的字段名称。
<表1><表2>:需要内连接的表名。
INNER JOIN:内连接中可以省略 INNER关键字,只用关键字JOIN。
ON子句:用来设置内连接的连接条件。如果没有连接条件,INNER JOIN和 CROSS JOIN在语法上是等同的,两者可以互换。
lg:select s.name,c.name from test_db s inner join course c on s.dept_id = c.id;

(13)外连接:外连接可以分为左外连接和右外连接
左连接的语法格式如下:SELECT <字段名> FROM <表1> LEFT OUTER JOIN <表2> <ON子句>
字段名:需要查询的字段名称。
<表1><表2>:需要左连接的表名。
LEFT OUTER JOIN:左连接中可以省略 OUTER关键字,只使用关键字 LEFT JOIN。
ON子句:用来设置左连接的连接条件,不能省略。
右连接的语法格式如下:
SELECT <字段名> FROM <表1> RIGHT OUTER JOIN <表2> <ON子句>
字段名:需要查询的字段名称。
<表1><表2>:需要右连接的表名。
RIGHT OUTER JOIN:右连接中可以省略 OUTER关键字,只使用关键字 RIGHT JOIN。
ON子句:用来设置右连接的连接条件,不能省略。

(14)子查询
子查询在 WHERE 中的语法格式:WHERE <表达式> <操作符> (子查询)
<操作符>:操作符可以是比较运算符和 IN、NOT IN、EXISTS、NOT EXISTS等关键字
注意事项:
子查询语句可以嵌套在 SQL 语句中任何表达式出现的位置
只出现在子查询中而没有出现在父查询中的表不能包含在输出列中

 

 

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

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

相关文章

FineReport商业智能数据分析-下拉框控件

1. 概述 1.2 应用场景 「下拉框控件」可应用于填报、参数等场景&#xff0c;本文将介绍「下拉框控件」的属性及应用。 1.2.1 填报控件 填报报表中&#xff0c;可以用来在多个预备选项中选择一个值填入。如下图所示&#xff1a; 1.2.2 参数控件 参数面板处可以通过该控件过…

微服务框架 SpringCloud微服务架构 微服务保护 31 限流规则 31.4 流控效果【warm up】

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 微服务保护 文章目录微服务框架微服务保护31 限流规则31.4 流控效果【warm up】31.4.1 流控效果31.4.2 流控效果 - warm up31.4.3 案例31 限…

[论文阅读] 颜色迁移-Illuminant Aware Gamut-Based

[论文阅读] 颜色迁移-Illuminant Aware Gamut-Based 文章: [Illuminant Aware Gamut-Based Color Transfer], [python代码] 本文目的是提出一种新的颜色迁移算法, 可以感知光源变化的全色域颜色迁移方法. 1-算法原理 图像是由摄像机对光谱场景内容和场景照度的敏感性所产生…

springboot validated注解数据校验 异常处理

springboot validated 数据校验validated 数据校验简单的写一下这个用法啊&#xff0c;清晰的本篇文章就记录这个注解的一个用法。validated 数据校验 我们一般的数据校验是怎么用的&#xff1f;在常规模式下我们可能就是在前端去通过js去判断&#xff1f;还是在后端重新查找数…

【C语言字符串相关函数大全】

【C语言字符串相关函数大全】【1】atof【2】atoi【3】atol【4】isalnum【5】isdigit【6】islower【7】isupper【8】isprint【9】memchr【10】memcmp【11】memcpy【12】memset【13】strcat【14】strchr【15】strcmp【16】strpbrk【17】strstr【18】strtok【19】源码【20】源码执…

Mipmap的作用以及其优势和缺点

Mipmap的作用以及其优势和缺点 定义 Mipmap,又叫做多级渐进贴图纹理映射,作用在游戏的纹理贴图,根据渲染物体距离相机的远近,选用不同大小的纹理贴图; 作用 可以使得远处的像素不发生闪烁;减小带宽;减小带宽的原理 说到MipMap可能很多人都会觉得,只是开启后会增加内…

Vue3 学习笔记 —— 函数式编程、createVNode、render、h 函数

目录 2. createVNode()、render() 2.1 初步使用 createVNode()、render() 2.2 h 函数源码分析 3. 使用 h 函数的几种方法 3.1 h 函数 接收的参数 3.2 h 函数 使用方法 4. 通过 h 函数实现 button 组件 4.1 使用 props 接收传入组件的参数 4.2 使用 emit 向组件外发送事…

自动化运维工具—Ansible概述及命令行模块

一.自动化运维工具—Ansible概述及命令行模块 1.1 Ansible是什么 Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可…

机器人手臂四旋翼的笛卡尔阻抗控制(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 当机器人手指与障碍物接触时,呈现出2阶机械阻抗特性。在阻抗控制算法中,不需直接计算加速度,从而避免了因大加速度误差给控制带…

leetcode 473. 火柴拼正方形-思路整理与细节分析

题目&#xff1a; 你将得到一个整数数组matchsticks&#xff0c;其中 matchsticks[i]是第i个火柴棒的长度。你要用所有的火柴棍拼成一个正方形。你不能折断任何一根火柴棒&#xff0c;但你可以把它们连在一起&#xff0c;而且每根火柴棒必须使用一次。如果你能使这个正方形&am…

FPGA新起点V1开发板(五)——Modelsim软件的使用(联合仿真)

文章目录一、简介1.1 前仿真1.2 后仿真二、联合仿真2.1 选择modesim的安装路径2.2 设置选择eda的工具2.3 test bench文件2.4 打开test bench文件2.5 给系统时钟和复位信号赋初值2.6 配置仿真功能三、RTL仿真3.1 打开波形窗口3.2添加内部信号四、时序仿真一、简介 1.1 前仿真 主…

web大学生网页作业成品 响应式网站水果超市7页(html+css+javascript+jquery+bootstarp)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

web期末大作业 用HTML+CSS做一个漂亮简单的节日网页【传日文化节日中秋节】

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

web前端期末大作业—— HTML+CSS豪华车 (9页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

蚂蚁金服开源的这份SpringBoot笔记,曾在24小时内GitHub星标48k

前言 Spring的影响力想必就不用小编多说了&#xff0c;今天要跟大家说的是SpringBoot。Spring Boot作为目前Spring技术体系中炙手可热的框架之一&#xff0c;已经是开发者们的必备神器了。在实际的项目中&#xff0c;需要集成各种的插件支持&#xff0c;还有很多或许我们平时不…

【计算机考研408-计算机网络-教书匠视频笔记】主机访问浏览器的全部过程

主机H1利用浏览器通过该域名请求访问web服务器 由于题目给定主机H1的ARP表是空的 &#xff08;1&#xff09;主机H1首先会发送ARP请求报文&#xff0c;ARP请求报文会被封装在以太网的MAC帧中发送 ARP请求报文&#xff1a;FF-FF-FF-FF-FF-FF 源MAC地址&#xff1a;00-11-22-3…

Docker 容器使用

文章目录Docker 容器使用Docker 客户端运行一个web应用查看 WEB 应用容器网络端口的快捷方式查看WEB应用程序日志查看WEB应用程序容器的进程检查WEB应用程序停止WEB应用容器重启WEB应用容器移除WEB应用容器Docker 容器使用 Docker 客户端 docker 客户端非常简单 ,我们可以直接…

全网显示 IP 归属地,用上这个开源库,实现也太简单了

细心的小伙伴可能会发现&#xff0c;最近蘑菇新上线了 IP 属地的功能&#xff0c;小伙伴在发表动态、发表评论以及聊天的时候&#xff0c;都会显示自己的 IP 属地信息 动态显示IP属地 在蘑菇群聊中&#xff0c;也 可 以 展 示 IP 属 地&#xff0c;下面是小伙伴们在交流群中显…

【强化学习论文合集】十八.2019国际表征学习大会论文(ICLR2019)

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。 本专栏整理了近几年国际顶级会议中,涉及强化学习(Rein…

面试官:你觉得你最大的缺点是什么?

面试官:你觉得你最大的缺点是什么? 前言 相信百分之80的同学们都会被问到这个问题&#xff1a;你觉得你最大的缺点是什么? 这也是求职者一个充满恐惧的问题&#xff0c;特别是我们程序员&#xff0c;大家在与人沟通并没有我们与代码沟通这么得心应手&#xff0c;如果你没回…