### 知识点总结 #### 一、数据库基础概念 **1.1 数据库概述** - **数据库与数据库管理系统** - **数据库**: 是一种存储和组织数据的方式,旨在提高数据访问效率,确保数据安全性和一致性。 - **数据库管理系统(DBMS)**: 用于创建、维护和使用数据库的应用软件。 - **数据库能做什么** - 存储大量结构化数据。 - 支持高效的数据查询和更新。 - 提供数据安全性、完整性和并发控制机制。 - 实现数据备份与恢复功能。 - **主流数据库管理系统介绍** - **MySQL**: 开源关系型数据库管理系统,广泛应用于Web应用程序。 - **Oracle**: 面向企业级应用的强大数据库系统。 - **SQL Server**: 微软开发的关系型数据库管理系统,主要应用于Windows平台。 - **PostgreSQL**: 强大的开源对象关系型数据库系统。 - **MongoDB**: 非关系型数据库,采用文档数据模型。 **1.2 数据库基础概念** - **Catalog (目录)** - 在某些数据库系统中用来分组多个数据库。 - **表(Table)** - 表是数据库中最基本的数据存储单元,由行和列组成。 - **列(Column)** - 每个列代表一个特定属性,如姓名、年龄等。 - **数据类型(DataType)** - 定义了列可以存储的值的类型,如整数、浮点数、字符串等。 - **记录(Record)** - 表中的每一行被称为一条记录。 - **主键(PrimaryKey)** - 用于唯一标识表中每条记录的字段或字段组合。 - **索引(Index)** - 类似于书籍的索引,加快数据检索速度。 - **表关联** - 表之间的连接方式,用于在多个表之间建立关系。 - **数据库的语言——SQL** - SQL (Structured Query Language) 是用于管理和操作数据库的标准语言。 - **DBA与程序员** - **DBA (Database Administrator)** 负责数据库的管理和维护。 - **程序员** 使用SQL进行数据的操作。 #### 二、数据表的创建和管理 **2.1 数据类型** - **整数类型** - 如 `INT`, `TINYINT` 等。 - **数值类型** - 如 `FLOAT`, `DOUBLE` 等。 - **字符相关类型** - 如 `CHAR`, `VARCHAR` 等。 - **日期时间类型** - 如 `DATE`, `DATETIME` 等。 - **二进制类型** - 如 `BLOB`, `VARBLOB` 等。 **2.2 通过SQL语句管理数据表** - **创建数据表** - 使用 `CREATE TABLE` 语句。 - **定义非空约束** - 使用 `NOT NULL` 关键字。 - **定义默认值** - 使用 `DEFAULT` 关键字指定默认值。 - **定义主键** - 使用 `PRIMARY KEY` 关键字。 - **定义外键** - 使用 `FOREIGN KEY` 关键字。 - **修改已有数据表** - 使用 `ALTER TABLE` 语句。 - **删除数据表** - 使用 `DROP TABLE` 语句。 - **受限操作的变通解决方案** - 当执行某些操作遇到约束问题时,可以通过解除约束再重新添加等方式来实现目标。 #### 三、数据的增、删、改 **3.1 数据的插入** - **简单的INSERT语句** - 直接指定字段和对应的值。 - **简化的INSERT语句** - 不显式列出字段名。 - **非空约束对数据插入的影响** - 如果字段定义了非空约束,则必须提供值。 - **主键对数据插入的影响** - 主键字段必须唯一。 - **外键对数据插入的影响** - 外键字段必须存在于被引用表中。 **3.2 数据的更新** - **简单的数据更新** - 更新单个记录的某个字段。 - **带WHERE子句的UPDATE语句** - 更新满足特定条件的记录。 - **非空约束对数据更新的影响** - 如果字段有非空约束,不能将值更新为空。 - **主键对数据更新的影响** - 更新主键值可能会导致完整性问题。 - **外键对数据更新的影响** - 更新外键字段时需保证引用的记录存在。 **3.3 数据的删除** - **简单的数据删除** - 删除单个记录。 - **带WHERE子句的DELETE语句** - 删除满足特定条件的记录。 #### 四、数据的检索 **4.1 SELECT基本用法** - **简单的数据检索** - 使用 `SELECT * FROM` 语句。 - **检索出需要的列** - 只选择部分列。 - **列别名** - 使用 `AS` 关键字为列起别名。 - **按条件过滤** - 使用 `WHERE` 子句筛选记录。 - **数据汇总** - 使用聚合函数如 `SUM`, `AVG`, `COUNT` 等。 - **排序** - 使用 `ORDER BY` 子句对结果排序。 **4.2 高级数据过滤** - **通配符过滤** - 使用通配符 `%` 和 `_` 进行模糊匹配。 - **空值检测** - 使用 `IS NULL` 或 `IS NOT NULL` 来检查空值。 - **反义运算符** - 使用 `NOT` 关键字。 - **多值检测** - 使用 `IN` 或 `NOT IN` 关键字。 - **范围值检测** - 使用 `BETWEEN` 关键字。 - **低效的“WHERE 1=1”** - 一般用于动态SQL构建中,但可能导致性能问题。 **4.3 数据分组** - **数据分组入门** - 使用 `GROUP BY` 对结果进行分组。 - **数据分组与聚合函数** - 结合 `GROUP BY` 和聚合函数使用。 - **HAVING语句** - 对分组后的结果进行过滤。 **4.4 限制结果集行数** - **MySQL** - 使用 `LIMIT` 语句。 - **MSSQL Server 2000** - 使用 `TOP` 关键字。 - **MSSQL Server 2005** - 使用 `ROW_NUMBER()` 函数。 - **Oracle** - 使用 `ROWNUM` 或 `FETCH FIRST` 语句。 - **DB2** - 使用 `FETCH FIRST` 语句。 - **数据库分页** - 结合 `OFFSET` 和 `LIMIT` 或其他方法实现分页查询。 **4.5 抑制数据重复** - 使用 `DISTINCT` 关键字去除重复记录。 **4.6 计算字段** - **常量字段** - 直接在 `SELECT` 语句中计算常量值。 - **字段间的计算** - 对字段进行加减乘除等运算。 - **数据处理函数** - 使用内置函数如 `ROUND`, `TRUNCATE` 等。 - **字符串的拼接** - 使用 `CONCAT` 或 `+` 运算符进行字符串拼接。 - **计算字段的其他用途** - 如日期处理、复杂逻辑计算等。 **4.7 不从实体表中取的数据** - 如视图、子查询等产生的虚拟数据。 **4.8 联合结果集** - **简单的结果集联合** - 使用 `UNION` 关键字合并多个查询的结果集。 - **联合结果集的原则** - 合并的查询必须具有相同数量的列且数据类型相容。 - **UNION ALL** - 与 `UNION` 类似,但保留重复记录。 - **联合结果集应用举例** - 结合实际场景展示如何使用联合结果集。 #### 五、函数 **5.1 数学函数** - 包括求绝对值、指数、平方根、随机数等函数。 **5.2 字符串函数** - 包括计算字符串长度、转换大小写、截取字符串等功能。 以上内容概括了《程序员的SQL金典》这本书中涉及的基础和高级SQL知识点,包括数据库的基本概念、数据表的创建与管理、数据的增删改查以及SQL查询的高级技巧和函数使用等。这些知识点对于初、中、高级程序员来说都是必备的知识,能够帮助他们更好地理解和使用SQL语言进行数据库操作。
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 阿里云OSS Java版SDK.zip
- 阿里云api网关请求签名示例(java实现).zip
- 通过示例学习 Android 的 RxJava.zip
- 通过多线程编程在 Java 中发现并发模式和特性 线程、锁、原子等等 .zip
- 通过在终端中进行探索来学习 JavaScript .zip
- 通过不仅针对初学者而且针对 JavaScript 爱好者(无论他们的专业水平如何)设计的编码挑战,自然而自信地拥抱 JavaScript .zip
- 适用于 Kotlin 和 Java 的现代 JSON 库 .zip
- yolo5实战-yolo资源
- english-chinese-dictionary-数据结构课程设计
- mp-mysql-injector-spring-boot-starter-sql注入