【MySQL】数据查询操作(select语句)(中)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 【MySQL】数据查询操作(select语句)(中)

五、select设置别名(alias -----as)


在 mysql 查询时,当表的名字比较长或者表内某些字段比较长时,为了方便书写或者多次使用相同的表,可以给字段列或表设置别名,方便操作,增强可读性。


列的别名  select 字段 as 字段别名 表名
表的别名 select 别名.字段 from 表名 as 别名
as 可以省略


使用场景:


1、对复杂的表进行查询的时候,别名可以缩短查询语句的长度
2、多表相连查询的时候(通俗易懂、减短sql语句)

5.1查询表的记录数量,以别名显示

select count(*) as number from school;


5.2利用as,将查询的数据导入到另外一个表内

创建Another表,将school表的查询记录全部插入Another表


create table Another as select * from school;

此处as起到的作用:
创建了一个新表, 并定义表结构,插入表数据(与school表相同)
但是”约束“没有被完全”复制“过来 #但是如果原表设置了主键,
那么附表的:default字段会默认设置一个0

相似:


克隆、复制表结构


也可以加入where 语句判断


在为表设置别名时,要保证别名不能与数据库中的其他表的名称冲突。


列的别名是在结果中有显示的,而表的别名在结果中没有显示,只在执行查询时使用


select address as 地区 from  Another;  
利用as ,将Another表中的address设置别名地区,进去查询


六、select通配符查询


通配符主要用于替换字符串中的部分字符,通过部分字符的匹配将相关结果查询出来。

通常通配符都是跟like一起使用,并协同where子句共同来完成查询任务。

常用的通配符有两个,分别是:


#语法:
select 字段名  from 表名 where 字段 like 模式
%:百分号表示零个、一个或多个字符
_:下划线表示单个字符

6.1查询以什么开头或以什么结尾


查询以什么结尾的’%l’
查询以什么开头的’l%’
select id,name from school where name like 'l%';

查询字段中包含某个字段’%i%’
select id,name from school where name like '%i%';


6.2查找某个字段开头长度固定

使用“_”匹配字段中的一个字符
select id,name from school where name like 'l__';


6.3使用“%”与“_”组合使用查询

使用“%”与“_”组合使用查询 
select id,name from school where name like 'l_%';




七、select子查询


子查询也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语句。子查询语句是先于主查询进行下一步的查询过滤。

在子查询中可以与主语句查询相同的表,也可以是不同的表


7.1select相同表查询

语法格式

select 字段1,字段2 from 表名1 where 字段 in (select 字段 from 表名 where 条件);

相同表查询


select name,score from school where id in (select id from school where score > 80);


7.2select多表查询

select name,score from school where id in (select id from school2 where age > 25);

NOT 取反,将子查询的结果,进行取反操作



select name,age from school2 where id not in (select id from school where score < 90);


7.3select结合insert进行操作

子查询还可以用在insert语句中,子查询的结果集可以通过insert语句插入到其它表中


insert into Another2 select * from school where id in (select id from school);

7.4select结合update进行操作

update语句也可以使用子查询,update内的子查询,在set更新内容时,可以是单独的一列,也可以是多列。


update school set score=77 where id in (select id from school2 where id <4);

7.5select结合delete进行操作

delete from school where id in (select id from school2 where score <60);

7.6select结合exists进行操作

exists这个关键字在子查询时,主要用于判断子查询的结果集是否为空,如果不为空,则返回true,反之则返回false

注:在使用exists时,当子查询有结果时,不关心子查询的内容,执行主查询操作;当子查询没有结果时,则不执行主查询操作。


select count(*) from school where exists(select id from school where score=100);
select count(*) from school where exists(select id from school where score=90);


7.7select结合as别名进行操作

将结果集作为一张表进行查询的时候,需要用到别名
将结果集作为一张表进行查询
将结果集做为一张表进行查询的时候,我们也需要用到别名

从class表中的id和name字段的内容做为"内容" 输出id的部分


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



select count(*) from (select id from school where score >80) a;

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
SQL Oracle 关系型数据库
【MySQL】——数据查询_进阶操作(超详细)!!
聚合查询,联合查询,内外连接,子查询,合并查询爽歪歪
|
5月前
|
SQL 运维 关系型数据库
MySQL 中 GRANT 操作会引起复制中断吗?
GRANT 操作并不是一个原子性操作,不管执行成功与否,都会触发一个隐式重载授权表的行为。 在生产环境中需要规范用户创建及授权的操作,不推荐使用 DML 语句去直接变更 mysql.user 表,可能会引发其他的问题,若使用了 DML 语句进行变更, 需要手工执行 flush privileges。
76 4
|
5月前
|
JavaScript 关系型数据库 MySQL
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
73 0
|
1月前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
2月前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
98 5
|
2月前
|
关系型数据库 MySQL 数据库
MySQL的语法涵盖了数据定义、数据操作、数据查询和数据控制等多个方面
MySQL的语法涵盖了数据定义、数据操作、数据查询和数据控制等多个方面
69 5
|
4月前
|
存储 关系型数据库 MySQL
在 MySQL 中使用 Insert Into Select
【8月更文挑战第11天】
816 0
在 MySQL 中使用 Insert Into Select
|
5月前
|
存储 关系型数据库 文件存储
面试题MySQL问题之简单的SELECT操作在MVCC下加锁如何解决
面试题MySQL问题之简单的SELECT操作在MVCC下加锁如何解决
54 2
|
5月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错合集之从mysql读数据写到hive报错,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
5月前
|
SQL Java 数据库
MySQL设计规约问题之为什么应尽量避免使用子查询,而可以考虑将其优化为join操作
MySQL设计规约问题之为什么应尽量避免使用子查询,而可以考虑将其优化为join操作