### 数据库基础知识精讲 #### 一、数据库概述 **1.1 数据库与数据库管理系统** - **数据库(Database)**:数据库是指按照数据结构来组织、存储和管理数据的仓库。在计算机领域,数据库指的是用于存储数据的集合。 - **数据库管理系统(DBMS)**:数据库管理系统是一种位于用户与操作系统之间的数据管理软件,用于建立、使用和维护数据库,是一种系统软件。 **1.1.2 数据库能做什么** - **数据存储**:最基础的功能,将各种数据存储起来。 - **数据共享**:允许多个应用程序或用户访问同一份数据。 - **数据保护**:包括数据的安全性、完整性、并发控制和故障恢复。 - **数据独立性**:物理独立性和逻辑独立性,使得当数据的物理结构或逻辑结构发生变化时,不影响上层的应用程序。 **1.1.3 主流数据库管理系统介绍** - **Oracle**:适用于大型企业级应用,支持复杂的数据管理需求。 - **MySQL**:开源、易用且性能良好,适合中小型项目。 - **SQL Server**:微软公司的产品,广泛应用于Windows平台上。 - **PostgreSQL**:强大的开源对象关系数据库系统。 - **MongoDB**:面向文档的NoSQL数据库,适用于处理大量非结构化数据。 #### 二、数据库基础概念 **1.2.1 Catalog(目录)** - **目录(Catalog)**:在某些数据库系统中,一个数据库可以包含多个目录,每个目录下可以有多个表空间或数据库对象。 **1.2.2 表(Table)** - **表(Table)**:是数据库中最基本的数据组织形式,由行和列组成。每一行代表一条记录,每一列代表一种属性。 **1.2.3 列(Column)** - **列(Column)**:表中的每一列都对应着一种数据类型,用于存储特定类型的数据。 **1.2.4 数据类型(DataType)** - **数据类型(DataType)**:定义了表中的列可以存储什么样的数据。常见的数据类型包括整数类型、浮点数类型、字符串类型等。 **1.2.5 记录(Record)** - **记录(Record)**:表中的一行数据,代表了一个具体的实例或实体。 **1.2.6 主键(PrimaryKey)** - **主键(PrimaryKey)**:表中的一个或多个字段的组合,其值对于每条记录都是唯一的,用来标识表中的每一行记录。 **1.2.7 索引(Index)** - **索引(Index)**:类似于图书的目录,帮助快速定位数据。创建索引可以加快数据的检索速度,但会占用额外的存储空间,并可能降低写操作的性能。 **1.2.8 表关联** - **表关联**:指两个或多个表之间基于共同的列(通常为主键或外键)建立的关系。关联可以是一对一、一对多或多对多。 **1.2.9 数据库的语言——SQL** - **SQL**:Structured Query Language的缩写,是一种用于管理关系型数据库的标准语言。SQL支持查询、更新、删除数据等多种功能。 **1.2.10 DBA与程序员** - **DBA**:Database Administrator,负责数据库的管理与维护工作,确保数据的安全性、完整性和可用性。 - **程序员**:开发人员使用SQL语言与数据库交互,实现业务逻辑。 #### 三、数据表的创建和管理 **2.1 数据类型** - **整数类型**:如TINYINT、SMALLINT、INT、BIGINT等,适用于存储整数值。 - **数值类型**:如FLOAT、REAL、DOUBLE PRECISION等,适用于存储实数值。 - **字符相关类型**:如CHAR、VARCHAR、TEXT等,适用于存储文本数据。 - **日期时间类型**:如DATE、TIME、DATETIME等,适用于存储日期和时间信息。 - **二进制类型**:如BINARY、VARBINARY、BLOB等,适用于存储二进制数据。 **2.2 通过SQL语句管理数据表** - **创建数据表**:使用CREATE TABLE语句来创建一个新的数据表。 - **定义非空约束**:使用NOT NULL约束来确保某列不能存储NULL值。 - **定义默认值**:使用DEFAULT关键字来设置某列的默认值。 - **定义主键**:使用PRIMARY KEY约束来指定表的主键。 - **定义外键**:使用FOREIGN KEY约束来建立表与表之间的关系。 - **修改已有数据表**:使用ALTER TABLE语句来修改已存在的数据表。 - **删除数据表**:使用DROP TABLE语句来删除数据表。 **2.2.8 受限操作的变通解决方案** - 当执行删除或修改操作时遇到外键约束等问题时,可以通过先解除约束再进行操作的方式解决。 #### 四、数据的增、删、改 **3.1 数据的插入** - **简单的INSERT语句**:使用INSERT INTO语句来向表中插入新的数据行。 - **简化的INSERT语句**:可以省略列名列表,但必须按照表的顺序输入值。 - **非空约束对数据插入的影响**:如果某列设置了NOT NULL约束,则插入数据时必须提供该列的值。 - **主键对数据插入的影响**:如果某列被设为主键,则插入的数据必须满足唯一性约束。 - **外键对数据插入的影响**:如果存在外键约束,则插入的数据必须与另一张表中的相应列匹配。 **3.2 数据的更新** - **简单的数据更新**:使用UPDATE语句来更新表中的数据。 - **带WHERE子句的UPDATE语句**:使用WHERE子句来指定需要更新的数据行。 - **非空约束对数据更新的影响**:更新某列的值时,若该列设置了NOT NULL约束,则不能将其更新为NULL。 - **主键对数据更新的影响**:主键通常不允许更改,因此更新数据时要注意避免冲突。 - **外键对数据更新的影响**:更新数据时需考虑外键约束,确保更新后的值仍然有效。 **3.3 数据的删除** - **简单的数据删除**:使用DELETE FROM语句来删除表中的数据。 - **带WHERE子句的DELETE语句**:使用WHERE子句来指定需要删除的数据行。 #### 五、数据的检索 **4.1 SELECT基本用法** - **简单的数据检索**:使用SELECT * FROM table_name;来检索表中的所有列。 - **检索出需要的列**:使用SELECT column1, column2 FROM table_name;来检索表中的指定列。 - **列别名**:使用AS关键字来为列名指定别名,提高查询结果的可读性。 - **按条件过滤**:使用WHERE子句来过滤查询结果,只返回满足条件的行。 - **数据汇总**:使用聚合函数(如COUNT、SUM、AVG等)来汇总数据。 - **排序**:使用ORDER BY子句来对查询结果进行排序。 **4.2 高级数据过滤** - **通配符过滤**:使用LIKE关键字配合通配符(如%、_)来过滤查询结果。 - **空值检测**:使用IS NULL或IS NOT NULL来判断某个值是否为空。 - **反义运算符**:使用NOT关键字来反转条件,如NOT LIKE、NOT BETWEEN等。 - **多值检测**:使用IN或NOT IN来检查某列的值是否在一个指定的值列表中。 - **范围值检测**:使用BETWEEN AND来检查某列的值是否在一个指定的范围内。 - **低效的“WHERE 1=1”**:在WHERE子句中使用1=1作为初始条件是低效的,应该尽量避免。 **4.3 数据分组** - **数据分组入门**:使用GROUP BY子句来根据指定的列对数据进行分组。 - **数据分组与聚合函数**:结合GROUP BY子句和聚合函数(如COUNT、SUM、AVG等)来对分组后的数据进行统计分析。 - **HAVING语句**:用于过滤GROUP BY子句生成的结果集,仅对分组后的结果进行过滤。 **4.4 限制结果集行数** - **MySQL**:使用LIMIT关键字来限制查询结果的行数。 - **MSSQL Server 2000/2005**:使用TOP关键字来限制查询结果的行数。 - **Oracle**:使用ROWNUM伪列来限制查询结果的行数。 - **DB2**:使用FETCH FIRST n ROWS ONLY来限制查询结果的行数。 - **数据库分页**:使用LIMIT和OFFSET或ROWNUM等技术实现数据库的分页查询。 **4.5 抑制数据重复** - 使用DISTINCT关键字来去除查询结果中的重复行。 **4.6 计算字段** - **常量字段**:在SELECT语句中直接指定一个常量值作为查询结果的一部分。 - **字段间的计算**:使用算术运算符来对表中的列进行计算。 - **数据处理函数**:使用内置函数来处理数据,如TRIM、UPPER、LOWER等。 - **字符串的拼接**:使用CONCAT或||运算符来连接字符串。 - **计算字段的其他用途**:例如使用CASE WHEN语句来创建复杂的计算字段。 **4.7 不从实体表中取的数据** - 在某些情况下,可以使用虚拟表或子查询来获取数据,这些数据并不是直接从实际的表中取出的。 **4.8 联合结果集** - **简单的结果集联合**:使用UNION操作符来合并两个或多个查询结果集。 - **联合结果集的原则**:每个查询必须具有相同数量的列,且相应的列必须具有相似的数据类型。 - **UNION ALL**:与UNION类似,但不会去除重复的行。 - **联合结果集应用举例**:比如在查询员工信息时,可以联合多个部门的数据来获取所有员工的信息。 #### 六、函数 **5.1 数学函数** - **求绝对值**:使用ABS函数。 - **求指数**:使用EXP函数。 - **求平方根**:使用SQRT函数。 - **求随机数**:使用RAND函数。 - **舍入到最大整数**:使用CEIL函数。 - **舍入到最小整数**:使用FLOOR函数。 - **四舍五入**:使用ROUND函数。 - **求正弦值**:使用SIN函数。 - **求余弦值**:使用COS函数。 - **求反正弦值**:使用ASIN函数。 - **求反余弦值**:使用ACOS函数。 - **求正切值**:使用TAN函数。 - **求反正切值**:使用ATAN函数。 - **求两个变量的反正切**:使用ATAN2函数。 - **求余切**:没有直接的函数支持,可以通过计算得到。 - **求圆周率π值**:使用PI函数。 - **弧度制转换为角度制**:使用DEGREES函数。 - **角度制转换为弧度制**:使用RADIANS函数。 - **求符号**:使用SIGN函数。 - **求整除余数**:使用MOD函数。 - **求自然对数**:使用LN函数。 - **求以10为底的对数**:使用LOG10函数。 - **求幂**:使用POWER函数。 **5.2 字符串函数** - **计算字符串长度**:使用LENGTH函数。 - **字符串转换为小写**:使用LOWER函数。 - **字符串转换为大写**:使用UPPER函数。 - **截去字符串左侧空格**:使用LTRIM函数。 - **截去字符串右侧空格**:使用RTRIM函数。 - **截去字符串两侧的空格**:使用TRIM函数。 - **取子字符串**:使用SUBSTRING函数。 - **计算子字符串的位置**:使用LOCATE或INSTR函数。 - **从左侧开始取子字符串**:使用LEFT函数。 - **从右侧开始取子字符串**:使用RIGHT函数。 - **替换字符串中的部分字符**:使用REPLACE函数。 以上内容涵盖了《程序员的SQL金典》中的主要知识点,旨在帮助读者深入理解数据库的基础知识及SQL语言的使用技巧。希望这些内容能够对学习者有所帮助。
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![thumb](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/a63dfe3886d44cc4a60fb3231a0bab23_in_right.jpg!1)
- 粉丝: 1
- 资源: 7
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)