基础SQL语法
SQL是基于关系代数的。
select [distinct] attributexxx -- 查询的属性 distinct会消除查询结果中的重复元组(会降低查询效率)
from tablexxx -- 查询的表
where xxx [or/and] xxx -- 查询的筛选条件
SQL查询的具体实现
- 将from后的表做笛卡尔乘积
- 根据where后的条件进一步筛选
- 从中投影出select后的属性
:::info
上图中,最上是查询语句,下表是from后两表的笛卡尔积,深蓝色的一行就是最终的查询结果。 :::
使用like来模糊匹配
_
匹配任意一个字符, %
匹配0到多个字符。
上图where句中,使用like来匹配B开头,B结尾,且长度至少为3的字符串。
使用自连接来查询“且”逻辑
上图from中将Boats表同时命名为B1和B2,然后在where中使用and来查询既有红色又有绿色的sid。
如果不使用自连接,逻辑是不成立的,因为color属性不可能既是红色又是绿色。
等价于下表
表中intersect代表集合的交集。(部分数据库不支持)
嵌套查询
将一个查询的结果作为另一个查询的条件。