- 数据库(database):
- 是一个以某种有组织的方式存储的数据集合。最简单的方法是将数据库想象为一个文件柜。
SELECT语句
使用select检索表数据
- 检索单个列:(pro_name是列名,Products是表)
– SELECT pro_name FROM Products; - 检索多个列
– SELECT pro_id,pro_price,pro_name FROM Products; - 检索所有列:(* 是通配符)
– SELECT * FROM Products; - 检索不同的值:(DISTINCT)
–SELECT DISTINCT vendo_id FROM Products
注意不能部分使用DISTINCT。因为DISTINCT 作用于所有的列,不仅仅是跟在最后的那一列。比如:SELECT DISTINCT pro_id,pro_price,所有的列都会被检索出来。 - 限制结果:(LIMIT)
– SELECT pro_name FROM Products LIMIT 5 OFFSET 5 (注意:第1点、LIMIT 1 OFFSET 1会检索第2行,而不是第1行。第2点、LIMIT 4 OFFSET 3等价于LIMIT 3,4) - 使用注释:(–或#或/* /)
– SELECT pro_name –这是一条注释 FROM Products (第一点:注释使用–(两个连字符)嵌在行内。–之后就是注释。 第二点:在一行的开始使用#。这一整行都将作为注释。第三点:注释从/开始,到/结束,/和*/之间的任何内容都是注释)
排序检索数据
排序数据(ORDER BY)
保证ORDER BY是SELECT语句中最后一条语句,如果不是,就会出现错误信息。
- 按单个列排序:(pro_name是列名,Products是表)
– SELECT pro_name FROM Products ORDER BY pro_name ; - 按多个列排序
– SELECT pro_id,pro_price,pro_name FROM Products ORDER BY pro_name,pro_price; - 按列位置排序
– SELECT pro_id,pro_price,pro_name FROM Products ORDER BY 2,3; - 指定排序方向
– SELECT pro_id,pro_price,pro_name FROM Products ORDER BY pro_price DESC; // 降序排序 (注意:如果想在多个列进行降序排序,必须对每一列指定DESC关键字)
过滤数据
使用WHERE语句
数据库一般包含大量的数据,很少需要表中的所有行。通常只会根据特定的操作或报告的需要提取表中数据的子集。只检索所需数据需要的指定的搜索条件(search criteria),搜索条件也称为过滤条件(filter condition),在SELECT语句中,数据根据WHERE语句中指定的搜索条件进行过滤。WHERE语句在表名(FROM语句)之后给出。
– SELECT pro_id,pro_price,pro_name FROM Products WHERE pro_price = 3.67;
WHERE语句操作符
操作符 | 说明 | 操作符 | 说明 |
---|---|---|---|
= | 等于 | > | 大于 |
<> | 不等于 | >= | 大于等于 |
!= | 不等于 | !> | 不大于 |
< | 小于 | BETWEEN | 在指定的两个值之间 |
<= | 小于等于 | IS NULL | 为NULL值 |
!< | 不小于 | nil | 无 |
- 检查单个值
SELECT pro_id,pro_price,pro_name FROM Products WHERE pro_price < 7;
- 不匹配检查
SELECT vend_id,pro_name FROM Products WHERE vend_id <> 'DLL02';
- 范围值检查:(指定开始日期和结束日期之间的所以日期或者价格区间)
SELECT pro_price,pro_name FROM Products WHERE pro_price BETWEEN 5 AND 8;
- 空值检查
SELECT cust_name FROM Customers WHERE cust_email IS NULL;
高级过滤数据
组合WHERE子句
主要有两种方式:即以AND子句或者OR子句的方式使用。区别在AND要满足多个条件,而OR在WHERE子句的第一个条件得到满足的情况下就不会计算第二个条件了(不管第二个条件是否满足,相应的行22都会被检索出来) 。如果WHERE子句中,有AND也有OR,优先2处理AND操作符。
- AND操作符
SELECT pro_id,pro_price,pro_name FROM Products WHERE pro_price < 7 AND pro_name = 'DLL02';
- OR操作符
SELECT pro_id,pro_price,pro_name FROM Products WHERE pro_price < 7 OR pro_name = 'DLL02';
- 求值顺序
SELECT pro_id,pro_price,pro_name FROM Products WHERE pro_price < 7 OR pro_name = 'DLL02' AND pro_id = '3';
IN操作符
IN操作符用来指定条件范围,范围中的每个条件度可以匹配。IN取一组由逗号分隔、扩在圆括号中的合法值。
SELECT pro_price,pro_name FROM Products WHERE vend_id IN ('DLL02','BRS02');
NOT操作符
WHERE子句中的NOT也有且只有一个功能,那就是否定其后所跟的任何条件
SELECT pro_price,pro_name FROM Products WHERE NOT vend_id = 'DLL02' ORDER BY pro_name ;