MySQL 数据库沿用SQL的SELECT语句来查询数据。
语法
SELECT column_name1,column_name2 FROM table_name [WHERE clause][LIMIT N][ OFFSET M]
示例数据
我们以Customers表为例,来讲解MySQL中的数据查询功能。
查询单列
即只显示某一列数据,我们以查询Customers表中的姓名为例,可以这样写SQL代码:
SELECT `姓名` FROM customers
结果为:
查询多列
与查询单列的写法类似,不同的是必须在SELECT后面给出多个列名,列名用逗号(,)隔开,例如我们要查询Customers表中客户的姓名和地址,可以这样写:
SELECT `姓名`,`地址` FROM customers
结果为:
查询所有列
除了指定列名以为,SELECT查询语句还可以查询表的所有列名而不必一一列出来,在SELECT后面使用通配符星号(*)来达到该作用。例如我们想查看Customers表里的所有数据,可以这样写:
SELECT * FROM customers;
结果为:
其实就是我们上面的示例数据的结果。
查询结果去重
当我们查询Customers中的城市列时,发现返回的结果中广州和北京都重复了。要在查询结果中去掉重复行,我们可以使用关键字:DISTINCT来去重。如下:
SELECT DISTINCT 城市 FROM customers;
结果为:
注意:DISTINCT不能部分去重,当它后面有多列时,只有当这些列都重复时DISTINCT才会去掉重复的,例如:
SELECT DISTINCT 城市,邮编 FROM customers;
因为城市和邮编都是一一对应的,这里使用DISTINCT可以去掉重复的数据,结果为:
但是如果查询customers表中的客户ID和城市时,使用DISTINCT,则不会对城市单独去重了,因为客户ID没有对应的重复值
SELECT DISTINCT 客户ID,城市 FROM customers;
结果为:
返回指定行数
如果一张表的数据行非常多,但是我们又不想完成显示所有记录行,这时候可以使用LIMIT关键字来返回指定的行数,例如:返回customers表中的前3行
SELECT * FROM customers LIMIT 3;
结果为:
如果要得到第4-6行(即下3行)要怎么操作呢?这时我们可以使用LIMIT的第二个参数来实现,例如:
SELECT * FROM customers LIMIT 3,3;
结果为:
其中第一个3表示起始行的下标,第二个3表示返回的行数。
注意:当LIMIT使用两个参数时,第一个参数的起始下标为0开始而不是1,所以上面的第一个3实际上是第4行开始,务必记住!
查询带表名的列
当我们之后讲到关联查询时,如果两个表里面有相同的列名时,为了区分,我们会在列名前面添加表名来区别,例如:
SELECT customers.`客户ID`,orders.`客户ID` FROM customers,orders where customers.`客户ID`=orders.`客户ID`
结果为: