MySQL数据库高级语句
文章目录
- MySQL高级语句
- older by 排序
- 区间判断查询
- 或与且(or 与and)
- 嵌套查询(多条件)
- 查询不重复记录distinct
- count 计数
- 限制结果条目limit
- 别名as
- 常用通配符
- 嵌套查询(子查询)
- 同表
- 不同表
- 嵌套查询还能用于删除
- 嵌套查询还可以用于修改表格
- 视图
- 内连接 左连接 右连接
- 内连接
- 左连接
- 右连接
- 结语
MySQL高级语句
1构建测试用表
create table test1 (id int primary key,name char(30) not null,gpa decimal(3,2),hobbid int(2));
insert into test1 values(1,'baijiahe',3.3,2);
insert into test1 values(2,)'Hu Zexing',2.9,2);
....

older by 排序
1.order by 排序默认升序
select * from test1 order by gpa;

2.添加desc 选线可以降序排序
select * from test1 order by gpa desc;

3.order by 还可以使用where来过滤数据
select * from test1 where hobbid=4 order by gpa desc;

4.order by 还可以多个数值一起排序
select * from test order by gpa,hobbid,id desc;
上面表示按绩点(gpa)排名,分数相同的按照hobbid来序排序hobbid相同按照 id降序排序

select * from test order by gpa desc,hobbid desc,id desc;

区间判断查询
查询GPA大于2.7的数据
select * from test1 where gpa>2.7;

或与且(or 与and)
查询GPA>2.7或者id=7的数据
select * from test1 where gpa>2.7 or id=7;

查询GPA>2.7且GPA<=3.2的数据
select * from test1 where gpa>2.7 and gpa<=3.2;

嵌套查询(多条件)
查找gpa>2.4且(id大于4或者hobbid=2)的数据
select * from test1 where gpa>2.4 and(id>4 or hobbid=2);

查询不重复记录distinct
select distinct hobbid from test;
查询test表格中 hobbid项中不重复的数据

count 计数
统计一个有多少数据(包括空行),count(主键名)则不包括空行
select count(*) from test1;

统计表中hobbid不同的个数
select count(distinct hobbid) from test1;

限制结果条目limit
注:本文忽略第0行
显示表至第二行
select * from test1 limit 2;

从第二行开始显示,至第五行
select * from test1 limit 2,5

查询前五
select * from test1 order by gpa desc limit 1,5;

别名as
使用别名显示
select name 名字, gpa 绩点 from test1;

创建表别名
create table t1 as select * from test1;

用别名查询
select name,gpa from t1;

常用通配符
1.% - 通配符,匹配任何数量的字符。
2._ - 通配符,匹配任何单个字符。
例如
mysql> SELECT * FROM t1 AS t WHERE t.name LIKE 'w%';

SELECT * FROM test1 WHERE gpa LIKE '3___';
嵌套查询(子查询)
创建一个新表,用作实验
create table money(id int primary key,money decimal(15,2));
insert into money values (1,3000);
insert into money values (2,5000);
insert into money values (3,1300);
insert into money values (4,6000);
insert into money values (5,2800);
insert into money values (6,2300);
insert into money values (7,3300);
insert into money values (8,9200);
insert into money values (10,3154);
insert into money values (11,31575);
insert into money values (12,8547);
insert into money values (13,8745);
insert into money values (14,900);

同表
select id,gpa from test1 where id in (select id from test1 where gpa=>2.7)
上面这个SQL语句含义是,首先运行括号内的SQL语句,输出运行结果到达括号外的SQL语句,最为条件运行。
可以理解为上个SQL语句效果相当于SELECT id, gpa FROM test1 WHERE id=1 OR id=2 OR id=3 OR id=4 OR id=5 OR id=9;


不同表
select id,money from money where id in (select id from test1);

上面这个SQL语句含义是,首先运行括号内的SQL语句,输出运行结果到达括号外的SQL语句,最为条件运行。
可以理解为上个SQL语句效果相当于select id,money from money where id=6 or id=7 or id=8 or id=9 or id=10;
嵌套查询还能用于删除
创建一个测试用的表test2
用select查询是否是要删除的值
是直接将select换成delete就可以删除了
create table test2 (select * from test1);
select * from text2 where id in (select id from test1 where gpa<=2.7);
delete * from text2 where id in (select id from test1 where gpa<=2.7);

嵌套查询还可以用于修改表格
将money表的id=1的用户money数改为1000
update money set money='1000' where id in(select id from test1 where id=1);

子查询,别名as
当运行
select id from (select id,name from test1);

会报错
原因为:
select * from 表名 此为标准格式,而以上的查询语句,“表名"的位置其实是一个完整结果集,mysql并不能直接识别,而此时给与结果集设置一个别名,以”select a.id from a“的方式查询将此结果集视为一张"表”,就可以正常查询数据了,如下:
select a.id from (select id,name from test) a;

相当于
select test.id,name from test;
select 表.字段,字段 from 表;
在MySQL中,视图(View)是一种虚拟表,它由一个SQL查询定义,但并不存储数据。视图的本质是一条SQL查询语句,它的结果集看起来像是一张表。视图可以用来简化复杂的SQL操作,提供数据的安全性和独立性,以及为用户提供一个更加直观的数据表示。
视图
在MySQL中,视图(View)是一种虚拟表,它由一个SQL查询定义,但并不存储数据。视图的本质是一条SQL查询语句,它的结果集看起来像是一张表。视图可以用来简化复杂的SQL操作,提供数据的安全性和独立性,以及为用户提供一个更加直观的数据表示。
CREATE VIEW 试图名 AS SELECT 字段1, 字段2, ... FROM 表名 WHERE 判断句;
create view test_view as select name,gpa from test1 where id<=10;
使用视图
select * from test_view;

查看视图与源表结构
desc test_view;

修改视图
update test_view set gpa=3.9 where name=Shirakanga ;
将视图的Shirakanga的gpa改成3.9原表也会自动修改

内连接 左连接 右连接
内连接
内连接是SQL中的一种连接查询,用于合并两个或多个表中具有匹配值的行。只有当连接条件在两个表中都匹配时,内连接才会返回这些行,内连接只返回两个表中都有匹配的记录的结果集。
SELECT test1.id, test1.name, money.id, money.money FROM test1 INNER JOIN money ON test1.id = money.id;

左连接
左连接是一种SQL连接操作,它返回左表(LEFT JOIN子句之前的表)的所有记录,即使右表中没有匹配的记录。如果右表中有匹配的记录,则左连接还会返回右表中的匹配记录。如果右表中没有匹配的记录,则结果集中右表的部分将包含NULL。
select * from test1 left join money on test1.id=money.id;

右连接
右连接(Right Join)是一种SQL连接操作,它返回右表(RIGHT JOIN子句之后的表)的所有记录,即使左表中没有匹配的记录。如果左表中有匹配的记录,则右连接还会返回左表中的匹配记录。如果左表中没有匹配的记录,则结果集中左表的部分将包含NULL。
SELECT * FROM test1 RIGHT JOIN money ON test1.id = money.id;

结语
- ORDER BY 排序:
- 升序排序:
ORDER BY column_name - 降序排序:
ORDER BY column_name DESC - 多条件排序:
ORDER BY column1, column2 DESC
- 升序排序:
- 区间判断查询:
- 查询满足特定条件的数据:
WHERE column_name BETWEEN value1 AND value2
- 查询满足特定条件的数据:
- 或与且(OR 与 AND):
- 组合多个条件进行查询:
WHERE column_name = 'value' OR column_name2 = 'value2' - 组合多个条件进行查询:
WHERE column_name = 'value' AND column_name2 = 'value2'
- 组合多个条件进行查询:
- 查询不重复记录(DISTINCT):
- 去除重复记录:
SELECT DISTINCT column_name FROM table_name
- 去除重复记录:
- COUNT 计数:
- 统计记录数:
SELECT COUNT(*) FROM table_name
- 统计记录数:
- 限制结果条目(LIMIT):
- 限制结果数量:
LIMIT offset, limit_number
- 限制结果数量:
- 别名(AS):
- 为列设置别名:
SELECT column_name AS alias_name FROM table_name - 为表设置别名:
SELECT * FROM table_name AS alias_name
- 为列设置别名:
- 常用通配符:
%:匹配任何数量的字符。_:匹配任何单个字符。
相关文章:
MySQL数据库高级语句
文章目录 MySQL高级语句older by 排序区间判断查询或与且(or 与and)嵌套查询(多条件)查询不重复记录distinctcount 计数限制结果条目limit别名as常用通配符嵌套查询(子查询)同表不同表嵌套查询还能用于删除…...
软件测试【理论基础】
软件测试的IEEE定义:使用人工或自动的手段来运行或测量软件系统的过程,目的是检验软件系统是否满足规定的需求,并找出与预期结果之间的差异。 软件测试的发展趋势: ① 测试工作将进一步前移。软件测试不仅仅是单元测试、集成测试、系统测试…...
蓝桥杯每日一题(floyd算法)
4074 铁路与公路 如果两个城市之间有铁路t11,公路就会t2>1,没铁路的时候t1>1,公路t21。也就是公路铁路永远都不会相等。我们只需要计算通过公路和铁路从1到n最大的那个即可。 floyd是直接在数组上更新距离。不需要新建dis数组。另外一定要记得把邻接矩阵初始…...
文心一言 VS 讯飞星火 VS chatgpt (224)-- 算法导论16.3 6题
六、假定我们有字母表 C{0,1,…,n-1} 上的一个最优前缀码,我们希望用最少的二进制位传输此编码。说明如何仅用 2n-1n⌈lgn⌉ 位表示 C 上的任意最优前缀码。(提示:通过对树的遍历,用 2n-1 位说明编码树的结…...
flutter3_douyin:基于flutter3+dart3短视频直播实例|Flutter3.x仿抖音
flutter3-dylive 跨平台仿抖音短视频直播app实战项目。 全新原创基于flutter3.19.2dart3.3.0getx等技术开发仿抖音app实战项目。实现了类似抖音整屏丝滑式上下滑动视频、左右滑动切换页面模块,直播间进场/礼物动效,聊天等模块。 运用技术 编辑器&#x…...
VR全景赋能智慧农业,打造沉浸式种植体验平台
随着人口的增长,传统农业也正在面临着不一样的挑战,加上很多人对农业的固有印象,很少有年轻人愿意下到农田里,那么该如何提高产量、降低成本以及引导年轻人深刻感受现代农业成为了急需解决的问题。 随着城市化脚步的推进ÿ…...
百度文心一言(ERNIE bot)API接入Android应用
百度文心一言(ERNIE bot)API接入Android应用实践 - 拾一贰叁 - 博客园 (cnblogs.com) Preface: 现在生成式AI越来越强大了,想在android上实现一个对话助手的功能,大概摸索了一下接入百度文心一言API的方法。 与AI助手交换信息的…...
springboot基本使用八(mbatisplus+filter实现登录功能)
mybatisplus依赖: <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version> </dependency> mysql依赖: <dependency><groupId>com.mysql<…...
蚂蚁庄园今天答案
蚂蚁庄园是一款爱心公益游戏,用户可以通过喂养小鸡,产生鸡蛋,并通过捐赠鸡蛋参与公益项目。用户每日完成答题就可以领取鸡饲料,使用鸡饲料喂鸡之后,会可以获得鸡蛋,可以通过鸡蛋来进行爱心捐赠。其中&#…...
第5章 数据建模和设计
思维导图 5.1 引言 最常见的6种模式:关系模式、多维模式、面向对象模式、 事实模式、时间序列模式和NoSQL模式 每种模式分为三层模型:概念模型、逻辑模型和物理模型 每种模型都包含一系列组件:如实体、关系、事实、键和属性。 5.1.1 业务驱…...
牛客NC108 最大正方形【中等 动态规划 Java,Go,PHP】
题目 题目链接: https://www.nowcoder.com/practice/0058c4092cec44c2975e38223f10470e 思路 动态规划: 先初始化第一行和第一列。然后其他单元格依赖自己的上边,左边和左上角参考答案Java import java.util.*;public class Solution {/*** 代码中的类…...
C#学生信息成绩管理系统
一、系统功能描述 本系统包括两类用户:学生、管理员。管理员可以通过系统来添加管理员信息、修改管理员信息、添加学生信息、修改学生信息;开设课程、查询课程、录入成绩、统计成绩、修改成绩、修改个人密码等,而学生则可以通过系统来选择课…...
精品凉拌菜系列热卤系列课程
这一系列课程涵盖精美凉拌菜和美味热卤菜的制作技巧。学员将学习如何选材、调味和烹饪,打造口感丰富、色香俱佳的菜肴。通过实践训练,掌握独特的烹饪技能,为家庭聚餐或职业厨艺提升增添亮点。 课程大小:6.6G 课程下载࿱…...
Java代码基础算法练习-求一个三位数的各位数字之和-2024.03.27
任务描述: 输入一个正整数n(取值范围:100<n<1000),然后输出每位数字之和 任务要求: 代码示例: package M0317_0331;import java.util.Scanner;public class m240327 {public static voi…...
Excel 十字交叉聚光灯查询,再也不用担心看串行与列
当Excel表格行列较多时,要想跟条件找到目标数据可以用查找引用函数自动调取,如果又想让找出来的结果突出显示,有什么好办法呢? 先来看一个做好的案例效果,用户选择查询条件后,结果突出显示。 当查询条件变…...
集合和字符串的使用
文章目录 一、集合概述二、Collection2.1 List接口2.2 Set接口(不常用)2.2.1 TreeSet 三、Map接口四、Collections工具类五、String六、String类型转换6.1 基本数据类型6.2 基本数据类型、包装类 --> String6.3 String与char[]6.4 String与byte[] 一、…...
Wagtail-基于Python Django的内容管理系统CMS实现公网访问
目录 ⛳️推荐 前言 1. 安装并运行Wagtail 1.1 创建并激活虚拟环境 2. 安装cpolar内网穿透工具 3. 实现Wagtail公网访问 4. 固定Wagtail公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给…...
Python入门级题目及答案
前言: 学习Python作为一门编程语言是非常有必要的,因为Python简单易学,功能强大,应用广泛。在本篇博客中,我们将提供八道Python入门级的题目,每道题目都伴有详细的描述和对应的答案代码。通过完成这八道题目…...
【C语言基础】:字符串函数(二)
文章目录 一、strncpy函数的使用二、strncat函数的使用三、strncmp函数的使用四、strstr函数的使用和模拟实现4.1 strstr函数的使用4.2 strstr函数的模拟实现 五、strtok函数的使用六、strerror函数的使用 书山有路勤为径,学海无涯苦作舟。 创作不易,宝子…...
【Docker】Docker资源(创建容器)CPU/内存/磁盘IO/GPU限制与分配教程
Docker资源创建容器CPU/内存/磁盘IO/GPU限制与分配 一、关键概念解释二、Docker分配CPU资源限制三、Docker分配内存资源限制四、Docker容器中对磁盘IO进行限制五、Docker对GPU资源限制管理 一、关键概念解释 【cgroup】 cgroups名称源自控制组群(control g…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
