logo资料库

程序员的SQL金典(完整).pdf+学习笔记

第1页 / 共312页
第2页 / 共312页
第3页 / 共312页
第4页 / 共312页
第5页 / 共312页
第6页 / 共312页
第7页 / 共312页
第8页 / 共312页
资料共312页,剩余部分请下载后查看
目录
第一章 数据库入门
1.1 数据库概述
1.1.2 “数据库”与数据库管理系统”
1.1.2 数据库能做什么
1.1.3 主流数据库管理系统介绍
1.2 数据库基础概念
1.2.1 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
1.2.10 DBA与程序员
第二章 数据表的创建和管理
2.1 数据类型
2.1.1 整数类型
2.1.2 数值类型
2.1.3 字符相关类型
2.1.4 日期时间类型
2.1.5 二进制类型
2.2 通过SQL语句管理数据表
2.2.1 创建数据表
2.2.2 定义非空约束
2.2.3 定义默认值
2.2.4 定义主键。
2.2.5 定义外键
2.2.6 修改已有数据表
2.2.7 删除数据表
2.2.8 受限操作的变通解决方案
第三章 数据的增删改
3.1 数据的插入
3.1.1 简单的INSERT语句
3.1.2 简化的INSERT语句
3.1.3 非空约束对数据插入的影响
3.1.3 主键对数据插入的影响
3.1.4 外键对数据插入的影响
3.2 数据的更新
3.2.1 简单的数据更新
3.2.2 带WHERE 子句的UPDATE 语句
3.2.3 非空约束对数据更新的影响
3.2.3 主键对数据更新的影响
3.2.4 外键对数据更新的影响
3.3 数据的删除
3.3.1 简单的数据删除
3.3.2 带WHERE 子句的DELETE 语句
问题1
第四章 数据的检索
4.1 SELECT基本用法
4.1.1 简单的数据检索
4.1.2 检索出需要的列
4.1.3 列别名
4.1.4按条件过滤
4.1.5 数据汇总
4.1.6 排序
4.2 高级数据过滤
4.2.1 通配符过滤
4.2.1.2 多字符匹配
4.2.1.3 集合匹配
4.2.2 空值检测
4.2.3 反义运算符
4.2.4 多值检测
4.2.5 范围值检测
4.2.6 低效的“WHERE 1=1”
4.3 数据分组
4.3.1 数据分组入门
4.3.2 数据分组与聚合函数
4.3.3 HAVING 语句
4.4 限制结果集行数
4.4.1 MYSQL
4.4.2 MSSQLServer2000
4.4.3 MSSQLServer2005
4.4.4 Oracle
4.4.5 DB2
4.4.6 数据库分页
4.5 抑制数据重复
4.6 计算字段
4.6.1 常量字段
4.6.2 字段间计算
4.6.3 数据处理函数
4.6.4 字符串的拼接
4.6.4.1 MYSQL
4.6.4.2 MSSQLServer
4.6.4.3 Oracle
4.6.4.4 DB2
4.6.5 计算字段的其他用途
4.6.5.1 计算处于合理工资范围内的员工
4.6.5.2 查询“工资年龄指数”
4.6.5.3 年龄全部加1
4.7 不从实体表中取的数据
4.8 联合结果集
4.8.1 简单的结果集联合
4.8.2 联合结果集的原则
4.8.3 UNION ALL
4.8.4 联合结果集应用举例
4.8.4.1 员工年龄报表
4.8.4.2 正式员工工资报表
4.8.4.3 打印5以内自然数的平方
4.8.4.4 列出员工姓名
4.8.4.5 分别列出正式员工和临时工的姓名
第五章 函数
5.1 数学函数
5.1.1 求绝对值
5.1.2 求指数
5.1.3 求平方根
5.1.4 求随机数
5.1.4.1 MYSQL
5.1.4.2 MSSQLServer
5.1.4.3 Oracle
5.1.4.4 DB2
5.1.5 舍入到最大整数
5.1.6 舍入到最小整数
5.1.7 四舍五入
5.1.7.1 两个参数
5.1.7.2 单一参数
5.1.8 求正弦值
5.1.9 求余弦值
5.1.10 求反正弦值
5.1.11 求反余弦值
5.1.12 求正切值
5.1.13 求反正切值
5.1.14 求2个变量的反正切
5.1.15 求余切
5.1.16 求圆周率π值
5.1.17 弧度制转换为角度制
5.1.18 角度制转换为弧度制
5.1.19 求符号
5.1.20 求符号
5.1.21 求整除余数
5.1.22 求自然对数
5.1.23 求自然对数
5.1.24 求以10为底的对数
5.1.25 求幂
5.2 字符串函数
5.2.1 计算字符串长度
5.2.2 字符串转换为小写
5.2.3 字符串转换为大写
5.2.4 截去字符串左侧空格
5.2.5 截去字符串右侧空格
5.2.6 截去字符串两侧的空格
5.2.7 取子字符串
5.2.8 计算子字符串的位置
5.2.9 从左侧开始取子字符串
5.2.10 从右侧开始取子字符串
5.2.11 字符串替换
5.2.12 得到字符的ASCII码
5.2.13 得到一个ASCII码数字对应的字符
5.2.14 发音匹配度
5.3 日期时间函数
5.3.1 日期、时间、日期时间与时间戳
5.3.2 主流数据库系统中日期时间类型的表示方式
5.3.3 取得当前日期时间
5.3.3.1 MYSQL
5.3.3.2 MSQLServer
5.3.3.3 Oracle
5.3.3.4 DB2
5.3.4 日期增减
5.3.4.1 MYSQL
5.3.4.2 MSSQLServer
5.3.4.3 Oracle
5.3.4.4 DB2
5.3.5 计算日期差额
5.3.5.1 MYSQL
5.3.5.2 MSSQLServer
5.3.5.3 Oracle
5.3.5.4 DB2
5.3.6 计算一个日期是星期几
5.3.6.1 MYSQL
5.3.6.2 MSQLServer
5.3.6.3 Oracle
5.3.6.4 DB2
5.3.7 取得日期的指定部分
5.3.7.1 MYSQL
5.3.7.2 MSSQLServer
5.3.7.3 Oracle
5.3.7.4 DB2
5.4 其他函数
5.4.1 类型转换
5.4.1.1 MYSQL
5.4.1.2 MSSQLServer
5.4.1.3 Oracle
5.4.1.4 DB2
5.4.2 空值处理
5.4.2.1 COALESCE()函数
5.4.2.2 COALESCE()函数的简化版
5.4.2.3 NULLIF()函数
5.4.3 CASE函数
5.4.3.1 用法一
5.4.3.2 用法二
5.5 各数据库系统独有函数
5.5.1 MYSQL中的独有函数
5.5.1.1 IF()函数
5.5.1.2 CONV()函数
5.5.1.3 填充函数
5.5.1.4 REPEAT()函数
5.5.1.5 字符串颠倒
5.5.1.6 字符串的集合操作
5.5.1.7 计算集合中的最大最小值
5.5.1.8 辅助功能函数
5.5.2 MSSQLServer中的独有函数
5.5.2.1 PATINDEX()函数
5.5.2.2 REPLICATE ()函数
5.5.2.3 字符串颠倒
5.5.2.4 ISDATE()函数
5.5.2.5 ISNUMERIC()函数
5.5.2.6 辅助功能函数
5.5.3 Oracle中的独有函数
5.5.3.1填充函数
5.5.3.2 返回当月最后一天
5.5.3.3 计算最大最小值
5.5.3.4 辅助功能函数
第六章 索引与约束
6.1 索引
6.2 约束
6.2.1 非空约束
6.2.2 唯一约束
6.2.3 CHECK约束
6.2.4 主键约束
6.2.5 外键约束
第七章 表连接
7.1 表连接简介
7.2 内连接(INNER JOIN)
7.3 不等值连接
7.4 交叉连接
7.5 自连接
7.6 外部连接
7.6.1 左外部连接
7.6.2 右外部连接
7.6.3 全外部连接
第八章 子查询
8.1 子查询入门
8.1.1 单值子查询
8.1.2 列值子查询
8.2 SELECT列表中的标量子查询
8.3 WHERE 子句中的标量子查询
8.4 集合运算符与子查询
8.4.1 IN 运算符
8.4.2 ANY和SOME 运算符
8.4.3 ALL运算符
8.4.4 EXISTS运算符
8.5 在其他类型SQL语句中的子查询应用
8.5.1 子查询在INSERT语句中的应用
8.5.2 子查询在UPDATE 语句中的应用
8.5.3 子查询在DELETE 语句中的应用
第九章 主流数据库的SQL语法差异以解决方案
9.1 SQL语法差异分析
9.1.1 数据类型的差异
9.1.2 运算符的差异
9.1.3 函数的差异
9.1.4 常用SQL的差异
9.1.4.1 限制结果集行数
9.1.4.2 删除索引
9.1.5取元数据信息的差异
9.1.5.1 取数据库信息
9.1.5.2 取得所有表
9.1.5.3 取得指定Schema下的表
9.1.5.4 取得指定表的字段定义
9.2消除差异性的方案
9.2.1为每种数据库编写不同的SQL语句
9.2.2使用语法交集
9.2.3使用SQL实体对象
9.2.4使用ORM工具
9.2.5使用SQL翻译器
9.2.5.1 SwisSQL
9.2.5.2 LDBC
9.2.5.3 CowNewSQL
9.3 CowNewSQL翻译器
9.3.1 CowNewSQL支持的数据类型
9.3.1.1 CowNewSQL中日期常量的表示
9.3.1.2 字符串的连接
9.3.2 CowNewSQL支持的SQL语法
9.3.2.1 Create Table
9.3.2.2 DropTable
9.3.2.3 Create Index
9.3.2.4 Drop Index
9.3.2.5 SELECT
9.3.2.6 Insert
9.3.2.7 Delete
9.3.2.8 Update
9.3.2.9 Show
9.3.3 CowNewSQL支持的函数
9.3.4 CowNewSQL的使用方法
9.3.4.1 直接调用翻译器
9.3.4.2 JDBC驱动方式使用
第十章 高级话题
10.1 SQL注入漏洞攻防
10.1.1 SQL注入漏洞原理
10.1.2 过滤敏感字符
10.1.3 使用参数化SQL
10.2 SQL调优
10.2.1 SQL调优的基本原则
10.2.2 索引
10.2.3 表扫描和索引查找
10.2.4 优化手法
10.2.4.1 创建必要的索引
10.2.4.2 使用预编译查询
10.2.4.3 调整WHERE 子句中的连接顺序
10.2.4.4 SELECT语句中避免使用'*'
10.2.4.5 尽量将多条SQL语句压缩到一句SQL中
10.2.4.6 用Where子句替换HAVING 子句
10.2.4.7 使用表的别名
10.2.4.8 用EXISTS替代IN
10.2.4.9 用表连接替换EXISTS
10.2.4.10 避免在索引列上使用计算
10.2.4.11 用UNION ALL 替换UNION
10.2.4.12 避免隐式类型转换造成的全表扫描
10.2.4.13 防止检索范围过宽
10.3 事务
10.3.1 事务简介
10.3.2 事务的隔离
10.3.3 事务的隔离级别
10.3.4 事务的使用
10.4 自动增长字段
10.4.1 MYSQL中的自动增长字段
10.4.2 MSSQLServer 中的自动增长字段
10.4.3 Oracle中的自动增长字段
10.4.4 DB2 中的自动增长字段
10.4.4.1 定义带有 IDENTITY 属性的列
10.4.4.2 使用SEQUENCE 对象
10.5 业务主键与逻辑主键
10.6 NULL的学问
10.6.1 NULL与比较运算符
10.6.2 NULL和计算字段
10.6.3 NULL和字符串
10.6.4 NULL和函数
10.6.5 NULL和聚合函数
10.6.6 诀窍
10.7 开窗函数
10.7.1 开窗函数简介
10.7.2 PARTITION BY 子句
10.7.2 ORDER BY子句
10.7.3 高级开窗函数
10.8 WITH子句与子查询
第十一章 案例讲解
11.1 报表制作
11.1.1 显示制单人详细信息
11.1.2 显示销售单的详细信息
11.1.3 计算收益
11.1.4 产品销售额统计
11.1.5 统计销售记录的份额
11.1.6 为采购单分级
11.1.7 检索所有重叠日期销售单
11.1.8为查询编号
11.1.9 标记所有单内最大销售量
11.2 排序
11.2.1 非字段排序规则
11.2.2 随机排序
11.3 表间比较
11.3.1 检索制作过采购单的人制作的销售单
11.3.2 检索没有制作过采购单的人制作的销售单
11.4 表复制
11.4.1 复制源表的结构并复制表中的数据
11.4.2 只复制源表的结构
11.5 计算字符在字符串中出现的次数
11.6 去除最高分、去除最低分
11.6.1 去除所有最低最高值
11.6.2 只去除一个最低最高值
11.7 日期相关的应用
11.7.1 计算销售确认日和制单日之间相差的天数
11.7.2 计算两张销售单之间的时间间隔
11.7.3 计算销售单制单日期所在年份的天数
11.7.4计算销售单制单日期所在月份的第一天和最后一天
11.8 结果集转置
11.8.1 将结果集转置为一行
11.8.2 把结果集转置为多行
11.9 递归查询
11.9.1 Oracle中的CONNECT BY子句
11.9.1.1 简单的应用
11.9.1.2 PRIOR运算符
11.9.1.3 计算节点层次
11.9.2 Oracle中的SYS_CONNECT_BY_PATH()函数
11.9.3 MYSQLServer和DB2中递归查询
传智播客.net 培训内部使用,禁止 外传 For Internal Only 作者 杨中科 如鹏网 www.rupeng.com 传智播客.net 培训 www.itcast.cn 第 1 章 数据库入门 1 1.1 数据库概述 1 1.1.1 数据库与数据库管理系统 1.1.2 数据库能做什么 1.1.3 主流数据库管理系统介绍 1.2 数据库基础概念 5 2 1 2
1.2.1 Catalog 5 1.2.2 表(Table) 6 1.2.3 列(Column) 7 1.2.4 数据类型(DataType) 8 1.2.5 记录(Record) 9 1.2.6 主键(PrimaryKey) 9 1.2.7 索引(Index) 10 1.2.8 表关联 12 1.2.9 数据库的语言——SQL 13 1.2.10 DBA 与程序员 14 第 2 章 数据表的创建和管理 17 2.1 数据类型 17 2.1.1 整数类型 17 2.1.2 数值类型 19 2.1.3 字符相关类型 21 2.1.4 日期时间类型 23 2.1.5 二进制类型 24 2.2 通过 SQL 语句管理数据表 25 2.2.1 创建数据表 25 2.2.2 定义非空约束 26 2.2.3 定义默认值 27 2.2.4 定义主键 27 2.2.5 定义外键 29 2.2.6 修改已有数据表 30 2.2.7 删除数据表 31 2.2.8 受限操作的变通解决方案 31 第 3 章 数据的增、删、改 33 3.1 数据的插入 34 3.1.1 简单的 INSERT 语句 34 3.1.2 简化的 INSERT 语句 36 3.1.3 非空约束对数据插入的影响 36 3.1.4 主键对数据插入的影响 37 3.1.5 外键对数据插入的影响 38 3.2 数据的更新 38 3.2.1 简单的数据更新 39 3.2.2 带 WHERE 子句的 UPDATE语句 40 3.2.3 非空约束对数据更新的影响 41 3.2.4 主键对数据更新的影响 42 3.2.5 外键对数据更新的影响 42 3.3 数据的删除 43 3.3.1 简单的数据删除 43 3.3.2 带 WHERE 子句的 DELETE 语句 44 第 4 章 数据的检索 47 4.1 SELECT 基本用法 48
4.1.1 简单的数据检索 48 4.1.2 检索出需要的列 49 4.1.3 列别名 51 4.1.4 按条件过滤 52 4.1.5 数据汇总 53 4.1.6 排序 56 4.2 高级数据过滤 59 4.2.1 通配符过滤 59 4.2.2 空值检测 63 4.2.3 反义运算符 64 4.2.4 多值检测 65 4.2.5 范围值检测 66 4.2.6 低效的“WHERE 1=1” 68 4.3 数据分组 72 4.3.1 数据分组入门 74 4.3.2 数据分组与聚合函数 76 4.3.3 HAVING 语句 79 4.4 限制结果集行数 81 4.4.1 MySQL 81 4.4.2 MS SQL Server 2000 82 4.4.3 MS SQL Server 2005 83 4.4.4 Oracle 84 4.4.5 DB2 86 4.4.6 数据库分页 88 4.5 抑制数据重复 90 4.6 计算字段 91 4.6.1 常量字段 92 4.6.2 字段间的计算 93 4.6.3 数据处理函数 95 4.6.4 字符串的拼接 97 4.6.5 计算字段的其他用途 103 4.7 不从实体表中取的数据 105 4.8 联合结果集 107 4.8.1 简单的结果集联合 108 4.8.2 联合结果集的原则 110 4.8.3 UNION ALL 112 4.8.4 联合结果集应用举例 114 第 5 章 函数 119 5.1 数学函数 122 5.1.1 求绝对值 122 5.1.2 求指数 122 5.1.3 求平方根 123 5.1.4 求随机数 123 5.1.5 舍入到最大整数 125
5.1.6 舍入到最小整数 126 5.1.7 四舍五入 127 5.1.8 求正弦值 128 5.1.9 求余弦值 129 5.1.10 求反正弦值 129 5.1.11 求反余弦值 130 5.1.12 求正切值 130 5.1.13 求反正切值 131 5.1.14 求两个变量的反正切 131 5.1.15 求余切 132 5.1.16 求圆周率π值 132 5.1.17 弧度制转换为角度制 133 5.1.18 角度制转换为弧度制 134 5.1.19 求符号 134 5.1.20 求整除余数 135 5.1.21 求自然对数 136 5.1.22 求以 10 为底的对数 136 5.1.23 求幂 137 5.2 字符串函数 137 5.2.1 计算字符串长度 138 5.2.2 字符串转换为小写 138 5.2.3 字符串转换为大写 139 5.2.4 截去字符串左侧空格 139 5.2.5 截去字符串右侧空格 140 5.2.6 截去字符串两侧的空格 141 5.2.7 取子字符串 143 5.2.8 计算子字符串的位置 144 5.2.9 从左侧开始取子字符串 145 5.2.10 从右侧开始取子字符串 146 5.2.11 字符串替换 147 5.2.12 得到字符的 ASCII 码 148 5.2.13 得到一个 ASCII 码数字对应的字符 149 5.2.14 发音匹配度 151 5.3 日期时间函数 153 5.3.1 日期、时间、日期时间与时间戳 153 5.3.2 主流数据库系统中日期时间类型的表示方式 154 5.3.3 取得当前日期时间 154 5.3.4 日期增减 157 5.3.5 计算日期差额 166 5.3.6 计算一个日期是星期几 172 5.3.7 取得日期的指定部分 177 5.4 其他函数 183 5.4.1 类型转换 183 5.4.2 空值处理 188
5.4.3 CASE 函数 191 5.5 各数据库系统独有函数 194 5.5.1 MySQL 中的独有函数 195 5.5.2 MS SQL Server 中的独有函数 202 5.5.3 Oracle 中的独有函数 206 第 6 章 索引与约束 209 6.1 索引 209 6.2 约束 211 6.2.1 非空约束 211 6.2.2 唯一约束 212 6.2.3 CHECK 约束 217 6.2.4 主键约束 221 6.2.5 外键约束 224 第 7 章 表连接 233 7.1 表连接简介 236 7.2 内连接(INNER JOIN) 236 7.3 不等值连接 240 7.4 交叉连接 241 7.5 自连接 245 7.6 外部连接 248 7.6.1 左外部连接 250 7.6.2 右外部连接 251 7.6.3 全外部连接 252 第 8 章 子查询 255 8.1 子查询入门 261 8.1.1 单值子查询 261 8.1.2 列值子查询 263 8.2 SELECT 列表中的标量子查询 265 8.3 WHERE 子句中的标量子查询 267 8.4 集合运算符与子查询 270 8.4.1 IN 运算符 270 8.4.2 ANY 和 SOME 运算符 272 8.4.3 ALL 运算符 274 8.4.4 EXISTS 运算符 275 8.5 在其他类型 SQL 语句中的子查询应用 277 8.5.1 子查询在 INSERT 语句中的应用 277 8.5.2 子查询在 UPDATE语句中的应用 283 8.5.3 子查询在 DELETE 语句中的应用 285 第 9 章 主流数据库的 SQL 语法差异解决方案 287 9.1 SQL 语法差异分析 287 9.1.1 数据类型的差异 287 9.1.2 运算符的差异 288 9.1.3 函数的差异 289 9.1.4 常用 SQL 的差异 289
9.1.5 取元数据信息的差异 290 9.2 消除差异性的方案 293 9.2.1 为每种数据库编写不同的 SQL 语句 293 9.2.2 使用语法交集 294 9.2.3 使用 SQL 实体对象 294 9.2.4 使用 ORM 工具 295 9.2.5 使用 SQL 翻译器 296 9.3 CowNewSQL 翻译器 299 9.3.1 CowNewSQL 支持的数据类型 299 9.3.2 CowNewSQL 支持的 SQL 语法 300 9.3.3 CowNewSQL 支持的函数 305 9.3.4 CowNewSQL 的使用方法 309 第 10 章 高级话题 313 10.1 SQL 注入漏洞攻防 313 10.1.1 SQL 注入漏洞原理 313 10.1.2 过滤敏感字符 314 10.1.3 使用参数化 SQL 315 10.2 SQL 调优 316 10.2.1 SQL 调优的基本原则 317 10.2.2 索引 317 10.2.3 全表扫描和索引查找 318 10.2.4 优化手法 318 10.3 事务 324 10.3.1 事务简介 324 10.3.2 事务的隔离 325 10.3.3 事务的隔离级别 326 10.3.4 事务的使用 327 10.4 自动增长字段 327 10.4.1 MySQL 中的自动增长字段 327 10.4.2 MS SQL Server 中的自动增长字段 328 10.4.3 Oracle 中的自动增长字段 329 10.4.4 DB2 中的自动增长字段 332 10.5 业务主键与逻辑主键 333 10.6 NULL 的学问 334 10.6.1 NULL 与比较运算符 336 10.6.2 NULL 和计算字段 337 10.6.3 NULL 和字符串 338 10.6.4 NULL 和函数 339 10.6.5 NULL 和聚合函数 339 10.7 开窗函数 340 10.7.1 开窗函数简介 342 10.7.2 PARTITION BY 子句 344 10.7.3 ORDER BY 子句 346 10.7.4 高级开窗函数 353
10.8 WITH 子句与子查询 360 第 11 章 案例讲解 363 11.1 报表制作 371 11.1.1 显示制单人详细信息 371 11.1.2 显示销售单的详细信息 373 11.1.3 计算收益 374 11.1.4 产品销售额统计 378 11.1.5 统计销售记录的份额 379 11.1.6 为采购单分级 380 11.1.7 检索所有重叠日期销售单 383 11.1.8 为查询编号 385 11.1.9 标记所有单内最大销售量 386 11.2 排序 389 11.2.1 非字段排序规则 389 11.2.2 随机排序 390 11.3 表间比较 391 11.3.1 检索制作过采购单的人制作的销售单 391 11.3.2 检索没有制作过采购单的人制作的销售单 392 11.4 表复制 394 11.4.1 复制源表的结构并复制表中的数据 394 11.4.2 只复制源表的结构 395 11.5 计算字符在字符串中出现的次数 396 11.6 去除最高分、最低分 396 11.6.1 去除所有最低、最高值 397 11.6.2 只去除一个最低、最高值 397 11.7 与日期相关的应用 398 11.7.1 计算销售确认日和制单日之间相差的天数 398 11.7.2 计算两张销售单之间的时间间隔 399 11.7.3 计算销售单制单日期所在年份的天数 401 11.7.4 计算销售单制单日期所在月份的第一天和最后一天 402 11.8 结果集转置 403 11.8.1 将结果集转置为一行 404 11.8.2 把结果集转置为多行 406 11.9 递归查询 410 11.9.1 Oracle 中的 CONNECT BY 子句 410 11.9.2 Oracle 中的 SYS_CONNECT_BY_PATH()函数 414 11.9.3 My SQL Server 和 DB2 中递归查询 415
第一章 数据库入门 1.1 数据库概述 1.1.1 1.1.2 1.1.3 何为数据库 “数据库”与数据库管理系统” 主流数据库管理系统介绍 表空间与数据表 数据类型与数据列 主键与外键 小巧的嵌入式数据库 1.2 数据库基础概念 1.2.1 1.2.2 1.2.3 1.2.4 1.4 操纵数据库 1.4.1 1.4.2 1.4.3 1.5 数据库的语言——SQL 1.5.1 1.5.2 1.6 DBA 与程序员的区别 通过专有工具连接数据库 通过通用工具连接数据库 通过程序连接数据库 什么是 SQL 家法不严的 SQL 标准 第一章 数据库入门 本章介绍数据库的入门知识,首先介绍什么是数据库,然后介绍数据库中的一些基本概 念,接着介绍操纵数据库的不同方式,最后介绍操纵数据库时使用的语言 SQL,在章节中 我们还将穿插一些非常有趣的话题。 1.1 数据库概述 广义上来讲,数据库就是“数据的仓库”,计算机系统经常用来处理各种各样大量的数 据,比如使用计算机系统收集一个地区的人口信息、检索符合某些条件的当地人口信息、当 一个人去世后还要从系统中删除此人的相关信息。我们可以自定义一个文件格式,然后把人 口数据按照这个格式保存到文件中,当需要对已经存入的数据进行检索或者修改的时候就重 新读取这个文件然后进行相关操作。这种数据处理方式存在很多问题,比如需要开发人员熟 悉操作磁盘文件的函数、开发人员必须编写复杂的搜寻算法才能快速的把数据从文件中检索 出来、当数据格式发生变化的时候要编写复杂的文件格式升级程序、很难控制并发修改。 在计算机系统在各个行业开始普遍应用以后,计算机专家也遇到了同样的问题,因此他 们提出了数据库理论,从而大大简化了开发信息系统的难度。数据库理论的鼻祖是 Charles W.Bachman,他也因此获得了 1973 年的图灵奖。IBM 的 Ted Codd 则首先提出了关系数据库 理论,并在 IBM 研究机构开发原型,这个项目就是 R 系统,并且使用 SQL 做为存取数据表 的语言,R 系统对后来的 Oracle、Ingres 和 DB2 等关系型数据库系统都产生了非常重要的影 响。 1.1.1 “数据库”与“数据库管理系统” 前面我们讲到数据库就是“数据的仓库”,我们还需要一套系统来帮助我们管理这些数 据,比如帮助我们查询到我们需要的数据、帮我们将过时的数据删除,这样的系统我们称之 为数据库管理系统(Database Management System,DBMS)。有时候很多人也将 DBMS 简称 为“数据库”,但是一定要区分“数据库”的这两个不同的意思。 数据库管理系统是一种操纵和管理数据库的系统软件,是用于建立、使用和维护数据库。 它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过 DBMS 访
分享到:
收藏