数据库原理期末复习:SQL

# 关系数据库语言 SQL

Structured Query Language (SQL) 是用于管理和操作关系数据库的标准语言,包含数据定义语言 (DDL) 和数据操作语言 (DML) 两个主要部分。以下内容涵盖了 SQL 的基本查询语法及其在数据管理中的具体应用。

## SQL 简单查询

SQL 的查询语法如下:

需要注意的是:
- SQL 对大小写不敏感,但数据库本身可能对大小写敏感。
- SQL 查询的结果是一个关系。

### SQL 中的投影

- `SELECT 属性` 用于实现投影。
- `AS` 关键字用于给属性起别名。
- 属性可以是表达式,常量也可以作为表达式列出。

### SQL 中的选择

- 条件表达式包括比较、算术运算、字符串连接 (`||`) 和逻辑运算。
- `WHERE` 子句用于实现选择。
- 使用 `between` 关键字可以指定范围。

例如,`SELECT L FROM R WHERE C` 等价于 $\pi_L(\sigma_C(R))$。

### 字符串模式匹配

- `s LIKE p` 和 `s NOT LIKE p` 用于字符串模式匹配,其中:
  - `%` 代表零个或多个字符。
  - `_` 代表一个字符。
  - `''` 用于转义。

### NULL 处理

- NULL 与任何值的运算结果都是 NULL,与任何值的比较结果都是 UNKNOWN。
- 判断 NULL 使用 `x IS NULL` 或 `x IS NOT NULL`。

### 输出排序

- `ORDER BY 属性 [DESC]` 用于排序,默认升序,`DESC` 表示降序,`ASC` 表示升序。

## 多关系查询

SQL 中的投影和连接:

- `FROM` 两个表,`WHERE` 子句中比较两个表的属性。
- 使用 `关系名.属性名` 来消除歧义。
- 元组变量用于表示不同的元组。

### 并、交、差运算

- 并:`UNION`
- 交:`INTERSECT`
- 差:`EXCEPT`

## 子查询

子查询是嵌套在另一个查询中的查询,可以返回单个常量或关系。

例如:

子查询的其他用法:

- `EXISTS R`:R 不为空时为真。
- `s IN R`:s 等于 R 中的一个值。
- `s > ALL R`:s 大于 R 中的每一个值。
- `s < ANY R`:s 小于 R 中至少一个值。

### 相关子查询

相关子查询会多次执行,例如:

## SQL 连接表达式

- 内连接:`表1 JOIN 表2 ON 属性1 = 属性1' AND 属性2 = 属性2'`
- 外连接:
  - 左外连接:`LEFT OUTER JOIN`
  - 右外连接:`RIGHT OUTER JOIN`
  - 全外连接:`FULL OUTER JOIN`
- 自然连接:`NATURAL JOIN`

## 全关系操作

### 消除重复

- `SELECT DISTINCT 属性` 用于消除重复元组。

### 分组与聚集

- `GROUP BY 属性` 用于按属性分组。
- 常用聚集运算符:`AVG`, `SUM`, `MIN`, `MAX`, `COUNT`。

### HAVING 子句

- `HAVING` 子句用于基于分组聚集的条件选择分组。

## 数据库更新

### 插入

### 删除

### 更新

## SQL 中的事务

### 事务的基本操作

- 开始事务:`START TRANSACTION`
- 结束事务:
  - 成功:`COMMIT`
  - 失败:`ROLLBACK`

例如:

### 事务的隔离级别

- 可串行化(默认):`SET TRANSACTION ISOLATION LEVEL SERIALIZABLE`
- 读未提交:`SET TRANSACTION READ WRITE ISOLATION LEVEL READ UNCOMMITTED`
- 读已提交:`SET TRANSACTION ISOLATION LEVEL READ COMMITTED`
- 可重复读:`SET TRANSACTION ISOLATION LEVEL REPEATABLE READ`

### 读脏数据

读脏数据是指读取未提交事务写入的数据。虽然这样可以提高并发性,但有风险,例如事务可能会被回滚导致数据失效。

总结,SQL 是一种功能强大且灵活的数据库管理语言,适用于各种复杂的数据操作和查询需求。通过掌握 SQL 的各种语法和操作,可以高效地进行数据库管理和数据分析。

  • 19
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值