1、SQL语言

|----------|-------------------------------------------------|
| 分类方式 | 类别描述 |
| 部署方式 | 嵌入式/单机/双机/集群/分布式/云数据库 |
| 业务类型 | 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获得游标指向的内容

相关推荐
python机器学习建模2 小时前
科研论文必须要了解的25个学术网站
数据库
J.P.August3 小时前
Oracle DataGuard启动与关闭顺序
数据库·oracle
尚雷55803 小时前
Oracle 与 达梦 数据库 对比
数据库·oracle·达梦数据库
小猿姐5 小时前
Ape-DTS:开源 DTS 工具,助力自建 MySQL、PostgreSQL 迁移上云
数据库·mysql·postgresql·开源
百香果果ccc5 小时前
MySQL中的单行函数和聚合函数
数据库·mysql
摸摸陌陌5 小时前
Redis快速入门
数据库·redis·缓存
Elastic 中国社区官方博客5 小时前
Elasticsearch Serverless 中的数据流自动分片
大数据·数据库·elasticsearch·搜索引擎·serverless·时序数据库
Minyy115 小时前
牛客网刷题SQL--高级查询
数据库·sql
秋意钟5 小时前
MySQL基本架构
数据库·mysql·架构
YueTann6 小时前
Leetcode SQL 刷题与答案-基础篇
sql·算法·leetcode