程序员的SQL金典.pdf 高清 下载
需积分: 0 121 浏览量
更新于2013-03-18
收藏 2.18MB PDF AIGC 举报
### 数据库基础知识精讲
#### 一、数据库概述
**1.1.1 数据库与数据库管理系统**
数据库(Database)是一种组织存储数据的方式,它能够帮助我们有效地存储、管理和检索数据。一个典型的数据库由一系列相关联的数据集合组成,这些数据按照一定的逻辑结构进行组织。
数据库管理系统(Database Management System, DBMS)是一套用于创建、维护和管理数据库的应用软件系统。DBMS提供了用户与物理存储设备之间的接口,允许用户执行各种操作,如查询、更新、管理等。常见的DBMS有MySQL、Oracle、SQL Server、PostgreSQL等。
**1.1.2 数据库能做什么**
- **数据存储**:持久化地存储数据。
- **数据检索**:高效地查询数据。
- **数据更新**:修改现有数据。
- **数据安全性**:保护数据免受未授权访问。
- **数据完整性**:确保数据的准确性和一致性。
- **并发控制**:支持多用户同时访问数据库而不会导致数据冲突。
**1.1.3 主流数据库管理系统介绍**
- **MySQL**:开源关系型数据库,适用于中小型企业。
- **Oracle**:功能强大的企业级数据库系统。
- **SQL Server**:微软公司的关系型数据库系统,广泛应用于Windows平台。
- **PostgreSQL**:开源的对象关系型数据库,以其稳定性和扩展性著称。
- **MongoDB**:一种流行的NoSQL数据库,适用于非结构化数据存储。
#### 二、数据库基础概念
**1.2.1 Catalog(目录)**
在某些数据库系统中,Catalog用于组织数据库,可以理解为数据库的容器或者数据库的数据库。每个Catalog可以包含多个数据库,从而实现更高层次的数据隔离。
**1.2.2 表(Table)**
表是数据库中最基本的数据组织形式,由行和列组成。每张表都有一个唯一的名称,并且表中的每一列都有特定的数据类型。
**1.2.3 列(Column)**
列是表中的一组相关数据项,每个列有一个名称和一个数据类型。例如,在员工表中,“姓名”、“年龄”和“工资”都是不同的列。
**1.2.4 数据类型(DataType)**
数据类型定义了可以存储在列中的数据种类。常见的数据类型包括整数类型、数值类型、字符类型、日期时间类型和二进制类型等。
**1.2.5 记录(Record)**
记录是指表中的一行数据,也称为元组。每个记录对应表中的一个实体对象,比如一条客户信息或一条订单信息。
**1.2.6 主键(PrimaryKey)**
主键是表中唯一标识每条记录的一个或一组列。它可以是一个单一的列,也可以是由多个列组成的复合键。主键的主要作用是确保表中记录的唯一性。
**1.2.7 索引(Index)**
索引类似于图书的目录,可以帮助数据库更快地检索数据。创建索引可以提高查询性能,但会占用额外的存储空间,并可能降低写入性能。
**1.2.8 表关联**
表关联是指通过公共列将多个表连接起来形成更复杂的关系。常用的关联方式有内连接、外连接等。
**1.2.9 数据库的语言——SQL**
SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准语言。它被用来执行各种数据库操作,如查询、插入、更新和删除等。
**1.2.10 DBA与程序员**
DBA(Database Administrator,数据库管理员)负责数据库系统的管理与维护工作,而程序员主要负责应用程序的开发。两者需要紧密合作来确保数据的安全性和可用性。
#### 三、数据表的创建和管理
**2.1 数据类型**
- **2.1.1 整数类型**:如TINYINT、SMALLINT、INTEGER等,用于存储整数。
- **2.1.2 数值类型**:如DECIMAL、FLOAT等,用于存储实数。
- **2.1.3 字符相关类型**:如CHAR、VARCHAR等,用于存储文本数据。
- **2.1.4 日期时间类型**:如DATE、TIME、DATETIME等,用于存储日期和时间信息。
- **2.1.5 二进制类型**:如BINARY、VARBINARY等,用于存储二进制数据。
**2.2 通过SQL语句管理数据表**
- **2.2.1 创建数据表**:使用CREATE TABLE语句来创建一个新的数据表。
- **2.2.2 定义非空约束**:使用NOT NULL约束确保某列不能为空。
- **2.2.3 定义默认值**:使用DEFAULT关键字为某列设置默认值。
- **2.2.4 定义主键**:使用PRIMARY KEY约束定义表的主键。
- **2.2.5 定义外键**:使用FOREIGN KEY约束定义表之间的关联关系。
- **2.2.6 修改已有数据表**:使用ALTER TABLE语句来修改已有的数据表结构。
- **2.2.7 删除数据表**:使用DROP TABLE语句来删除数据表。
- **2.2.8 受限操作的变通解决方案**:当遇到某些操作受限时,可以通过先删除约束再执行操作,最后重建约束的方式来解决。
#### 四、数据的增、删、改
**3.1 数据的插入**
- **3.1.1 简单的INSERT语句**:用于向表中插入一行新记录。
- **3.1.2 简化的INSERT语句**:省略列名列表,直接提供值列表。
- **3.1.3 非空约束对数据插入的影响**:如果某列定义了NOT NULL约束,则插入数据时必须提供该列的值。
- **3.1.4 主键对数据插入的影响**:如果某列定义为主键,则插入的数据必须满足唯一性约束。
- **3.1.5 外键对数据插入的影响**:如果某列定义了外键约束,则插入的数据必须在参照表中存在。
**3.2 数据的更新**
- **3.2.1 简单的数据更新**:使用UPDATE语句更新表中的数据。
- **3.2.2 带WHERE子句的UPDATE语句**:指定条件更新数据。
- **3.2.3 非空约束对数据更新的影响**:如果某列定义了NOT NULL约束,则更新数据时必须提供该列的值。
- **3.2.4 主键对数据更新的影响**:如果某列定义为主键,则更新该列可能会违反唯一性约束。
- **3.2.5 外键对数据更新的影响**:如果某列定义了外键约束,则更新该列可能会违反参照完整性约束。
**3.3 数据的删除**
- **3.3.1 简单的数据删除**:使用DELETE语句删除表中的数据。
- **3.3.2 带WHERE子句的DELETE语句**:根据条件删除数据。
#### 五、数据的检索
**4.1 SELECT基本用法**
- **4.1.1 简单的数据检索**:使用SELECT * FROM语句检索表中的所有数据。
- **4.1.2 检索出需要的列**:使用SELECT列名列表 FROM语句检索特定的列。
- **4.1.3 列别名**:使用AS关键字为列命名别名。
- **4.1.4 按条件过滤**:使用WHERE子句根据条件过滤数据。
- **4.1.5 数据汇总**:使用聚合函数(如COUNT、SUM、AVG等)对数据进行汇总统计。
- **4.1.6 排序**:使用ORDER BY子句对结果集进行排序。
**4.2 高级数据过滤**
- **4.2.1 通配符过滤**:使用LIKE操作符结合通配符(%、_)进行模糊匹配。
- **4.2.2 空值检测**:使用IS NULL或IS NOT NULL判断某列是否为空。
- **4.2.3 反义运算符**:使用NOT关键字对逻辑表达式进行取反。
- **4.2.4 多值检测**:使用IN或NOT IN操作符判断某列的值是否在指定集合中。
- **4.2.5 范围值检测**:使用BETWEEN AND或NOT BETWEEN AND操作符判断某列的值是否在指定范围内。
- **4.2.6 低效的“WHERE 1=1”**:虽然语法上可行,但通常用于构建动态SQL时,会降低查询效率。
**4.3 数据分组**
- **4.3.1 数据分组入门**:使用GROUP BY子句对数据进行分组。
- **4.3.2 数据分组与聚合函数**:结合GROUP BY子句使用聚合函数对分组后的数据进行统计。
- **4.3.3 HAVING语句**:类似于WHERE子句,但用于过滤GROUP BY的结果。
**4.4 限制结果集行数**
- **4.4.1 MySQL**:使用LIMIT关键字限制结果集行数。
- **4.4.2 MSSQL Server 2000**:使用TOP关键字限制结果集行数。
- **4.4.3 MSSQL Server 2005**:使用ROW_NUMBER()窗口函数配合SELECT TOP (WITH TIES)实现。
- **4.4.4 Oracle**:使用ROWNUM伪列配合子查询实现。
- **4.4.5 DB2**:使用FETCH FIRST N ROWS ONLY限制结果集行数。
- **4.4.6 数据库分页**:结合LIMIT或类似关键字实现分页查询。
**4.5 抑制数据重复**
- 使用DISTINCT关键字去除重复记录。
**4.6 计算字段**
- **4.6.1 常量字段**:在查询中直接使用常量值。
- **4.6.2 字段间的计算**:使用算术运算符对字段进行计算。
- **4.6.3 数据处理函数**:使用内置函数处理数据,如TRIM去除字符串两端空白等。
- **4.6.4 字符串的拼接**:使用CONCAT或||操作符拼接字符串。
- **4.6.5 计算字段的其他用途**:如条件表达式、格式化日期等。
**4.7 不从实体表中取的数据**
- 使用子查询或视图生成的数据。
**4.8 联合结果集**
- **4.8.1 简单的结果集联合**:使用UNION关键字合并多个查询结果。
- **4.8.2 联合结果集的原则**:参与联合的查询必须具有相同的列数和数据类型。
- **4.8.3 UNION ALL**:类似于UNION,但保留重复记录。
- **4.8.4 联合结果集应用举例**:如组合不同表中的数据等。
#### 六、函数
**5.1 数学函数**
- **5.1.1 求绝对值**:使用ABS()函数计算数值的绝对值。
- **5.1.2 求指数**:使用EXP()函数计算e的指数。
- **5.1.3 求平方根**:使用SQRT()函数计算平方根。
- **5.1.4 求随机数**:使用RAND()函数生成随机数。
- **5.1.5 舍入到最大整数**:使用CEIL()或CEILING()函数向上取整。
- **5.1.6 舍入到最小整数**:使用FLOOR()函数向下取整。
- **5.1.7 四舍五入**:使用ROUND()函数进行四舍五入。
- **5.1.8 求正弦值**:使用SIN()函数计算正弦值。
- **5.1.9 求余弦值**:使用COS()函数计算余弦值。
- **5.1.10 求反正弦值**:使用ASIN()函数计算反正弦值。
- **5.1.11 求反余弦值**:使用ACOS()函数计算反余弦值。
- **5.1.12 求正切值**:使用TAN()函数计算正切值。
- **5.1.13 求反正切值**:使用ATAN()函数计算反正切值。
- **5.1.14 求两个变量的反正切**:使用ATAN2()函数计算两个变量的反正切值。
- **5.1.15 求余切**:使用COT()函数计算余切值。
- **5.1.16 求圆周率π值**:使用PI()函数获取π值。
- **5.1.17 弧度制转换为角度制**:使用RADIANS()函数将角度转换为弧度。
- **5.1.18 角度制转换为弧度制**:使用DEGREES()函数将弧度转换为角度。
- **5.1.19 求符号**:使用SIGN()函数判断数值的符号。
- **5.1.20 求整除余数**:使用MOD()函数计算两数相除的余数。
- **5.1.21 求自然对数**:使用LN()函数计算自然对数。
- **5.1.22 求以10为底的对数**:使用LOG10()函数计算以10为底的对数。
- **5.1.23 求幂**:使用POW()或POWER()函数计算幂。
**5.2 字符串函数**
- **5.2.1 计算字符串长度**:使用LENGTH()函数计算字符串的长度。
- **5.2.2 字符串转换为小写**:使用LOWER()函数将字符串转换为小写。
- **5.2.3 字符串转换为大写**:使用UPPER()函数将字符串转换为大写。
- **5.2.4 截去空白字符**:使用TRIM()函数去除字符串前后的空白字符。

仧尐
- 粉丝: 240
最新资源
- 生成Java桌面数据库应用程序.doc
- 网络媒介对于文学发展的历史性作用的探究论文.doc
- 计算机软件委托开发协议.docx
- 网站风险评估自查报告.docx
- 无线通信在机械水表中应用技术研究与探索.doc
- 网络营销产品策略讲义.ppt
- 高CAD模拟考试题目(一).doc
- 通信线路施工安全交底记录.doc
- 2023年网络编辑自我评价(通用三篇).docx
- 网络信息部工作计划.docx
- 智能家居五大系统解决方案专题培训课件.ppt
- 可编程逻辑器件和VHDL(共17张PPT).pptx
- 基于 JavaWeb 技术的鞋类商品销售网站设计与实现
- 网络基础练习测验题.doc
- 机械CADCAM课程教学辅导.doc
- 机动车驾驶人身体条件excel模板.xls