@wpaladins
2017-10-07T14:23:37.000000Z
字数 4832
阅读 2415
笔记
记录
和行
这两个术语多半是可以交替使用的,但从技术
上说,行才是正确的术语。应该
有一列(或几列)可以唯一标识自己。唯一标识表中每行的这个列(或这几列)称为主键。主键用来表示一个特定的行。
SELECT prod_name
FROM Products;
FROM
关键字指出从哪个表中检索数据。
SELECT prod_id, prod_name, prod_price
FROM Products;
SELECT *
FROM Products;
*
通配符。*
通配符。虽然使用通配符能让你自己省事,不用明确列出所需列,但检索不需要的列通常会降低检索的应用程序的性能。
SELECT DISTINCT vend_id
FROM Products;
DISTINCT
关键字。DISTINCT
,DISTINCT
关键字作用于所有的列,不仅仅是跟在其后的那一列。TOP
关键字来限制最多返回多少行:
SELECT TOP 5 prod_name
FROM Products;
SELECT prod_name
FROM Products
FETCH FIRST 5 ROWS ONLY;
ROWNUM
(行计数器)来计算行:
SELECT prod_name
FROM Products
WHERE ROWNUM <= 5;
LIMIT
子句:
SELECT prod_name
FROM Products
LIMIT 5;
上述代码使用SELECT语句来检索单独的一列数据。
LIMIT 5
指示MySQL等DBMS返回不超过5行的数据。
为了得到后面5行数据,需要指定从哪儿开始以及检索的行数,像这样:
SELECT pro_name
FROM Products
LIMIT 5 OFFSET 5;
LIMIT 5 OFFSET 5
指示MySQL等DBMS返回从第5行起的5行数据。- 第一个数字是检索的行数,第二个数字是指从哪儿开始。
- 所以,
LIMIT
是定返回的行数。LIMIT
带的OFFSET
指定从哪儿开始。- 注意:第0行,第一个被检索的行就是第0行,而不是第1行。
- MySQL、MariaDB、SQLite的捷径:
LIMIT 4 OFFSET 3;
//简化为:
LIMIT 3,4
- 并非所有的SQL实现都一样。
SELECT prod_name -- 这是一条注释
FROM Products;
# 这是一条注释
SELECT prod_name
FROM Products;
/* SELECT prod_name, vend_id
FROM Products; */
SELECT prod_name
FROM Products;
SELECT prod_name
FROM Products
ORDER BY prod_name;
ORDER BY
子句取一个或多个列的名字,据此对输出进行排序。ORDER BY
子句是SELECT
语句中最后一条
子句。
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name;
前一个列名对应的
值时才对输出
按后一个列名对应的
值进行排序。
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY 2, 3;
2, 3
指定的是选择列在SELECT清单中的相对位置。表示通过先通过第2列排序,如果第2列相同则通过第3列排序。默认
的排序顺序是升序排序
。DESC
关键字。
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC, prod_name;
DESC
关键字只应用到直接位于其前面的列名。DESC
(DESCENDING)相对的是ASC
(ASCENDING),但实际上,ASC
没有多大用处,因为升序是默认的。WHERE
子句搜索条件
(search criteria),也称为过滤条件
(filter condition)。
SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49;
WHERE
子句的位置,在同时使用ORDER BY
和WHERE
子句时,应该让ORDER BY
位于WHERE
之后。(先将数据找出来,再排序)WHERE
子句操作符=
等于<>
不等于!=
不等于<
小于<=
小于等于!<
不小于>
大于>=
大于等于!>
不大于BETWEEN
在指定的两个值之间IS NULL
为NULL值<>
与!=
相同,!<
相当于>=
),并非所有DBMS都支持所有这些操作符。
SELECT prod_name, prod_price
FROM Products
WHERE prod_price BETWEEN 5 AND 10;
在使用BETWEEN
时,必须指定两个值---所需范围的低端值和高端值。这两个值必须用AND
关键字分隔。BETWEEN
匹配范围中所有的值,包括指定的开始值和结束值。
SELECT cust_name
FROM customers
WHERE cust_email IS NULL;
WHERE
子句WHERE
子句。这些子句有两种使用方式,即以AND
子句或OR
子句的方式使用。WHERE
子句中的子句的关键字,也称为逻辑操作符(logical operator)。AND
操作符:
SELECT prod_id, prod_price, prod_name
FROM Products
WHERE vend_id = 'DLL01' AND prod_price <= 4;
OR
操作符: //////////////////////////////////暂停\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\