从 Products
表中检索一个名为 prod_name
的列;
SELECT prod_name
FROM Products;
prod_name
的所有行,结果没有过滤没有排序。从 Products
表中检索名为 prod_id
, prod_name
, prod_price
列;
SELECT prod_id, prod_name, prod_price
FROM Products;
获取 Products
表中所有列;
SELECT *
FROM Products;
SELECT *
将返回表中所有列,列的顺序一般是表中出现的物理顺序,但是有些时候也并非如此。获取 Products
表中所有供应商 ID;
SELECT DISTINCT vend_id
FROM Products;
DISTINCT
使得 vend_id
列的每个结果只出现一次。DISTINCT
关键字作用于所有检索的列,比如 SELECT DISTINCT vend_id, prod_price
将按照两个列 vend_id
与 prod_price
的组合罗列出来。获取 Products
表中五行数据;
SELECT TOP 5 prod_name
FROM Products;
TOP
关键字限制最多返回多少行,注意并不代表最大五行,只返回最多五行结果。-- DB2 数据库
SELECT prod_name
FROM Products
FETCH FIRST 5 ROWS ONLY;
-- ORACLE 数据库
SELECT prod_name
FROM Products
WHERE ROWNUM <= 5;
-- MySQL、MariaDB、PostgreSQL、SQLite 数据库
SELECT prod_name
FROM Products
LIMIT 5;
LIMIT
与 OFFSET
结合,LIMIT
指定返回的行数,OFFSET
执行从哪里开始。LIMIT 5 OFFSET 5
代表从第5行起的5行数据。不同的数据库管理系统中注释规则有所不同,但是大差不差,读者在不同的 DBMS 自行尝试;
-- 这是一条行内注释
# 这个行内注释方法只有部分 DBMS 支持
/*
这是一个多行注释方法
大部分 DBMS 都适用
*/
s
q
l
sql
sql 使用 ORDER BY
子句进行排序;
检索 Products
表中 prod_name
列,并将检索结果以字母顺序排序;
SELECT prod_name
FROM Products
ORDER BY prod_name;
ORDER BY
子句的位置必须保证是语句中最后一列;对 Products
的多列检索结果首先按照价格、然后按照名称排序;
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name;
对 Products
的多列检索结果按照相对列位置进行排序;
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY 2,3;
prod_price
然后按相对位置3 prod_name
进行排序。数据排序默认方向为:“升序”(从A-Z)方向。升序排序的关键词为 ASC
,Ascending;
有升序就有降序,降序排序的关键词为 DESC
,即 Descending;
-- DESC 案例
SELECT prod_id, prod_name, prod_price
FROM Products
ORDER BY prod_price DESC;
SELECT prod_id, prod_name, prod_price
FROM Products
ORDER BY prod_price DESC, prod_name;
答案是先按照 prod_price
降序,对其中结果按照 prod_name
升序方向排序。
–
以上