当前位置: 首页 > article >正文

MySQL知识汇总(二):select

select语句

-- select语句 select 字段 from 表
-- 查询全部信息 select * from 表
SELECT * FROM `student2`
-- 查询指定字段 select `name` from 表
SELECT `name` FROM `student2`

-- 起别名 给查询结果用 AS 起个其他的名字,可以是字段也可以是表
SELECT `name` AS '名字' FROM `teacher`
-- 拼接查询结果 concat(" ",字段) from 表
SELECT CONCAT('学号:',id) AS '新数据' FROM `teacher`

别名如下name为字段名,'名字'是别名

去重查询 关键字distinct

-- select distinct 字段名 from 表名

SELECT DISTINCT `name` FROM `student2`

 select加表达式,查询表达式

where模糊查询

比较运算符描述             
IS NULL如果操作符为null,返回true
IS NOT NULL如果操作符为null,返回false
between a AND b若结果在a,b之间,返回true
likeSQl匹配,字段匹配指定格式,若匹配返回true
in(a1,a2,a3)字段若在指定值中,返回true

 like 通配符 %与_

% 表示在这里有0到任意个字符

_   表示在这里有一个字符

如查找名字以王开头,后面有0到任意个字符的数据

SELECT `name` AS 'Mingzi' FROM `student2` WHERE `name` LIKE '王%'

查找表的name字段数据,限制条件是有一个“林”字符,该字符前至少有一个字符,后面有0到任意个字符   

SELECT `name` AS '名字' FROM `student2` WHERE `name` LIKE '_%林%'

联表查询

图片来源于网络

联表查询将不同表中不同字段数据通过表中共有字段进行连接,提升查询效率

连表查询关键字join ,将返回两个表所有字段相等的行

-- join联表查询
SELECT s.`id`,`data`,`grade`,`name` 
FROM student2 AS s
JOIN `result` AS r
ON s.`id`=r.`id`

 

内连接inner join, 返回左右表字段匹配行,与join相似

-- inner join 联表查询
SELECT s.`id`,`name`,`grade`,`data` 
FROM `student2` AS s
INNER JOIN `result` AS r
ON s.`id`=r.`id`

左连接left join,以左表为基准,返回左表所有行,若有两表字段未匹配行,右表相关字段值以null填充 

相似的,right join也是如此,但基准为右表

-- inner join 联表查询
SELECT s.`id`,`name`,`grade`,`data` 
FROM `student2` AS s
INNER JOIN `result` AS r
ON s.`id`=r.`id`

对于共同字段一定要指定是谁的字段,否则会报错 

 自连接(了解)

自连接就是通过不同别名的方法对一张表按两张表进行处理

如该例子

我们创建一张包含三个字段的表存储有从属关系的书籍,三个字段分别是本书序号,父序号,本书名称

要求查询字段为父书籍与子书籍

SELECT s.`shu` AS '父栏目',r.`shu` AS '子栏目'
FROM `book` AS s,`book` AS r
WHERE s.`myId`=r.`fatherId`

结果 

分页与排序

排序 关键字order by 

order  用于排序的字段名 升序ASC/降序DESC

 

分页 关键字limit

格式limit  查询起始下标,页面大小

 

语句顺序where,order by,limit

子查询

子查询与联表查询相似,在查询过程中都涉及到了不同表的各个字段,与联表查询不同的是,子查询采用在where限定条件中嵌套了一次查询

如下

-- 子查询
-- 查询成绩大于30分的学生的名字和地址
select `name`,`address`
from student2
where `id` in(
	select `id` from result where `data` >30
)

聚合函数

count()对数据表中记录进行统计

count(字段) 统计时忽略目标字段为null的数据

count(1),count(*) 统计所有数据

其他聚合函数

sum(字段)        该字段数据值总和

avg(字段)        平均值

max(字段)        最大值

min(字段)         最小值

分组过滤 

分组 group by 

group by 字段

按指定字段进行分组,指定字段值相同的数据分为一组,对各个组进行操作主要是方便对数据使用聚合函数操作。

过滤 having

对分组后数据进行过滤不能使用where语句,需要使用having语句,写在group by后面


http://www.kler.cn/a/447501.html

相关文章:

  • 了解RPC
  • [JAVA备忘录] Lambda 表达式简单介绍
  • 设计模式の享元模板代理模式
  • ChatGPT与领域特定语言的集成
  • 彻底认识和理解探索分布式网络编程中的SSL安全通信机制
  • 多屏幕编程时用pygame指定窗口出现在第二块显示器上的方法
  • ARM原理
  • 文件包含tomato靶机通关
  • 39.在 Vue3 中使用 OpenLayers 导出 GeoJSON 文件及详解 GEOJSON 格式
  • LLMs之rStar:《Mutual Reasoning Makes Smaller LLMs Stronger Problem-Solvers》翻译与解读
  • 前端知识补充—HTML
  • Java每日一题(2)
  • 260-高速AD/DA开发板 大容量FPGA编程 USRP K7-SDR Kintex-7 XC7K325T
  • 基于NodeMCU的物联网空调控制系统设计
  • zookepper安装部署
  • Vue.js 核心概念:模板、指令、数据绑定
  • centos7安装python3(保留python2.7)
  • 酷黑金色配色 影片素材不过时 色彩丰富 电影主题html
  • 前端的Python应用指南(一):快速构建 Web 服务器 - Flask vs Node.js 对比
  • 智能语音识别模块与声音传感器模块对比分析:原理、优缺点、性价比与应用领域
  • Flutter/Dart:使用日志模块Logger Easier
  • 分析excel硕士序列数据提示词——包含对特征的筛选,非0值的过滤
  • 洛谷 P1595 信封问题 C语言递归
  • Ajax中的axios
  • MySQL外连接
  • HTML 图像标签使用陷阱