MySQL基础教程——查询数据

MySQL 数据库沿用SQL的SELECT语句来查询数据。


语法


SELECT column_name1,column_name2 FROM table_name [WHERE clause][LIMIT N][ OFFSET M]


示例数据

我们以Customers表为例,来讲解MySQL中的数据查询功能。

MySQL基础教程——查询数据



查询单列

即只显示某一列数据,我们以查询Customers表中的姓名为例,可以这样写SQL代码:


SELECT `姓名` FROM customers


结果为:

MySQL基础教程——查询数据


查询多列

与查询单列的写法类似,不同的是必须在SELECT后面给出多个列名,列名用逗号(,)隔开,例如我们要查询Customers表中客户的姓名和地址,可以这样写:


SELECT `姓名`,`地址` FROM customers


结果为:

MySQL基础教程——查询数据


查询所有列

除了指定列名以为,SELECT查询语句还可以查询表的所有列名而不必一一列出来,在SELECT后面使用通配符星号(*)来达到该作用。例如我们想查看Customers表里的所有数据,可以这样写:


SELECT * FROM customers;

结果为:

MySQL基础教程——查询数据

其实就是我们上面的示例数据的结果。


查询结果去重

当我们查询Customers中的城市列时,发现返回的结果中广州和北京都重复了。要在查询结果中去掉重复行,我们可以使用关键字:DISTINCT来去重。如下:


SELECT DISTINCT 城市 FROM customers;


结果为:

MySQL基础教程——查询数据

注意:DISTINCT不能部分去重,当它后面有多列时,只有当这些列都重复时DISTINCT才会去掉重复的,例如:


SELECT DISTINCT 城市,邮编 FROM customers;

因为城市和邮编都是一一对应的,这里使用DISTINCT可以去掉重复的数据,结果为:


MySQL基础教程——查询数据


但是如果查询customers表中的客户ID和城市时,使用DISTINCT,则不会对城市单独去重了,因为客户ID没有对应的重复值


SELECT DISTINCT 客户ID,城市 FROM customers;

结果为:


MySQL基础教程——查询数据


返回指定行数

如果一张表的数据行非常多,但是我们又不想完成显示所有记录行,这时候可以使用LIMIT关键字来返回指定的行数,例如:返回customers表中的前3行


SELECT * FROM customers LIMIT 3;


结果为:

MySQL基础教程——查询数据


如果要得到第4-6行(即下3行)要怎么操作呢?这时我们可以使用LIMIT的第二个参数来实现,例如:


SELECT * FROM customers LIMIT 3,3;

结果为:

MySQL基础教程——查询数据

其中第一个3表示起始行的下标,第二个3表示返回的行数。

注意:当LIMIT使用两个参数时,第一个参数的起始下标为0开始而不是1,所以上面的第一个3实际上是第4行开始,务必记住!


查询带表名的列

当我们之后讲到关联查询时,如果两个表里面有相同的列名时,为了区分,我们会在列名前面添加表名来区别,例如:

SELECT customers.`客户ID`,orders.`客户ID` 
FROM customers,orders
where customers.`客户ID`=orders.`客户ID`


结果为:

MySQL基础教程——查询数据

上一篇:Nhibernate+SQLite 入门实例指南一


下一篇:周末直播|Flink、Hologres、AI等热门话题全都安排!