检索两要点:
- 检索什么
- 从哪里检索
语法就是
SELECT 列名 #检索哪一列
FROM 表 #从哪张表检索
现在有一个表,名为products。我们看一下这张表里有哪些列(字段)
DESCRIBE products;
看到有vend_id列(供应商id),好,现在来看看这一列是什么样的
SELECT vend_id
FROM products;
可以看到vend_id列中的数据,你会发现里面有很多重复的供应商id,现在我想看看总共有几个供应商,用DISTINCT关键字来过滤掉重复的数据
SELECT DISTINCT vend_id
FROM products;
发现供应商一共就4家。
注意:DISTINCT不能部分运用,如果是置于多个列名前
SELECT DISTINCT vend_id, prod_name
FROM products;
DISTINCT将会过滤的是两列都相同的数据,一个列数据相同,另一个不同,则当做不同。把这两列当成一个元组来看(vend_id, prod_name)。
以上都是检索单个列的,那么能不能检索多个列呢??
很简单,列名之间加逗号就行,不过最后一个列名不要加,否则报错
SELECT prod_id, vend_id, prod_name
FROM products
当然,如果你想看下整张表的内容,可以使用通配符*
SELECT *
FROM products;
Tips:
- SQL不区分大小写,但是习惯上,关键字要大写,列名和表名小写
- SQL语句会省略空行,因此为了阅读体验,建议像上面那样多行书写
- SQL语句结尾用分号;
- 由于上面都没有按照某种顺序检索,因此得出的数据的顺序是没有意义的
上面我们检索列的时候都是把该列所有行都检索出来,但其实我们可以选择其中的一部分行来检索。使用LIMIT关键字就能实现部分检索
SELECT vend_id
FROM products
LIMIT 5
显示一共输出了5行,但是这是从行0(即第一行)开始的。我们是可以选择开始行的。LIMIT 5 == LIMIT 0,5 意为从行0开始的5行
格式: LIMIT 开始行, 行数
如果我们检索超过最大行数会怎样?不怎么样,超过部分直接忽略,最大多少就是多少。比如一共13行,现在从行10取5行LIMIT 10, 5
但实际上得到的只能是行10,行11,行12 这三行,而不是5行