首页 > 数据库 >SQL学习三

SQL学习三

时间:2023-02-01 19:12:09浏览次数:32  
标签:DISTINCT 列名 查询 学习 SQL 排序 ORDER SELECT

1.SELECT 查询的基础语法;

查询列

如果我们想要对数据表中的某一列进行检索,在 SELECT 后面加上这个列的字段名即可。

起别名

我们在使用 SELECT 查询的时候,还有一些技巧可以使用,比如你可以给列名起别名。


SQL:SELECT name AS n, hp_max AS hm, mp_max AS mm, attack_max AS am, defense_max AS dm FROM heros

查询常数

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


SQL:SELECT '王者荣耀' as platform, name FROM heros

去除重复行

关于单个表的 SELECT 查询,还有一个非常实用的操作,就是从结果中去掉重复的行。使用的关键字是 DISTINCT。

SELECT DISTINCT attack_range FROM heros

这里有两点需要注意:DISTINCT 需要放到所有列名的前面,如果写成SELECT name, DISTINCT attack_range FROM heros会报错。DISTINCT 其实是对后面所有列名的组合进行去重,

2.如何排序检索数据;

就需要使用 ORDER BY 子句。使用 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 语句的最后一条子句,否则会报错。

3.什么情况下用SELECT*,如何提升 SELECT 查询效率?

其中你需要记住 SELECT 查询时的两个顺序:

1. 关键字的顺序是不能颠倒的:


SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...

2.SELECT 语句的执行顺序(在 MySQL 和 Oracle 中,SELECT 执行顺序基本相同):

FROM > WHERE > GROUP BY > HAVING > SELECT的字段 > DISTINCT > ORDER BY > LIMIT

所以如果我们不需要把所有列都检索出来,还是先指定出所需的列名,因为写清列名,可以减少数据表查询的网络传输量,而且考虑到在实际的工作中,我们往往不需要全部的列名,因此你需要养成良好的习惯,写出所需的列名。如果我们只是练习,或者对数据表进行探索,那么是可以使用SELECT *的。它的查询效率和把所有列名都写出来再进行查询的效率相差并不大。这样可以方便你对数据表有个整体的认知。但是在生产环境下,不推荐你直接使用SELECT *进行查询。

标签:DISTINCT,列名,查询,学习,SQL,排序,ORDER,SELECT
From: https://www.cnblogs.com/anniedaniel/p/17083892.html

相关文章

  • SQL学习四
    1.学会使用WHERE子句,如何使用比较运算符对字段的数值进行比较筛选;  WHERE子句的基本格式是:SELECT……(列名)FROM……(表名)WHERE……(子句条件)2.如何使用逻......
  • SQL学习二
    1.了解DDL的基础语法,它如何定义数据库和数据表;DDL的英文全称是DataDefinitionLanguage,中文是数据定义语言。它定义了数据库的结构和数据表的结构。在DDL中,我们常......
  • 漏洞免费实战部分-安卓应用漏洞学习case6
    安卓应用漏洞学习case6前期回顾漏洞免费实战部分-安卓应用层getLastPathSegment函数问题漏洞实战部分2-安卓应用ZipEntry对象问题实战漏洞实战部分3-ContentProvider......
  • SQL学习一
    1.主流的DBMS都有哪些,它们各自都有哪些特点;既然SQL是通用的标准语言,为什么能存在这么多DBMS;从这些DBMS的发展史中,你有哪些感悟。DBMS的英文全称是DataBaseManag......
  • go学习笔记-
    http.HandleFunc("/",func(whttp.ResponseWriter,r*http.Request){http.ServeFile(w,r,"index.html")})HandleFunc注册一个处理器函数handler和对应的模式p......
  • 虚树 学习笔记
    虚树学习笔记如果有这么一个问题:在一棵超大的,有\(n\)个节点树上,并且树上有\(m\)个关键点,\(m\)远小于\(n\),如果问题只与关键点有关,我们不能很方便地在这棵超大的树......
  • python连接mysql并使用
    由于mysql体积小,速度快,成本低,源码开放,所以一些中小型系统开发都采用mysql我们连接mysql采用的工具包是pymysql1.安装pymysqlpipinstallpymysql2.pymysql工作图......
  • SQL优化
    1,查询语句不要使用select*2,尽量减少子查询,使用关联查询(leftjoin,rightjoin,innerjoin)替换3,减少使用in,notin,用exsists,notexists代替4,or的查询尽量使用union,unio......
  • MySQL基础-SQL-DCL
    1.介绍DCL英文全称是DataControlLanguage(数据控制语言),用来管理数据库用户、控制数据库的访问权限。2. DCL管理用户--1.查询用户USEmysql;SELECT*......
  • Mysql学习笔记
    Mysql是关系型数据库管理系统,管理的数据库是一堆关联表的集合。这里的表可以看作是一个二维表格,里面的每一行表示一条记录,是一组相关的数据。每一列存储的是一个属性对应的......