基础SQL语法

SQL是基于关系代数的。

  1. select [distinct] attributexxx -- 查询的属性 distinct会消除查询结果中的重复元组(会降低查询效率)
  2. from tablexxx -- 查询的表
  3. where xxx [or/and] xxx -- 查询的筛选条件

SQL查询的具体实现

  1. 将from后的表做笛卡尔乘积
  2. 根据where后的条件进一步筛选
  3. 从中投影出select后的属性 :::info image.png
    上图中,最上是查询语句,下表是from后两表的笛卡尔积,深蓝色的一行就是最终的查询结果。 :::

使用like来模糊匹配

_ 匹配任意一个字符, % 匹配0到多个字符。
image.png
上图where句中,使用like来匹配B开头,B结尾,且长度至少为3的字符串。

使用自连接来查询“且”逻辑

image.png
上图from中将Boats表同时命名为B1和B2,然后在where中使用and来查询既有红色又有绿色的sid。
如果不使用自连接,逻辑是不成立的,因为color属性不可能既是红色又是绿色。
等价于下表
image.png
表中intersect代表集合的交集。(部分数据库不支持)

嵌套查询

将一个查询的结果作为另一个查询的条件。
image.png