SQL必知必会(三)

简介: 作用是从一个或多个表中检索信息

SELECT语句

作用是从一个或多个表中检索信息

检索单个列


SELECT column FROM table;


该SQL语句的意思从某表中检索某一字段(列)的数据

注意:

1.SQL语句必须以分号作为结束标识,尤其在执行多条SQL语句的时候

2.SQL不区分大小写,这里根据开发习惯来规定,一般情况下用大写

3.在处理SQL语句,其中所有空格都会被忽略,一般建议通过空格或者换行方便阅读和调试

检索多个列


SELECT column1,column2,column3 FROM table;


跟检索单个列不同的是,我们需要将要查的列用逗号分割开(最后一个字段后面不加都好)

检索全部列

这里我们用通配符*来实现检索全部列


SELECT * FROM table;


通配符*标识返回全部列,列的顺序一般是表中定义的物理顺序

注意:

1.我们开发中坚决杜绝使用通配符去查找所有列(敲黑板!!!),如果需要查询所有字段,我们必须一个一个把字段全部写出去进行查找。使用通配符*会极大降低SQL执行性能

2.开发的原则是需要什么数据去拿什么数据,不去拿跟业务无关的数据以消耗磁盘IO

检索不同的值


SELECT DISTINCT column FROM table;


DISTINCT关键字表示数据库只返回不同的值

注意:

DISTINCT作用于所有列。如果是检索多行数据,使用DISTINCT会检索过滤这几个字段全部都相同的字段,后续随着进度的深入会补充对应的优化方案

限制返回结果

SQLServer、Oracle、Mysql对这部分限制语法有各自的写法未做统一,这里采用Mysql的语法进行解释


SELECT * FROM table LIMIT 1,1;


该SQL语句的意思是返回从第1行开始一共1行数据

注意:LIMIT 1,1中第一个被检索行元素下标是从第0行开始的,因此第一行是从0开始,1实际上在数据库中表示的是第2行

检索排序

本质上,检索的数据并不是随机显示的,如果不排序,数据一般将会按照它底层表中出现的顺序进行显示,有可能会是数据最初添加的顺序。但是如果数据随后进行过更新或删除,那么这个顺序有可能不依赖该排序顺序。关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有任何意义。

ORDER BY

通常我们使用ORDER BY来实现对检索结果的排序


SELECT * FROM table ORDER BY column;


该SQL语句表示查询结果根据column进行排序

注意:

1.ORDER BY子句的位置,在指定一条ORDER BY子句时,应该保证它是SELECT语句的最后一条语句,如果不是最后的语句,将会出现错误消息

2.通常我们是选择使用要显示的列进行排序,但是实际上并不一定要这样,用非检索的列排序也是完全可以的

按多个列进行排序


SELECT * FROM table ORDER BY column1,column2;


指定列名,列名之间用逗号隔开即可。

我们需要注意的是,按多个列进行排序的时候,排序的顺序按照顺序进行规定,如果出现相同的column1,则开始使用column2进行排序,否则默认还是从第一个字段开始排序

指定排序方向

ORDER BY默认采用升序排序(ASC),如果想要采用降序排序,我们可以使用关键字DESC


SELECT * FROM table ORDER BY column DESC;


注意:

1.DESC只作用到位于其前面的列名

2.对于多个字段排序,如果要在每一列进行降序排序,必须每个字段指定DESC关键字

相关文章
|
4月前
|
SQL
SQL IN
【11月更文挑战第05天】
52 5
|
10月前
|
SQL 存储 数据管理
SQL
SQL
65 0
|
10月前
|
SQL 关系型数据库 MySQL
盘点6个SQL小技巧
这篇内容介绍了数据库查询中的各种JOIN操作,包括内联接(inner join)、左外联接(left outer join)、右外联接(right outer join)和全联接(full outer join)。其中,LEFT JOIN可以用于替换NOT EXISTS和NOT IN的查询。接着,文章展示了如何查询每个类别中的最高分记录,以及如何利用GROUP BY和LIMIT获取每个类别中的前N个记录。此外,还提到了MySQL 8引入的新语法LATERAL JOIN,用于更方便地处理这类问题。最后,文章提到了如何高效地统计不同时间范围内的数据量以及对比两个表之间的数据差异。
130 2
|
9月前
|
SQL Java 数据库连接
SQL中为什么不要使用1=1
本文探讨了在SQL查询中使用`1=1`的现象及其背后的原因与问题。开发人员有时使用`1=1`作为始终为真的条件来方便动态构建SQL语句,但这样做可能会带来性能问题,尽管现代数据库查询优化器可能能优化掉这种条件,但在复杂查询或特定系统中仍可能影响效率。此外,`1=1`还降低了代码的可读性和跨数据库的兼容性。建议使用更佳实践,如MyBatis的动态SQL标签或Entity Framework的函数式查询,以避免不必要的条件。代码质量的重要性在于每一行代码都应有其明确的目的,避免浪费计算资源。
125 0
|
SQL 存储 数据库
SQL 能做什么?
SQL 能做什么?
122 0
|
SQL 网络协议 Docker
sql审核
sql审核
406 0
|
SQL 数据库
了解SQL
了解SQL
135 0
|
SQL 存储 缓存
或许你不知道的12条SQL技巧
或许你不知道的12条SQL技巧
|
存储 SQL 数据库
SQL必知必会(二)
表中的数据都是按行来存储的,所保存的每个记录存储在自己的行内。如果将表想象为网格,网格中垂直的列为表列,水平行为表行。