❤️🔥:数据表示 :从上述输出可以看到,SOL语句一般返回原始的无格式的数据。数据的格式化是一个表示问题,而不是一个检索问题。因此,表示(对齐和显示上面的价格值,用货币符号和逗号表示其金额)一般在显示该数据的应用程序中规定。一般很少使用实际检索出的原始数据(没有应用程序提供的格式)
😇检索所有列
除了指定所需的列外(如上所述,一个或多个列),SELECT语句还可以检索所有的列而不必逐个列出它们。这可以通过在实际列名的位置使用星号(*)通配符来达到,如下所示:
输入
SELECT * FROM products;
分析
如果给定一个通配符(*),则返回表中所有列。列的顺序一般是列在表定义中出现的顺序。但有时候并不是这样的,表的模式的变化(如添加或删除列)可能会导致顺序的变化。
使用通配符
使用通配符 一般,除非你确实需要表中的每个列,否则最好别使用*通配符。虽然使用通配符可能会使你自己省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能
检索未知列
检索未知列 使用通配符有一个大优点。由于不明确指定列名(因为星号检索每个列),所以能检索出名字未知的列
👻检索不同的行
正如所见,SELECT返回所有匹配的行。但是,如果你不想要每个值每次都出现,怎么办?例如,假如你想得出products表中产品的所有供应商ID:
输入
SELECT vend_id FROM products;
输出
SELECT语句返回14行(即使表中只有4个供应商),因为products表中列出了14个产品。那么,如何检索出有不同值的列表呢?
解决办法:是使用DISTINCT关键字,顾名思义,此关键字指示MySQL只返回不同的值。
输入
SELECT DISTINCT vend_id FROM products;
分析
SELECT DISTINCT vend id告诉MySQL只返回不同(唯一)的vend id行,因此只返回4行,如下面的输出所示。如果使用DISTINCT关键字,它必须直接放在列名的前面。
输出
💥注意 : 不能部分使用DISTINCT DISTINCT关键字应用于所有列而不仅是前置它的列。如果给出SELECT DISTINCT vend_id,prod_price,除非指定的两个列都不同,否则所有行都将被检索出来。
🤣限制结果
SELECT语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可使用LIMIT子句。下面举一个例子:
输入
SELECT prod_name FROM products LIMIT 5;
分析
此语句使用SELECT语检索单个列。LIMIT 5指示MySOL返回不多于5行。此语句的输出如下所示
输出
为了得出下一个5行,可指定要检索的开始行和行数,如下所示:
输入
SELECT prod_name FROM products LIMIT 5,5;
分析
LIMIT5,5指示MySQL返回从行5开始的5行。第一个数为开始位置,第二个数为要检索的行数。此语句的输出如下所示:
输出
所以,带一个值的LIMIT总是从第一行开始,给出的数为返回的行数。带两个值的LIMIT可以指定从行号为第一个值的位置开始。
行0 :检索出来的第一行为行0而不是行1。因此,LIMIT1,1将检索出第二行而不是第一行。
在行数不够时 LIMIT中指定要检索的行数为检索的最大行数。如果没有足够的行(例如,给出LIMIT 10,5,但只有13行),MySOL将只返回它能返回的那么多行
MySQL5的LIMIT语法 LIMIT3,4的含义是从行4开始的3行还是从行3开始的4行?如前所述,它的意思是从行3开始的4行,这容易把人搞糊涂。
由于这个原因,MySOL 5支持LIMIT的另一种替代语法LIMIT40FFSET3意为从行3开始取4行,就像LIMIT34一样。
🤣使用完全限定的表名
迄今为止使用的SOL例子只通过列名引用列。也可能会使用完全限定的名字来引用列(同时使用表名和列字)。请看以下例子:
输入
SELECT products.prod_name FROM crashcourse.products;
这条语句在功能上也等于刚使用的那条语句(当然,假定products表确实位于crashcourse数据库中)。
🤣如何巩固学习
提示:在学习的过程中,我们需要先自行进行思考,而不是一遇到不会的就放弃思考直接看答案,如果最后遇到真的不会的题目,我们可以适当的进行观看答案,看自己的思路是否正确,在作出正确的判断
小结
本章学习了如何使用SQL的SELECT语句来检索单个表列、多个表列以及所有表列。下一篇文章将讲授如何排序检索出来的数据。
好啦今日的分享到这里就结束啦,我是爱你们的M malloc希望可以帮助到你们噢,最后别忘记三连啦!!