SQL专栏

SQL基础知识汇总

SQL高级知识汇总

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

语法

SELECT column_name1,column_name2 

FROM table_name 

[WHERE clause]

[LIMIT N][ OFFSET M]

示例数据

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

mysql查询列表某数据排在第几个 mysql查询一列数据_mysql查询列表某数据排在第几个

查询单列

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

SELECT `姓名` FROM customers

结果为:

mysql查询列表某数据排在第几个 mysql查询一列数据_sqlserver_02

查询多列

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

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

结果为:

mysql查询列表某数据排在第几个 mysql查询一列数据_sql_03

查询所有列

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

SELECT * FROM customers;

结果为:

mysql查询列表某数据排在第几个 mysql查询一列数据_mysql查询列表某数据排在第几个

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

查询结果去重

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

SELECT DISTINCT 城市 FROM customers;

结果为:

mysql查询列表某数据排在第几个 mysql查询一列数据_mysql查询列表某数据排在第几个_05

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

SELECT DISTINCT 城市,邮编 FROM customers;

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

mysql查询列表某数据排在第几个 mysql查询一列数据_sql_06

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

SELECT DISTINCT 客户ID,城市 FROM customers;

结果为:

mysql查询列表某数据排在第几个 mysql查询一列数据_sql_07

返回指定行数

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

SELECT * FROM customers LIMIT 3;

结果为:

mysql查询列表某数据排在第几个 mysql查询一列数据_css_08

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

SELECT * FROM customers LIMIT 3,3;

结果为:

mysql查询列表某数据排在第几个 mysql查询一列数据_sql_09

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

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

查询带表名的列

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

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

结果为:

mysql查询列表某数据排在第几个 mysql查询一列数据_css_10

其中的关联查询我们后面章节为讲述,此处只是为了告诉大家区别列名的用法。