【黄啊码】MySQL入门—3、我用select *,老板直接赶我坐火车回家去,买的还是站票

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 大家好!我是黄啊码,学会了DDL语句了吗?那我们今天就来学习一下基本的查询语法,我见过很多外包机构的程序员都是万物皆可select *,然后项目跑了一段时间就基本跑不动了,问就回答:服务器配置不够,加钱!好家伙,居然可以这样,学习啦【狗头保护】如果你在维护自家公司的项目,老板稍微会点技术,你相信他会打你吗?

大家好!我是黄啊码,学会了DDL语句了吗?那我们今天就来学习一下基本的查询语法,我见过很多外包机构的程序员都是万物皆可select *,然后项目跑了一段时间就基本跑不动了,问就回答:服务器配置不够,加钱!好家伙,居然可以这样,学习啦【狗头保护】如果你在维护自家公司的项目,老板稍微会点技术,你相信他会打你吗?

好了,废话少说,先上课程目录:

SELECT 查询的基础语法;
如何排序检索数据;
什么情况下用SELECT*,如何提升 SELECT 查询效率?
SELECT 查询的基础语法
SELECT 可以帮助我们从一个表或多个表中进行数据查询。我们知道一个数据表是由列(字段名)和行(数据行)组成的,我们要返回满足条件的数据行,就需要在 SELECT 后面加上我们想要查询的列名,可以是一列,也可以是多个列。如果你不知道所有列名都有什么,也可以检索所有列。

1、检索所有列【你:好家伙,这么简单,我爸妈看到都会说我是大聪明】

select * from user_info;

呐,不就出来了吗?
image.png
2、检索单个列【你:这也太简单了吧,小瞧我大聪明了?】

select user_name from user_info;

image.png
黄啊码:但,你这结果好像顺序不对啊,张三不是该排在最前吧 。

你:嗯哼,我不管,能得到结果就行了。

黄啊码:啪,啪,老老实实给我看到最后。

3、起别名,说通俗易懂就是给它起个外号,比如你的外号就是二狗,哦,不对,是靓仔、靓女

select user_name as u_name from user_info;

image.png
你:啊码,我很懒,我不想写那么多代码;

黄啊码:啪,就知道你不想写那么多,把as去掉不就少写两个字母了吗?
image.png
黄啊码:结果是不是一样?

你:是一样,但,但是,下次能不能不打我?

黄啊码:打是亲,骂是爱,不打不骂不自在。

你:好家伙,待我东西学到手,让你知道什么叫做人间大爱!

4、查询常数
SELECT 查询还可以对常数进行查询。对的,就是在 SELECT 查询结果中增加一列固定的常数列。这列的取值是我们指定的,而不是从数据表中动态取出的。你可能会问为什么我们还要对常数进行查询呢?SQL 中的 SELECT 语法的确提供了这个功能,一般来说我们只从一个表中查询数据,通常不需要增加一个固定的常数列,但如果我们想整合不同的数据源,用常数列作为这个表的标记,就需要查询常数。

比如我们想在user_name前增加一列‘u_name’代表人物名称,我们可以这么写:

select '人物名称' as u_name,user_name from user_info;

image.png
你:啊码,你这样写有点像脱裤子放屁,我一看觉得那是人物名称;

黄啊码:啪,啪,啪,你说什么? 不要你觉得,我要我觉得,我觉得这是在教你东西就行了,这三丈红给你个记性。

但切记,如果把人物名称改为数字,就不需要加单引号了,直接这样
image.png
你:666,啊码就是厉害;

黄啊码:啪,要你夸,我厉害我能不知道?

5、去除重复行,比如:

这明显就有两个张三,我想获取这张表里边的所有user_name,并且是独一无二的,该咋弄?

你:啊码,我知道,我知道,distinct!distinct!;

黄啊码:谁让你说的,你这样会让我很没面子的,啪!

select distinct user_name from user_info;

image.png
这里有两点需要注意:

DISTINCT 需要放到所有列名的前面,如果写成SELECT user_age, DISTINCT user_name FROM user_info会报错。

DISTINCT 其实是对后面所有列名的组合进行去重,

如何排序检索数据
最最最普通的方式如下:

select * from user_info ORDER BY user_id asc;

image.png
你:啊码,那是不是可以asc去掉;

黄啊码:啪,你终于有点觉悟了,确实是的。
image.png
你:啊码,我说对了,你为啥还要打我;

我:不好意思,纯粹顺手,习惯了,啪;

你:捂着脸,敢怒不敢言。

使用 ORDER BY 子句有以下几个点需要掌握:

排序的列名:ORDER BY 后面可以有一个或多个列名,如果是多个列名进行排序,会按照后面第一个列先进行排序,当第一列的值相同的时候,再按照第二列进行排序,以此类推。

排序的顺序:ORDER BY 后面可以注明排序规则,ASC 代表递增排序,DESC 代表递减排序。如果没有注明排序规则,默认情况下是按照 ASC 递增排序。我们很容易理解 ORDER BY 对数值类型字段的排序规则,但如果排序字段类型为文本数据,就需要参考数据库的设置方式了,这样才能判断 A 是在 B 之前,还是在 B 之后。比如使用 MySQL 在创建字段的时候设置为 BINARY 属性,就代表区分大小写。

非选择列排序:ORDER BY 可以使用非选择列进行排序,所以即使在 SELECT 后面没有这个列名,你同样可以放到 ORDER BY 后面进行排序。

ORDER BY 的位置:ORDER BY 通常位于 SELECT 语句的最后一条子句,否则会报错。

至于WHERE ... GROUP BY ... HAVING .. 我们后边在学,黄啊码怕你吃太多会消化不良,到时啪的可是我。

什么情况下用 SELECT*,如何提升 SELECT 查询效率?
如果我们只是练习,或者对数据表进行探索,那么是可以使用SELECT 的。它的查询效率和把所有列名都写出来再进行查询的效率相差并不大。这样可以方便你对数据表有个整体的认知。但是在生产环境下,不推荐你直接使用SELECT 进行查询,如果你想强制上【潮汕话:硬爱】那没办法,这边建议您回炉重造。

好了,今天的课程学到这里,有问题的留个言,下次我们还会再见!

最后留个问题,这文章出现了几个“啪”,数错了给我重新学一遍!

我是黄啊码,码字的码,退。。。退。。。退。。。朝!

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
2月前
|
关系型数据库 MySQL 数据库
MySQL基本操作入门指南
MySQL基本操作入门指南
89 0
|
25天前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
2月前
|
SQL 关系型数据库 MySQL
MySQL入门到精通
MySQL入门到精通
|
3月前
|
存储 关系型数据库 MySQL
在 MySQL 中使用 Insert Into Select
【8月更文挑战第11天】
586 0
在 MySQL 中使用 Insert Into Select
|
4月前
|
存储 关系型数据库 文件存储
面试题MySQL问题之简单的SELECT操作在MVCC下加锁如何解决
面试题MySQL问题之简单的SELECT操作在MVCC下加锁如何解决
49 2
|
4月前
|
SQL 关系型数据库 MySQL
「Python入门」python操作MySQL和SqlServer
**摘要:** 了解如何使用Python的pymysql模块与MySQL数据库交互。首先,通过`pip install pymysql`安装模块。pymysql提供与MySQL的连接功能,例如创建数据库连接、执行SQL查询。在设置好MySQL环境后,使用`pymysql.connect()`建立连接,并通过游标执行SQL(如用户登录验证)。注意防止SQL注入,使用参数化查询。增删改操作需调用`conn.commit()`来保存更改。pymssql模块类似,但导入和连接对象创建略有不同。
62 0
「Python入门」python操作MySQL和SqlServer
|
4月前
|
SQL 关系型数据库 MySQL
【MySQL从入门到精通】常用SQL语句分享
【MySQL从入门到精通】常用SQL语句分享
59 2
|
5月前
|
关系型数据库 MySQL 数据库
『Django』模型入门教程-操作MySQL
一个后台如果没有数据库可以说废了一半。日常开发中大多数时候都在与数据库打交道。Django 为我们提供了一种更简单的操作数据库的方式。 在 Django 中,模型(Model)是用来定义数据库结构的类。每个模型类通常对应数据库中的一个表,类的属性对应表中的列。通过定义模型,Django 的 ORM(Object-Relational Mapping)可以将 Python 对象映射到数据库表,并提供一套 API 来进行数据库操作。 本文介绍模型的用法。
|
4月前
|
存储 关系型数据库 MySQL
MySQL小白教程:从入门到查询高手
MySQL小白教程:从入门到查询高手

热门文章

最新文章

下一篇
无影云桌面