目录

一:目标

二:SELECT语句

三:检索单个列

四:检索多个列

五:检索所有列

六:检索不同的行

七:限制结果

八:使用完全限定的表名


一:目标


             使用 SELECT 语句从表中检索一个或多个数据列




二:SELECT语句

             SQL语句是由简单的英语单词构成的。这些单词称为关键字,每个SQL语句都是由一个或多个关键字构成的。大概,最经常使用的SQL语句就是SELECT语句了。它的用途是从一个或多个表中检索信息。


              为了使用 SELECT检索表数据,必须至少给出两条信息——想选择什么,以及从什么地方选择。




三:检索单个列


SELECT bname FROM t_book;



         上述语句利用 SELECT 语句从t_book 表中检索一个名为bname 的列。所需的列名在 SELECT 关键字之后给出,FROM关键字指出从其中检索数据的表名。





mysql怎么筛选数据 mysql怎么检索_mysql怎么筛选数据


 

         未排序数据 :如果读者自己试验这个查询,可能会发现显示输出的数据顺序与这里的不同。出现这种情况很正常。如果没有明确排序查询结果,则返回的数据的顺序没有特殊意义。返回数据的顺序可能是数据被添加到表中的顺序,也可能不是。只要返回相同数目的行,就是正常的。


        结束 SQL 语句 多条 SQL 语句必须以分号(;)分隔。MySQL如同多数 DBMS 一样,不需要在单条 SQL语句后加分号。但特定的 DBMS 可能必须在单条SQL语句后加上分号。当然,如果愿意可以总是加上分号。事实上,即使不一定需要,但加上分号肯定没有坏处。如果你使用的是 mysql命令行,必须加上分号来结束 SQL 语句。


        SQL 语句和大小写 : 请注意, SQL语句不区分大小写,因此SELECT 与 select 是相同的。同样,写成 Select也没有关系。许多 SQL开发人员喜欢对所有SQL关键字使用大写,而对所有列和表名使用小写,这样做使代码更易于阅读和调试。不过,一定要认识到虽然SQL是不区分大小写的,但有些标识符(如数据库名、表名、列名)可能不同:在MySQL 4.1及之前的版本中,这些标识符默认是区分大小写的;在MySQL 4.1.1版本中,这些标识符默认是不区分大小写的。最佳方式是按照大小写的惯例,且使用时保持一致。


        使用空格 : 在处理 SQL 语句时,其中所有空格都被忽略。SQL语句可以在一行上给出,也可以分成许多行。多数SQL开发人员认为将 SQL 语句分成多行更容易阅读和调试。


四:检索多个列


           要想从一个表中检索多个列,使用相同的 SELECT语句。唯一的不同是必须在 SELECT 关键字后给出多个列名,列名之间必须以逗号分隔。


           注意逗号: 在选择多个列时,一定要在列名之间加上逗号,但最后一个列名后不加。如果在最后一个列名后加了逗号,将出现错误。


SELECT bid,bname FROM t_book;

mysql怎么筛选数据 mysql怎么检索_mysql_02

 

五:检索所有列


               除了指定所需的列外(如上所述,一个或多个列),SELECT语句还可以检索所有的列而不必逐个列出它们。这可以通过在实际列名的位置使用星号(* )通配符来达到


SELECT * FROM t_book;

mysql怎么筛选数据 mysql怎么检索_mysql怎么筛选数据_03


          使用通配符 : 一般,除非你确实需要表中的每个列,否则最好别使用*通配符。虽然使用通配符可能会使你自己省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能


          检索未知列 : 使用通配符有一个大优点。由于不明确指定列名(因为星号检索每个列),所以能检索出名字未知的列。


六:检索不同的行


           正如所见, SELECT返回所有匹配的行。但是,如果你不想要每个值每次都出现,怎么办?例如,假如你想得出t_book表中产品的所有btype:


mysql怎么筛选数据 mysql怎么检索_mysql怎么筛选数据_04


 


问题:如何检索出有不同值的列表呢?


方法:使用 DISTINCT关键字,顾名思义,此关键字指示MySQL只返回不同的值。

         如果使用DISTINCT 关键字,它必须直接放在列名的前面。


SELECT DISTINCT btype FROM t_book;

mysql怎么筛选数据 mysql怎么检索_mysql_05


              不能部分使用 DISTINCT DISTINCT关键字应用于所有列而不仅是前置它的列。如果给出SELECT DISTINCT bid,bname,除非指定的两个列都不同,否则所有行都将被检索出来。


七:限制结果

       SELECT语句返回所有匹配的行,它们可能是指定表中的每个行,为了返回第一行或前几行,可使用LIMIT子句。


SELECT * FROM t_book LIMIT 5;

mysql怎么筛选数据 mysql怎么检索_mysql怎么筛选数据_06


      此语句使用 SELECT 语句检索单个列。 LIMIT 5 指示 MySQL返回不多于 5 行.


       为得出下一个 5 行,可指定要检索的开始行和行数,如下所示:


SELECT * FROM t_book LIMIT 5,5;

mysql怎么筛选数据 mysql怎么检索_mysql怎么筛选数据_07


         LIMIT 5, 5 指示 MySQL 返回从行 5 开始的 5行。第一个数为开始位置,第二个数为要检索的行数。


         所以,带一个值的 LIMIT总是从第一行开始,给出的数为返回的行数,带两个值的 LIMIT 可以指定从行号为第一个值的位置开始。


       行 0  :检索出来的第一行为行 0 而不是行 1 。因此,LIMIT 1, 1将检索出第二行而不是第一行。


       在行数不够时 , LIMIT中指定要检索的行数为检索的最大行数。如果没有足够的行(例如,给出 LIMIT 10, 5 ,但只有13行), MySQL 将只返回它能返回的那么多行。


        MySQL 5 的 LIMIT 语法 LIMIT 3, 4 的含义是从行 4 开始的3行还是从行 3 开始的 4 行?如前所述,它的意思是从行3开始的4行,这容易把人搞糊涂。由于这个原因, MySQL 5 支持 LIMIT的另一种替代语法。LIMIT4 OFFSET 3 意为从行 3 开始取 4 行,就像 LIMIT 3, 4 一样。


八:使用完全限定的表名


           迄今为止使用的 SQL例子只通过列名引用列。也可能会使用完全限定的名字来引用列(同时使用表名和列字)


SELECT t_book.btype FROM t_book;

mysql怎么筛选数据 mysql怎么检索_数据库_08

这条SQL语句在功能上等于最开始使用的那一条语句,但这里指定了一个完全限定的列名。

表名也可以是完全限定的,如下所示:

SELECT t_book.btype FROM db_shopping.t_book;

mysql怎么筛选数据 mysql怎么检索_java_09

这条语句在功能上也等于刚使用的那条语句。