登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入   新用戶註冊
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / 物流,時效:出貨後2-4日

2024年10月出版新書

2024年09月出版新書

2024年08月出版新書

2024年07月出版新書

2024年06月出版新書

2024年05月出版新書

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

『簡體書』MySQL 5.7从入门到精通(视频教学版)

書城自編碼: 2896997
分類: 簡體書→大陸圖書→計算機/網絡數據庫
作者: 刘增杰
國際書號(ISBN): 9787302447023
出版社: 清华大学出版社
出版日期: 2016-09-01
版次: 1 印次: 1
頁數/字數: 606页
書度/開本: 32开 釘裝: 平装

售價:NT$ 735

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
教育何用:重估教育的价值
《 教育何用:重估教育的价值 》

售價:NT$ 299.0
理想城市:环境与诗性
《 理想城市:环境与诗性 》

售價:NT$ 390.0
逆风翻盘  危机时代的亿万赢家 在充满危机与风险的世界里,学会与之共舞并找到致富与生存之道
《 逆风翻盘 危机时代的亿万赢家 在充满危机与风险的世界里,学会与之共舞并找到致富与生存之道 》

售價:NT$ 625.0
工业互联网导论
《 工业互联网导论 》

售價:NT$ 445.0
孤独传:一种现代情感的历史
《 孤独传:一种现代情感的历史 》

售價:NT$ 390.0
家、金钱和孩子
《 家、金钱和孩子 》

售價:NT$ 295.0
形而上学与测量
《 形而上学与测量 》

售價:NT$ 340.0
世界航母、舰载机图鉴   【日】坂本明
《 世界航母、舰载机图鉴 【日】坂本明 》

售價:NT$ 340.0

建議一齊購買:

+

NT$ 641
《 现代操作系统(原书第4版) 》
+

NT$ 1066
《 Hadoop权威指南:大数据的存储与分析(第4版) 》
+

NT$ 569
《 Python爬虫开发与项目实战 》
+

NT$ 575
《 PHP从入门到精通(第4版) 》
+

NT$ 1001
《 流畅的Python 》
+

NT$ 641
《 Python新手使用Django架站的16堂课 》
內容簡介:
本书主要包括MySQL的安装与配置、数据库的创建、数据表的创建、数据类型和运算符、MySQL函数、查询数据、数据表的操作(插入、更新与删除数据)、索引、存储过程和函数、视图、触发器、用户管理、数据备份与恢复、日志以及性能优化等。最后通过两个综合案例的数据库设计,进一步讲述MySQL在实际工作中的应用。重点介绍MySQL安装与配置、数据类型和运算符以及数据表的操作。本书注重实战操作,帮助读者循序渐进地掌握MySQL中的各项技术。
本书共有480个实例和14个综合案例,还有大量的经典习题。下载文件中赠送了近20小时培训班形式的视频教学录像,详细讲解了书中每一个知识点和每一个数据库操作的方法和技巧。同时下载文件中还提供了本书所有例子的源代码,读者可以直接查看和调用。
本书适合MySQL数据库初学者、MySQL数据库开发人员和MySQL数据库管理员,同时也能作为高等院校相关专业师生的教学用书。
關於作者:
刘增杰,IT资深专家,从事行业十余年,出版多部作品。
目錄
目 录

第1章 初识MySQL 1
1.1 数据库基础 1
1.1.1 什么是数据库 1
1.1.2 表 2
1.1.3 数据类型 2
1.1.4 主键 2
1.2 数据库技术构成 3
1.2.1 数据库系统 3
1.2.2 SQL语言 4
1.2.3 数据库访问接口 5
1.3 什么是MySQL 6
1.3.1 客户机-服务器软件 6
1.3.2 MySQL版本 6
1.3.3 MySQL的优势 7
1.3.4 MySQL 5.7的新功能 8
1.4 MySQL工具 8
1.4.1 MySQL命令行实用程序 9
1.4.2 MySQL Workbench 10
1.5 如何学习MySQL 10
第2章 MySQL的安装与配置 12
2.1 Windows平台下安装与配置MySQL 5.7
12
2.1.1 安装MySQL 5.7 12
2.1.2 配置MySQL 5.7 18
2.2 启动服务并登录MySQL数据库 22
2.2.1 启动MySQL服务 22
2.2.2 登录MySQL数据库 24
2.2.3 配置Path变量 27
2.3 MySQL常用图形管理工具 28
2.4 Linux平台下安装与配置MySQL 5.7 29
2.4.1 Linux操作系统下的MySQL版本介绍 29
2.4.2 安装和配置MySQL的RPM包 31
2.4.3 安装和配置MySQL的源码包 35
2.5 专家解惑 36
2.6 经典习题 36
第3章 数据库的基本操作 37
3.1 创建数据库 37
3.2 删除数据库 39
3.3 数据库存储引擎 39
3.3.1 MySQL存储引擎简介 39
3.3.2 InnoDB存储引擎 41
3.3.3 MyISAM存储引擎 42
3.3.4 MEMORY存储引擎 43
3.3.5 存储引擎的选择 43
3.4 综合案例数据库的创建和删除 44
3.5 专家解惑 46
3.6 经典习题 46
第4章 数据表的基本操作 47
4.1 创建数据表 47
4.1.1 创建表的语法形式 47
4.1.2 使用主键约束 49
4.1.3 使用外键约束 50
4.1.4 使用非空约束 51
4.1.5 使用唯一性约束 52
4.1.6 使用默认约束 53
4.1.7 设置表的属性值自动增加 53
4.2 查看数据表结构 54
4.2.1 查看表基本结构语句DESCRIBE 54
4.2.2 查看表详细结构语句SHOW CREATE TABLE
55
4.3 修改数据表 56
4.3.1 修改表名 57
4.3.2 修改字段的数据类型 57
4.3.3 修改字段名 58
4.3.4 添加字段 59
4.3.5 删除字段 62
4.3.6 修改字段的排列位置 63
4.3.7 更改表的存储引擎 64
4.3.8 删除表的外键约束 65
4.4 删除数据表 67
4.4.1 删除没有被关联的表 67
4.4.2 删除被其他表关联的主表 67
4.5 综合案例数据表的基本操作 69
4.6 专家解惑 77
4.7 经典习题 78
第5章 数据类型和运算符 80
5.1 MySQL数据类型介绍 80
5.1.1 整数类型 80
5.1.2 浮点数类型和定点数类型 82
5.1.3 日期与时间类型 84
5.1.4 文本字符串类型 96
5.1.5 二进制字符串类型 101
5.2 如何选择数据类型 104
5.3 常见运算符介绍 105
5.3.1 运算符概述 105
5.3.2 算术运算符 106
5.3.3 比较运算符 107
5.3.4 逻辑运算符 116
5.3.5 位运算符 119
5.3.6 运算符的优先级 122
5.4 综合案例运算符的使用 123
5.5 专家解惑 125
5.6 经典习题 126
第6章 MySQL函数 127
6.1 MySQL函数简介 127
6.2 数学函数 128
6.2.1 绝对值函数ABSx和返回圆周率的函数PI
128
6.2.2 平方根函数SQRTx和求余函数MODx,y
128
6.2.3
获取整数的函数CEILx、CEILINGx和FLOORx 129
6.2.4 获取随机数的函数RAND和RANDx
130
6.2.5
函数ROUNDx、ROUNDx,y和TRUNCATEx,y 130
6.2.6 符号函数SIGNx 131
6.2.7
幂运算函数POWx,y、POWERx,y和EXPx 132
6.2.8 对数运算函数LOGx和LOG10x
132
6.2.9
角度与弧度相互转换的函数RADIANSx和DEGREESx 133
6.2.10 正弦函数SINx和反正弦函数ASINx
133
6.2.11 余弦函数COSx和反余弦函数ACOSx
134
6.2.12 正切函数、反正切函数和余切函数 134
6.3 字符串函数 135
6.3.1 计算字符串字符数的函数和字符串长度的函数 135
6.3.2 合并字符串函数CONCATs1,s2,、CONCAT_WSx,s1,s2,
136
6.3.3 替换字符串的函数INSERTs1,x,len,s2
137
6.3.4 字母大小写转换函数 137
6.3.5 获取指定长度的字符串的函数LEFTs,n和RIGHTs,n
138
6.3.6
填充字符串的函数LPADs1,len,s2和RPADs1,len,s2 139
6.3.7
删除空格的函数LTRIMs、RTRIMs和TRIMs 139
6.3.8 删除指定字符串的函数TRIMs1 FROM s
140
6.3.9 重复生成字符串的函数REPEATs,n
141
6.3.10
空格函数SPACEn和替换函数REPLACEs,s1,s2 141
6.3.11 比较字符串大小的函数STRCMPs1,s2
142
6.3.12
获取子串的函数SUBSTRINGs,n,len和MIDs,n,len 142
6.3.13 匹配子串开始位置的函数 143
6.3.14 字符串逆序的函数REVERSEs 143
6.3.15 返回指定位置的字符串的函数 144
6.3.16 返回指定字符串位置的函数FIELDs,s1,s2,
144
6.3.17 返回子串位置的函数FIND_IN_SETs1,s2
145
6.3.18 选取字符串的函数MAKE_SETx,s1,s2,
145
6.4 日期和时间函数 146
6.4.1 获取当前日期的函数和获取当前时间的函数 146
6.4.2 获取当前日期和时间的函数 146
6.4.3 UNIX时间戳函数 147
6.4.4 返回UTC日期的函数和返回UTC时间的函数
148
6.4.5
获取月份的函数MONTHdate和MONTHNAMEdate 148
6.4.6
获取星期的函数DAYNAMEd、DAYOFWEEKd和WEEKDAYd 149
6.4.7 获取星期数的函数WEEKd和WEEKOFYEARd
150
6.4.8
获取天数的函数DAYOFYEARd和DAYOFMONTHd 151
6.4.9 获取年份、季度、小时、分钟和秒钟的函数 151
6.4.10 获取日期的指定值的函数EXTRACTtype FROM
date 152
6.4.11 时间和秒钟转换的函数 153
6.4.12 计算日期和时间的函数 153
6.4.13 将日期和时间格式化的函数 156
6.5 条件判断函数 159
6.5.1 IFexpr,v1,v2函数 159
6.5.2 IFNULLv1,v2函数 160
6.5.3 CASE函数 160
6.6 系统信息函数 161
6.6.1 获取MySQL版本号、连接数和数据库名的函数
161
6.6.2 获取用户名的函数 163
6.6.3 获取字符串的字符集和排序方式的函数 163
6.6.4 获取最后一个自动生成的ID值的函数 164
6.7 加解密函数 166
6.7.1 加密函数PASSWORDstr 166
6.7.2 加密函数MD5str 167
6.7.3 加密函数ENCODEstr,pswd_str
167
6.7.4 解密函数DECODEcrypt_str,pswd_str
167
6.8 其他函数 168
6.8.1 格式化函数FORMATx,n 168
6.8.2 不同进制的数字进行转换的函数 168
6.8.3 IP地址与数字相互转换的函数 169
6.8.4 加锁函数和解锁函数 170
6.8.5 重复执行指定操作的函数 170
6.8.6 改变字符集的函数 171
6.8.7 改变数据类型的函数 172
6.9 综合案例MySQL函数的使用 172
6.10 专家解惑 176
6.11 经典习题 176
第7章 查询数据 178
7.1 基本查询语句 178
7.2 单表查询 180
7.2.1 查询所有字段 181
7.2.2 查询指定字段 182
7.2.3 查询指定记录 184
7.2.4 带IN关键字的查询 185
7.2.5 带BETWEEN AND的范围查询 187
7.2.6 带LIKE的字符匹配查询 188
7.2.7 查询空值 190
7.2.8 带AND的多条件查询 191
7.2.9 带OR的多条件查询 192
7.2.10 查询结果不重复 193
7.2.11 对查询结果排序 195
7.2.12 分组查询 198
7.2.13 使用LIMIT限制查询结果的数量 203
7.3 使用聚合函数查询 205
7.3.1 COUNT函数 205
7.3.2 SUM函数 206
7.3.3 AVG函数 207
7.3.4 MAX函数 208
7.3.5 MIN函数 209
7.4 连接查询 210
7.4.1 内连接查询 210
7.4.2 外连接查询 214
7.4.3 复合条件连接查询 216
7.5 子查询 217
7.5.1 带ANY、SOME关键字的子查询 217
7.5.2 带ALL关键字的子查询 218
7.5.3 带EXISTS关键字的子查询 218
7.5.4 带IN关键字的子查询 220
7.5.5 带比较运算符的子查询 221
7.6 合并查询结果 223
7.7 为表和字段取别名 225
7.7.1 为表取别名 226
7.7.2 为字段取别名 227
7.8 使用正则表达式查询 228
7.8.1 查询以特定字符或字符串开头的记录 229
7.8.2 查询以特定字符或字符串结尾的记录 230
7.8.3 用符号"."来替代字符串中的任意一个字符
230
7.8.4 使用"*"和" "来匹配多个字符
231
7.8.5 匹配指定字符串 231
7.8.6 匹配指定字符中的任意一个 233
7.8.7 匹配指定字符以外的字符 233
7.8.8 使用{n,}或者{n,m}来指定字符串连续出现的次数
234
7.9 综合案例数据表查询操作 235
7.10 专家解惑 243
7.11 经典习题 244
第8章 插入、更新与删除数据 245
8.1 插入数据 245
8.1.1 为表的所有字段插入数据 245
8.1.2 为表的指定字段插入数据 247
8.1.3 同时插入多条记录 249
8.1.4 将查询结果插入到表中 251
8.2 更新数据 252
8.3 删除数据 254
8.4 综合案例记录的插入、更新和删除 256
8.5 专家解惑 261
8.6 经典习题 262
第9章 索 引 263
9.1 索引简介 263
9.1.1 索引的含义和特点 263
9.1.2 索引的分类 264
9.1.3 索引的设计原则 265
9.2 创建索引 265
9.2.1 创建表的时候创建索引 266
9.2.2 在已经存在的表上创建索引 271
9.3 删除索引 278
9.4 综合案例创建索引 280
9.5 专家解惑 283
9.6 经典习题 283
第10章 存储过程和函数 285
10.1 创建存储过程和函数 285
10.1.1 创建存储过程 286
10.1.2 创建存储函数 288
10.1.3 变量的使用 289
10.1.4 定义条件和处理程序 290
10.1.5 光标的使用 293
10.1.6 流程控制的使用 294
10.2 调用存储过程和函数 299
10.2.1 调用存储过程 299
10.2.2 调用存储函数 300
10.3 查看存储过程和函数 301
10.3.1 使用SHOW STATUS语句查看存储过程和函数的状态
301
10.3.2 使用SHOW CREATE语句查看存储过程和函数的定义
302
10.3.3 从information_schema.Routines表中查看存储过程和函数的信息
302
10.4 修改存储过程和函数 304
10.5 删除存储过程和函数 306
10.6 综合案例创建存储过程和函数 306
10.7 专家解惑 309
10.8 经典习题 310
第11章 视图 311
11.1 视图概述 311
11.1.1 视图的含义 311
11.1.2 视图的作用 312
11.2 创建视图 313
11.2.1 创建视图的语法形式 313
11.2.2 在单表上创建视图 314
11.2.3 在多表上创建视图 315
11.3 查看视图 316
11.3.1 使用DESCRIBE语句查看视图基本信息 316
11.3.2 使用SHOW TABLE STATUS语句查看视图基本信息
316
11.3.3 使用SHOW CREATE VIEW语句查看视图详细信息
318
11.3.4 在views表中查看视图详细信息 318
11.4 修改视图 320
11.4.1 使用CREATE OR REPLACE
VIEW语句修改视图 320
11.4.2 使用ALTER语句修改视图 321
11.5 更新视图 322
11.6 删除视图 324
11.7 综合案例视图应用 325
11.8 专家解惑 333
11.9 经典习题 334
第12章 MySQL触发器 335
12.1 创建触发器 335
12.1.1 创建只有一个执行语句的触发器 336
12.1.2 创建有多个执行语句的触发器 337
12.2 查看触发器 339
12.2.1 SHOW TRIGGERS语句查看触发器信息
339
12.2.2 在triggers表中查看触发器信息 341
12.3 触发器的使用 342
12.4 删除触发器 343
12.5 综合案例触发器的使用 344
12.6 专家解惑 346
12.7 经典习题 346
第13章 MySQL用户管理 347
13.1 权 限 表 347
13.1.1 user表 347
13.1.2 db表和host表 350
13.1.3 tables_priv表和columns_priv表
352
13.1.4 procs_priv表 353
13.2 账户管理 353
13.2.1 登录和退出MySQL服务器 354
13.2.2 新建普通用户 355
13.2.3 删除普通用户 359
13.2.4 root用户修改自己的密码 360
13.2.5 root用户修改普通用户的密码 362
13.2.6 普通用户修改密码 363
13.2.7 root用户密码丢失的解决办法 364
13.3 权限管理 366
13.3.1 MySQL的各种权限 366
13.3.2 授权 368
13.3.3 收回权限 370
13.3.4 查看权限 371
13.4 访问控制 372
13.4.1 连接核实阶段 372
13.4.2 请求核实阶段 372
13.5 综合案例综合管理用户权限 373
13.6 专家解惑 377
13.7 经典习题 377
第14章 数据备份与恢复 379
14.1 数据备份 379
14.1.1 使用MySQLdump命令备份 379
14.1.2 直接复制整个数据库目录 386
14.1.3 使用MySQLhotcopy工具快速备份
386
14.2 数据恢复 387
14.2.1 使用MySQL命令恢复 387
14.2.2 直接复制到数据库目录 388
14.2.3 MySQLhotcopy快速恢复 388
14.3 数据库迁移 389
14.3.1 相同版本的MySQL数据库之间的迁移 389
14.3.2 不同版本的MySQL数据库之间的迁移 389
14.3.3 不同数据库之间的迁移 390
14.4 表的导出和导入 390
14.4.1 使用SELECTIINTO OUTFILE导出文本文件
390
14.4.2 使用MySQLdump命令导出文本文件 394
14.4.3 使用MySQL命令导出文本文件 396
14.4.4 使用LOAD DATA INFILE方式导入文本文件
399
14.4.5 使用MySQLimport命令导入文本文件
402
14.5 综合案例数据的备份与恢复 403
14.6 专家解惑 408
14.7 经典习题 409
第15章 MySQL日志 410
15.1 日志简介 410
15.2 二进制日志 411
15.2.1 启动和设置二进制日志 411
15.2.2 查看二进制日志 412
15.2.3 删除二进制日志 414
15.2.4 使用二进制日志恢复数据库 416
15.2.5 暂时停止二进制日志功能 417
15.3 错误日志 417
15.3.1 启动和设置错误日志 417
15.3.2 查看错误日志 418
15.3.3 删除错误日志 419
15.4 通用查询日志 419
15.4.1 启动和设置通用查询日志 419
15.4.2 查看通用查询日志 420
15.4.3 删除通用查询日志 420
15.5 慢查询日志 421
15.5.1 启动和设置慢查询日志 421
15.5.2 查看慢查询日志 421
15.5.3 删除慢查询日志 422
15.6 综合案例MySQL日志的综合管理 422
15.7 专家解惑 428
15.8 经典习题 429
第16章 性能优化 430
16.1 优化简介 430
16.2 优化查询 431
16.2.1 分析查询语句 431
16.2.2 索引对查询速度的影响 435
16.2.3 使用索引查询 436
16.2.4 优化子查询 439
16.3 优化数据库结构 439
16.3.1 将字段很多的表分解成多个表 439
16.3.2 增加中间表 441
16.3.3 增加冗余字段 442
16.3.4 优化插入记录的速度 443
16.3.5 分析表、检查表和优化表 445
16.4 优化MySQL服务器 446
16.4.1 优化服务器硬件 447
16.4.2 优化MySQL的参数 447
16.5 综合案例全面优化MySQL服务器 448
16.6 专家解惑 451
16.7 经典习题 452
第17章 MySQL Replication 453
17.1 MySQL Replication概述 453
17.2 Windows环境下的MySQL主从复制 454
17.2.1 复制前的准备工作 454
17.2.2 Windows环境下实现主从复制 455
17.2.3 Windows环境下主从复制测试 462
17.3 Linux环境下的MySQL复制 463
17.3.1 下载并安装MySQL 5.7 463
17.3.2 单机主从复制前的准备工作 465
17.3.3 MySQLd_multi实现单机主从复制
469
17.3.4 不同服务器之间实现主从复制 476
17.3.5 MySQL 主要复制启动选项 478
17.3.6 指定复制的数据库或者表 479
17.4 查看Slave的复制进度 486
17.5 日常管理和维护 488
17.5.1 了解服务器的状态 488
17.5.2 服务器复制出错的原因 489
17.6 切换主从服务器 492
17.7 专家解惑 496
17.8 经典习题 497
第18章 MySQL Workbench 的使用 498
18.1 MySQL Workbench简介 498
18.1.1 MySQL Workbench 的概述 498
18.1.2 MySQL Workbench 的优势 499
18.1.3 MySQL Workbench 的安装 499
18.2 SQL Development的基本操作 501
18.2.1 创建数据库连接 501
18.2.2 创建新的数据库 502
18.2.3 创建和删除新的数据表 504
18.2.4 添加、修改表记录 507
18.2.5 查询表记录 508
18.2.6 修改表结构 509
18.3 Data Modeling的基本操作 510
18.3.1 建立ER模型 510
18.3.2 导入ER模型 515
18.4 Server Administration的基本操作
517
18.4.1 管理MySQL用户 517
18.4.2 备份MySQL数据库 520
18.4.3 恢复MySQL数据库 523
18.5 专家解惑 524
18.6 经典习题 524
第19章 MySQL Cluster 526
19.1 MySQL Cluster概述 526
19.1.1 MySQL Cluster基本概念 526
19.1.2 理解MySQL Cluster节点 527
19.2 Linux环境下MySQL Cluster安装和配置
528
19.2.1 安装MySQL Cluster软件 531
19.2.2 管理节点配置步骤 535
19.2.3 配置SQL节点和数据节点 536
19.3 管理MySQL Cluster 537
19.3.1 Cluster的启动 537
19.3.2 Cluster的测试 539
19.3.3 Cluster的关闭 541
19.4 维护MySQL Cluster 542
19.4.1 Cluster的日志管理 544
19.4.2 Cluster的联机备份 545
19.4.3 Cluster的数据恢复 546
19.5 Windows操作系统中配置Cluster 547
19.6 专家解惑 553
19.7 经典习题 554
第20章 MySQL管理利器MySQL Utilities
555
20.1 MySQL Utilities概述 555
20.2 安装与配置 556
20.2.1 下载与安装MySQL Utilities
556
20.2.2 MySQL Utilities连接数据库
559
20.3 管理与维护 560
20.3.1 使用mysqldbcompare比较数据
560
20.3.2 使用mysqldbcopy复制数据 561
20.3.3 使用mysqldbexport导出数据 561
20.3.4 使用mysqldbimport导入数据 562
20.3.5 使用mysqldiff比较对象的定义 562
20.4 专家解惑 563
20.5 经典习题 564
第21章 读写分离的利器MySQL Proxy 565
21.1 概述 565
21.2 安装与配置 566
21.2.1 下载与安装MySQL Proxy 566
21.2.2 配置MySQL Proxy参数 567
21.2.3 配置Path变量 569
21.3 使用MySQL Proxy实现读写分离 571
21.4 专家解惑 572
21.5 经典习题 572
第22章 PHP操作MySQL数据库 573
22.1 PHP访问MySQL数据库的一般步骤 573
22.2 连接数据库前的准备工作 574
22.3 PHP操作MySQL数据库的函数 575
22.3.1 通过MySQLi类库访问MySQL数据库
575
22.3.2
使用MySQLi_connect函数连接MySQL服务器 577
22.3.3 使用MySQLi_select_db函数选择数据库文件
577
22.3.4 使用MySQLi_query函数执行SQL语句
578
22.3.5 使用MySQLi_fetch_assoc
函数从数组结果集中获取信息 578
22.3.6
使用MySQLi_fetch_object函数从结果中获取一行作为对象 578
22.3.7
使用MySQLi_num_rows函数获取查询结果集中的记录数 579
22.3.8 使用MySQLi_free_result函数释放资源
579
22.3.9 使用MySQLi_close函数关闭连接
579
22.4 综合实例1使用insert语句动态添加用户信息
580
22.5 综合实例2使用select语句查询数据信息
583
22.6 专家解惑 585
22.7 经典习题 585
第23章 新闻发布系统数据库设计 586
23.1 系统概述 586
23.2 系统功能 587
23.3 数据库设计和实现 588
23.3.1 设计表 588
23.3.2 设计索引 592
23.3.3 设计视图 593
23.3.4 设计触发器 594
23.4 案例总结 595
第24章 论坛管理系统数据库设计 596
24.1 系统概述 596
24.2 系统功能 597
24.3 数据库设计和实现 598
24.3.1 设计方案图表 598
24.3.2 设计表 600
24.3.3 设计索引 603
24.3.4 设计视图 604
24.3.5 设计触发器 605
24.4 案例总结 606







目 录

第1章 初识MySQL 1
1.1 数据库基础 1
1.1.1 什么是数据库 1
1.1.2 表 2
1.1.3 数据类型 2
1.1.4 主键 2
1.2 数据库技术构成 3
1.2.1 数据库系统 3
1.2.2 SQL语言 4
1.2.3 数据库访问接口 5
1.3 什么是MySQL 6
1.3.1 客户机-服务器软件 6
1.3.2 MySQL版本 6
1.3.3 MySQL的优势 7
1.3.4 MySQL 5.7的新功能 8
1.4 MySQL工具 8
1.4.1 MySQL命令行实用程序 9
1.4.2 MySQL Workbench 10
1.5 如何学习MySQL 10
第2章 MySQL的安装与配置 12
2.1 Windows平台下安装与配置MySQL 5.7
12
2.1.1 安装MySQL 5.7 12
2.1.2 配置MySQL 5.7 18
2.2 启动服务并登录MySQL数据库 22
2.2.1 启动MySQL服务 22
2.2.2 登录MySQL数据库 24
2.2.3 配置Path变量 27
2.3 MySQL常用图形管理工具 28
2.4 Linux平台下安装与配置MySQL 5.7 29
2.4.1 Linux操作系统下的MySQL版本介绍 29
2.4.2 安装和配置MySQL的RPM包 31
2.4.3 安装和配置MySQL的源码包 35
2.5 专家解惑 36
2.6 经典习题 36
第3章 数据库的基本操作 37
3.1 创建数据库 37
3.2 删除数据库 39
3.3 数据库存储引擎 39
3.3.1 MySQL存储引擎简介 39
3.3.2 InnoDB存储引擎 41
3.3.3 MyISAM存储引擎 42
3.3.4 MEMORY存储引擎 43
3.3.5 存储引擎的选择 43
3.4 综合案例数据库的创建和删除 44
3.5 专家解惑 46
3.6 经典习题 46
第4章 数据表的基本操作 47
4.1 创建数据表 47
4.1.1 创建表的语法形式 47
4.1.2 使用主键约束 49
4.1.3 使用外键约束 50
4.1.4 使用非空约束 51
4.1.5 使用唯一性约束 52
4.1.6 使用默认约束 53
4.1.7 设置表的属性值自动增加 53
4.2 查看数据表结构 54
4.2.1 查看表基本结构语句DESCRIBE 54
4.2.2 查看表详细结构语句SHOW CREATE TABLE
55
4.3 修改数据表 56
4.3.1 修改表名 57
4.3.2 修改字段的数据类型 57
4.3.3 修改字段名 58
4.3.4 添加字段 59
4.3.5 删除字段 62
4.3.6 修改字段的排列位置 63
4.3.7 更改表的存储引擎 64
4.3.8 删除表的外键约束 65
4.4 删除数据表 67
4.4.1 删除没有被关联的表 67
4.4.2 删除被其他表关联的主表 67
4.5 综合案例数据表的基本操作 69
4.6 专家解惑 77
4.7 经典习题 78
第5章 数据类型和运算符 80
5.1 MySQL数据类型介绍 80
5.1.1 整数类型 80
5.1.2 浮点数类型和定点数类型 82
5.1.3 日期与时间类型 84
5.1.4 文本字符串类型 96
5.1.5 二进制字符串类型 101
5.2 如何选择数据类型 104
5.3 常见运算符介绍 105
5.3.1 运算符概述 105
5.3.2 算术运算符 106
5.3.3 比较运算符 107
5.3.4 逻辑运算符 116
5.3.5 位运算符 119
5.3.6 运算符的优先级 122
5.4 综合案例运算符的使用 123
5.5 专家解惑 125
5.6 经典习题 126
第6章 MySQL函数 127
6.1 MySQL函数简介 127
6.2 数学函数 128
6.2.1 绝对值函数ABSx和返回圆周率的函数PI
128
6.2.2 平方根函数SQRTx和求余函数MODx,y
128
6.2.3
获取整数的函数CEILx、CEILINGx和FLOORx 129
6.2.4 获取随机数的函数RAND和RANDx
130
6.2.5
函数ROUNDx、ROUNDx,y和TRUNCATEx,y 130
6.2.6 符号函数SIGNx 131
6.2.7
幂运算函数POWx,y、POWERx,y和EXPx 132
6.2.8 对数运算函数LOGx和LOG10x
132
6.2.9
角度与弧度相互转换的函数RADIANSx和DEGREESx 133
6.2.10 正弦函数SINx和反正弦函数ASINx
133
6.2.11 余弦函数COSx和反余弦函数ACOSx
134
6.2.12 正切函数、反正切函数和余切函数 134
6.3 字符串函数 135
6.3.1 计算字符串字符数的函数和字符串长度的函数 135
6.3.2 合并字符串函数CONCATs1,s2,、CONCAT_WSx,s1,s2,
136
6.3.3 替换字符串的函数INSERTs1,x,len,s2
137
6.3.4 字母大小写转换函数 137
6.3.5 获取指定长度的字符串的函数LEFTs,n和RIGHTs,n
138
6.3.6
填充字符串的函数LPADs1,len,s2和RPADs1,len,s2 139
6.3.7
删除空格的函数LTRIMs、RTRIMs和TRIMs 139
6.3.8 删除指定字符串的函数TRIMs1 FROM s
140
6.3.9 重复生成字符串的函数REPEATs,n
141
6.3.10
空格函数SPACEn和替换函数REPLACEs,s1,s2 141
6.3.11 比较字符串大小的函数STRCMPs1,s2
142
6.3.12
获取子串的函数SUBSTRINGs,n,len和MIDs,n,len 142
6.3.13 匹配子串开始位置的函数 143
6.3.14 字符串逆序的函数REVERSEs 143
6.3.15 返回指定位置的字符串的函数 144
6.3.16 返回指定字符串位置的函数FIELDs,s1,s2,
144
6.3.17 返回子串位置的函数FIND_IN_SETs1,s2
145
6.3.18 选取字符串的函数MAKE_SETx,s1,s2,
145
6.4 日期和时间函数 146
6.4.1 获取当前日期的函数和获取当前时间的函数 146
6.4.2 获取当前日期和时间的函数 146
6.4.3 UNIX时间戳函数 147
6.4.4 返回UTC日期的函数和返回UTC时间的函数
148
6.4.5
获取月份的函数MONTHdate和MONTHNAMEdate 148
6.4.6
获取星期的函数DAYNAMEd、DAYOFWEEKd和WEEKDAYd 149
6.4.7 获取星期数的函数WEEKd和WEEKOFYEARd
150
6.4.8
获取天数的函数DAYOFYEARd和DAYOFMONTHd 151
6.4.9 获取年份、季度、小时、分钟和秒钟的函数 151
6.4.10 获取日期的指定值的函数EXTRACTtype FROM
date 152
6.4.11 时间和秒钟转换的函数 153
6.4.12 计算日期和时间的函数 153
6.4.13 将日期和时间格式化的函数 156
6.5 条件判断函数 159
6.5.1 IFexpr,v1,v2函数 159
6.5.2 IFNULLv1,v2函数 160
6.5.3 CASE函数 160
6.6 系统信息函数 161
6.6.1 获取MySQL版本号、连接数和数据库名的函数
161
6.6.2 获取用户名的函数 163
6.6.3 获取字符串的字符集和排序方式的函数 163
6.6.4 获取最后一个自动生成的ID值的函数 164
6.7 加解密函数 166
6.7.1 加密函数PASSWORDstr 166
6.7.2 加密函数MD5str 167
6.7.3 加密函数ENCODEstr,pswd_str
167
6.7.4 解密函数DECODEcrypt_str,pswd_str
167
6.8 其他函数 168
6.8.1 格式化函数FORMATx,n 168
6.8.2 不同进制的数字进行转换的函数 168
6.8.3 IP地址与数字相互转换的函数 169
6.8.4 加锁函数和解锁函数 170
6.8.5 重复执行指定操作的函数 170
6.8.6 改变字符集的函数 171
6.8.7 改变数据类型的函数 172
6.9 综合案例MySQL函数的使用 172
6.10 专家解惑 176
6.11 经典习题 176
第7章 查询数据 178
7.1 基本查询语句 178
7.2 单表查询 180
7.2.1 查询所有字段 181
7.2.2 查询指定字段 182
7.2.3 查询指定记录 184
7.2.4 带IN关键字的查询 185
7.2.5 带BETWEEN AND的范围查询 187
7.2.6 带LIKE的字符匹配查询 188
7.2.7 查询空值 190
7.2.8 带AND的多条件查询 191
7.2.9 带OR的多条件查询 192
7.2.10 查询结果不重复 193
7.2.11 对查询结果排序 195
7.2.12 分组查询 198
7.2.13 使用LIMIT限制查询结果的数量 203
7.3 使用聚合函数查询 205
7.3.1 COUNT函数 205
7.3.2 SUM函数 206
7.3.3 AVG函数 207
7.3.4 MAX函数 208
7.3.5 MIN函数 209
7.4 连接查询 210
7.4.1 内连接查询 210
7.4.2 外连接查询 214
7.4.3 复合条件连接查询 216
7.5 子查询 217
7.5.1 带ANY、SOME关键字的子查询 217
7.5.2 带ALL关键字的子查询 218
7.5.3 带EXISTS关键字的子查询 218
7.5.4 带IN关键字的子查询 220
7.5.5 带比较运算符的子查询 221
7.6 合并查询结果 223
7.7 为表和字段取别名 225
7.7.1 为表取别名 226
7.7.2 为字段取别名 227
7.8 使用正则表达式查询 228
7.8.1 查询以特定字符或字符串开头的记录 229
7.8.2 查询以特定字符或字符串结尾的记录 230
7.8.3 用符号"."来替代字符串中的任意一个字符
230
7.8.4 使用"*"和" "来匹配多个字符
231
7.8.5 匹配指定字符串 231
7.8.6 匹配指定字符中的任意一个 233
7.8.7 匹配指定字符以外的字符 233
7.8.8 使用{n,}或者{n,m}来指定字符串连续出现的次数
234
7.9 综合案例数据表查询操作 235
7.10 专家解惑 243
7.11 经典习题 244
第8章 插入、更新与删除数据 245
8.1 插入数据 245
8.1.1 为表的所有字段插入数据 245
8.1.2 为表的指定字段插入数据 247
8.1.3 同时插入多条记录 249
8.1.4 将查询结果插入到表中 251
8.2 更新数据 252
8.3 删除数据 254
8.4 综合案例记录的插入、更新和删除 256
8.5 专家解惑 261
8.6 经典习题 262
第9章 索 引 263
9.1 索引简介 263
9.1.1 索引的含义和特点 263
9.1.2 索引的分类 264
9.1.3 索引的设计原则 265
9.2 创建索引 265
9.2.1 创建表的时候创建索引 266
9.2.2 在已经存在的表上创建索引 271
9.3 删除索引 278
9.4 综合案例创建索引 280
9.5 专家解惑 283
9.6 经典习题 283
第10章 存储过程和函数 285
10.1 创建存储过程和函数 285
10.1.1 创建存储过程 286
10.1.2 创建存储函数 288
10.1.3 变量的使用 289
10.1.4 定义条件和处理程序 290
10.1.5 光标的使用 293
10.1.6 流程控制的使用 294
10.2 调用存储过程和函数 299
10.2.1 调用存储过程 299
10.2.2 调用存储函数 300
10.3 查看存储过程和函数 301
10.3.1 使用SHOW STATUS语句查看存储过程和函数的状态
301
10.3.2 使用SHOW CREATE语句查看存储过程和函数的定义
302
10.3.3 从information_schema.Routines表中查看存储过程和函数的信息
302
10.4 修改存储过程和函数 304
10.5 删除存储过程和函数 306
10.6 综合案例创建存储过程和函数 306
10.7 专家解惑 309
10.8 经典习题 310
第11章 视图 311
11.1 视图概述 311
11.1.1 视图的含义 311
11.1.2 视图的作用 312
11.2 创建视图 313
11.2.1 创建视图的语法形式 313
11.2.2 在单表上创建视图 314
11.2.3 在多表上创建视图 315
11.3 查看视图 316
11.3.1 使用DESCRIBE语句查看视图基本信息 316
11.3.2 使用SHOW TABLE STATUS语句查看视图基本信息
316
11.3.3 使用SHOW CREATE VIEW语句查看视图详细信息
318
11.3.4 在views表中查看视图详细信息 318
11.4 修改视图 320
11.4.1 使用CREATE OR REPLACE
VIEW语句修改视图 320
11.4.2 使用ALTER语句修改视图 321
11.5 更新视图 322
11.6 删除视图 324
11.7 综合案例视图应用 325
11.8 专家解惑 333
11.9 经典习题 334
第12章 MySQL触发器 335
12.1 创建触发器 335
12.1.1 创建只有一个执行语句的触发器 336
12.1.2 创建有多个执行语句的触发器 337
12.2 查看触发器 339
12.2.1 SHOW TRIGGERS语句查看触发器信息
339
12.2.2 在triggers表中查看触发器信息 341
12.3 触发器的使用 342
12.4 删除触发器 343
12.5 综合案例触发器的使用 344
12.6 专家解惑 346
12.7 经典习题 346
第13章 MySQL用户管理 347
13.1 权 限 表 347
13.1.1 user表 347
13.1.2 db表和host表 350
13.1.3 tables_priv表和columns_priv表
352
13.1.4 procs_priv表 353
13.2 账户管理 353
13.2.1 登录和退出MySQL服务器 354
13.2.2 新建普通用户 355
13.2.3 删除普通用户 359
13.2.4 root用户修改自己的密码 360
13.2.5 root用户修改普通用户的密码 362
13.2.6 普通用户修改密码 363
13.2.7 root用户密码丢失的解决办法 364
13.3 权限管理 366
13.3.1 MySQL的各种权限 366
13.3.2 授权 368
13.3.3 收回权限 370
13.3.4 查看权限 371
13.4 访问控制 372
13.4.1 连接核实阶段 372
13.4.2 请求核实阶段 372
13.5 综合案例综合管理用户权限 373
13.6 专家解惑 377
13.7 经典习题 377
第14章 数据备份与恢复 379
14.1 数据备份 379
14.1.1 使用MySQLdump命令备份 379
14.1.2 直接复制整个数据库目录 386
14.1.3 使用MySQLhotcopy工具快速备份
386
14.2 数据恢复 387
14.2.1 使用MySQL命令恢复 387
14.2.2 直接复制到数据库目录 388
14.2.3 MySQLhotcopy快速恢复 388
14.3 数据库迁移 389
14.3.1 相同版本的MySQL数据库之间的迁移 389
14.3.2 不同版本的MySQL数据库之间的迁移 389
14.3.3 不同数据库之间的迁移 390
14.4 表的导出和导入 390
14.4.1 使用SELECTIINTO OUTFILE导出文本文件
390
14.4.2 使用MySQLdump命令导出文本文件 394
14.4.3 使用MySQL命令导出文本文件 396
14.4.4 使用LOAD DATA INFILE方式导入文本文件
399
14.4.5 使用MySQLimport命令导入文本文件
402
14.5 综合案例数据的备份与恢复 403
14.6 专家解惑 408
14.7 经典习题 409
第15章 MySQL日志 410
15.1 日志简介 410
15.2 二进制日志 411
15.2.1 启动和设置二进制日志 411
15.2.2 查看二进制日志 412
15.2.3 删除二进制日志 414
15.2.4 使用二进制日志恢复数据库 416
15.2.5 暂时停止二进制日志功能 417
15.3 错误日志 417
15.3.1 启动和设置错误日志 417
15.3.2 查看错误日志 418
15.3.3 删除错误日志 419
15.4 通用查询日志 419
15.4.1 启动和设置通用查询日志 419
15.4.2 查看通用查询日志 420
15.4.3 删除通用查询日志 420
15.5 慢查询日志 421
15.5.1 启动和设置慢查询日志 421
15.5.2 查看慢查询日志 421
15.5.3 删除慢查询日志 422
15.6 综合案例MySQL日志的综合管理 422
15.7 专家解惑 428
15.8 经典习题 429
第16章 性能优化 430
16.1 优化简介 430
16.2 优化查询 431
16.2.1 分析查询语句 431
16.2.2 索引对查询速度的影响 435
16.2.3 使用索引查询 436
16.2.4 优化子查询 439
16.3 优化数据库结构 439
16.3.1 将字段很多的表分解成多个表 439
16.3.2 增加中间表 441
16.3.3 增加冗余字段 442
16.3.4 优化插入记录的速度 443
16.3.5 分析表、检查表和优化表 445
16.4 优化MySQL服务器 446
16.4.1 优化服务器硬件 447
16.4.2 优化MySQL的参数 447
16.5 综合案例全面优化MySQL服务器 448
16.6 专家解惑 451
16.7 经典习题 452
第17章 MySQL Replication 453
17.1 MySQL Replication概述 453
17.2 Windows环境下的MySQL主从复制 454
17.2.1 复制前的准备工作 454
17.2.2 Windows环境下实现主从复制 455
17.2.3 Windows环境下主从复制测试 462
17.3 Linux环境下的MySQL复制 463
17.3.1 下载并安装MySQL 5.7 463
17.3.2 单机主从复制前的准备工作 465
17.3.3 MySQLd_multi实现单机主从复制
469
17.3.4 不同服务器之间实现主从复制 476
17.3.5 MySQL 主要复制启动选项 478
17.3.6 指定复制的数据库或者表 479
17.4 查看Slave的复制进度 486
17.5 日常管理和维护 488
17.5.1 了解服务器的状态 488
17.5.2 服务器复制出错的原因 489
17.6 切换主从服务器 492
17.7 专家解惑 496
17.8 经典习题 497
第18章 MySQL Workbench 的使用 498
18.1 MySQL Workbench简介 498
18.1.1 MySQL Workbench 的概述 498
18.1.2 MySQL Workbench 的优势 499
18.1.3 MySQL Workbench 的安装 499
18.2 SQL Development的基本操作 501
18.2.1 创建数据库连接 501
18.2.2 创建新的数据库 502
18.2.3 创建和删除新的数据表 504
18.2.4 添加、修改表记录 507
18.2.5 查询表记录 508
18.2.6 修改表结构 509
18.3 Data Modeling的基本操作 510
18.3.1 建立ER模型 510
18.3.2 导入ER模型 515
18.4 Server Administration的基本操作
517
18.4.1 管理MySQL用户 517
18.4.2 备份MySQL数据库 520
18.4.3 恢复MySQL数据库 523
18.5 专家解惑 524
18.6 经典习题 524
第19章 MySQL Cluster 526
19.1 MySQL Cluster概述 526
19.1.1 MySQL Cluster基本概念 526
19.1.2 理解MySQL Cluster节点 527
19.2 Linux环境下MySQL Cluster安装和配置
528
19.2.1 安装MySQL Cluster软件 531
19.2.2 管理节点配置步骤 535
19.2.3 配置SQL节点和数据节点 536
19.3 管理MySQL Cluster 537
19.3.1 Cluster的启动 537
19.3.2 Cluster的测试 539
19.3.3 Cluster的关闭 541
19.4 维护MySQL Cluster 542
19.4.1 Cluster的日志管理 544
19.4.2 Cluster的联机备份 545
19.4.3 Cluster的数据恢复 546
19.5 Windows操作系统中配置Cluster 547
19.6 专家解惑 553
19.7 经典习题 554
第20章 MySQL管理利器MySQL Utilities
555
20.1 MySQL Utilities概述 555
20.2 安装与配置 556
20.2.1 下载与安装MySQL Utilities
556
20.2.2 MySQL Utilities连接数据库
559
20.3 管理与维护 560
20.3.1 使用mysqldbcompare比较数据
560
20.3.2 使用mysqldbcopy复制数据 561
20.3.3 使用mysqldbexport导出数据 561
20.3.4 使用mysqldbimport导入数据 562
20.3.5 使用mysqldiff比较对象的定义 562
20.4 专家解惑 563
20.5 经典习题 564
第21章 读写分离的利器MySQL Proxy 565
21.1 概述 565
21.2 安装与配置 566
21.2.1 下载与安装MySQL Proxy 566
21.2.2 配置MySQL Proxy参数 567
21.2.3 配置Path变量 569
21.3 使用MySQL Proxy实现读写分离 571
21.4 专家解惑 572
21.5 经典习题 572
第22章 PHP操作MySQL数据库 573
22.1 PHP访问MySQL数据库的一般步骤 573
22.2 连接数据库前的准备工作 574
22.3 PHP操作MySQL数据库的函数 575
22.3.1 通过MySQLi类库访问MySQL数据库
575
22.3.2
使用MySQLi_connect函数连接MySQL服务器 577
22.3.3 使用MySQLi_select_db函数选择数据库文件
577
22.3.4 使用MySQLi_query函数执行SQL语句
578
22.3.5 使用MySQLi_fetch_assoc
函数从数组结果集中获取信息 578
22.3.6
使用MySQLi_fetch_object函数从结果中获取一行作为对象 578
22.3.7
使用MySQLi_num_rows函数获取查询结果集中的记录数 579
22.3.8 使用MySQLi_free_result函数释放资源
579
22.3.9 使用MySQLi_close函数关闭连接
579
22.4 综合实例1使用insert语句动态添加用户信息
580
22.5 综合实例2使用select语句查询数据信息
583
22.6 专家解惑 585
22.7 经典习题 585
第23章 新闻发布系统数据库设计 586
23.1 系统概述 586
23.2 系统功能 587
23.3 数据库设计和实现 588
23.3.1 设计表 588
23.3.2 设计索引 592
23.3.3 设计视图 593
23.3.4 设计触发器 594
23.4 案例总结 595
第24章 论坛管理系统数据库设计 596
24.1 系统概述 596
24.2 系统功能 597
24.3 数据库设计和实现 598
24.3.1 设计方案图表 598
24.3.2 设计表 600
24.3.3 设计索引 603
24.3.4 设计视图 604
24.3.5 设计触发器 605
24.4 案例总结 606
內容試閱
第 1 章
? 初识MySQL ?


MySQL是一个开放源代码的数据库管理系统(DBMS),它是由MySQL
AB公司开发、发布并支持的。MySQL是一个跨平台的开源关系型数据库管理系统,广泛地应用在Internet上的中小型网站开发中。本章主要介绍数据库的基础知识,通过本章的学习,读者可以了解数据库的基本概念、数据库的构成和MySQL的基本知识。

l 了解什么是数据库
l
掌握什么是表、数据类型和主键
l 熟悉数据库的技术构成
l 熟悉什么是MySQL
l 掌握常见的MySQL工具
l 了解如何学习MySQL
1.1 数据库基础

数据库由一批数据构成有序的集合,这些数据被存放在结构化的数据表里。数据表之间相互关联,反映了客观事物间的本质联系。数据库系统提供对数据的安全控制和完整性控制。本节将介绍数据库中的一些基本概念,包括:数据库的定义、数据表的定义和数据类型等。
1.1.1 什么是数据库

数据库的概念诞生于60年前,随着信息技术和市场的快速发展,数据库技术层出不穷,随着应用的拓展和深入,数据库的数量和规模越来越大,其诞生和发展给计算机信息管理带来了一场巨大的革命。

数据库的发展大致划分为如下几个阶段:人工管理阶段、文件系统阶段、数据库系统阶段、高级数据库阶段。其种类大概有3种:层次式数据库、网络式数据库和关系式数据库。不同种类的数据库按不同的数据结构来联系和组织。
对于数据库的概念,没有一个完全固定的定义,随着数据库历史的发展,定义的内容也有很大的差异,其中一种比较普遍的观点认为,数据库(DataBase,DB)是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。它是一个按数据结构来存储和管理数据的计算机软件系统,即数据库包含两层含义:保管数据的仓库,以及数据管理的方法和技术。
数据库的特点包括:实现数据共享,减少数据冗余;采用特定的数据类型;具有较高的数据独立性;具有统一的数据控制功能。
1.1.2 表

在关系数据库中,数据库表是一系列二维数组的集合,用来存储数据和操作数据的逻辑结构。它由纵向的列和横向的行组成,行被称为记录,是组织数据的单位;列被称为字段,每一列表示记录的一个属性,都有相应的描述信息,如数据类型、数据宽度等。

例如一个有关作者信息的名为authors的表中,每个列包含所有作者的某个特定类型的信息,比如姓名,而每行则包含了某个特定作者的所有信息:编号、姓名、性别、专业,如图1.1所示。


编号 姓名 性别 专业
100
张三 f 计算机
101
李芬 m 会计
102 岳阳 f 园林
图1.1 authors表的结构与记录
1.1.3 数据类型
数据类型决定了数据在计算机中的存储格式,代表不同的信息类型。常用的数据类型有:整数数据类型、浮点数数据类型、精确小数类型、二进制数据类型、日期时间数据类型、字符串数据类型。
表中的每一个字段就是某种指定数据类型,比如图1.1中编号字段为整数数据,性别字段为字符型数据。
1.1.4 主键
主键(Primary
Key)又称主码,用于唯一地标识表中的每一条记录。可以定义表中的一列或多列为主键,主键列上不能有两行相同的值,也不能为空值。假如,定义authors表,该表给每一个作者分配一个作者编号,该编号作为数据表的主键,如果出现相同的值,将提示错误,系统不能确定查询的究竟是哪一条记录;如果把作者的姓名作为主键,则不能出现重复的名字,这与现实中的情况不相符合,因此姓名字段不适合做为主键。
1.2 数据库技术构成

数据库系统由硬件部分和软件部分共同构成,硬件主要用于存储数据库中的数据,包括计算机、存储设备等。软件部分则主要包括DBMS、支持DBMS运行的操作系统,以及支持多种语言进行应用开发的访问技术等。本节将介绍数据库的技术构成。
1.2.1 数据库系统
数据库系统有3个主要的组成部分。
l
数据库:用于存储数据的地方。
l
数据库管理系统:用于管理数据库的软件。
l
数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充。

数据库提供了一个存储空间用以存储各种数据,可以将数据库视为一个存储数据的容器。一个数据库可能包含许多文件,一个数据库系统中通常包含许多数据库。
数据库管理系统(DataBase Management
System,DBMS)是用户创建、管理和维护数据库时所使用的软件,位于用户与操作系统之间,对数据库进行统一管理。DBMS能定义数据存储结构,提供数据的操作机制,维护数据库的安全性、完整性和可靠性。
虽然已经有了DBMS,但是在很多情况下,DBMS无法满足对数据管理的要求。数据库应用程序(DataBase
Application)的使用可以满足对数据管理的更高要求,还可以使数据管理过程更加直观和友好。数据库应用程序负责与DBMS进行通信、访问和管理DBMS中存储的数据,允许用户插入、修改、删除DB中的数据。
数据库系统如图1.2所示:

图1.2 数据库系统
1.2.2 SQL语言
对数据库进行查询和修改操作的语言叫做SQL。SQL的含义是结构化查询语言(Structured Query
Language)。SQL有许多不同的类型,有3个主要的标准:ANSI(美国国家标准机构)SQL,对ANSI
SQL修改后在1992年采纳的标准,称为SQL-92或SQL2。最近的SQL-99标准,从SQL2扩充而来并增加了对象关系特征和许多其他新功能。其次,各大数据库厂商提供不同版本的SQL,这些版本的SQL不但能包括原始的ANSI标准,而且在很大程度上支持SQL-92标准。
SQL包含以下4个部分。
(1)数据定义语言(DDL):DROP、CREATE、ALTER等语句。
(2)数据操作语言(DML):INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
(3)数据查询语言(DQL):SELECT语句。
(4)数据控制语言(DCL):GRANT、REVOKE、COMMIT、ROLLBACK等语句。
下面是一条SQL语句的例子,该语句声明创建一个名叫students的表:
CREATE TABLE students

student_id INT UNSIGNED,
name VARCHAR30,
sex CHAR1,
birth DATE,
PRIMARY KEY student_id
;
该表包含4个字段,分别为student_id、name、sex、birth,其中student_id定义为表的主键。
现在只是定义了一张表格,但并没有任何数据,接下来这条SQL声明语句,将在students表中插入一条数据记录:
INSERT INTO students student_id, name, sex, birth
VALUES 41048101, ''Lucy Green'', 1, 1990-02-14;
执行完该SQL语句之后,students表中就会增加一行新记录,该记录中字段student_id的值为41048101,name字段的值为Lucy
Green,sex字段值为1,birth字段值为1990-02-14。
再使用SELECT查询语句获取刚才插入的数据,如下:
SELECT name FROM students WHERE student_id = 41048101;

---------------
| name |
--------------
| Lucy Green |
--------------
上面简单列举了常用的数据库操作语句,在这里给读者一个直观的印象,读者可能还不能理解,接下来会在学习MySQL的过程中详细介绍这些知识。
1.2.3 数据库访问接口
不同的程序设计语言会有各自不同的数据库访问接口,程序语言通过这些接口,执行SQL语句,进行数据库管理。主要的数据库访问接口有:
1. ODBC
Open Database
Connectivity(ODBC,开放数据库互连)技术为访问不同的SQL数据库提供了一个共同的接口。ODBC使用SQL作为访问数据的标准。这一接口提供了最大限度的互操作性:一个应用程序可以通过共同的一组代码访问不同的
SQL 数据库管理系统(DBMS)。

一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是Access、MySQL还是Oracle数据库,均可用ODBC
API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。
2. JDBC
Java Data Base Connectivity(JDBC,Java数据库连接)用于Java应用程序连接数据库的标准方法,是一种用于执行SQL语句的Java
API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
3. ADO.NET

ADO.NET是微软在.NET框架下开发设计的一组用于和数据源进行交互的面向对象类库。ADO.NET提供了对关系数据、XML和应用程序数据的访问,允许和不同类型的数据源以及数据库进行交互。
4. PDO
PDO(PHP Data Object)为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO是PHP
5新加入的一个重大功能。

针对不同的程序语言,MySQL提供了不同数据库的访问连接驱动,读者可以在下载页面(http:dev.MySQL.comdownloads)下载相关驱动。
1.3 什么是MySQL
MySQL是一个小型关系数据库管理系统,与其他大型数据库管理系统(例如Oracle、DB2、SQL
Server等)相比,MySQL规模小、功能有限,但是它体积小、速度快、成本低,且它提供的功能对稍微复杂的应用来说已经够用,这些特性使得MySQL成为世界上最受欢迎的开放源代码数据库。本节将介绍MySQL的特点。
1.3.1 客户机-服务器软件
主从式架构(Client-server model)或客户端-服务器(ClientServer)结构简称CS结构,是一种网络架构,通常在该网络架构下软件分为客户端(Client)和服务器(Server)。

服务器是整个应用系统资源的存储与管理中心,多个客户端则各自处理相应的功能,共同实现完整的应用。在客户服务器结构中,客户端用户的请求被传送到数据库服务器,数据库服务器进行处理后,将结果返回给用户,从而减少了网络数据传输量。
用户使用应用程序时,首先启动客户端,通过有关命令告知服务器进行连接以完成各种操作,而服务器则按照此请示提供相应的服务。每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出请求。
这种系统的特点就是,客户端和服务器程序不在同一台计算机上运行,这些客户端和服务器程序通常归属不同的计算机。

主从式架构通过不同的途径应用于很多不同类型的应用程序,比如,现在人们最熟悉的在因特网上使用的网页。例如,当顾客想要在当当网站上买书的时候,电脑和网页浏览器就被当作一个客户端,同时,组成当当网的电脑、数据库和应用程序就被当作服务器。当顾客的网页浏览器向当当网请求搜寻数据库相关的图书时,当当网服务器从当当网的数据库中找出所有该类型的图书信息,结合成一个网页,再发送回顾客的浏览器。服务器端一般使用高性能的计算机,并配合使用不同类型的数据库,比如Oracle、Sybase或者是MySQL等;客户端需要安装专门的软件,比如专门开发的客户端工具浏览器等。
1.3.2 MySQL版本
针对不同用户,MySQL分为两个不同的版本:
l MySQL Community
Server(社区版):该版本完全免费,但是官方不提供技术支持。
l MySQL Enterprise
Server(企业版服务器):它能够以很高性价比为企业提供数据仓库应用,支持ACID事物处理,提供完整的提交、回滚、崩溃恢复和行级锁定功能。但是该版本需付费使用,官方提供电话技术支持。


MySQL Cluster主要用于架设集群服务器,需要在社区版或企业版基础上使用。
MySQL的命名机制由3个数字和1个后缀组成,例如:MySQL-5.7.10。
(1)第1个数字(5)是主版本号,描述了文件格式,所有版本5的发行版都有相同的文件格式。
(2)第2个数字(7)是发行级别,主版本号和发行级别组合在一起便构成了发行序列号。
(3)第3个数字(10)是在此发行系列的版本号,随每次新分发版本递增。通常选择已经发行的最新版本。
在MySQL开发过程中,同时存在多个发布系列,每个发布处在成熟度的不同阶段。
(1)MySQL 5.7是最新开发的稳定(GA)发布系列,是将执行新功能的系列,目前已经可以正常使用。
(2)MySQL 5.6是比较稳定(GA)发布系列。只针对漏洞修复重新发布,没有增加会影响稳定性的新功能。
(3)MySQL 5.1是前一稳定(产品质量)发布系列。只针对严重漏洞修复和安全修复重新发布,没有增加会影响该系列的重要功能。
对于MySQL 4.1、4.0和3.23等低于5.0的老版本,官方将不再提供支持。而所有发布的MySQL(Current Generally
Available Release)版本已经经过严格标准的测试,可以保证其安全可靠地使用。针对不同的操作系统,读者可以在MySQL官方下载页面(http:dev.MySQL.comdownloads)下载到相应的安装文件。
1.3.3 MySQL的优势
MySQL的主要优势如下:
(1)速度:运行速度快。
(2)价格:MySQL对多数个人来说是免费的。
(3)容易使用:与其他大型数据库的设置和管理相比,其复杂程度较低,易于学习。
(4)可移植性:能够工作在众多不同的系统平台上,例如:Windows、Linux、Unix、Mac OS等。
(5)丰富的接口:提供了用于C、C 、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等语言的API。
(6)支持查询语言:MySQL可以利用标准SQL语法和支持ODBC(开放式数据库连接)的应用程序。

(7)安全性和连接性:十分灵活和安全的权限和密码系统,允许基于主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码安全。并且由于MySQL是网络化的,因此可以在因特网上的任何地方访问,提高数据共享的效率。
1.3.4 MySQL 5.7的新功能
和MySQL5.6相比,MySQL5.7的新功能主要包括以下几个方面。
1. 支持JSON
JSON(Java Script Object Notation的缩写)是一种存储信息的格式,可以很好地替代XML。从MySQL
5.7.8版本开始,MySQL将支持JSON,而在此版本之前,只能通过strings之类的通用形式来存储JSON文件,这样做的缺陷很明显,就是必须要自行确认和解析数据、解决更新中的困难、在执行插入操作时忍受较慢的速度。
2. 性能和可扩展性
改进InnoDB的可扩展性和临时表的性能,从而实现更快的网络和大数据加载等操作。
3. 改进复制以提高可用性的性能
改进复制包括多源复制、多从线程增强、在线GTIDs和增强的半同步复制。
4. 性能模式提供更好的视角
增加了许多新的监控功能,以减少空间和过载,使用新的SYS模式显著提高易用性。
5. 安全
以安全第一为宗旨,提供了很多新的功能,从而保证数据库的安全。
6. 优化
重写了大部分解析器、优化器和成本模型,这提高了可维护性、可扩展性和性能。
7. GIS
MySQL 5.7 全新的功能,包括 InnoDB 空间索引,使用 Boost.Geometry,同时提高完整性和标准符合性。
1.4 MySQL工具

MySQL数据库管理系统提供了许多命令行工具,这些工具可以用来管理MySQL服务器、对数据库进行访问控制、管理MySQL用户以及数据库备份和恢复工具等。而且MySQL提供了图形化的管理工具,这使得对数据库的操作更加简单。本节将为读者介绍这些工具的作用。
1.4.1 MySQL命令行实用程序
MySQL服务器端实用工具程序如下:
(1)mysqld:SQL后台程序(即MySQL服务器进程)。该程序必须运行之后,客户端才能通过连接服务器来访问数据库。

(2)mysqld_safe:服务器启动脚本。在UNIX和NetWare中推荐使用mysqld_safe来启动mysqld服务器。mysqld_safe增加了一些安全特性,例如当出现错误时重启服务器并向错误日志文件写入运行时间信息。
(3)mysql.server:服务器启动脚本。在UNIX中的MySQL分发版包括mysql.server脚本。该脚本用于使用包含为特定级别的、运行启动服务的脚本的、运行目录的系统。它调用mysqld_safe来启动MySQL服务器。
(4)mysql_multi:服务器启动脚本,可以启动或停止系统上安装的多个服务器。
(5)myisamchk:用来描述、检查、优化和维护MyISAM表的实用工具。
(6)mysqlbug:MySQL缺陷报告脚本。它可以用来向MySQL邮件系统发送缺陷报告。
(7)mysql_install_db:该脚本用默认权限创建MySQL授权表。通常只是在系统上首次安装MySQL时执行一次。
MySQL客户端实用工具程序如下:
(1)myisampack:压缩MyISAM表以产生更小的只读表的一个工具。
(2)mysql:交互式输入SQL语句或从文件以批处理模式执行它们的命令行工具。
(3)mysqlaccess:检查访问主机名、用户名和数据库组合的权限的脚本。
(4)MySQLadmin:执行管理操作的客户程序,例如创建或删除数据库,重载授权表,将表刷新到硬盘上,以及重新打开日志文件。MySQLadmin还可以用来检索版本、进程,以及服务器的状态信息。
(5)mysqlbinlog:从二进制日志读取语句的工具。在二进制日志文件中包含执行过的语句,可用来帮助系统从崩溃中恢复。
(6)mysqlcheck:检查、修复、分析以及优化表的表维护客户程序。
(7)mysqldump:将MySQL数据库转储到一个文件(例如SQL语句或tab分隔符文本文件)的客户程序。
(8)mysqlhotcopy:当服务器在运行时,快速备份MyISAM或ISAM表的工具。
(9)mysql import:使用LOAD DATA INFILE将文本文件导入相关表的客户程序。
(10)mysqlshow:显示数据库、表、列以及索引相关信息的客户程序。
(11)perror:显示系统或MySQL错误代码含义的工具。
1.4.2 MySQL Workbench
MySQL Workbench是下一代可视化数据库设计软件,MySQL
Workbench为数据库管理员和开发人员提供了一整套可视化数据库操作环境,主要功能有:
l 数据库设计和模型建立。
l SQL开发(取代MySQL Query
Browser)。
l 数据库管理(取代MySQL
Administrator)。
MySQL Workbench有两个版本:
(1)MySQL Workbench Community Edition(也叫MySQL Workbench OSS,社区版),MySQL
Workbench OSS是在GPL证书下发布的开源社区版本。
(2)MySQL Workbench Standard Edition(也叫MySQL Workbench SE,商业版),MySQL
Workbench SE是按年收费的商业版本。
截至本书完稿时,最新版本为MySQL Workbench 5.2.34。一些出版时间较早的MySQL教程中会提到图形化的工具MySQL Query
Browser和MySQL
Administrator。随着MySQL的发展,Oracle公司使用更高效、便捷的Workbench替换掉了这两个工具,目前官方已经不再提供MySQL
Query Browser和MySQL Administrator的技术支持和更新,但是仍然可以在使用旧版本MySQL时使用它们。
1.5 如何学习MySQL
在学习MySQL数据库之前,很多读者都会问如何才能学习好MySQL 5.7的相关技能呢?下面就来讲述学习MySQL的方法。
1. 培养兴趣
兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率。当然学习MySQL 5.7也不例外。
2. 夯实基础
计算机领域的技术非常强调基础,刚开始学习可能还认识不到这一点,随着技术应用的深入,只有有着扎实的基础功底,才能在技术的道路上走得更快、更远。对于MySQL的学习来说,SQL语句是其中最为基础的部分,很多操作都是通过SQL语句来实现的。所以在学习的过程中,读者要多编写SQL语句,对于同一个功能,使用不同的实现语句来完成,从而深刻理解其不同之处。
3. 及时学习新知识
正确、有效地利用搜索引擎,可以搜索到很多关于MySQL
5.7的相关知识。同时,参考别人解决问题的思路,也可以吸取别人的经验,及时获取最新的技术资料。
4. 多实践操作
数据库系统具有极强的操作性,需要多动手上机操作。在实际操作的过程中才能发现问题,并思考解决问题的方法和思路,只有这样才能提高实战的操作能力。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 台灣用户 | 香港/海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.