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.hqwc.cn/news/572393.html

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

相关文章

家用洗地机哪个型号质量好,性价比高?全方位盘点与推荐!

洗地机一推一拉就能轻松把污渍清理干净&#xff0c;比用传统清理工具打扫卫生方便多了&#xff0c;更加省时省力&#xff0c;但是该说不说&#xff0c;洗地机这种东西买对了是提升幸福感&#xff0c;买错了那可是要多糟心有多糟心&#xff0c;所以在买之前一定要做好攻略。 洗…

代码随想录——搜索插入位置(Leetcode35)

题目链接 class Solution {public int searchInsert(int[] nums, int target) {int len nums.length;int left 0;int right len - 1;int index -1;while(left < len / 2){if(nums[left] target || target < nums[left]){index left;break;}else{left;}if(nums[ri…

STM32收发HEX数据包

在实际应用中&#xff0c;STM32的串口通信都是以数据包格式进行收发&#xff0c;这个数据包一般都包含包头和包尾&#xff0c;表示一个数据包。源代码在文末给出 数据包格式&#xff1a; 固定长度&#xff0c;含包头包尾 可变包长&#xff0c;含包头包尾 问题1&#xff1a;当…

递推入门||数字三角形

题目&#xff1a; 如果只能往左下或右下走&#xff0c;找到下面三角形的最大值 代码&#xff1a; #include <bits/stdc.h> using namespace std; int a[105][105];int main() {int n,i,j;cin>>n;for(i1;i<n;i){for(j1;j<i;j){cin>>a[i][j];}}for(in-1…

服务运营 | 印第安纳大学翟成成:改变生活的水井选址

编者按&#xff1a; 作者于2023年4月在“Production and Operations Management”上发表的“Improving drinking water access and equity in rural Sub-Saharan Africa”探讨了欠发达地区水资源供应中的可达性和公平性问题。作者于2020年1月去往非洲埃塞俄比亚提格雷地区进行…

上位机图像处理和嵌入式模块部署(qmacvisual图像拼接)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 qmacvisual本身提供了图像拼接的功能。功能本身比较有意思的。大家如果拍过毕业照&#xff0c;特别是那种几百人、上千人的合照&#xff0c;应该就…

Maven的pom.xml中resources标签的用法

spring-boot-starter-parent-2.4.1.pom文件中resources标签内容如下&#xff1a; <build><resources><resource><directory>${basedir}/src/main/resources</directory><filtering>true</filtering><includes><include>…

数字化运维:引领IT运维管理的新潮流

目录 前言 数字化运维与传统运维 数字化运维是什么 数字化运维的关键技术 书本推荐 主要内容 读者对象 总结 前言 数字化转型已经成为大势所趋&#xff0c;各行各业正朝着数字化方向转型&#xff0c;利用数字化转型方法论和前沿科学技术实现降本、提质、增效&#xf…

【前端学习——js篇】6.事件模型

具体见&#xff1a;https://github.com/febobo/web-interview 6.事件模型 ①事件与事件流 事件(Events) 事件是指页面中发生的交互行为&#xff0c;比如用户点击按钮、键盘输入、鼠标移动等。在js中&#xff0c;可以通过事件来触发相应的操作&#xff0c;例如执行函数、改变…

37、Linux中Xsync数据同步备份工具

37、Linux中Xsync数据同步备份工具 一、介绍二、配置集群hostname三、修改xsync文件四、赋权五、安装Rsync六、验证一七、配置免密登录1、生成rsa密钥2、copy机器自身公钥到目标机器3、.ssh/文件目录赋权 八、验证二 ⚠️ 注&#xff1a;本文全程在普通用户下操作&#xff0c;…

Null-text Inversion for Editing Real Images using Guided Diffusion Models

Null-text Inversion for Editing Real Images using Guided Diffusion Models (Paper reading) Ron Mokady, Google Research, CVPR23, Paper, Code 1. 前言 在本文中&#xff0c;我们介绍了一种精确的反转技术&#xff0c;从而有助于直观地对图像进行基于文本的修改。我们提…

鸿蒙开发之ArkUI组件常用组件文本输入

TextInput、TextArea是输入框组件&#xff0c;通常用于响应用户的输入操作&#xff0c;比如评论区的输入、聊天框的输入、表格的输入等&#xff0c;也可以结合其它组件构建功能页面&#xff0c;例如登录注册页面。 TextInput为单行输入框、TextArea为多行输入框 TextArea 多行…