1.概述
SQl中的查询使用 SELECT 关键字,其是最常用用的SQL语句,可以从一个或多个表中检索数据信息;
使用 SELECT 语句至少要给出俩条信息:
- 想查询什么
- 想从哪里查询
其根据查询结果的不同,可以分为以下几种查询类型:
- 查询单个列;
- 查询多个列;
- 查询所有列;
- 查询不同的行;
- 限制查询返回结果;
2.数据的查询
2.1 查询单个列
我们从简单 SELECT 语句开始学习;
输入:
SELECT prod_name
FROM products;
输出:

上述语句使用 SELECT 从products 表中查询一个名字为 prod_name 的列;
在查询语句中,需要查询的列名在 SELECT 关键字之后给出,需要从哪张表中获取数据在 FROM 关键字后给出;使用这条语句查询可以获取该列所有的内容;
这种简单的查询,其结果的顺序可能并不完全一致,在SQL 中,如果没有明确给定排序查询结果,那么返回的数据是无序的,其顺序没有任何意义,只要完整返回全部的数据,就是正确的;
2.2 查询多个列
如果想在一张表中查询多个列,只需要在 SELECT 语句后给出多个列名,列名之间用逗号分隔即可,但最后一个列名一定记得不要加逗号,不然 DBMS 会认为你并没有输入完成,还有后续的列需要查询而导致报错,如:
输入:
SELECT prod_id,prod_name,prod_price
FROM products;
输出:

与查询单个列一样,这条SQL语句使用 SELECT 关键字,在表products中查询 prod_id,prod_name,prod_price 三列的数据,列名之间使用逗号分隔;
2.3 查询所有列
除了查询指定的列之外,SELECT 语句还可以查询表中所有的列,在需要给定列名的位置给定通配符 * 即可实现这样的效果,如:
输入:
SELECT * FROM products;
输出:

此条SQL 语句将返回表中所有列的数据,返回列的顺序一般是列在表中定义的顺序,但有时候表的模式变化会导致返回的顺序并不是严格按照列的顺序进行变化的;
一般情况下,如果你确实需要表中的所有数据,才会使用通配符查询所有数据,否则最好不要使用通配符,尤其在实际开发中,这样的SQL语句在代码中会降低查询和应用程序的性能,此处也是最基本的SQL优化的面试题;
2.4 查询不同的行(去除数据中重复的值)
在查询列中数据时,会返回所有行的数据,如输入:
输入:
SELECT vend_id
FROM products;
输出:

会返回此列中所有的数据,即使数据中有重复的值也会全部返回,此时我们可以使用 DISTINCT 关键字,只返回不同的值,如:
输入:
SELECT DISTINCT vend_id
FROM products;
输出:

但是要注意,使用 DISTINCT 关键字会将其应用于所有的列,而不是仅仅是前置它的列,如果查询的是多个字段,那么去重的是多个字段中完全相同的数据,单个字段中相同的值并不会产生去重效果了;
2.5 限制查询返回结果(按照要求返回限定的行)
SELECT 返回所有匹配的行,为了指定返回数量的行,可以使用 LIMIT 子句,如:
输入:
SELECT prod_name
FROM products
LIMIT 5;
输出:

这条SQL语句只会返回查询结果的前5行,为了得到下一个3行的数据,即6,7,8行的数据,可以指定要查询数据开始的行和返回的行数,如:
输入:
SELECT prod_name
FROM products
LIMIT 5,3;
输出:

这条SQL语句返回的结果为全部数据的第5-8行,第一个数字为开始的行数,第二个数字为返回的行数;
要注意的是,查询出的第一行数据为行0而不是行1,所以LIMIT1,1将查询出第二行的数据,而不是第一行;
在返回规定行数的数据时,如果表中并没有那么多行的数据,那只返回其能返回行数的最大值,如表中共有7行数据,但要求返回9行数据,那么实际查询结果只会返回7行数据;
3.使用完全限定表名
在大多数使用场景中,只通过列名引用例,但是我们也可以通过完全限定名来进行引用,如:
输入:
SELECT DISTINCT products.vend_id
FROM products;
输出:

其功能与普通的列名引用完全一致,其表明也可以通过此方法进行完全限定引用,如:
输入:
SELECT DISTINCT products.vend_id
FROM study2022.products;
输出:

假定表 products 在数据库 study2022中,那么此语句功能与上面的语句完全一致,当然大多数情景下都不会用到,因为在日常开发中,同一数据库下不可能存在俩张表名相同的表,也不可能在操作表前不限定操作的数据库;
3067




被折叠的 条评论
为什么被折叠?



