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关键字