【黄啊码】MySQL入门—3、我用select *,老板直接赶我坐火车回家去,买的还是站票
大家好!我是黄啊码,学会了DDL语句了吗?那我们今天就来学习一下基本的查询语法,我见过很多外包机构的程序员都是万物皆可select *,然后项目跑了一段时间就基本跑不动了,问就回答:服务器配置不够,加钱!好家伙,居然可以这样,学习啦【狗头保护】如果你在维护自家公司的项目,老板稍微会点技术,你相信他会打你吗?
好了,废话少说,先上课程目录:
SELECT 查询的基础语法;
如何排序检索数据;
什么情况下用SELECT*,如何提升 SELECT 查询效率?
SELECT 查询的基础语法
SELECT 可以帮助我们从一个表或多个表中进行数据查询。我们知道一个数据表是由列(字段名)和行(数据行)组成的,我们要返回满足条件的数据行,就需要在 SELECT 后面加上我们想要查询的列名,可以是一列,也可以是多个列。如果你不知道所有列名都有什么,也可以检索所有列。
1、检索所有列【你:好家伙,这么简单,我爸妈看到都会说我是大聪明】
select * from user_info;
呐,不就出来了吗?
2、检索单个列【你:这也太简单了吧,小瞧我大聪明了?】
select user_name from user_info;
黄啊码:但,你这结果好像顺序不对啊,张三不是该排在最前吧 。
你:嗯哼,我不管,能得到结果就行了。
黄啊码:啪,啪,老老实实给我看到最后。
3、起别名,说通俗易懂就是给它起个外号,比如你的外号就是二狗,哦,不对,是靓仔、靓女
select user_name as u_name from user_info;
你:啊码,我很懒,我不想写那么多代码;
黄啊码:啪,就知道你不想写那么多,把as去掉不就少写两个字母了吗?
黄啊码:结果是不是一样?
你:是一样,但,但是,下次能不能不打我?
黄啊码:打是亲,骂是爱,不打不骂不自在。
你:好家伙,待我东西学到手,让你知道什么叫做人间大爱!
4、查询常数
SELECT 查询还可以对常数进行查询。对的,就是在 SELECT 查询结果中增加一列固定的常数列。这列的取值是我们指定的,而不是从数据表中动态取出的。你可能会问为什么我们还要对常数进行查询呢?SQL 中的 SELECT 语法的确提供了这个功能,一般来说我们只从一个表中查询数据,通常不需要增加一个固定的常数列,但如果我们想整合不同的数据源,用常数列作为这个表的标记,就需要查询常数。
比如我们想在user_name前增加一列‘u_name’代表人物名称,我们可以这么写:
select '人物名称' as u_name,user_name from user_info;
你:啊码,你这样写有点像脱裤子放屁,我一看觉得那是人物名称;
黄啊码:啪,啪,啪,你说什么? 不要你觉得,我要我觉得,我觉得这是在教你东西就行了,这三丈红给你个记性。
但切记,如果把人物名称改为数字,就不需要加单引号了,直接这样
你:666,啊码就是厉害;
黄啊码:啪,要你夸,我厉害我能不知道?
5、去除重复行,比如:
这明显就有两个张三,我想获取这张表里边的所有user_name,并且是独一无二的,该咋弄?
你:啊码,我知道,我知道,distinct!distinct!;
黄啊码:谁让你说的,你这样会让我很没面子的,啪!
select distinct user_name from user_info;
这里有两点需要注意:
DISTINCT 需要放到所有列名的前面,如果写成SELECT user_age, DISTINCT user_name FROM user_info会报错。
DISTINCT 其实是对后面所有列名的组合进行去重,
如何排序检索数据
最最最普通的方式如下:
select * from user_info ORDER BY user_id asc;
你:啊码,那是不是可以asc去掉;
黄啊码:啪,你终于有点觉悟了,确实是的。
你:啊码,我说对了,你为啥还要打我;
我:不好意思,纯粹顺手,习惯了,啪;
你:捂着脸,敢怒不敢言。
使用 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入门—3、我用select *,老板直接赶我坐火车回家去,买的还是站票的更多相关文章
- MySQL入门02-MySQL二进制版本快速部署
在上篇文章 MySQL入门01-MySQL源码安装 中,我们介绍了MySQL源码安装的方法. 源码安装虽然有着更加灵活和更加优化等诸多优势.但源码编译安装部署的过程相对复杂,而且整个过程所花费的时间很 ...
- MySQL入门笔记
MySQL入门笔记 版本选择: 5.x.20 以上版本比较稳定 一.MySQL的三种安装方式: 安装MySQL的方式常见的有三种: · rpm包形式 · 通用二进制 ...
- MySQL入门介绍(mysql-8.0.13)
MySQL入门介绍(mysql-8.0.13单机部署) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL数据库介绍 1>.MySQL是一种开放源代码的关系型数据库 ...
- 【数据库】4.0 MySQL入门学习(四)——linux系统环境下MySQL安装
1.0 我的操作系统是CentOS Linux release 7.6.1810 (Core) 系统详细信息如下: Linux version 3.10.0-957.1.3.el7.x86_64 ( ...
- MySQL入门——在Linux下安装和卸载MySQL
MySQL入门——在Linux下安装和卸载MySQL 摘要:本文主要学习了如何在Linux系统中安装和卸载MySQL数据库. 查看有没有安装过MySQL 使用命令查看有没有安装过: [root@loc ...
- MySQL入门(5)——运算符
MySQL入门(5)--运算符 算术运算符 MySQL支持的算数运算符包括加.减.乘.除.求余. 符号 作用 + 加法运算 - 减法运算 * 乘法运算 / 除法运算 % 求余运算 DIV 除法运算,返 ...
- 21分钟 MySQL 入门教程(转载!!!)
21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数 ...
- MYSQL入门全套(第三部)
MYSQL入门全套(第一部) MYSQL入门全套(第二部) 索引简介 索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构.如果想按特定职员的姓来查找 ...
- MySQL入门(三)
写了两篇<MySQL入门>以后我发现,写书的人还是都挺有本事的,起码人家知道怎么编排自己想讲的知识点,我实在是不知道该先说那里后说哪里,那我就想到什么讲什么吧. 一 写SQL 其实我是不想 ...
随机推荐
- 深入C++06:深入掌握OOP最强大的机制
深入掌握OOP最强大的机制 1. 继承的基本意义 类与类之间的关系:①组合:a part of ... 一部分的关系:②继承: a kind of ... 属于同一种的关系: 继承的本质:a. 代码的 ...
- 国产开源优秀新一代MPP数据库StarRocks入门之旅-数仓新利器(上)
概述 背景 Apache Doris官方地址 https://doris.apache.org/ Apache Doris GitHub源码地址 https://github.com/apache/i ...
- python入门基础知识三(列表和元组)
列表(list)的操作 1. 形式 var = ['char1','char2','char3',...] var = [value1,value2,value3,...] 2. 列表的增删改查 查: ...
- spring boot 统一接口异常返回值
创建业务 Exception 一般在实际项目中,推荐创建自己的 Exception 类型,这样在后期会更容易处理,也比较方便统一,否则,可能每个人都抛出自己喜欢的异常类型,而造成代码混乱 Servic ...
- 876. Middle of the Linked List - LeetCode
Question 876. Middle of the Linked List Solution 题目大意:求链表的中间节点 思路:构造两个节点,遍历链接,一个每次走一步,另一个每次走两步,一个遍历完 ...
- 134_Power BI Report Server之某消费品运营数据监控
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一背景 最近很久都没有更新文章了,研究了下Power BI Report Server(下文简称pbirs). 今天把pb ...
- 记一次生产事故的排查与优化——Java服务假死
一.现象 在服务器上通过curl命令调用一个Java服务的查询接口,半天没有任何响应.关于该服务的基本功能如下: 1.该服务是一个后台刷新指示器的服务,即该服务会将用户需要的指示器数据提前计算好,放入 ...
- Oracle数据库丢失表排查思路
Oracle数据库丢失表排查思路 说明:由于系统采用ID取模分表法进行Oracle数据存储,某日发现Oracle数据库中缺少对应的几张业务数据表,遂进行相关问题查询,简单记录一下排查思路: 由于我们代 ...
- 面试官:Dubbo怎么实现服务降级,他有什么好处?
哈喽!大家好,我是小奇,一位热爱分享的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 书接上回,今天周一了,招聘软件 ...
- 如何把你的 Android 使用得像 Linux
前言 最近在学校里上课,老师讲的东西又听不进去,手里只有一个手机和一个平板,之前还可以用 ssh 连接云服务器玩点东西,但是我是用的软件 Juice ssh 并不是很友好,退出到后台一段时间后竟然会自 ...