描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302501558丛书名: 软件开发魔典
编写本书的目的是从多角度全方位竭力帮助读者快速掌握软件开发技能,构建从高校到社会与企业的就职桥梁,让有志于从事软件开发的读者轻松步入职场。同时本书还赠送王牌资源库,由于赠送的资源比较多,我们在本书前言部分对资源包的具体内容、获取方式以及使用方法等做了详细说明。
本书适合MySQL入门者,也适合MySQL数据库管理员以及想全面学习MySQL数据库技术以提升实战技能的人员使用
第1篇 基础知识
第1章 步入MySQL数据库世界
——Hello MySQL 2
◎
本章教学微视频:10个 29分钟 2
1.1 认识MySQL数据库 2
1.1.1
MySQL系统特性 2
1.1.2
MySQL的版本 3
1.2 下载MySQL软件 4
1.3 在Windows系统环境下安装MySQL
6
1.4 在Linux系统环境下安装MySQL
12
1.4.1
下载MySQL的RPM包 12
1.4.2
安装MySQL的RPM包 12
1.5 测试安装环境 14
1.5.1
检查MySQL服务是否启动 14
1.5.2
登录MySQL数据库 15
1.6 合理配置环境变量 16
1.7 卸载MySQL数据库 18
1.8 就业面试技巧与解析 19
1.8.1
面试技巧与解析(一) 19
1.8.2
面试技巧与解析(二) 19
1.8.3
面试技巧与解析(三) 19
第2章 数据库初探 20
◎
本章教学微视频:14个 38分钟
20
2.1 快速认识数据库 20
2.1.1
什么是数据库 20
2.1.2
数据库的原理 21
2.1.3
数据表 22
2.1.4
数据类型 22
2.1.5
主键 22
2.2 数据库技术构成 22
2.2.1
数据库系统 22
2.2.2
SQL语言 23
2.2.3
数据库访问技术 23
2.3 关系型数据模型 24
2.3.1
关系型数据模型的结构 24
2.3.2
关系型数据模型的操作与完整性 25
2.3.3
关系型数据模型的存储结构 27
2.4 关系型数据模型中的数据依赖与范式 27
2.5 常见的关系型数据库管理系统
28
2.6
MySQL体系结构 29
2.7 就业面试技巧与解析 31
2.7.1
面试技巧与解析(一) 31
2.7.2
面试技巧与解析(二) 31
第3章 MySQL常用管理工具的使用 32
◎
本章教学微视频:11个 40分钟 32
3.1
phpMyAdmin 32
3.1.1
基本功能介绍 32
3.1.2
管理数据库 34
3.2
Navicat for MySQL 40
3.2.1
基本功能介绍 40
3.2.2
基本应用 40
3.3
MySQL Workbench 51
3.3.1
MySQL Workbench的概述 51
3.3.2
MySQL Workbench的优势 51
3.3.3
SQL Development的基本操作 51
3.4
MySQL用户账户管理 57
3.5
MySQL权限系统 60
3.6
MySQL的安全性问题 64
3.6.1
加强MySQL数据库的安全 64
3.6.2
为MySQL管理账号加上密码 64
3.7 就业面试技巧与解析 65
3.7.1
面试技巧与解析(一) 65
3.7.2
面试技巧与解析(二) 66
第4章 MySQL数据库的基本操作 67
◎
本章教学微视频:11个 21分钟 67
4.1 创建数据库 67
4.1.1
创建数据库的语法形式 67
4.1.2
创建数据库实例 67
4.2 查看与选择数据库 69
4.2.1
查看数据库 69
4.2.2
选择数据库 69
4.3 删除数据库 69
4.3.1
删除数据库的语法形式 70
4.3.2
删除数据库实例 70
4.4 数据库存储引擎 70
4.4.1
MySQL存储引擎简介 70
4.4.2
InnoDB存储引擎 72
4.4.3
MyISAM存储引擎 72
4.4.4
MEMORY存储引擎 73
4.4.5
存储引擎的选择 73
4.5 就业面试技巧与解析 74
4.5.1
面试技巧与解析(一) 74
4.5.2
面试技巧与解析(二) 74
第2篇 核心应用
第5章 数据表的基本操作 76
◎
本章教学微视频:20个 41分钟 76
5.1 创建数据表 76
5.1.1
创建数据表的语法形式 76
5.1.2
创建数据表实例 77
5.1.3
主键约束 78
5.1.4
外键约束 79
5.1.5
非空约束 80
5.1.6
性约束 80
5.1.7
默认约束 81
5.1.8
自增属性 81
5.2 查看数据表结构 81
5.2.1
查看数据表基本结构 82
5.2.2
查看数据表详细结构 82
5.3 修改数据表 83
5.3.1
修改表名 83
5.3.2
修改字段数据类型 83
5.3.3
修改字段名 84
5.3.4
添加字段 85
5.3.5
删除字段 86
5.4 数据表的其他操作 87
5.4.1
修改字段排序 87
5.4.2
更改表的存储引擎 88
5.4.3
删除表的外键约束 89
5.5 删除数据表 89
5.5.1
删除没有被关联的表 90
5.5.2
删除被其他表关联的主表 90
5.6 就业面试技巧与解析 92
第6章 MySQL视图 93
◎
本章教学微视频:8个 30分钟 93
6.1 视图的概念 93
6.2 视图的基本操作 94
6.2.1
创建视图 94
6.2.2
查看视图基本信息 97
6.2.3
查看视图详细信息 98
6.2.4
修改视图 99
6.2.5
更新视图 101
6.2.6
删除视图 104
6.3 视图的使用 105
6.4 就业面试技巧与解析 107
6.4.1
面试技巧与解析(一) 107
6.4.2
面试技巧与解析(二) 108
第7章 MySQL的数据类型和运算符 109
◎
本章教学微视频:12个 62分钟 109
7.1
MySQL的数据类型 109
7.1.1
常见的数据类型 109
7.1.2
整数类型 110
7.1.3
浮点数类型和定点数类型 111
7.1.4
日期/时间类型 113
7.1.5
字符串类型 124
7.1.6
如何选择数据类型 128
7.2
MySQL常用的运算符 130
7.2.1
运算符概述 130
7.2.2
算术运算符 131
7.2.3
比较运算符 133
7.2.4
逻辑运算符 141
7.2.5
位运算符 145
7.2.6
运算符的优先级 148
7.3 就业面试技巧与解析 149
7.3.1
面试技巧与解析(一) 149
7.3.2
面试技巧与解析(二) 149
第8章 MySQL函数 150
◎
本章教学微视频:32个 54分钟 150
8.1
MySQL函数简介 150
8.2 数学函数 151
8.2.1
值函数和圆周率函数 152
8.2.2
求余函数 152
8.2.3
平方根函数 152
8.2.4
获取整数的函数 153
8.2.5
获取随机数的函数 154
8.2.6
四舍五入函数 154
8.2.7
幂运算函数 156
8.2.8
符号函数 156
8.2.9
对数运算函数 156
8.2.10
角度与弧度相互转换的函数 157
8.3 字符串函数 158
8.3.1
计算字符串字符数的函数和
字符串长度的函数 159
8.3.2
合并字符串的函数 160
8.3.3
替换字符串的函数 161
8.3.4
字母大小写转换函数 161
8.3.5
获取指定长度的字符串的函数 162
8.3.6
填充字符串的函数 163
8.3.7
删除空格的函数 163
8.4 日期和时间函数 164
8.4.1
获取当前日期的函数和获取
当前时间的函数 166
8.4.2
获取当前日期和时间的函数 167
8.4.3
UNIX时间戳函数 167
8.4.4
返回UTC日期的函数和返回
UTC时间的函数 168
8.4.5
获取月份的函数 169
8.4.6
获取星期的函数 170
8.4.7
获取星期数的函数 170
8.4.8
时间和秒钟转换的函数 172
8.4.9
日期和时间的加减运算函数 172
8.4.10
将日期和时间格式化的函数 175
8.5 条件判断函数 176
8.6 系统信息函数 178
8.7 数据加密与解密函数 182
8.8 其他函数 184
8.9 就业面试技巧与解析 186
8.9.1
面试技巧与解析(一) 186
8.9.2
面试技巧与解析(二) 187
第9章 MySQL数据库查询语句详解 188
◎
本章教学微视频:16个 42分钟 188
9.1 基本查询语句 188
9.1.1
查询简单数据记录 189
9.1.2
查询表中的所有字段 190
9.1.3
查询经过计算的值 191
9.1.4
查询表中的若干记录 192
9.1.5
多条件查询数据 195
9.1.6
统计函数和分组数据记录查询 198
9.2 排序查询结果 200
9.2.1
单字段排序 201
9.2.2
多字段排序 201
9.3 使用LIMIT限制查询结果的数量 202
9.4 连接查询 203
9.4.1
内连接查询 203
9.4.2
左外连接查询 206
9.4.3
右外连接查询 207
9.4.4
复合条件连接查询 207
9.5 子查询 208
9.6 合并查询结果 212
9.7 使用正则表达式表示查询
214
9.8 就业面试技巧与解析 220
9.8.1
面试技巧与解析(一) 220
9.8.2
面试技巧与解析(二) 221
第10章 MySQL数据库的数据与索引操作 222
◎
本章教学微视频:14个 28分钟 222
10.1
插入数据记录 222
10.1.1
插入完整的数据记录 222
10.1.2
为表的指定字段插入数据 224
10.1.3
同时插入多条数据记录 225
10.1.4
插入查询结果 227
10.2
修改数据记录 228
10.3
删除数据记录 229
10.4
索引概述 232
10.5
索引的分类 232
10.6
创建和查看索引 233
10.6.1
创建和查看普通索引 233
10.6.2
创建和查看索引 235
10.6.3
创建和查看多列索引 235
10.6.4
创建和查看全文索引 237
10.7
删除索引 237
10.7.1
使用DROP INDEX删除索引 237
10.7.2
使用ALTER TABLE删除索引 238
10.8
就业面试技巧与解析 239
10.8.1
面试技巧与解析(一) 239
10.8.2
面试技巧与解析(二) 239
第11章 存储过程与存储函数 240
◎
本章教学微视频:13个 26分钟 240
11.1
存储过程的定义 240
11.1.1
创建存储过程 240
11.1.2
调用存储过程 242
11.1.3
查看存储过程 244
11.1.4
修改存储过程 246
11.1.5
删除存储过程 247
11.2
存储函数 247
11.2.1
创建存储函数 247
11.2.2
调用存储函数 248
11.2.3
查看存储函数 249
11.2.4
删除存储函数 251
11.3
深入学习相关知识 251
11.3.1
变量 251
11.3.2
流程控制语句 252
11.3.3
光标的使用 255
11.3.4
定义条件和处理程序 256
11.4
就业面试技巧与解析 258
11.4.1
面试技巧与解析(一) 258
11.4.2
面试技巧与解析(二) 259
11.4.3
面试技巧与解析(三) 259
11.4.4
面试技巧与解析(四) 259
第12章 使用MySQL触发器 260
◎
本章教学微视频:6个 13分钟 260
12.1
触发器的概念 260
12.2
创建触发器 261
12.2.1
创建单条执行语句触发器 261
12.2.2
创建多条执行语句触发器 263
12.3
查看触发器 264
12.3.1
通过执行语句查看触发器 264
12.3.2
通过查看系统表查看触发器 266
12.4
删除触发器 267
12.5
就业面试技巧与解析 267
12.5.1
面试技巧与解析(一) 267
12.5.2
面试技巧与解析(二) 268
第3篇 核心技术
第13章 MySQL数据库的权限管理与恢复 270
◎
本章教学微视频:18个 52分钟 270
13.1
MySQL数据库用户权限表 270
13.1.1
user表 271
13.1.2
db表和host表 273
13.1.3
tables_priv表和columns_priv表 275
13.1.4
procs_priv表 276
13.2
MySQL数据库账户管理 276
13.2.1
登录和退出MySQL数据库 277
13.2.2
创建普通用户账户 278
13.2.3
修改root用户账户密码 281
13.2.4
修改普通用户账户密码 281
13.2.5
删除用户账户 283
13.3
用户权限管理 285
13.3.1
对用户进行授权 285
13.3.2
查看用户权限 287
13.3.3
收回用户权限 288
13.3.4
重新设置密码 289
13.4
为什么要备份数据库 290
13.5
备份数据库 291
13.5.1
使用mysqldump备份 291
13.5.2
使用mysqlhotcopy快速备份 294
13.6
数据的还原与恢复 295
13.6.1
使用mysql还原 295
13.6.2
使用mysqlhotcopy恢复 296
13.7
就业面试技巧与解析 297
13.7.1
面试技巧与解析(一) 297
13.7.2
面试技巧与解析(二) 297
第14章 MySQL数据库的复制 298
◎
本章教学微视频:7个 14分钟 298
14.1
了解MySQL复制 298
14.1.1
复制的原理 298
14.1.2
复制的用途 299
14.2
配置复制环境 299
14.2.1
配置复制的主从机器 300
14.2.2
在Windows环境下实现主从复制 300
14.2.3
MySQL复制的基本模式 305
14.3
管理与维护复制 306
14.3.1
了解服务器的状态 306
14.3.2
服务器复制出错的原因 306
14.4
就业面试技巧与解析 309
14.4.1 面试技巧与解析(一) 309
14.4.2 面试技巧与解析(二) 309
第15章 MySQL的日志管理 310
◎
本章教学微视频:13个 20分钟 310
15.1
错误日志 310
15.1.1
启用错误日志 310
15.1.2
查看错误日志 311
15.1.3
删除错误日志 312
15.2
二进制日志 313
15.2.1
启用二进制日志 313
15.2.2
查看二进制日志 314
15.2.3
删除二进制日志 317
15.2.4
使用二进制日志还原数据库 318
15.3
查询日志 318
15.3.1
启用查询日志 318
15.3.2
查看查询日志 319
15.3.3
删除查询日志 319
15.4
慢查询日志 319
15.4.1
启用慢查询日志 320
15.4.2
查看慢查询日志 320
15.4.3
删除慢查询日志 321
15.5
就业面试技巧与解析 322
15.5.1 面试技巧与解析(一) 322
15.5.2 面试技巧与解析(二) 322
第16章 利用MySQL构建分布式应用 323
◎
本章教学微视频:9个 18分钟 323
16.1
了解分布式 323
16.1.1
分布式的概念 323
16.1.2
分布式的优势 324
16.2
分布式事务的语法 324
16.3
MySQL分布式应用技术 325
16.3.1
MySQL数据切分 325
16.3.2
MySQL读写分离 327
16.3.3
MySQL集群 327
16.4
MySQL分布式应用案例 327
16.4.1
安装MySQL Cluster软件 330
16.4.2
配置管理节点 332
16.4.3
配置SQL节点和数据节点 333
16.5
就业面试技巧与解析 334
16.5.1 面试技巧与解析(一) 334
16.5.2 面试技巧与解析(二) 334
第17章 MySQL查询缓存 335
◎
本章教学微视频:7个 18分钟 335
17.1
MySQL的缓存机制 335
17.1.1
查询缓存概述 335
17.1.2
MySQL查询缓存的工作原理 336
17.1.3
查看MySQL的缓存信息 337
17.2
MySQL查询缓存的配置和维护 339
17.2.1
配置查询缓存 339
17.2.2
监控和维护查询缓存 340
17.3
如何检查缓存命中 341
17.4
优化查询缓存 342
17.5
就业面试技巧与解析 343
17.5.1 面试技巧与解析(一) 343
17.5.2 面试技巧与解析(二) 343
第18章 MySQL错误代码和消息的使用 344
◎
本章教学微视频:2个 4分钟 344
18.1
MySQL服务器端错误代码和消息 344
18.2
MySQL客户端错误代码和消息 346
18.3
就业面试技巧与解析 347
18.3.1 面试技巧与解析(一) 347
18.3.2 面试技巧与解析(二) 348
第4篇 高级应用
第19章 在C#中实现MySQL数据库的连接 350
◎
本章教学微视频:6个 11分钟 350
19.1
C#概述 350
19.2
安装Connector/NET驱动程序 351
19.3
使用C#语言连接MySQL数据库 355
19.3.1
建立与MySQL数据库服务器的
连接 355
19.3.2
选择数据库 356
19.3.3
执行数据库的基本操作 356
19.4
关闭创建的对象 357
19.5
就业面试技巧与解析 358
19.5.1 面试技巧与解析(一) 358
19.5.2 面试技巧与解析(二) 358
第20章 在Java中实现MySQL数据库的
连接 359
◎
本章教学微视频:10个 16分钟 359
20.1
Java概述 359
20.1.1
了解Java语言 359
20.1.2
Java语言的特性 360
20.1.3
Java语言的核心技术 362
20.1.4
Java语言的工作原理 362
20.2
连接MySQL数据库的步骤 364
20.3
数据库连接接口 365
20.3.1
常用方法 365
20.3.2
处理元数据 365
20.4
数据库常用接口 366
20.4.1
Statement接口 366
20.4.2
PreparedStatement接口 366
20.4.3
ResultSet接口 367
20.5
就业面试技巧与解析 368
20.5.1 面试技巧与解析(一) 368
20.5.2 面试技巧与解析(二) 368
20.5.3 面试技巧与解析(三) 368
第21章 在PHP中实现MySQL数据库的
连接 370
◎
本章教学微视频:14个 20分钟 370
21.1
了解PHP 370
21.1.1
PHP概述 370
21.1.2
PHP的发展历程 371
21.1.3
PHP语言的优势 371
21.2
PHP访问MySQL数据库的流程 372
21.3
设置PHP的配置文件 372
21.4
在PHP中操作MySQL数据库 373
21.4.1
通过mysqli类库访问MySQL
数据库 373
21.4.2
使用mysqli_connect()函数连接
MySQL服务器 375
21.4.3
使用mysqli_select_db()函数选择
数据库文件 375
21.4.4
使用mysqli_query()函数执行
SQL语句 376
21.4.5
使用mysqli_fetch_assoc()函数从数
组结果集中获取信息 376
21.4.6
使用mysqli_fetch_object()函数从
结果中获取一行作为对象 376
21.4.7
使用mysqli_num_rows()函数获取
查询结果集中的记录数 377
21.4.8
使用mysqli_free_result()函数释放
资源 377
21.4.9
使用mysqli_close()函数关闭连接 377
21.5
就业面试技巧与解析 377
21.5.1 面试技巧与解析(一) 377
21.5.2 面试技巧与解析(二) 378
第5篇 行业应用
第22章 软件工程师素养与技能
380
◎
本章教学微视频:10个 13分钟 380
22.1
软件工程师的基本素养 380
22.1.1
计算机基础能力 381
22.1.2
掌握一门编程语言 381
22.1.3
熟悉计算机数据存储过程 381
22.1.4
较强的英语阅读和写作能力 381
22.1.5
软件开发与测试环境搭建能力 381
22.1.6
熟悉软件测试基本理论及任务
分配 382
22.2
个人素质必修课程 382
22.2.1
良好的语言表达及沟通能力 382
22.2.2
过硬的心理素质 383
22.2.3
责任心与自信心 383
22.2.4
团队协作能力 383
第23章 MySQL在金融银行行业开发中的
应用 384
◎
本章教学微视频:5个 8分钟 384
23.1
系统功能描述 384
23.2
系统功能分析与数据流程 385
23.2.1
系统功能分析 385
23.2.2
系统数据流程 386
23.3
代码的具体实现 386
23.4
程序的运行 391
第24章 MySQL在互联网行业开发中的应用
394
◎
本章教学微视频:5个 9分钟 394
24.1
系统功能描述 394
24.2
系统功能分析与数据流程 395
24.2.1
系统功能分析 395
24.2.2
系统数据流程 396
24.3
代码的具体实现 398
24.4
程序的运行 408
第25章 MySQL在信息资讯行业开发中的
应用 411
◎
本章教学微视频:6个 10分钟 411
25.1
系统功能描述 411
25.2
系统功能模块 412
25.3
数据库设计和实现 413
25.3.1
设计表 413
25.3.2
设计索引 417
25.3.3
设计视图 417
25.3.4
设计触发器 418
第6篇 项目实战
第26章 项目实战统筹阶段——项目开发与
规划 420
◎
本章教学微视频:20个 34分钟 420
26.1
项目开发流程 420
26.1.1
策划阶段 420
26.1.2
需求分析阶段 421
26.1.3
设计阶段 422
26.1.4
开发阶段 422
26.1.5
编码阶段 422
26.1.6
系统测试阶段 422
26.1.7
系统验收阶段 423
26.1.8
系统维护阶段 423
26.2
项目开发团队 423
26.2.1
项目团队的组成 423
26.2.2
高效开发团队的特征 424
26.3
项目的实际运作 425
26.4
项目规划常见问题及解决 426
26.4.1
如何满足客户需求 426
26.4.2
如何控制项目进度 427
26.4.3
如何控制项目预算 427
第27章 项目实战入门阶段——论坛管理系统
数据库开发 428
◎
本章教学微视频:7个 11分钟 428
27.1
系统功能描述 428
27.2
系统功能模块 429
27.3
数据库设计和实现 430
27.3.1
设计表的E-R图 430
27.3.2
设计表 432
27.3.3
设计索引 435
27.3.4
设计视图 435
27.3.5
设计触发器 436
第28章 项目实战提高阶段——企业会员管理
系统数据库开发 438
◎
本章教学微视频:5个 9分钟 438
28.1
系统功能描述 438
28.2
系统功能分析与数据流程 439
28.2.1
系统功能分析 439
28.2.2
系统数据流程 440
28.3
代码的具体实现 441
28.4
程序的运行 450
第29章 项目实战高级阶段——新闻发布系统
数据库开发 454
◎
本章教学微视频:5个 7分钟 454
29.1
系统功能描述 454
29.2
系统功能分析与数据流程 455
29.2.1
系统功能分析 455
29.2.2
系统数据流程 456
29.3
代码的具体实现 457
29.4
程序的运行 463
读万卷书,不如行万里路;行万里路,不如阅人无数;阅人无数,不如有高人指路。这句话道出了引导与实践对于学习知识的重要性。本丛书始于基础,结合理论知识的讲解,从项目开发基础入手,逐步引导读者进行项目开发实践,深入浅出地讲解MySQL数据库在软件编程中的各项技术和项目实践技能。本丛书的目的是多角度、全方位地帮助读者快速掌握软件开发技能,为读者构建从高校到社会与企业的就职桥梁,让有志于从事软件开发的读者轻松步入职场。MySQL数据库学习线路本书以MySQL的学习模式来分配内容结构,第1~4篇可使读者掌握MySQL数据库基础知识、应用技能,第5~6篇可使读者拥有多个行业项目开发经验。读者如果遇到问题,可观看本书同步微视频,也可以通过在线技术支持让老程序员答疑解惑。 本书内容全书分为6篇29章。第1篇【基础知识】主要讲解MySQL的安装与配置、MySQL数据库的基础知识、MySQL管理工具的使用以及数据库的基本操作等。读者在学完本篇后将会了解MySQL数据库的基本概念,掌握MySQL数据库的基本操作及应用方法,为后面更好地学习MySQL数据库编程打好基础。第2篇【核心应用】主要讲解数据表的基本操作、视图、MySQL的数据类型和运算符、MySQL函数、查询语句、数据与索引、存储过程与存储函数以及触发器等。通过本篇的学习,读者将对使用MySQL数据库进行基础编程具有一定的水平。第3篇【核心技术】主要讲解数据库权限管理与恢复、数据库的复制、日志管理、结构分布式应用、查询缓存、错误代码和消息的使用等。学完本篇,读者将对MySQL数据库的管理、恢复、日志管理以及使用MySQL数据库进行综合性编程具有一定的综合应用能力。第4篇【高级应用】主要讲解C#、Java以及PHP软件在软件开发中与MySQL数据库的应用连接等。学好本篇内容,读者可以进一步提高在多种编程语言中运用MySQL数据库进行编程的能力。第5篇【行业应用】主要讲解MySQL数据库在金融银行、互联网、信息资讯等行业开发中的应用。学好本篇内容,读者将能够贯通前面所学的各项知识和技能,学会在不同行业开发中应用MySQL数据库的技能。第6篇【项目实战】是论坛管理系统、企业会员管理系统和新闻发布系统3个实战案例。通过本篇的学习,读者将对MySQL数据库编程在项目开发中的实际应用拥有切身的体会,为日后进行软件开发积累下项目管理及实践开发经验。全书不仅融入了作者丰富的工作经验和多年的使用心得,还提供了大量来自工作现场的实例,具有较强的实战性和可操作性,读者系统学习后可以掌握MySQL数据库基础知识,拥有全面的MySQL数据库编程能力、优良的团队协同技能和丰富的项目实战经验。编写本书的目标就是让初学者、应届毕业生快速成长为一名合格的初级程序员,通过演练积累项目开发经验和团队合作技能,在未来的职场中获取一个高的起点,并能迅速融入软件开发团队中。本书特色1. 结构科学,自学更易本书在内容组织和范例设计中充分考虑到初学者的特点,由浅入深,循序渐进,无论您是否接触过Java语言,都能从本书中找到的起点。2. 视频讲解,细致透彻为降低学习难度,提高学习效率。本书录制了同步微视频(模拟培训班模式),通过视频除了能轻松学会专业知识外,还能获取老师的软件开发经验。使学习变得更轻松有效。3. 超多、实用、专业的范例和实践项目本书结合实际工作中的应用范例逐一讲解MySQL数据库的各种知识和技术,在行业应用和项目实战两篇中更以4个项目的实践来总结本书前21章介绍的知识和技能,使您在实践中掌握知识,轻松拥有项目开发经验。4. 随时检测自己的学习成果每章首页中,均提供了【学习指引】和【重点导读】,以指导读者重点学习及学后检查;章后的【就业面试解析与技巧】根据当前求职面试(笔试)题精选而成,读者可以随时检测自己的学习成果,做到融会贯通。5. 作者创作团队和技术支持本书由聚慕课研发中心编著和提供在线服务。您在学习过程中遇到任何问题,均可登录http://www.jumooc.com网站或加入图书读者(技术支持)QQ群529669132进行提问,作者和资深程序员将为您在线答疑。本书附赠超值王牌资源库本书附赠了极为丰富超值的王牌资源库,具体内容如下: (1)王牌资源1:随赠本书“配套学习与教学”资源库,提升读者学会用好MySQL数据库的学习效率。? 本书同步316节教学微视频录像(扫描二维码观看),总时长15.5学时。? 本书中9个大型项目案例以及325个实例源代码。? 本书配套上机实训指导手册及本书教学PPT课件。(2)王牌资源2:随赠“职业成长”资源库,突破读者职业规划与发展瓶颈。? 求职资源库:206套求职简历模板库、680套毕业答辩与学术开题报告PPT模板库。? 面试资源库:程序员面试技巧、100例常见面试(笔试)题库、200道求职常见面试(笔试)真题与解析。? 职业资源库:100例常见错误及解决方案、210套岗位竞聘模板、MySQL数据库开发技巧查询手册、程序员职业规划手册、开发经验及技巧集、软件工程师技能手册。(3)王牌资源3:随赠“MySQL软件开发魔典”资源库,拓展读者学习本书的深度和广度。? 案例资源库:120套MySQL经典案例库。? 项目资源库:40套大型完整MySQL项目案例库。? 软件开发文档模板库:10套8大行业MySQL项目开发文档模板库。? 编程水平测试系统:计算机水平测试、编程水平测试、编程逻辑能力测试、编程英语水平测试。? 软件学习工具及电子书资源库:MySQL 远程监控与管理速查手册、MySQL 常用命令速查手册、MySQL 中文版参考手册、MySQL 安全配置与数据维护速查手册、MySQL 常用维护管理工具速查手册、MySQL 数据库优化技巧速查手册、MySQL 数据库运维方案与技巧速查手册、MySQL 数据库连接方案与技巧速查手册、MySQL服务器端错误代码速查手册、MySQL客户端错误代码速查手册。(4)王牌资源4:编程代码优化纠错器。? 本助手能让软件开发更加便捷和轻松,无须安装配置复杂的软件运行环境即可轻松运行程序代码。? 本助手能一键格式化,让凌乱的程序代码更加规整美观。? 本助手能对代码精准纠错,让程序查错不再难。(5)王牌资源5:随赠在线课程(VIP会员)。可免费学习包含Python、Java、Java Web、C、JavaScript、MySQL、iOS、C#、PHP、HTML 5、C 、Linux、Linux C、ASP.NET、Android、SQL Server、Oracle等30多类500学时的项目开发在线课程、获取大量免费模板及在线免费练习题库。上述资源获取及使用注意:由于本书不配送光盘,书中所用及上述资源均需借助网络下载才能使用。1. 资源获取采用以下任意途径,均可获取本书所附赠的超值王牌资源库。(1)加入本书微信公众号,下载资源或者咨询关于本书的任何问题。(2)登录网站www.jumooc.com,搜索本书并下载相应资源。(3)加入本书图书读者(技术支持)QQ群:529669132,获取网络下载地址和密码。 (4)通过电子邮件[email protected]或[email protected]与我们联系,获取本书的资源。(5)通过扫描封底刮刮卡防盗二维码,获取本书对应资源。2. 使用资源读者可通过以下途径学习和使用本书微视频和资源。(1)通过PC端(在线)、APP端(在/离线)和微信端(在线)以及平板端(在/离线)学习本书微视频和练习考试题库。 (2)将本书资源下载到本地硬盘,根据学习需要选择性使用。(3)通过“MySQL从入门到项目实践(超值版)” 运行系统使用。打开下载资源包中的“MySQL从入门到项目实践(超值版).exe”系统,可以获取所有附赠的超值王牌资源。本书适合哪些读者阅读本书非常适合以下人员阅读。 没有任何MySQL数据库基础的初学者。 有一定的MySQL数据库基础,想精通MySQL数据库编程的人员。 有一定的MySQL数据库编程基础,没有项目实践经验的人员。 正在进行软件专业相关毕业设计的学生。 大中专院校及培训学校的老师和学生。创作团队本书由聚慕课教育研发中心组织编写,参与本书编写的人员主要有王湖芳、张开保、贾文学、张翼、白晓阳、李伟、李欣、樊红、徐明华、白彦飞、卞良、常鲁、陈诗谦、崔怀奇、邓伟奇、凡旭、高增、郭永、何旭、姜晓东、焦宏恩、李春亮、李团辉、刘二有、王朝阳、王春玉、王发运、王桂军、王平、王千、王小中、王玉超、王振、徐利军、姚玉中、于建斌、张俊锋、张晓杰、张在有等。在编写过程中,我们尽己所能将好的讲解呈现给读者,但也难免有疏漏和不妥之处,敬请读者不吝指正。若读者在学习中遇到困难或疑问,或有何建议,可写信至信箱[email protected]。另外,读者也可以登录网站http://www.jumooc.com进行交流以及免费下载学习资源。
作 者
第 2 篇核心应用
在了解MySQL的基本概念、基本应用之后,本篇将详细介绍MySQL的核心应用,包括数据表、视图、数据类型、数据运算符、函数、数据库查询、数据库索引、数据存储以及触发器等。通过本篇的学习,读者将对使用MySQL数据库有更高的水平。
? 第5章 数据表的基本操作? 第6章 MySQL视图? 第7章 MySQL的数据类型和运算符? 第8章 MySQL函数? 第9章 MySQL数据库查询语句详解? 第10章 MySQL数据库的数据与索引操作? 第11章 存储过程与存储函数? 第12章 使用MySQL触发器
第5章数据表的基本操作◎ 本章教学微视频:20个 41分钟 数据实际上存储在数据表中,可见数据表是数据库中重要、基本的操作对象,是数据存储的基本单位。本章将详细介绍数据表的基本操作,主要包括创建数据表、查看数据表结构、修改数据表和删除数据表。 ?掌握创建数据表的方法。?掌握查看数据表结构的方法。?掌握修改数据表的方法。?掌握数据表其他操作的方法。?掌握删除数据表的方法。5.1 创建数据表在创建数据库之后,接下来就要在数据库中创建数据表。所谓创建数据表,指的是在已经创建的数据库中建立新表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性)约束的过程。本节将介绍创建数据表的语法形式,以及如何添加主键约束、外键约束、非空约束等。5.1.1 创建数据表的语法形式数据表属于数据库,在创建数据表之前应该使用语句“USE ”指定操作在哪个数据库中进行。如果没有选择数据库,直接创建数据表,则系统会显示“No database selected”的错误。创建数据表的语句为CREATE TABLE,语法格式如下:CREATE TABLE ( 字段名1 数据类型 [列级别约束条件] [默认值], 字段名2 数据类型 [列级别约束条件] [默认值], [表级别约束条件]);
在使用CREATE TABLE创建表时必须指定以下信息:(1)要创建表的名称,不区分大小写,不能使用SQL语言中的关键字,例如DROP、ALTER、INSERT等。(2)数据表中每一列(字段)的名称和数据类型,如果创建多列,要用逗号隔开。5.1.2 创建数据表实例下面以创建数据表db_1为例进行讲解。【例5-1】创建员工表db_1,结构如表5-1所示。表5-1 员工表db_1字 段 名 称 数 据 类 型 备 注id INT(11) 员工编号name VARCHAR(25) 员工名称sex BOOLEAN 员工性别salary FLOAT 员工工资
首先创建数据库,然后选择数据库,SQL语句如下:CREATE DATABASE mytest; USE mytest;
开始创建数据表db_1,SQL语句如下:CREATE TABLE db_1( id INT(11), name VARCHAR(25), sex BOOLEAN, salary FLOAT);
语句执行结果如图5-1所示。 图5-1 创建数据表这里已经创建了一个名称为db_1的数据表,使用“SHOW TABLES;”语句查看数据表是否创建成功,执行结果如图5-2所示。 图5-2 查看数据表创建结果可以看到,数据表db_1创建成功,数据库mytest中已经有了数据表db_1。5.1.3 主键约束主键又称主码,是表中一列或多列的组合。主键约束(Primary Key Constraint)要求主键列的数据,并且不允许为空。主键能够标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。主键和记录之间的关系如同身份证号码和人之间的关系,它们之间是一一对应的。主键分为两种类型,即单字段主键和多字段主键。1. 单字段主键主键由一个字段组成,设置主键的SQL语句格式分为两种情况。(1)在定义列的同时指定主键,语法格式如下:字段名 数据类型 PRIMARY KEY[默认值]
【例5-2】定义数据表db_2,其主键为id。SQL语句如下:CREATE TABLE db_2( id INT(11) PRIMARY KEY, name VARCHAR(25), sex BOOLEAN, salary FLOAT);
(2)在定义完所有列之后指定主键,语法格式如下:[CONSTRAINT] PRIMARY KEY [字段名]
【例5-3】定义数据表db_3,其主键为id。SQL语句如下:CREATE TABLE db_3( id INT(11), name VARCHAR(25), sex BOOLEAN, salary FLOAT, PRIMARY KEY(id));上面两个例子执行后的结果是一样的,都会在id字段上设置主键约束。2. 多字段主键主键由多个字段联合组成,语法格式如下:PRIMARY KEY[字段1,字段2,…,字段n]
【例5-4】定义数据表db_4,假设表中没有主键id,为了确定一个员工,可以把name、sex联合起来作为主键。SQL语句如下:CREATE TABLE db_4( name VARCHAR(25), sex BOOLEAN, salary FLOAT, PRIMARY KEY(name,sex));
语句执行后便创建了一个名称为db_4的数据表,name字段和sex字段组合在一起成为该数据表的多字段主键。5.1.4 外键约束外键用来在两个表的数据之间建立连接,它可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某个值。外键首先是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键。外键的主要作用是保证数据引用的完整性,在定义外键后不允许删除在另一个表中具有关联关系的行。外键还保证数据的一致性、完整性。例如部门表tb_dept的主键id,在员工表db_5中有一个键deptId与这个id关联。? 主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表。? 从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表即是从表。创建外键的语法格式如下:[CONSTRAINT]FOREIGN KEY 字段名1[,字段名2,…]REFERENCES 主键列1[,主键列2,…]
“外键名”为定义的外键约束的名称,在一个表中不能有相同名称的外键;“字段名”表示子表需要添加外键约束的字段列。【例5-5】定义数据表db_5,并且在该表中创建外键约束。创建一个部门表tb_dept1,表结构如表5-2所示,SQL语句如下:CREATE TABLE tb_dept1( id INT(11) PRIMARY KEY, name VARCHAR(22) NOT NULL, location VARCHAR(50));
表5-2 tb_dept1表结构字 段 名 称 数 据 类 型 备 注id INT(11) 部门编号name VARCHAR(22) 部门名称location VARCHAR(50) 部门位置
定义数据表db_5,让它的deptId字段作为外键关联到tb_dept1表的主键id,SQL语句如下:CREATE TABLE db_5( id INT(11) PRIMARY KEY, name VARCHAR(25), deptId INT(11), salary FLOAT, CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id));以上语句成功执行后在db_5表上添加了名称为fk_emp_dept1的外键约束,外键名称为deptId,其依赖于tb_dept1表的主键id。5.1.5 非空约束非空约束(NOT NULL Constraint)指字段的值不能为空,对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。非空约束的语法格式如下:字段名 数据类型 NOT NULL
【例5-6】定义数据表db_6,指定员工的性别不能为空。SQL语句如下:CREATE TABLE db_6( id INT(11) PRIMARY KEY, name VARCHAR(25), sex BOOLEAN NOT NULL);
执行后,在db_6表中创建了一个sex字段,其插入值不能为空(NOT NULL)。5.1.6 性约束性约束(Unique Constraint)要求某列,允许为空,但只能出现一个空值。性约束可以确保一列或者几列都不出现重复值。在定义完列之后指定性约束,语法格式如下:字段名 数据类型 UNIQUE
【例5-7】定义数据表db_7,指定name字段。SQL语句如下:CREATE TABLE db_7( id INT(11) PRIMARY KEY, name VARCHAR(22) UNIQUE, sex BOOLEAN NOT NULL, age INT(4));5.1.7 默认约束默认约束(Default Constraint)指定某列的默认值。例如,用户表中的北京人比较多,就可以设置city字段的默认值为“北京”。如果插入一条新的记录时没有为这个字段赋值,那么系统会自动为这个字段赋值“北京”。默认约束的语法格式如下:字段名 数据类型 DEFAULT 默认值
【例5-8】定义数据表db_7,指定员工的城市默认值为“北京”。SQL语句如下:CREATE TABLE db_7( id INT(11) PRIMARY KEY, name VARCHAR(25) NOT NULL, city VARCHAR(20) DEFAULT ‘北京’);
以上语句成功执行之后,db_7表中的city字段拥有了一个默认值’北京’,新插入的记录如果没有指定city的值,则默认设置为’北京’。5.1.8 自增属性在MySQL数据库设计中会遇到需要系统自动生成字段的主键值的情况。例如用户表中需要id字段自增,需要使用AUTO_INCREMENT关键字来实现。属性值自动增加的语法格式如下:字段名 数据类型 AUTO_INCREMENT
【例5-9】定义数据表db_8,指定员工的编号自动增加。SQL语句如下:CREATE TABLE db_8( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(25) NOT NULL, city VARCHAR(20) );
以上语句执行后会创建名称为db_8的数据表,表中的id字段值在添加记录的时候会自动增加,id字段值默认从1开始,每次添加一条新记录,该值自动加1。5.2 查看数据表结构在数据表创建完成之后即可查看表结构的定义,以确认表的定义是否正确。本节将详细介绍查看数据表的方法。5.2.1 查看数据表基本结构使用DESCRIBE/DESC语句可以查看表字段信息,包括字段名、字段数据类型、是否为主键、是否有默认值等,其语法格式如下:DESCRIBE;
或者简写为:DESC ;
【例5-10】分别使用DESCRIBE和DESC查看db_2表的结构。查看db_2表的结构,SQL语句如下:DESCRIBE db_2;
查看结果如图5-3所示。 图5-3 查看db_2表的结构图5-3中各个字段的含义分别如下。? Null:表示该列是否可以存储Null值。? Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在该列中某个给定值允许出现多次。? Default:表示该列是否有默认值,如果有,值是多少。? Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。5.2.2 查看数据表详细结构SHOW CREATE TABLE语句可以用来查看表的详细信息,语法格式如下:SHOW CREATE TABLE ;
【例5-11】使用SHOW CREATE TABLE查看db_1表的详细信息。SQL语句如下:SHOW CREATE TABLE db_1G
执行结果如图5-4所示。 图5-4 查看db_1表的详细信息5.3 修改数据表在数据库创建完成之后,还可以根据实际工作的需要重新修改数据表的结构,常用的修改表的操作有修改表名、修改字段数据类型或字段名、增加和删除字段、修改字段的排列位置、更改表的存储引擎、删除表的外键约束等。本节将对修改表的操作进行讲解。5.3.1 修改表名MySQL是通过ALTER TABLE语句来实现表名的修改的,具体语法格式如下:ALTER TABLE RENAME[TO];
其中,TO为可选参数,使用与否不影响结果。【例5-12】将数据表db_1改名为tb_new。在执行修改表名操作之前使用SHOW TABLES查看数据库中的所有表。SHOW TABLES;
查询结果如图5-5所示。 图5-5 查看数据库中的所有表使用ALTER TABLE将db_1表改名为tb_new,SQL语句如下:ALTER TABLE db_1 RENAME tb_new;
在语句执行之后检查db_1表是否改名成功。使用SHOW TABLES查看数据库中的表,结果如图5-6所示。 图5-6 修改数据表的名称经过比较可以看到数据表列表中已经显示表名为tb_new。5.3.2 修改字段数据类型修改字段数据类型就是把字段的数据类型转换成另一种数据类型。在MySQL中修改字段数据类型的语法格式如下:ALTER TABLE MODIFY
其中,表名指要修改数据类型的字段所在表的名称,字段名指需要修改的字段,数据类型指修改后字段的新数据类型。【例5-13】将数据表tb_new中name字段的数据类型由VARCHAR(25)修改成VARCHAR(28)。在执行修改表名的操作之前使用DESC查看tb_new表的结构,结果如图5-7所示。 图5-7 查看tb_new表的结构可以看到现在name字段的数据类型为VARCHAR(25),修改其数据类型,输入以下SQL语句并执行:ALTER TABLE tb_new MODIFY name VARCHAR(28);
再次使用DESC查看表,结果如图5-8所示。 图5-8 修改数据类型为VARCHAR(28)以上语句执行之后,检查发现tb_new表中name字段的数据类型已经修改成VARCHAR(28),修改成功。5.3.3 修改字段名在MySQL中修改表字段名的语法格式如下:ALTER TABLE CHANGE ;
其中,“旧字段名”指修改前的字段名;“新字段名”指修改后的字段名;“新数据类型”指修改后的数据类型,如果不需要修改字段的数据类型,可以将新数据类型设置成与原来的一样,但数据类型不能为空。【例5-14】将数据表tb_new中name字段的名称改为newname。SQL语句如下:ALTER TABLE tb_new CHANGE name newname VARCHAR(28);
使用DESC查看tb_new表,发现字段名称已经修改成功,结果如图5-9所示。 图5-9 修改数据表中字段的名称从结果可以看出,name字段的名称已经修改为newname。提示:由于不同类型的数据在计算机中存储的方式及长度并不相同,修改数据类型可能会影响到数据表中已有的数据记录,因此当数据库中已经有数据时不要轻易地修改数据类型。5.3.4 添加字段添加字段的语法格式如下:ALTER TABLE ADD [约束条件][FIRST|AFTER 已存在字段名];
其中,新字段名为需要添加的字段名称;FIRST为可选参数,其作用是将新添加的字段设置为表的个字段;AFTER为可选参数,其作用是将新添加的字段添加到已存在字段名指定的字段后面。【例5-15】在数据表tb_new中添加一个字段city。SQL语句如下:ALTER TABLE tb_new ADD city VARCHAR(20);
使用DESC查看tb_new表,发现在表的后添加了一个名为city的字段,结果如图5-10所示。 图5-10 添加字段从结果可以看出添加了一个字段city,在默认情况下,该字段放在后一列。读者可以在数据表的列添加一个字段。【例5-16】在数据表tb_new中添加一个INT类型的字段newid。SQL语句如下:ALTER TABLE tb_new ADD newid INT(11) FIRST;
使用DESC查看tb_new表,发现在表的列添加了一个名为newid的INT(11)类型的字段,结果如图5-11所示。 图5-11 添加INT类型的字段newid另外,读者还可以在表的指定列之后添加一个字段。【例5-17】在数据表tb_new中的sex列后添加一个INT类型的字段ss。SQL语句如下:ALTER TABLE tb_new ADD ss INT(11) AFTER sex;
使用DESC查看tb_new表,结果如图5-12所示。 图5-12 添加指定列字段从结果可以看出,tb_new表中增加了一个名称为ss的字段,其位置在指定的sex字段的后面,添加字段成功。5.3.5 删除字段删除字段是将数据表中的某个字段从表中移除,其语法格式如下:ALTER TABLE DROP ;
其中,“字段名”指需要从表中删除的字段的名称。【例5-18】删除数据表tb_new中的ss字段。SQL语句如下:ALTER TABLE tb_new DROP ss;
使用DESC查看tb_new表,结果如图5-13所示。 图5-13 删除表字段从结果可以看出,tb_new表中已经不存在名称为ss的字段,删除字段成功。5.4 数据表的其他操作除了上述修改数据表的操作以外,还有一些重要的操作,包括修改字段排序、更改表的存储引擎和删除表的外键约束。5.4.1 修改字段排序对于已经创建的数据表,读者也可以根据实际工作的需要修改字段的排列顺序,通常使用ALTER TABLE改变表中字段的排列顺序,其语法格式如下:ALTER TABLE MODIFY FIRST|AFTER ;
其中,“字段1”指要修改位置的字段;“数据类型”指“字段1”的数据类型;“FIRST”为可选参数,指将“字段1”修改为表的个字段;“AFTER 字段2”指将“字段1”插入到“字段2”的后面。【例5-19】将数据表tb_new中的id字段修改为表的个字段。SQL语句如下:ALTER TABLE tb_new MODIFY id INT(11) FIRST;使用DESC查看tb_new表,发现id字段已经被移至表的列,结果如图5-14所示。 图5-14 修改字段的排列读者可以修改字段到列表的指定列之后。【例5-20】将数据表tb_new中的newname字段移动到salary字段的后面。SQL语句如下:ALTER TABLE tb_new MODIFY newname VARCHAR(28) AFTER salary;使用DESC查看tb_new表,结果如图5-15所示。 图5-15 修改字段到指定位置可以看到,tb_new表中的newname字段已经被移至salary字段之后。5.4.2 更改表的存储引擎更改表的存储引擎的语法格式如下:ALTER TABLE ENGINE=;【例5-21】将数据表db_2的存储引擎修改为MyISAM。在修改存储引擎之前首先使用SHOW CREATE TABLE查看db_2表当前的存储引擎,结果如图5-16所示。 图5-16 查看表的存储引擎从结果可以看出,db_2表当前的存储引擎为ENGINE=InnoDB,接下来修改存储引擎类型,SQL语句如下:ALTER TABLE db_2 ENGINE=MyISAM;使用SHOW CREATE TABLE再次查看db_2表的存储引擎,发现db_2表的存储引擎已变为MyISAM,结果如图5-17所示。 图5-17 完成存储引擎的修改5.4.3 删除表的外键约束对于数据库中定义的外键,如果不再需要,可以将其删除。外键一旦删除,就会解除主表和从表间的关联关系。MySQL中删除外键的语法格式如下:ALTER TABLE DROP FOREIGN KEY 其中,“外键约束名”指在定义表时CONSTRAINT关键字后面的参数。【例5-22】删除数据表db_5中的外键约束fk_emp_dept1。首先查看数据表db_5的结构,SQL语句如下:SHOW CREATE TABLE db_5G执行结果如图5-18所示。下面开始删除数据表db_5的外键fk_emp_dept1,SQL语句如下:ALTER TABLE db_5 DROP FOREIGN KEY fk_emp_dept1;执行完毕之后将删除db_5表的外键约束,使用SHOW CREATE TABLE再次查看db_5表的结构,结果如图5-19所示。 图5-18 查看数据表结构 图5-19 删除表的外键约束可以看到,db_5表中已经不存在FOREIGN KEY,原有的名称为fk_emp_dept1的外键约束删除成功。5.5 删除数据表对于不再需要的数据表,可以将其从数据库中删除。本节将详细讲解数据库中数据表的删除方法。5.5.1 删除没有被关联的表在MySQL中使用DROP TABLE可以一次删除一个或多个没有被其他表关联的数据表,语法格式如下:DROP TABLE [IF EXISTS]表1,表2,…表n;其中,“表n”指要删除的表的名称。用户可以同时删除多个表,只需将要删除的表名依次写在后面,相互之间用逗号隔开即可。【例5-23】删除数据表db_2。SQL语句如下:DROP TABLE db_2;在语句执行完毕之后,使用SHOW TABLES查看当前数据库中所有的数据表,查看结果如图5-20所示。 图5-20 删除数据表从结果可以看出,数据列表中已经不存在名称为db_2的数据表,删除操作成功。5.5.2 删除被其他表关联的主表在数据表之间存在外键关联的情况下,如果直接删除父表,结果会显示失败,原因是直接删除将破坏表的参照完整性。如果必须删除,可以先删除与它关联的子表,再删除父表,只是这样同时删除了两个表中的数据。在有些情况下可能要保留子表,这时如果要单独删除父表,只需将关联的表的外键约束条件取消,然后就可以删除父表,下面讲解这种方法。在数据库中创建两个关联表,首先创建tb_1表,SQL语句如下:CREATE TABLE tb_1( id INT(11) PRIMARY KEY, name VARCHAR(22));
接下来创建tb_2表,SQL语句如下:CREATE TABLE tb_2( id INT(11) PRIMARY KEY, name VARCHAR(25), wwid INT(11), CONSTRAINT fk_tb_dt FOREIGN KEY (wwid) REFERENCES tb_1(id));
使用SHOW CREATE TABLE命令查看tb_2表的外键约束,SQL语句如下:SHOW CREATE TABLE tb_2G执行结果如图5-21所示。 图5-21 删除关联的主表从结果可以看到,在数据表tb_2上创建了一个名称为fk_tb_dt的外键约束。【例5-24】删除父表tb_1。首先直接删除父表tb_1,输入删除语句如下:DROP TABLE tb_1;执行结果如图5-22所示。 图5-22 删除父表可以看到,如前所述,当存在外键约束时主表不能被直接删除。接下来解除关联子表tb_2的外键约束,SQL语句如下:ALTER TABLE tb_2 DROP FOREIGN KEY fk_tb_dt;该语句成功执行后将取消tb_1和tb_2表之间的关联关系,此时可以输入删除语句,将原来的父表tb_1删除,SQL语句如下:DROP TABLE tb_1;后通过SHOW TABLES查看数据表列表,结果如图5-23所示。 图5-23 解除关联子表可以看到,数据表列表中已经不存在名称为tb_1的表。5.6 就业面试技巧与解析面试官:带AUTO_INCREMENT约束的字段值都是从1开始的吗?应聘者:在默认情况下,MySQL中AUTO_INCREMENT的初始值是1,每新增一条记录,字段值就自动加1。在设置自增属性(AUTO_INCREMENT)的时候还可以指定条插入记录的自增字段的值,这样新插入记录的自增字段值从初始开始递增。
评论
还没有评论。