前言
简单整理一下sql 排序与过滤。
正文
在这里需要创建一下一个数据库实例。
为了方便直接用docker 创建一下啊,方便简洁。
https://hub.docker.com/_/mysql
按照上面安装一下。
有几个基本的数据库状态需要了解一下。
显示有多少数据库:
show databases:
use gogs;
show tables;
show columns from version.
SHOW COLUMNS 要求给出一个表名(这个例子中的 FROM customers),它对每个字段返回一行,行中包含字段名、数据类型、是否允许NULL、键信息、默认值以及其他信息(如字段cust_id的auto_increment)。
简单查询语句
简单介绍一下查询语句。
检索单列:
SQL语句和大小写 请注意,SQL语句不区分大小写,因此SELECT与select是相同的。同样,写成Select也没有关系。许多SQL开发人员喜欢对所有SQL关键字使用大写,而对所有列和表名使用小写,这样做使代码更易于阅读和调试。
这里可以养好习惯,将关键字进行大写,然后将表名和列名进行小写。
使用空格 在处理SQL语句时,其中所有空格都被忽略。SQL语句可以在一行上给出,也可以分成许多行。多数SQL开发人员认为将SQL语句分成多行更容易阅读和调试。
检索多个列:
在这里面通过逗号隔开。
如果需要列出全部的列,可以通过select * from version;
使用通配符 一般,除非你确实需要表中的每个列,否则最好别使用*通配符。虽然使用通配符可能会使你自己省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能。
如果想检测出不同的行,那么可以使用ditinct,这样会进行去重。
不能部分使用DISTINCT DISTINCT关键字应用于所有列而不仅是前置它的列。
如果查询出来10行,但是我们只需要5,那么可以使用limit。
比如 select * from version limit 5;
这样就只会取出5条来了。
然后呢,这个limit 有两个字段可以填写。
比如:
select * from version limit 5,5;
LIMIT 5, 5指示MySQL返回从行5开始的5行。第一个数为开始位置,第二个数为要检索的行数。
这里的返回的5行,是不包括第5行的。
所以对于mysql 来说分页真的是太简单了。
MySQL 5的LIMIT语法 LIMIT 3, 4的含义是从行4开始的3行还是从行3开始的4行?如前所述,它的意思是从行3开始的4行,这容易把人搞糊涂。 由于这个原因,MySQL 5支持LIMIT的另一种替代语法。LIMIT4 OFFSET 3意为从行3开始取4行,就像LIMIT 3, 4一样。
所以在写code中,最好使用offset 这个关键字,工程以通用为第一要素。
有一个问题,假设有两张表都有列名a1。
那么select a1 from table1,table2,这个a1 到底是table1还是table2呢?
所以需要我们完全限定表名:select table1.a1 from table1,table2