活动介绍

程序员的SQL金典.pdf 高清 下载

preview
需积分: 0 5 下载量 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()函数去除字符串前后的空白字符。
身份认证 购VIP最低享 7 折!
30元优惠券