|----------|-------------------------------------------------|
| 分类方式 | 类别描述 |
| 部署方式 | 嵌入式/单机/双机/集群/分布式/云数据库 |
| 业务类型 | OLTP数据库/OLAP数据库/流数据库/时序数据库 |
| 存储介质 | 内存数据库/磁盘数据库/SSD数据库/SCM数据库 |
| 年代 | 第一代是单机数据库/第二代是集群数据库/第三代是分布式数据库和云原生数据库/第四代是AI数据库 |
什么是SQL语言?
SQL语言是一种基于关系代数和关系演算的非过程化语言,它指定用户需要对数据操作的内容,而不指定如何去操作数据
SQL语言的4大特点
SQL语言具有非过程化、简单易学、易迁移、高度统一等特点
1.非过程化:在使用SQL语言的过程中,用户并不需要了解SQL语言的具体操作方法,只需要通过SQL语言描述想要获得的结果集合的条件,至于如果取得结果,由数据库查询优化系统负责生成具体的执行计划去完成。
2.简单易学:SQL语言的设计非常精简,只需要有限的命令就可以完成复杂的查询操作
3.易迁移:主流的关系数据库系统都支持以SQL语言为标准的查询操作
4.高度统一:SQL语言具有高度的统一性,统一的语法结构和统一的风格,使得对数据库的操作也具有完备性
基本功能:数据定义
数据定义主要的SQL语句如下:
|--------------|------------------|
| 语句 | 描述 |
| 数据定义 | DDL:定义、修改、删除数据模式 |
| CREATE TABLE | 数据库中创建一个表 |
| DROP TABLE | 数据库中删除一个表 |
| ALTER TABLE | 改变现存表的结构 |
| CREATE TABLE | 数据库中添加一个视图 |
| DROP VIEW | 数据库中删除一个视图 |
|--------|--------------------|
| 语句 | 描述 |
| 数据操作 | DML:数据的检索,插入、删除、更新 |
| SELECT | 从数据库中检索数据 |
| INSERT | 向数据库中添加一行数据 |
| DELETE | 从数据库中删除一行数据 |
| UPDATE | 修改现存的数据库数据 |
访问控制的SQL语句:
|--------|------------------|
| 语句 | 描述 |
| 访问控制 | DCL:控制用户对数据的访问权限 |
| GRANT | 授予用户访问权限 |
| REVOKE | 撤销用户访问权限 |
事务控制的SQL语句:
|-----------------|---------------|
| 语句 | 描述 |
| 事务控制 | TCL:控制数据操作的事务 |
| COMMIT | 提交当前事务 |
| ROLLBACK | 回滚当前事务 |
| SET TRANSACTION | 定义当前事务数据访问特征 |
程序化SQL语句:
|----------|-------------------------|
| 语句 | 描述 |
| 程序化SQL | 程序开发使用的SQL,主要用于非交互命令行方式 |
| DECLARE | 为查询声明一个游标 |
| EXPLAIN | 为查询描述数据执行计划 |
| OPEN | 检索查询结果打开一游标 |
| FETCH | 从游标中获取一行查询结果 |
| CLOSE | 关闭游标 |
| PREPARE | 为动态执行准备SQL语句 |
| EXECUTE | 动态执行SQL语句 |
| DESCRIBE | 描述准备好的查询 |
完整性检查:
域完整性:
**NULL约束:**可以指定一个列中的值是否可以为NULL
**CHECK约束:**用来检查输入的值是否满足某一约束条件
**DEFAULT约束:**如果输入数据中没有指定该列具体的值,可以直接使用DEFAULT约束指定的默认值
实体完整性:
**主键:**指定的键值组合在集合内只能有唯一的一个值(不可以包含NULL值)
UNIQUE约束:指定的键值组合在集合内只能有唯一的一个值(可以包含NULL值)
参照完整性:
**外键:**指定的键值组合和外部的键值相对应
什么是索引?
索引实际上是对基本表中的一个列或一组列的数据进行预处理,建立索引的目的是提升查询性能
常见的索引有B树索引、哈希索引、位图索引等
创建索引使用CREATE INDEX语句:CREATE INDEX ON
UNIQUE索引:
1.可以通过UNIQUE关键字来指定创建的索引是否具有唯一性
2.UNIQUE关键字指定的唯一性和主键的唯一性有一些不同。主键中的所有列不能有NULL值,而UNIQUE关键字创建的唯一索引可以允许有NULL值,由于NULL值与NULL值是不相等的,所以UNIQUE索引的唯一性表现在可以具有NULL值,而且可以有多组NULL值
3.查询过程中索引匹配是数据库自动完成的,不需要用户明确指定。
SQL语法视图
什么是视图?
视图是一个虚拟表,其内容由查询定义,视图同表一样,也包含一系列带有名称的列
视图分为两种,普通视图和物化视图:
普通视图不保存数据,物化视图保存数据
查询是:SELECT,FROM,WHERE构成
连接:多个基本表的连接结果
选择:过滤之后的元组会组成新的中间关系
连接操作还能指定连接条件
连接又可分为内连接,外连接,半连接
**内连接:**只有符合连接条件的结果才会作为最终的连接结果
**外连接:**左外连接,右外连接和全连接
**半连接:**SQL语法中不能直接使用半连接,基于连接条件谓词中是否含有否定谓词
集合操作:
集合操作主要是对两个结果进行并,差和交的运算
|-----------|-----------------------|
| 名称 | 描述 |
| UNION | 并操作,将UNION两端的结果集做并集操作 |
| EXCEPT | 差操作,从左侧的结果集中排除右侧的结果集 |
| INTERSECT | 交集,对两个结果集取做交集操作 |
SQL语言:
通过权限管理来对数据对象的访问进行控制
权限分为系统权限和对象权限
通过GRANT语句来授予权限,通过REVOKE语句来收回权限
SQL语法事务控制
事务是由一组SQL语句序列构成的原子操作集合,具有原子性、一致性、隔离性和持久性的特点
事务分为隐式事务和显式事务
隐式事务对于用户执行的每个SQL语句,数据库自动启动事务,根据SQL语句的成功与否自动进行提交或者回滚操作
显式事务需要用户通过SQL事务命令指定事务块的边界
PLSQL存储过程
存储过程是一组SQL语句和逻辑控制的集合
存储过程可以带有参数,参数的类型就是SQL标准中的类型。存储过程的参数有三种不同的输入输出模式:IN,OUT,INOUT
函数必须指定返回值,存储过程必须独立调用
触发器是数据库事件的相应机制
每一个DML操作都会产生一个触发事件,如果操作对象上创建了与事件对应的触发器,并且满足触发器的触发条件,那么就会触发动作。同一个触发器可以指定多个触发事件,每个事件发生时都会激活触发器来执行触发器的动作。
SQL语法游标
处理数据的一种方法,是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。
通过move命令移动游标,fetch获得游标指向的内容