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;

在这里插入图片描述

结语

  1. ORDER BY 排序:
    • 升序排序:ORDER BY column_name
    • 降序排序:ORDER BY column_name DESC
    • 多条件排序:ORDER BY column1, column2 DESC
  2. 区间判断查询:
    • 查询满足特定条件的数据:WHERE column_name BETWEEN value1 AND value2
  3. 或与且(OR 与 AND):
    • 组合多个条件进行查询:WHERE column_name = 'value' OR column_name2 = 'value2'
    • 组合多个条件进行查询:WHERE column_name = 'value' AND column_name2 = 'value2'
  4. 查询不重复记录(DISTINCT):
    • 去除重复记录:SELECT DISTINCT column_name FROM table_name
  5. COUNT 计数:
    • 统计记录数:SELECT COUNT(*) FROM table_name
  6. 限制结果条目(LIMIT):
    • 限制结果数量:LIMIT offset, limit_number
  7. 别名(AS):
    • 为列设置别名:SELECT column_name AS alias_name FROM table_name
    • 为表设置别名:SELECT * FROM table_name AS alias_name
  8. 常用通配符:
    • %:匹配任何数量的字符。
    • _:匹配任何单个字符。

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

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

相关文章

ZYNQ学习之Ubuntu环境下的Shell与APT下载工具

基本都是摘抄正点原子的文章&#xff1a;<领航者 ZYNQ 之嵌入式Linux 开发指南 V3.2.pdf&#xff0c;因初次学习&#xff0c;仅作学习摘录之用&#xff0c;有不懂之处后续会继续更新~ 一、Ubuntu Shell操作 简单的说Shell 就是敲命令。国内把 Linux 下通过命令行输入命令叫…

Python爬虫如何快速入门

写了几篇网络爬虫的博文后&#xff0c;有网友留言问Python爬虫如何入门&#xff1f;今天就来了解一下什么是爬虫&#xff0c;如何快速的上手Python爬虫。 一、什么是网络爬虫 网络爬虫&#xff0c;英文名称为Web Crawler或Spider&#xff0c;是一种通过程序在互联网上自动获取…

linux编程--文件系统处理常用函数

文件系统 这一个课程的笔记 文件存储相关的概念 文件描述主要有两个inode和dentry inode 是一个结构体, 里面有这一个文件的权限, 类型, 大小, 时间, 用户, 盘块位置之类的信息, 这一个是文件属性的管理结构 文件名是单独存储的, 可以使用inode的编号找到这一个结构体 创建一…

应急响应实战笔记04Windows实战篇(1)

第1篇&#xff1a;FTP暴力破解 0x00 前言 ​ FTP是一个文件传输协议&#xff0c;用户通过FTP可从客户机程序向远程主机上传或下载文件&#xff0c;常用于网站代码维护、日常源码备份等。如果攻击者通过FTP匿名访问或者弱口令获取FTP权限&#xff0c;可直接上传webshell&#…

ida调试技巧-通过修改zf寄存器的值绕过简单反调试

参考本篇->OllyDbg笔记-对标志寄存器中ZF的理解&#xff08;逆向方面&#xff09;_零标志位zf怎么判断-CSDN博客 不想看也没关系&#xff0c;蒟蒻博主概述一下&#xff0c;总之&#xff0c;在机器执行汇编指令时&#xff0c;标志&#xff08;flag&#xff09;寄存器中的一个…

大模型新王诞生!Claude 3首次超越GPT4

一觉醒来&#xff0c;大模型世界迎来了“新王登基”&#xff01; 当地时间周三&#xff0c;聊天机器人竞技场Chatbot Arena更新对战排行榜&#xff0c;Claude 3反超GPT-4&#xff0c;一举摘得“最强王者”桂冠。 这次登顶榜首的是Claude 3系列的超大杯Opus&#xff0c;它以2分…

如何通过idea搭建一个SpringBoot的Web项目(最基础版)

通过idea搭建一个SpringBoot的Web项目 文章目录 通过idea搭建一个SpringBoot的Web项目一、打开idea&#xff0c;找到 create new project二、创建方式三、配置项目依赖四、新建项目模块五、总结 一、打开idea&#xff0c;找到 create new project 方式1 方式2 二、创建方式 新…

elasticsearch 6.8.x 索引别名、动态索引扩展、滚动索引

文章目录 引言索引别名&#xff08;alias&#xff09;创建索引别名查询索引别名删除索引别名重命名索引别名 动态索引&#xff08;index template&#xff0c;动态匹配生成索引&#xff09;新建索引模板新建索引并插入数据索引sys-log-202402索引sys-log-202403索引sys-log-202…

STM32 | Systick定时器(第四天源码解析)

STM32 | Systick定时器(第四天)STM32 | STM32F407ZE中断、按键、灯(续第三天)1、参考delay_us代码,完成delay_ms的程序 定时器频率换算单位:1GHZ=1000MHZ=1000 000KHZ = 1000 000 000HZ 定时器定时时间:计数个数/f(频率) 或者 (1/f(频率))*计数的个数 500/1MHZ = 500/1…

农田通量计算中的感热通量与潜热通量分析

地表水热通量主要包括感热/显热通量和潜热通量&#xff0c;是陆-气交互以及水-热-碳循环研究的重要变量。其中&#xff0c;潜热通量是地表蒸散发的能量形式&#xff0c;对农业水资源管理、作物水分利用效率等非常关键。由于热红外遥感对地表干湿变化、以及农业干旱响应快速&…

洗地机哪个好?专业对比,帮你选出比较适合的洗地机

随着科技的不断发展&#xff0c;洗地机已经成为了现代生活中不可或缺的清洁工具。然而&#xff0c;市面上涌现出各种各样的洗地机品牌&#xff0c;品质良莠不齐。因此&#xff0c;选择一个可靠的品牌至关重要&#xff0c;以确保产品质量和使用效果。为了帮助大家更好地选择&…

vulnhub靶场之driftingblues-3

一.环境搭建 1.靶场描述 get flags difficulty: easy about vm: tested and exported from virtualbox. dhcp and nested vtx/amdv enabled. you can contact me by email for troubleshooting or questions. This works better with VirtualBox rather than VMware 2.靶场…

python的一些知识点

在C C Java中&#xff0c;基本数据类型变量&#xff08;将常量数据存储在变量空间当中&#xff09; int a 3; int b 4; 在C C中&#xff0c;指针变量&#xff08;存储的是变量的物理内存地址&#xff09; int a 3; int* b; b &a; int** c; c &b; printf("%d&…

JAVA面试大全之并发篇

目录 1、并发基础 1.1、多线程的出现是要解决什么问题的? 本质什么? 1.2、Java是怎么解决并发问题的? 1.3、线程安全有哪些实现思路? 1.4、如何理解并发和并行的区别? 1.5、线程有哪几种状态? 分别说明从一种状态到另一种状态转变有哪些方式? 1.6、通常线程有哪几…

Web开发基本流程

Web是全球广域网&#xff0c;能够通过浏览器访问的网站。我们要访问网站&#xff0c;首先要在浏览器输入对应的域名。 浏览器也是一个程序&#xff0c;京东的网站也是一个程序&#xff0c;在京东那边电脑运行着&#xff0c;我们只是通过浏览器远程访问。京东的程序由三个部分组…

【生活】如何学习理财

文章目录 1. 了解基本财务知识2. 制定预算4321理财法则 3. 学习投资知识股票债券基金外汇房地产 4. 了解保险知识人身保险人寿保险健康保险意外伤害保险 财产保险财产损失保险责任保险信用保险 5. 寻求专业建议6. 持续学习和实践参考 首先我们想文心一言提问&#xff1a;如何学…

自媒体用ChatGPT批量洗稿软件V5.9环境配置/软件设置教程【汇总】

大家好&#xff0c;我是淘小白~ 首先&#xff0c;感谢大家的支持~~ ChatGPT采集洗稿软件V5.9版本更新&#xff0c;此次版本更新修改增加了一些内容&#xff1a; 1、自定义多条指令&#xff0c;软件自动判断指令条数&#xff0c;进行输入 2、增加谷歌浏览多账号轮询&#xf…

教育建筑智慧能源管理平台解决方案【新型电力系统下的绿色校园能源管理平台】

一、行业特点 1.建筑类型多&#xff1a;集教学、科研、生活于一体&#xff0c;占地面积大&#xff0c;建筑类型多&#xff0c;功能划分复杂。 2.供电可靠性要求高&#xff1a;教育建筑中的高层建筑、图书馆、实验楼等特级和一级负荷比较多&#xff0c;一旦发生故障会危及生命…

基于Python实现多功能翻译助手(下)

为了将上述步骤中的功能增强与扩展具体化为代码&#xff0c;我们将实现翻译历史记录功能、翻译选项配置以及UI的改进。 翻译历史记录功能 import json # 假设有一个用于存储历史记录的json文件 HISTORY_FILE translation_history.json # 初始化历史记录列表 translati…

Vue3+Element Plus+TS开发企业管理后台(一)

系列文章&#xff0c;讲述一个企业管理后台的前后端设计&#xff0c;持续集成常见的页面功能和服务端设计思路。 效果展示 支持多种布局、主题配色随意切换 侧边菜单背景设置 主题色调切换 移动端完美适配 菜单侧边收起&#xff0c;适合移动端小空间场景。 功能开发计划 #merm…