魔术桌
  • 更新日志
  • 新闻资讯
  • 数据资产
  • 网站导航
  • 订阅推荐
  • 商品推广
  • 日记
  • 摘录
  • 论文
  • 方案
  • 技术
  • 风格
  • 视觉
  • 原材料
  • 加工工艺
  • 元器件
  • 产品设备
  • 设计模式
  • 数据结构
  • 算法设计
  • 软件架构
  • 程序语言
  • 代码类库
  • 操作系统
  • 软件包
  • 健康
  • 环境
  • 社会
  • 道德
  • 法律
  • 经济
  • 政策
  • 更新日志
  • 新闻资讯
  • 数据资产
  • 网站导航
  • 订阅推荐
  • 商品推广
  • 日记
  • 摘录
  • 论文
  • 方案
  • 技术
  • 风格
  • 视觉
  • 原材料
  • 加工工艺
  • 元器件
  • 产品设备
  • 设计模式
  • 数据结构
  • 算法设计
  • 软件架构
  • 程序语言
  • 代码类库
  • 操作系统
  • 软件包
  • 健康
  • 环境
  • 社会
  • 道德
  • 法律
  • 经济
  • 政策
  • Language - SQL

文章摘要: 结构化查询语言(Structured Query Language),简称SQL。是一种用于特殊目的的编程语言,用于存取数据以及查询、更新和管理关系数据库系统。

提示

  • SQL中的注释不要使用#作为单行注释,这会导致数据迁移时导致错误。
  • 本文章命令中的[ ]括起来的表示可选的内容。
  • 在使用语法时需要时刻确定自己所在的“数据库”、再给出具体的“表”来查数据。
  • 查询的语法比较常用,且比较复杂,查询与“添加、修改、删除”的语法分开记忆。
  • 字符串、日期类型、数据中间有空格,都需要将数据包含在引号中。

简介

简要说明

  • 结构化查询语言(Structured Query Language),简称SQL。
  • 是一种用于特殊目的的编程语言,用于存取数据以及查询、更新和管理关系数据库系统。
  • SQL是所有关系型数据库的统一操作规范。

主要功能

  • 数据查询:允许用户从数据库中检索数据。
  • 数据操作:可以插入、更新和删除数据库中的记录。
  • 数据定义:用于创建、修改和删除数据库中的表格和其他对象。
  • 数据控制:提供权限和访问控制,以保护数据库中的数据。
  • 事务管理:支持事务,确保数据库操作的原子性、一致性、隔离性和持久性(ACID属性)。

注意事项

  • 安全性:编写SQL查询时要注意防止SQL注入攻击,确保数据安全。
  • 性能优化:复杂的查询可能会影响数据库性能,应优化SQL语句和数据库结构。
  • 数据完整性:在设计数据库时,应确保数据的完整性和一致性。
  • 标准遵从性:不同的数据库系统可能有不同的SQL方言,应了解所使用系统的特定语法和功能。

适用场景

  • 数据管理:在企业和组织中管理大量数据。
  • 数据分析:进行数据分析和报告,支持决策制定。
  • 应用程序开发:为需要数据存储和检索的应用程序提供后端支持。
  • 网站开发:管理网站后端数据库,如用户信息、内容管理等。
  • 数据科学:在数据科学项目中,用于数据清洗、准备和探索性数据分析。
  • 商业智能:构建商业智能报告和仪表板,以监控业务关键指标。

基本概念

  • 数据写在数据库中的表中。
  • 数据库和表是数据的载体。

通用语法

  • 可以单行或多行书写,以分号;表示一句SQL的结尾。
  • 可以使用空格和缩进来增强语句的可读性。
  • 不区分大小写,关键字建议使用大写。

注释格式

  • 单行注释:-- 注释内容
  • 多行注释:/* 注释内容 */

对象

数据库对象对应关键字描述
表table- 表是存储数据的逻辑单元。
- 以行和列的形式存在。
- 列是字段,行是记录。
数据字典- 系统表,存放数据库相关的表。
- 内容通常由数据库系统维护。
- 程序员通常不该手动修改表和数据。
约束constraint- 执行数据校验的规则。
- 用于保证数据完整性的规则。
视图view- 一个或多个数据表的逻辑显示。
- 视图不存储数据。
索引index- 用于提高查询性能。
- 类似书的目录。
函数function- 用于完成一次特定的计算。
- 具有一个返回值。
存储过程procedure- 用于完成一次完整的业务逻辑。
- 没有返回值。
- 但可以同传出参数将多个值传给调用环境。
触发器trigger- 相当于一个事件监听器。
- 当数据库发生特定的事件后,触发器被触发完成相应的处理。

SQL语句和语法

详细总结:Language-SQL-语句语法

数据 - 定义语言(DDL)

  • 数据定义语言
  • 用于定义数据库对象(数据库、表、字段)。
  • 主要针对数据库、表、字段进行增、删、改、查的操作命令。
  • 字段是表的每列数据的标识。
  • 这些不是实际真正存储的数据信息,此处不操作实际存储的数据。

数据 - 操作语言(DML)

  • 数据操作语言
  • 用于对表的数据进行增加、删除、修改的操作操作命令。
  • 提示:此处没有查询命令。
  • 需要根据已经定义创建完的数据库、表、表中的字段后,再进行操作的。

数据 - 查询语言(DQL)

  • 数据查询语言
  • 用于查询数据库表中的数据

权限 - 控制语言(DCL)

  • 用于管理数据库用户、控制数据库的访问权限。

事务 - 控制语言(TCT)

  • 用于控制SQL执行的提交和回滚。
  • 原子性:事务是不可分割的最小单元,要么全部成功,要么全部失败。
  • 一致性:事务完成时,必须使所有的数据都保持一致状态。
  • 隔离性:数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
  • 持久性:事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

事务产生的问题

  • 脏读(dirty read):当一个事务读取另一个事务尚未提交的修改时,产生脏读。
  • 不可重复读(nonrepeatable read):同一个查询在同一个事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生不可重复读。
  • 幻读(phantom read):同一个查询在同一事务中多次进行,由于其他提交事务所做的插入或删除操作,每次返回不同的结果集,此时返回幻读。

事务的隔离界别

  • Read Uncommitted(未提交读):事务中的修改,即使没有提交,对其他事务也是可见的。
  • Read Committed(提交读):一个事务只能看见已经提交的事务所做的修改。
  • Repeatable Read(重复读):在同一事务中,查询同一个记录会返回相同的结果,即使在这个事务中其他地方已经修改过这个记录。
  • Serialize(串行化):所有事务依次逐个执行,这样每个事务都感觉不到其他事务的存在。
隔离级别脏读不可重复读幻读加锁读
Read Uncommitted(未提交读)YYY不加锁
Read Committed(提交读)YY不加锁
Repeatable Read(重复读)不加锁
Serialize(串行化)加锁

运算符

详细总结:Language-SQL-运算符

数据类型

详细总结:Language-SQL-数据类型

约束

  • 约束作用于表中字段上的规则。
  • 用于限制存储在表中的数据。
  • 保证数据库中数据的正确性、有效性和完整性。

详细总结:Language-SQL-约束

权限

  • 权限管理是数据库管理系统(DBMS)中非常重要的一个方面,它确保了数据库的安全性、完整性和一致性。

详细总结:Language-SQL-权限

函数

  • 提高代码重用性和隐藏实现细节。
  • 函数即别人封装好的模板代码。

详细总结:Language-SQL-函数

字符集

校验规则

索引

  • 数据库索引是一种数据结构。
  • 用于帮助数据库高效地执行查询操作。(类似于书籍的目录,快速定位到想要查找的信息)

优点

  • 提高查询性能。
  • 保证数据的唯一性。
  • 加速排序和分组操作。

缺点

  • 降低写入性能,因为索引需要更新。
  • 占用额外的存储空间。
  • 增加数据库的维护复杂度。

作用

  • 提高查询速度:通过索引,数据库可以快速定位到数据行,而不需要扫描整个表。
  • 确保数据的唯一性:唯一索引可以保证表中某一列或列组合的数据是唯一的。
  • 帮助排序和分组:索引可以存储数据的排序顺序,从而加快排序和分组操作。

注意事项

  • 选择性:为高选择性的列创建索引,即列中具有大量唯一值的列。
  • 列顺序:在复合索引中,根据查询条件将最常使用的列放在索引的前面。
  • 维护成本:索引可以提高查询速度,但也会增加插入、更新和删除操作的成本。
  • 空间占用:索引需要额外的磁盘空间来存储。
  • 性能监控:定期检查索引的性能,必要时进行优化或重建。

索引的类型

  • B-Tree索引:最常用的索引类型,适用于各种查询类型。
  • 哈希索引:基于哈希表实现,适用于精确匹配查询。
  • 全文索引:用于文本搜索,可以快速查找文本中的关键词。
  • 空间索引:用于地理空间数据的搜索。
更新时间: 2025/11/16 17:17