脚踏实地的大梦想家

脚踏实地的大梦想家

基本检索数据

检索单个列

Products 表中检索一个名为 prod_name 的列;

SELECT prod_name
FROM Products;
  • s q l sql sql 语句将返回表中列 prod_name 的所有行,结果没有过滤没有排序。
  • s q l sql sql 语句以 ; 结束,多条 s q l sql sql 语句以分号间隔。
  • s q l sql sql 不区分大小写。
  • 系统在处理 s q l sql sql 语句时,其中所有的空格都将被忽略。所以 s q l sql sql 语句可以全部写在一行,也可以写在多行。当然建议写成多行,便于理解。

检索多个列

Products 表中检索名为 prod_id, prod_name, prod_price 列;

SELECT prod_id, prod_name, prod_price
FROM Products;
  • s q l sql sql 检索多个列,在列名之间加逗号。但是一定注意的是,不要在最后一个列名后加逗号,否则程序错误。

检索所有列

获取 Products 表中所有列;

SELECT *
FROM Products;
  • * 称为通配符,SELECT * 将返回表中所有列,列的顺序一般是表中出现的物理顺序,但是有些时候也并非如此。

检索不同的值

获取 Products 表中所有供应商 ID;

SELECT DISTINCT vend_id
FROM Products;
  • DISTINCT 使得 vend_id 列的每个结果只出现一次。
  • 注意 DISTINCT 关键字作用于所有检索的列,比如 SELECT DISTINCT vend_id, prod_price 将按照两个列 vend_idprod_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;
  • 拓展:LIMITOFFSET 结合,LIMIT 指定返回的行数,OFFSET 执行从哪里开始。LIMIT 5 OFFSET 5 代表从第5行起的5行数据。
  • 注意 第5行 其实是 第6个 数据。因为第一个被检索的行是 第0行。

注释规则

不同的数据库管理系统中注释规则有所不同,但是大差不差,读者在不同的 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;
  • 即,先按相对位置2 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 升序方向排序。


以上

10-22 02:22