MySQL常用命令和函数的讲解以及表之间的联结

Mysql的中一些语句的用法:

有表:

CREATE TABLE `book`  (`id` int(20) NOT NULL,`book_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '书名',`press` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '出版社',`book_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '书籍类型',`time` datetime NULL DEFAULT NULL COMMENT '时间',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;-- ----------------------------
-- Records of book
-- ----------------------------
INSERT INTO `book` VALUES (1, '西游记', '国家图书馆出版社', '中国文学', '2020-09-18 10:24:20');
INSERT INTO `book` VALUES (2, '西游记', '人民教育出版社', '中国文学', '2020-09-18 10:24:20');
INSERT INTO `book` VALUES (3, '西游记', '北京大学出版社', '中国文学', '2020-09-18 10:24:20');
INSERT INTO `book` VALUES (4, '第四世界', '国家图书馆出版社', '哲学类', '2020-11-30 17:22:53');
INSERT INTO `book` VALUES (5, '第五世界', '人民教育出版社', '科幻', '2020-11-30 17:25:34');
INSERT INTO `book` VALUES (7, '第7世界', '北京出版社', '科幻', '2020-11-30 17:47:11');
INSERT INTO `book` VALUES (9, '第9世界', '人民教育出版社', '科幻', '2020-11-30 17:50:56');
INSERT INTO `book` VALUES (10, '唐诗三百首', '北京出版社', '文化教育', '2020-09-18 10:24:20');
INSERT INTO `book` VALUES (11, '灵魂只能独行', '江苏教育出版社', '哲学类', '2020-09-18 10:24:20');
INSERT INTO `book` VALUES (12, '神雕侠侣', '江苏教育出版社', '小说', '2020-09-18 10:24:20');
INSERT INTO `book` VALUES (13, 'old-book', '人民教育出版社', '哲学类', '2020-09-18 10:24:20');
INSERT INTO `book` VALUES (14, '三国演义', '国家图书馆出版社', '中国文学', '2020-12-04 15:31:47');SET FOREIGN_KEY_CHECKS = 1;

在这里插入图片描述

一、有关LIMIT的用法:

  • limit使用一个参数:表示返回前3行数据
select * from book limit 3;

在这里插入图片描述

  • limit使用两个参数:第一个参数表示从第几行开始查,第二个参数表示取第几个条数据
LIMIT的下标是从0开始的:
limit 1 offset 1;--跳过一条数据,获取第一条数据
limit 1,1;--从第一行开始查,查一条数据
SELECT * FROM book LIMIT 1 OFFSET 1;

在这里插入图片描述

二、有关count的用法:

  1. count(*),count(1):相当于统计表的行数,不会忽略列值为null的记录。
select count(*from book;
select count(1from book;

在这里插入图片描述

  1. count(column_name):返回指定列的列数,会忽略列值为NULL的记录(不包括空字符串和0)
select count(boook_name) from table_name ;

在这里插入图片描述

  1. count(distinct column_name):会对这列的数据去重后再统计数目
select count(distinct column_name) from table_name ;

在这里插入图片描述

三、order by 的用法:

  1. ORDER BY 关键字可以使查询返回的「结果集」按照指定的列进行排序,可以按照某「一列」排序或者同时按照「多列」进行排序,排序的顺序可以是「升序ASC」或者「降序DESC」。
select * from book order by id;--升序排

在这里插入图片描述

select * from book order by id desc;--降序排

在这里插入图片描述

  1. 当ORDER BY 后有两列时,先根据第一列进行排序,当第一列相同时,再根据第二列排序:
SELECT * FROM book ORDER BY book_name,press

在这里插入图片描述

四、group by的用法:

  • group by 关键字可以根据一个或多个字段对查询结果进行分组
  • group by 一般都会结合Mysql聚合函数来使用
  • 在 Group By 中指定的列可以是表达式或函数,但在 Select 子句中必须使用别名来引用这些列。
  • 如果需要指定条件来过滤分组后的结果集,需要结合 having 关键字;原因:where不能与聚合函数联合使用 并且 where 是在 group by 之前执行的
  1. Group By 是一种 SQL 查询语句,常用于根据一个或多个列对查询结果进行分组。在 Group By 子句中指定的列将成为分组依据,而在 Select 子句中指定的列必须是聚合函数(例如 SUM、AVG、COUNT 等)或分组列。
SELECT COUNT(1) num,book_type FROM book GROUP BY book_type

在这里插入图片描述

  1. 结合group by 结合 having使用:
  • Having 子句中的条件是基于聚合函数计算的结果进行过滤的。
  • 如果在 Select 子句中没有使用聚合函数,则必须在 Group By 子句中包含该列。
  • 如果条件中只涉及到一个聚合函数,可以使用 WHERE 子句代替 Having 子句。
SELECT COUNT(1) num,book_type FROM book GROUP BY book_type HAVING num >1

在这里插入图片描述

  1. 经常结合group by 使用的聚合函数
AVG(col)--返回指定列的平均值
COUNT(col)--返回指定列中非NULL值的个数
MIN(col)--返回指定列的最小值
MAX(col)--返回指定列的最大值
SUM(col)--返回指定列的所有值之和
GROUP_CONCAT(col) --返回由属于一组的列值连接组合而成的结果

五、表之间的联结(inner join、left join、right join…)

  • Inner join…on…:即内连接,同时将两表作为参考对象,根据ON后给出的两表的条件将两表连接起来。结果则是两表同时满足ON后的条件的部分才会列出。
    在这里插入图片描述

  • Left join…on…:即左连接,是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。左连接全称为左外连接,是外连接的一种。
    在这里插入图片描述

  • Right join…on….:即右连接,是以右表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将右表所有的查询信息列出,而左表只列出ON后条件与右表满足的部分。右连接全称为右外连接,是外连接的一种。
    在这里插入图片描述

  • unionunion all:

    • 使用UNION必须有两条或者两条以上的SELECT语句组成,语句之间用UNION关键字分割
    • 使用UNION关联的每个子查询必须包含相同的检索列、表达式或这聚集函数(次序可以不一样)
    • 列数据类型必须兼容;类型不必完全相同,但必须是DBMS可以隐含转换的类型(不同的数值类型或者不同的日期类型)
    • UNION几乎总是完成与多个WHERE条件相同的工作,UNION ALL是UNION的一种形式,它完成WHERE子句完成不了的工作,因为他将返回每个条件的匹配行(包括重复行)
    • 使用组合查询,当需要对结果进行排序是,只能指定一条Order By语句,这条语句只能放在最后一天SELECT语句的后面
    • UNION会对结果进行去重 UNION ALL 将子查询的结果全部合并
      在这里插入图片描述
--好友申请:谁有最多的朋友
select ids id,count(1) num from
(select requester_id as ids from RequestAccepted
union all
select accepter_id from RequestAccepted
) a1
group by ids 
order by num desc
limit 1

六、Mysql常用函数

不同数据库的函数往往各不相同,因此不可移植。本节主要以 MySQL 的函数为例。

1. 文本处理

函数说明
LEFT()、RIGHT()左边或者右边的字符
LOWER()、UPPER()转换为小写或者大写
LTRIM()、RTRIM()去除左边或者右边的空格
LENGTH()长度,以字节为单位
SOUNDEX()转换为语音值

其中, SOUNDEX() 可以将一个字符串转换为描述其语音表示的字母数字模式。

SELECT *
FROM mytable
WHERE SOUNDEX(col1) = SOUNDEX('apple')

2. 日期和时间处理

  • 日期格式:YYYY-MM-DD
  • 时间格式:HH:MM:SS
函 数说 明
AddDate()增加一个日期(天、周等)
AddTime()增加一个时间(时、分等)
CurDate()返回当前日期
CurTime()返回当前时间
Date()返回日期时间的日期部分
DateDiff()计算两个日期之差
Date_Add()高度灵活的日期运算函数
Date_Format()返回一个格式化的日期或时间串
Day()返回一个日期的天数部分
DayOfWeek()对于一个日期,返回对应的星期几
Hour()返回一个时间的小时部分
Minute()返回一个时间的分钟部分
Month()返回一个日期的月份部分
Now()返回当前日期和时间
Second()返回一个时间的秒部分
Time()返回一个日期时间的时间部分
Year()返回一个日期的年份部分

3. 数值处理

函数说明
SIN()正弦
COS()余弦
TAN()正切
ABS()绝对值
SQRT()平方根
MOD()余数
EXP()指数
PI()圆周率
RAND()随机数

4. 汇总

函 数说 明
AVG()返回某列的平均值
COUNT()返回某列的行数
MAX()返回某列的最大值
MIN()返回某列的最小值
SUM()返回某列值之和
AVG()会忽略 NULL 行。

使用 DISTINCT 可以让汇总函数值汇总不同的值。

SELECT AVG(DISTINCT col1) AS avg_col
FROM mytable

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

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

相关文章

【过程11】——教育被点燃的路上

这里写目录标题 一、背景二、过程1.两年四十万的认知改变2.三年打工仔的经历改变3.一年计算机的人生蜕变4.后面的展望 三、总结 一、背景 人生在世,对于一些事情的笃信笃行;背后真的会有莫大无以言表的波涛。 这个事情到现在已经五年半左右时间了&#…

高标准化及可扩展的产品能力,助力声通科技运营效率不断提升

高标准化及可扩展的产品能力对企业发展具有重要意义,有助于企业提高运营效率、增强市场竞争力,并推动企业实现规模化发展。上海声通信息科技股份有限公司(下文称:声通科技或公司)作为我国领先的企业级全栈交互式人工智…

PyTorch深度学习之旅:从入门到精通的十个关键步骤

在人工智能的浪潮中,深度学习框架扮演着至关重要的角色。PyTorch作为其中的佼佼者,以其简洁、直观和灵活的特性,吸引了众多开发者与研究者。本文将引导您逐步掌握PyTorch,从基础概念到高级应用,让您在深度学习的道路上…

Pr2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 Premiere简称“Pr”,是一款超强大的视频编辑软件,它可以提升您的创作能力和创作自由度,它是易学、高效、精确的视频剪辑软件,提供了采集、剪辑、调色、美化音频、字幕添加、输出、D…

Redis中的订阅发布(一)

订阅发布 概述 Redis的发布与订阅功能由PUBLISH、SUBSCRIBE、PSUBSCRIBE等命令组成。通过执行SUBSCRIBER命令,客户端可以订阅一个或多个频道,从而成为这些频道的订阅者(subscribe): 每当有其他客户端向被订阅的频道发送消息(message)时&…

【Python】异常处理结构

文章目录 1.python异常2.try_except异常处理结构3.try... 多个except异常处理4.try_except_else异常处理结构5.try_except_finally异常处理结构6.常见报错类型 在运行代码时,总是遇到各种异常,且出现异常时,脚本就会自动的的停止运行&#xf…

信息系统项目管理师——第8章项目整合管理(二)

项目管理知识♥♥♥♥♥ 管理项目知识是做什么? 管理项目知识是使用现有知识并生成新知识,以实现项目目标并且帮助组织学习的过程。 管理项目知识的作用是什么? ①利用已有的组织知识来创造或改进项目成果;②使当前项目创造的知识可用于支持组织运营和未来的项目…

第十六篇:springboot案例

文章目录 一、准备工作1.1 需求说明1.2 环境搭建1.3 开发规范1.4 思路 二、部门管理2.1 查询部门2.2 删除部门2.3 新增部门2.4 修改部门2.5 RequestMapping 三、员工管理3.1 分页查询3.2 删除员工3.3 新增员工3.3.1 新增员工3.3.2 文件上传 3.4 修改员工3.4.1 页面回显3.4.2 修…

手机拍照技术

拍照技巧 说明: 本文将主要介绍摄影和手机常见技巧; 1. 摄影的基本知识 **说明:**关于摄影,手机和相机的原理都是相同的,不同的是相机在很多方面优于手机,但是专业的设备对于我们这种的非专业的人来说,刚…

【八股】Redisson分布式锁

Redisson分布式锁 主要了解了Redisson分布式锁实现的三个功能: 1.可重入 -> 防止死锁 2.可重试(i.e. 非阻塞获取锁) 3.自动续约 1. 可重入 原理: 利用Redis的Hash结构,记录了使用当前锁的线程id和重用次数&#…

React + 项目(从基础到实战) -- 第八期

ajax 请求的搭建 引入mockAP接口设计AJAX 通讯 前置知识 HTTP 协议 , 前后端通讯的桥梁API : XMLHttpRequest 和 fetch常用工具axios mock 引入 Mock.js (mockjs.com) 使用 mockJS 前端代码中引入 mockJs定义要模拟的路由 , 返回结果mockJs 劫持ajax请求(返回模拟的结果)…

【读论文】【泛读】三篇生成式自动驾驶场景生成: Bevstreet, DisCoScene, BerfScene

文章目录 1. Street-View Image Generation from a Bird’s-Eye View Layout1.1 Problem introduction1.2 Why1.3 How1.4 My takeaway 2. DisCoScene: Spatially Disentangled Generative Radiance Fields for Controllable 3D-aware Scene Synthesis2.1 What2.2 Why2.3 How2.4…

C++进阶(2)-函数

目录 一、函数提高 1.1函数默认参数 1.2函数占位参数 1.3函数重载 1.3.1函数重载概述 1.3.2函数重载注意事项 二、类和对象 2.1封装 2.1.1封装的意义 2.1.2struct和class区别 2.1.3成员属性设置为私有 2.1.4封装案例 2.2对象的初始化和清理 2.2.1构造函数和析构函数 …

van-uploader 在app内嵌的webview中的一些坑

问题: 部分版本在ios 中没有问题,但是安卓中不触发图片选择和拍照(之前是可以的,可能是没有锁定版本,重新发版导致的)。在ios中下拉文案是英文,html配置lang等于 zh 也没有用,ios里…

Learn SRP 02

3.Editor Rendering 3.1Drawing Legacy Shaders 因为我们的管线只支持无光照的着色过程,使用其他不同的着色过程的对象是不能被渲染的,他们被标记为不可见。尽管这是正确的,但是它还是隐藏了场景中一些使用错误着色器的对象。所以让我们来渲…

libftdi1学习笔记 5 - SPI Nor Flash

目录 1. 初始化 2. CS控制例子 3. 读ID 3.1 制造商 3.2 容量大小 3.3 设置IO类型 3.3.1 setQSPIWinbond 3.3.2 setQSPIMxic 3.3.3 setQSPIMicrochip 3.3.4 setQSPIMicron 4. 写保护 5. 等待空闲 6. 擦除扇区 7. 页编程 8. 页读 9. 写 10. 读 11. 验证 基于M…

Postman之版本信息查看

Postman之版本信息查看 一、为何需要查看版本信息?二、查看Postman的版本信息的步骤 一、为何需要查看版本信息? 不同的版本之间可能存在功能和界面的差异。 二、查看Postman的版本信息的步骤 1、打开 Postman 2、打开设置项 点击页面右上角的 “Set…

Xshell无法输入命令输入命令卡顿

Xshell是一款功能强大的终端模拟软件,可以让用户通过SSH、Telnet、Rlogin、SFTP等协议远程连接到Linux、Unix、Windows等服务器。然而,在使用Xshell的过程中,我们可能会遇到一些问题。比如输入不了命令,或者输入命令很卡。这些问题…

content-type对数据采集的影响,猿人学58题

在拿猿人学网站 https://www.python-spider.com/api/challenge58 练习的时候发现请求头中少了 content-type之后结果全部不对了 当我设置headers如下时 headers {# accept: application/json, text/javascript, */*; q0.01,content-type: application/x-www-form-urlencode…

445. 两数相加 II

给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例1: 输入:l1 [7,2,4,3], l2 [5,6,4]…