MySQL数据库——检索数据(一)

为了使用SELECT检索表的数据,必须至少给出两条信息:(1)想选择什么(2)从什么地方选择

part 1:检索单个列

SELECT userName FROM yellowriver

需要说明的是这是还没有排序的检索并且数据也没有进行过滤 。 多条SQL语句必须以;分隔。 并且SQL语句是不区别大小写的 我们提倡对所有SQL关键字使用大写 而对所有列和表名使用小写,这样使代码更易于阅读和调试

part 2 检索多个列:

SELECT userName, email FROM yellowriver

说明下,在SELECT关键字后的列出多个列名,列名之间必须以逗号分隔。
同时,从结果中得出,SQL语句一般返回的是原始的、无格式的数据。但是数据的格式化是一个表示问题,而不是检索问题。

part 3 检索所有列

我们可以通过使用 * 就是通配符来完成SELECT * FROM yellowriver

一般,除非确实需要表中难过的每个列,否则最好别使用 * 通配符。 尽管省事儿,但是会降低检索和程序的性能 。

part 4 检索不同的行

SELECT返回所有匹配的行。但是,如果你不想要每个值都出现,那么我们可以使用DISTINCT关键字,此关键字指示MySQL值返回不同的值。

SELECT DISTINCT user_password FROM users

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

part 5 限制结果:

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

SELECT users.user_password FROM users LIMIT 3;

LIMIT 3 指示地是MySQL返回不多于五行 。

SELECT users.user_password FROM users LIMIT 1,2;

这个LIMIT表示的是从第1行(从0开始,注意)的两行数据 。 在行数不够时候,MySQL会尽力返回能返回的行数。

part 6 使用完全限定的表名 :

SELECT products.prod_name FROM crashcourse.products;

上面我们把列的表名也带上了,就是使用了完全限定的表名 。

part 7 排序数据
我们有时会希望检索出来的数据,能够以一定的顺序来显示。 为了明确地排序用SELECT语句检索出的数据,可使用ORDER BY子句。 ORDER BY子句取一个或多个列的名字,据此对输出排序 。

SELECT users.user_name, users.user_id FROM users ORDER BY user_id

这里用了id的数字来排序,如果是字符串的话,就是字母顺序来排序 。

part 8 按多个列排序

我们很可能要按不止一个列进行数据排序。例如,如果显示雇员清单,我们希望可以按照姓和名进行排序(先排姓再排名)。
我们只需要在ORDER BY命令后,列名之间用逗号分开即可。
像这样:

SELECT users.user_name, users.user_age FROM users ORDER BY user_age,users.user_name

重要的是理解在多个列排序的时候,排序完全按所规定的顺序进行 。

part 9 指定排序方向

数据的排序不限于升序排序(从A到Z)。这只是默认的排序顺序,还可以使用 ORDER BY(从Z到A)以降序来排序。为了进行降序排序,我们需要使用DESC关键字。
如下:

SELECT users.user_name, users.user_age FROM users ORDER BY user_age DESC,users.user_name ;

我们可以看见,只需要在需要降序的列的后面,加上DESC关键字就可以了 。注意!DESC关键字只应用到其前面的列名 。 如果想在多个列上进行降序排序,必须对每个列指定DESC关键字 。

使用ORDER BY 和 LIMIT 组合 能够找出一个列中的最高 或 最低值 。

SELECT prod_price FROM products ORDER BY prod_price DESC LIMIT 1 ;

上面的语句将帮我们从 排序好的中取出头部数据 。

猜你喜欢

转载自blog.csdn.net/qq_36120793/article/details/78736773