注:应用以 Mysql 数据库为例
1. 检索数据
1.1 select 语句
使用 select 语句时,至少给出两条信息:想选择什么,以及从什么地方选择。
1.2 检索单个列
1.3 检索多个列
1.4 检索所有列
select *
from products;
注:除非确实需要表中的所有列,否则最好不使用*通配符,因为会降低检索的性能。
1.5 检索不同的值
select distinct vend_id
from products;
注:distinct 关键词适用于所有的列。例如,当指定 select distinct vend_id, prod_price from (表)时,检索出来的是针对两个列的唯一组合 。
1.6 限制结果
select prod_name
from products
limit 2 offset 0; --返回从第1行起的2行数据;
注:limit 2 offset 0 可简写为 limit 0 2
1.7 使用注释
-- 注释1;
#注释2;
/* select sth from table
where ;*/ --多行注释
2.排序检索数据
2.1 排序数据
注1:在指定一条order by 子句时,应保证它是select语句中最后一条子句。
注2:可以通过非选择列进行排序。
2.2 按多个列排序
select prod_id, prod_price, prod_name
from products
order by prod_price, prod_name;
注:仅在多个行具有相同的prod_price值时才第产品按prod_name进行排序。
2.3 按列位置排序(如1, 2, 3…)
2.4 指定排序方向
select prod_id, prod_price, prod_name
from products
order by prod_price DESC, prod_name;--后者默认升序(ASC)
3. 过滤数据
3.1 使用 where 子句
3.2 where 子句操作符
操作符 | 说明 | 操作符 | 说明 |
---|---|---|---|
= | 等于 | > | 大于 |
<> | 不等于 | >= | 大于等于 |
!= | 不等于 | !> | 不大于 |
< | 小于 | BETWEEN | 在两个指定的值之间 |
<= | 小于等于 | IS NULL | 为null值 |
!< | 不小于 |
4. 高级过滤
4.1 组合 where 子句
如:and / or
注1:SQL 在处理 or 操作符前,优先处理 and 操作符。
注2:任何时候使用具有 and 和 or 操作符的 where 子句,都应该使用圆括号明确地分组操作符。
4.2 IN 操作符
IN 操作符一般比一组 OR 操作符执行的更快。
4.3 NOT 操作符
select prod_name
from products
where not vend_id = 'DLL01'
order by prod_name;
5.用通配符进行过滤
- LIKE操作符
- 百分号(%)操作符:匹配任意字符;区分大小写;注意空格;不可匹配NULL。
- 下划线(-)通配符:匹配单个字符。
- 方括号([ ])通配符:匹配一个字符集,必须匹配指定位置(通配符的位置)的一个字符;可用前缀字符^(脱字号)来否定。
select cust_contact
from customers
where cust_contact like '[JM]%' --找出所有名字以 J 或 M 开头的联系人。