结束SQL语句以(;)来结束。
对所有列和表名是小写的。
2.检索多个列
3.检索所有列
用通配符(*)表示
4.检索不同的行
DISTINCT关键字指示MySQL语句只返回不同的值。distinct关键字应用与所有的列而不是单个列。
5.限制结果
limit 5 指示mysql语句返回不多于5行
limit 5,5指示返回从行5开始返回不多于5行。
limit5,5等价于 limit 4 offset 3
第五章.排序检索数据
1.排序数据
order by子句后取一个列或多个列名字,可以进行排序。
mysql> select prod_name from products order by prod_name;
order by子句后面的列是非检索的列排序也是合法的。
2.按多个列排序
mysql> select prod_id,prod_price, prod_name from products order by prod_price,prod_name;
3.指定排序方向
mysql> select prod_id,prod_price, prod_name from products order by prod_price DESC;
升序ASC是默认的,DESC是降序。
用order by和limit检索最大值。
MySQL_四至五章学习
标签:数据 rom 技术 src sql 应用 指示 offset image
小编还为您整理了以下内容,可能对您也有帮助:
MySQL入门很简单的目录
第1篇 mysql数据库基础
第1章 数据库概述( 教学视频:10分钟) 2
1.1 数据库理论基础 2
1.1.1 数据存储方式 2
1.1.2 数据库泛型 3
1.1.3 数据库在开发中作用 4
1.2 数据库技术构成 4
1.2.1 数据库系统 4
1.2.2 sql语言 5
1.2.3 数据库访问技术 5
1.3 mysql基础 6
1.3.1 常见数据库系统 6
1.3.2 为什么要使用mysql 7
1.3.3 mysql版本和获取 8
1.4 如何学习数据库 9
1.5 常见问题及解答 10
1.6 小结 10
1.7 本章习题 10
第2章 windows平台下安装与配置mysql( 教学视频:52分钟) 11
2.1 安装与配置mysql 11
.2.1.1 安装mysql 11
2.1.2 配置mysql 14
2.2 启动服务并登录mysql数据库 19
2.2.1 启动mysql服务 19
2.2.2 登录mysql数据库 20
2.2.3 配置path变量 22
2.3 更改mysql的配置 23
2.3.1 通过配置向导来更改配置 23
2.3.2 手工更改配置 24
2.4 mysql常用图形管理工具 27
2.5 使用免安装的mysql 28
2.6 上机实践 30
2.7 常见问题及解答 31
2.8 小结 31
2.9 本章习题 31
第3章 linux平台下安装与配置mysql( 教学视频:7分钟) 32
3.1 linux操作系统下的mysql版本介绍 32
3.2 安装和配置mysql的rpm包 33
3.3 安装和配置mysql的二进制包 37
3.4 安装和配置mysql的源码包 41
3.5 上机实践 45
3.6 常见问题及解答 46
3.7 小结 46
3.8 本章习题 47
第2篇 mysql数据库基本操作
第4章 mysql数据类型( 教学视频:92分钟) 50
4.1 mysql数据类型介绍 50
4.1.1 整数类型 50
4.1.2 浮点数类型和定点数类型 52
4.1.3 日期与时间类型 53
4.1.4 字符串类型 60
4.1.5 二进制类型 63
4.2 如何选择数据类型 65
4.3 常见问题及解答 67
4.4 小结 67
4.5 本章习题 67
第5章 操作数据库( 教学视频:29分钟) 68
5.1 创建数据库 68
5.2 删除数据库 69
5.3 数据库存储引擎 70
5.3.1 mysql存储引擎简介 70
5.3.2 innodb存储引擎 73
5.3.3 myisam存储引擎 73
5.3.4 memory存储引擎 74
5.3.5 存储引擎的选择 74
5.4 本章实例 75
5.5 上机实践 77
5.6 常见问题及解答 78
5.7 小结 78
5.8 本章习题 78
第6章 创建、修改和删除表( 教学视频:113分钟) 79
6.1 创建表 79
6.1.1 创建表的语法形式 79
6.1.2 设置表的主键 80
6.1.3 设置表的外键 81
6.1.4 设置表的非空约束 82
6.1.5 设置表的唯一性约束 82
6.1.6 设置表的属性值自动增加 82
6.1.7 设置表的属性的默认值 83
6.2 查看表结构 84
6.2.1 查看表基本结构语句describe 84
6.2.2 查看表详细结构语句show create table 84
6.3 修改表 85
6.3.1 修改表名 85
6.3.2 修改字段的数据类型 86
6.3.3 修改字段名 87
6.3.4 增加字段 89
6.3.5 删除字段 93
6.3.6 修改字段的排列位置 94
6.3.7 更改表的存储引擎 96
6.3.8 删除表的外键约束 97
6.4 删除表 98
6.4.1 删除没有被关联的普通表 98
6.4.2 删除被其他表关联的父表 99
6.5 本章实例 100
6.6 上机实践 106
6.7 常见问题及解答 109
6.8 小结 110
6.9 本章习题 110
第7章 索引( 教学视频:82分钟) 112
7.1 索引简介 112
7.1.1 索引的含义和特点 112
7.1.2 索引的分类 113
7.1.3 索引的设计原则 114
7.2 创建索引 115
7.2.1 创建表的时候创建索引 115
7.2.2 在已经存在的表上创建索引 119
7.2.3 用alter table语句来创建索引 121
7.3 删除索引 123
7.4 本章实例 124
7.5 上机实践 128
7.6 常见问题及解答 130
7.7 小结 130
7.8 本章习题 130
第8章 视图( 教学视频:80分钟) 131
8.1 视图简介 131
8.1.1 视图的含义 131
8.1.2 视图的作用 132
8.2 创建视图 133
8.2.1 创建视图的语法形式 133
8.2.2 在单表上创建视图 134
8.2.3 在多表上创建视图 135
8.3 查看视图 136
8.3.1 describe语句查看视图基本信息 136
8.3.2 show table status语句查看视图基本信息 137
8.3.3 show create view语句查看视图详细信息 138
8.3.4 在views表中查看视图详细信息 139
8.4 修改视图 140
8.4.1 create or replace view语句修改视图 140
8.4.2 alter语句修改视图 141
8.5 更新视图 142
8.6 删除视图 145
8.7 本章实例 146
8.8 上机实践 150
8.9 常见问题及解答 152
8.10 小结 152
8.11 本章习题 153
第9章 触发器( 教学视频:59分钟) 154
9.1 创建触发器 154
9.1.1 创建只有一个执行语句的触发器 154
9.1.2 创建有多个执行语句的触发器 155
9.2 查看触发器 156
9.2.1 show triggers语句查看触发器信息 156
9.2.2 在triggers表中查看触发器信息 157
9.3 触发器的使用 159
9.4 删除触发器 160
9.5 本章实例 160
9.6 上机实践 163
9.7 常见问题及解答 164
9.8 小结 164
9.9 本章习题 165
第3篇 sql查询语句
第10章 查询数据( 教学视频:207分钟) 168
10.1 基本查询语句 168
10.2 单表查询 170
10.2.1 查询所有字段 170
10.2.2 查询指定字段 171
10.2.3 查询指定记录 172
10.2.4 带in关键字的查询 173
10.2.5 带between and的范围查询 174
10.2.6 带like的字符匹配查询 175
10.2.7 查询空值 177
10.2.8 带and的多条件查询 178
10.2.9 带or的多条件查询 179
10.2.10 查询结果不重复 181
10.2.11 对查询结果排序 182
10.2.12 分组查询 184
10.2.13 用limit查询结果的数量 188
10.3 使用集合函数查询 190
10.3.1 count()函数 190
10.3.2 sum()函数 191
10.3.3 avg()函数 192
10.3.4 max()函数 193
10.3.5 min()函数 194
10.4 连接查询 195
10.4.1 内连接查询 195
10.4.2 外连接查询 196
10.4.3 复合条件连接查询 198
10.5 子查询 199
10.5.1 带in关键字的子查询 199
10.5.2 带比较运算符的子查询 200
10.5.3 带exists关键字的子查询 203
10.5.4 带any关键字的子查询 205
10.5.5 带all关键字的子查询 206
10.6 合并查询结果 207
10.7 为表和字段取别名 208
10.7.1 为表取别名 208
10.7.2 为字段取别名 209
10.8 使用正则表达式查询 211
10.8.1 查询以特定字符或字符串开头的记录 211
10.8.2 查询以特定字符或字符串结尾的记录 212
10.8.3 用符号“.”来替代字符串中的任意一个字符 213
10.8.4 匹配指定字符中的任意一个 213
10.8.5 匹配指定字符以外的字符 214
10.8.6 匹配指定字符串 215
10.8.7 使用“*”和“+”来匹配多个字符 216
10.8.8 使用{m}或者{m,n}来指定字符串连续出现的次数 216
10.9 本章实例 217
10.10 上机实践 228
10.11 常见问题及解答 232
10.12 小结 233
10.13 本章习题 233
第11章 插入、更新与删除数据( 教学视频:45分钟) 234
11.1 插入数据 234
11.1.1 为表的所有字段插入数据 234
11.1.2 为表的指定字段插入数据 236
11.1.3 同时插入多条记录 238
11.1.4 将查询结果插入到表中 239
11.2 更新数据 240
11.3 删除数据 242
11.4 本章实例 244
11.5 上机实践 248
11.6 常见问题及解答 250
11.7 小结 250
11.8 本章习题 250
第12章 mysql运算符( 教学视频:75分钟) 252
12.1 运算符简介 252
12.2 算术运算符 253
12.3 比较运算符 254
12.4 逻辑运算符 260
12.5 位运算符 263
12.6 运算符的优先级 265
12.7 本章实例 266
12.8 上机实践 267
12.9 常见问题及解答 268
12.10 小结 268
12.11 本章习题 269
第13章 mysql函数( 教学视频:132分钟) 270
13.1 mysql函数简介 270
13.2 数学函数 271
13.2.1 绝对值函数abs(x)和返回圆周率的函数pi() 272
13.2.2 平方根函数sqrt(x)和求余函数mod(x,y) 272
13.2.3 获取整数的函数ceil(x)、ceiling(x)和floor(x) 272
13.2.4 获取随机数的函数rand()和rand(x) 273
13.2.5 四舍五入函数round(x)、round(x,y)和truncate(x,y) 273
13.2.6 符号函数sign(x) 274
13.2.7 幂运算函数pow(x,y)、power(x,y)和exp(x) 274
13.2.8 对数运算函数log(x)和log10(x) 274
13.2.9 角度与弧度相互转换的函数radians(x)和degrees(x) 275
13.2.10 正弦函数sin(x)和反正弦函数asin(x) 275
13.2.11 余弦函数cos(x)和反余弦函数acos(x) 276
13.2.12 正切函数、反正切函数和余切函数 276
13.3 字符串函数 277
13.3.1 计算字符串字符数的函数和字符串长度的函数 278
13.3.2 合并字符串的函数concat(s1,s2,…) 和concat_ws(x,s1,s2,…) 278
13.3.3 替换字符串的函数insert(s1,x,len,s2) 278
13.3.4 字母大小写转换函数 279
13.3.5 获取指定长度的字符串的函数left(s,n)和right(s,n) 279
13.3.6 填充字符串的函数lpad(s1,len,s2)和rpad(s1,len,s2) 279
13.3.7 删除空格的函数ltrim(s)、rtrim(s)和trim(s) 280
13.3.8 删除指定字符串的函数trim(s1 from s) 280
13.3.9 重复生成字符串的函数repeat(s,n) 281
13.3.10 空格函数space(n)和替换函数replace(s,s1,s2) 281
13.3.11 比较字符串大小的函数strcmp(s1,s2) 281
13.3.12 获取子串的函数substring(s,n,len)和mid(s,n,len) 281
13.3.13 匹配子串开始位置的函数 282
13.3.14 字符串逆序的函数reverse(s) 282
13.3.15 返回指定位置的字符串的函数 282
13.3.16 返回指定字符串位置的函数field(s,s1,s2,…) 283
13.3.17 返回子串位置的函数find_in_set(s1,s2) 283
13.3.18 选取字符串的函数make_set(x,s1,s2,…) 283
13.4 日期和时间函数 284
13.4.1 获取当前日期的函数和获取当前时间的函数 285
13.4.2 获取当前日期和时间的函数 285
13.4.3 unix时间戳函数 286
13.4.4 返回utc日期的函数和返回utc时间的函数 286
13.4.5 获取月份的函数month(d)和monthname(d) 286
13.4.6 获取星期的函数dayname(d)、dayofweek(d)和weekday(d) 287
13.4.7 获取星期数的函数week(d)和weekofyear(d) 287
13.4.8 获取天数的函数dayofyear(d)和dayofmonth(d) 288
13.4.9 获取年份、季度、小时、分钟和秒钟的函数 288
13.4.10 获取日期的指定值的函数extract(type from d) 288
13.4.11 时间和秒钟转换的函数 289
13.4.12 计算日期和时间的函数 289
13.4.13 将日期和时间格式化的函数 291
13.5 条件判断函数 294
13.5.1 if(expr,v1,v2)函数 294
13.5.2 ifnull(v1,v2)函数 295
13.5.3 case函数 295
13.6 系统信息函数 296
13.6.1 获取mysql版本号、连接数和数据库名的函数 297
13.6.2 获取用户名的函数 297
13.6.3 获取字符串的字符集和排序方式的函数 298
13.6.4 获取最后一个自动生成的id值的函数 298
13.7 加密函数 299
13.7.1 加密函数password(str) 299
13.7.2 加密函数md5(str) 299
13.7.3 加密函数encode(str,pswd_str) 300
13.7.4 解密函数decode(crypt_str,pswd_str) 300
13.8 其他函数 300
13.8.1 格式化函数format(x,n) 300
13.8.2 不同进制的数字进行转换的函数 301
13.8.3 ip地址与数字相互转换的函数 301
13.8.4 加锁函数和解锁函数 302
13.8.5 重复执行指定操作的函数 303
13.8.6 改变字符集的函数 303
13.8.7 改变字段数据类型的函数 303
13.9 本章实例 304
13.10 上机实践 307
13.11 常见问题及解答 308
13.12 小结 308
13.13 本章习题 309
第14章 存储过程和函数( 教学视频:78分钟) 310
14.1 创建存储过程和函数 310
14.1.1 创建存储过程 310
14.1.2 创建存储函数 312
14.1.3 变量的使用 313
14.1.4 定义条件和处理程序 313
14.1.5 光标的使用 315
14.1.6 流程控制的使用 316
14.2 调用存储过程和函数 319
14.2.1 调用存储过程 319
14.2.2 调用存储函数 320
14.3 查看存储过程和函数 321
14.3.1 show status语句查看存储过程和函数的状态 321
14.3.2 show create语句查看存储过程和函数的定义 321
14.3.3 从information_schema.routines表中查看存储过程和函数的信息 322
14.4 修改存储过程和函数 323
14.5 删除存储过程和函数 324
14.6 本章实例 325
14.7 上机实践 327
14.8 常见问题及解答 328
14.9 小结 329
14.10 本章习题 329
第4篇 mysql数据库高级管理
第15章 mysql用户管理( 教学视频:75分钟) 332
15.1 权限表 332
15.1.1 user表 332
15.1.2 db表和host表 333
15.1.3 tables_priv表和columns_priv表 334
15.1.4 procs_priv表 334
15.2 账户管理 335
15.2.1 登录和退出mysql服务器 335
15.2.2 新建普通用户 336
15.2.3 删除普通用户 338
15.2.4 root用户修改自己的密码 339
15.2.5 root用户修改普通用户密码 340
15.2.6 普通用户修改密码 342
15.2.7 root用户密码丢失的解决办法 342
15.3 权限管理 344
15.3.1 mysql的各种权限 344
15.3.2 授权 345
15.3.3 收回权限 346
15.3.4 查看权限 347
15.4 本章实例 348
15.5 上机实践 349
15.6 常见问题及解答 350
15.7 小结 351
15.8 本章习题 351
第16章 数据备份与还原( 教学视频:56分钟) 352
16.1 数据备份 352
16.1.1 使用mysqlmp命令备份 352
16.1.2 直接复制整个数据库目录 354
16.1.3 使用mysqlhotcopy工具快速备份 355
16.2 数据还原 355
16.2.1 使用mysql命令还原 356
16.2.2 直接复制到数据库目录 356
16.3 数据库迁移 357
16.3.1 相同版本的mysql数据库之间的迁移 357
16.3.2 不同版本的mysql数据库之间的迁移 357
16.3.3 不同数据库之间迁移 358
16.4 表的导出和导入 358
16.4.1 用select…into outfile导出文本文件 358
16.4.2 用mysqlmp命令导出文本文件 359
16.4.3 用mysql命令导出文本文件 360
16.4.4 用load data infile方式导入文本文件 361
16.4.5 用mysqlimport命令导入文本文件 362
16.5 本章实例 362
16.6 上机实践 365
16.7 常见问题及解答 366
16.8 小结 366
16.9 本章习题 367
第17章 mysql日志( 教学视频:54分钟) 368
17.1 日志简介 368
17.2 二进制日志 369
17.2.1 启动和设置二进制日志 369
17.2.2 查看二进制日志 370
17.2.3 删除二进制日志 370
17.2.4 使用二进制日志还原数据库 371
17.2.5 暂时停止二进制日志功能 372
17.3 错误日志 372
17.3.1 启动和设置错误日志 372
17.3.2 查看错误日志 373
17.3.3 删除错误日志 373
17.4 通用查询日志 374
17.4.1 启动和设置通用查询日志 374
17.4.2 查看通用查询日志 374
17.4.3 删除通用查询日志 375
17.5 慢查询日志 375
17.5.1 启动和设置慢查询日志 375
17.5.2 查看慢查询日志 376
17.5.3 删除慢查询日志 376
17.6 本章实例 376
17.7 上机实践 380
17.8 常见问题及解答 381
17.9 小结 381
17.10 本章习题 381
第18章 性能优化( 教学视频:48分钟) 382
18.1 优化简介 382
18.2 优化查询 383
18.2.1 分析查询语句 383
18.2.2 索引对查询速度的影响 384
18.2.3 使用索引查询 385
18.2.4 优化子查询 387
18.3 优化数据库结构 388
18.3.1 将字段很多的表分解成多个表 388
18.3.2 增加中间表 388
18.3.3 增加冗余字段 389
18.3.4 优化插入记录的速度 390
18.3.5 分析表、检查表和优化表 391
18.4 优化mysql服务器 392
18.4.1 优化服务器硬件 392
18.4.2 优化mysql的参数 393
18.5 本章实例 394
18.6 上机实践 395
18.7 常见问题及解答 396
18.8 小结 397
18.9 本章习题 397
第5篇 mysql应用与实战开发
第19章 java访问mysql数据库( 教学视频:45分钟) 400
19.1 java连接mysql数据库 400
19.1.1 下载jdbc驱动mysql connector/j 400
19.1.2 安装mysql connector/j驱动 400
19.1.3 连接mysql数据库 402
19.2 java操作mysql数据库 403
19.2.1 创建statement对象 403
19.2.2 使用select语句查询数据 403
19.2.3 插入、更新或者删除数据 404
19.2.4 执行任意sql语句 405
19.2.5 关闭创建的对象 406
19.3 java备份与还原mysql数据库 406
19.3.1 java备份mysql数据库 406
19.3.2 java还原mysql数据库 407
19.4 本章实例 407
19.5 上机实践 410
19.6 常见问题及解答 413
19.7 小结 413
19.8 本章习题 414
第20章 php访问mysql数据库( 教学视频:44分钟) 415
20.1 php连接mysql数据库 415
20.1.1 windows操作系统下配置php 415
20.1.2 linux操作系统下配置php 417
20.1.3 连接mysql数据库 418
20.2 php操作mysql数据库 419
20.2.1 执行sql语句 419
20.2.2 处理查询结果 420
20.2.3 获取查询结果的字段名 421
20.2.4 一次执行多个sql语句 421
20.2.5 处理带参数的sql语句 422
20.2.6 关闭创建的对象 423
20.3 php备份与还原mysql数据库 424
20.3.1 php备份mysql数据库 424
20.3.2 php还原mysql数据库 424
20.4 本章实例 425
20.5 上机实践 426
20.6 常见问题及解答 427
20.7 小结 427
20.8 本章习题 428
第21章 c#访问mysql数据库( 教学视频:55分钟) 429
21.1 c#连接mysql数据库 429
21.1.1 下载connector/net驱动程序 429
21.1.2 安装connector/net驱动程序 430
21.1.3 使用connector/net驱动程序 431
21.1.4 连接mysql数据库 432
21.2 c#操作mysql数据库 433
21.2.1 创建mysqlcommand对象 433
21.2.2 插入、更新或者删除数据 434
21.2.3 使用select语句查询数据 434
21.2.4 一次执行多个select语句 435
21.2.5 处理select语句只返回一个值的情况 436
21.2.6 处理带参数的sql语句 437
21.2.7 使用dataset对象和datatable对象 438
21.2.8 关闭创建的对象 438
21.3 c#备份与还原mysql数据库 439
21.3.1 c#备份mysql数据库 439
21.3.2 c#还原mysql数据库 440
21.4 本章实例 440
21.5 上机实践 443
21.6 常见问题及解答 445
21.7 小结 445
21.8 本章习题 445
第22章 驾校学员管理系统( 教学视频:95分钟) 446
22.1 系统概述 446
22.2 系统功能 446
22.3 数据库设计 447
22.3.1 设计表 447
22.3.2 设计索引 452
22.3.3 设计视图 453
22.3.4 设计触发器 454
22.4 系统实现 455
22.4.1 构建工程 455
22.4.2 访问和操作mysql数据库的代码 455
22.5 用户管理模块 458
22.5.1 用户登录功能 458
22.5.2 修改密码 459
22.6 学籍管理模块 460
22.6.1 添加学员的学籍信息 460
22.6.2 查询学员的学籍信息 461
22.6.3 修改学员的学籍信息 462
22.6.4 删除学员的学籍信息 462
22.7 体检管理模块 462
22.8 成绩管理模块 464
22.9 证书管理模块 465
22.10 小结 466
零基础如何mysql学习?
简单谈谈对新手学习 MySQL 的一些建议,供参考。
一、搭建好环境,弄清基础概念
学习 MySQL ,首先要有个自己的环境,可以在自己本机或某台虚拟机上安装下 MySQL ,建议最好使用 Linux 系统,体验下完整的安装步骤,尽量理解清楚每个步骤的作用。
接下来,要弄清一些基础概念了,比如什么是库、表、字段、索引啊等等。简单介绍下一些常见的基础概念:
实例(instance):指的是操作系统上的一组进程/线程和内存的集合。比如我们在本机安装好 MySQL ,那就代表着我们本地有一套 MySQL 实例。
数据库(database):指的是文件系统上的一组文件,等同于 schema 。
表(table):表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
字段(column):字段是指数据表的列,表由字段组成。
索引(index):索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
主键(primary key):主键是唯一的。一个数据表中只能包含一个主键。
记录(record):指数据,一行可称为一条记录。
服务端(server):指 MySQL 服务所在端,一般可理解为 MySQL 所在主机。
客户端(client):连接数据库部分,比如 Navicat、jdbc 程序都可称为客户端。
数据类型(Data Types):又称字段类型,即定义某个字段所能存储的类型,如 int 、varchar 等。
字符集(character set):字符是各种文字和符号的总称,字符集是多个字符的集合
二、学习基础操作,熟悉命令规范
了解过基础概念后,建议逐步学习一些基础操作,比如如何建库、建表、插入数据、修改数据、删除数据、查询数据等等。这部分主要练习的是 DDL 及 DML 语句。建议一定要按照命令规范来,比如插入数据时指定字段名,建表时指定字符集。
可以使用 MySQL 命令行来执行 SQL ,也可以使用可视化客户端,关键是要明白每步操作的意义及每条 SQL 的作用。
三、了解报错内容,善用搜索引擎
在执行 SQL 或连接数据库过程中,难免会遇到各种报错,这个时候建议先仔细看下是否存在书写及标点错误,关键还是要留意报错内容,根据报错内容大概率就能发现问题所在,比如 Access denied for user xxx 、able 'xxx' doesn't exist ... 有些看到报错内容很明显就可以发现问题,若实在找不到问题,可以复制报错内容到搜索引擎查找下。
四、根据你的岗位,有目的的进行学习
在互联网行业,不同岗位的小伙伴可能都会用到 MySQL ,但不同岗位员工学习 MySQL 的侧重点却不尽相同。例如做数据分析的同学可能平时写查询 SQL 比较多,开发同学更侧重程序逻辑如何与数据库交互,DBA 同学可能侧重在数据库高性能高可用方面。所以建议根据自己的需求,有侧重点的进行学习。
五、要系统、循序渐进的学习
市面上关于 MySQL 的学习资料有很多,建议选取一个系统的资料进行学习,可以是一本书、一个网站等。切记不要这个资料看一点又转向另外一些资料。
同其他语言学习方法一样,MySQL 学习也要循序渐进,不能说一上来就学习事务、学习 SQL 优化,任何事情都要一步步来。当然最重要的还是坚持,有需求才能推动学习,假如工作中经常用到 MySQL 或者某个项目要使用 MySQL ,那么自然而然的就会慢慢了解 MySQL 。
MySQL有什么推荐的学习书籍
1、《MySQL技术内幕:InnoDB存储引擎》
《MySQL技术内幕:InnoDB存储引擎》的作者是姜承尧。本书从源代码的角度深度解析了InnoDB
的体系结构、实现原理、工作机制,并给出了大量最佳实践。
2、《MySQL完全手册》
《MySQL完全手册》详细介绍了如何使用可定制的MySQL数据库管理系统支持健壮的、可靠的、任
务关键的应用程序。
3、《深入浅出mysql》
《深入浅出mysql》从数据库的基础、开发、优化、管理维护4个方面对MySQL进行了详细的介绍,
其中每一部分都成篇。
基础篇主要适合于MySQL的初学者,内容包括MySQL的安装与配置、SQL基础、MySQL支持的数
据类型、MySQL中的运算符、常用函数、图形化工具的使用等。
4、《 数据库索引设计与优化》
本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL
支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同。
5、《高性能MySQL》
《高性能MySQL》是分享MySQL实用经验的图书。它不但可以帮助MySQL初学者提高使用技巧,
更为有经验的MySQL DBA指出了开发高性能MySQL应用的途径。
扩展资料:
《MySQL技术内幕:InnoDB存储引擎》是国内目前唯一的一本关于InnoDB的著作,由资深MySQL
专家亲自执笔,中外数据库专家联袂推荐,权威性毋庸置疑。
它能为读者设计和管理高性能、高可用的数据库系统提供绝佳的指导。注重实战,全书辅有大量的
案例,可操作性极强。全书首先全景式地介绍了MySQL独有的插件式存储引擎,分析了MySQL的各
种存储引擎的优势和应用环境。
参考资料:百度百科——MySQL技术内幕:InnoDB存储引擎
如何更好地学习Mysql数据库
UPDATE worker_view4 SET name='hi';
ERROR............The target table worker_view4 of the UPDATE is not updatable.
(4)视图中的SELECT中包含子查询。
CREATE VIEW worker_view5(name)
AS SELECT (SELECT name FROM worker);
UPDATE worker_view5 SET name = '刘佳';
该视图中包含了子查询,因此也是不能更新的。
(5)由不可更新的视图导出的视图。
CREATE VIEW worker_view6
AS SELECT * FROM worker_view5;
UPDATE worker_view6 SET name = '王仔';
因为worker_view6是不可更新的视图,所以worker_view6也不可以更新的视图。使用UPDATE语句更新时,会出现系统报错。
(6)创建视图时,ALGORITHM为TEMPTABLE类型。
CREATE ALGORITHM=TEMPTABLE
VIEW worker_view7
AS SELECT * FROM worker;
UPDATE worker_view7 SET name = '王仔';
因为该视图ALGORITHM为TEMPTABLE类型,所以worker_view7不可以更新的视图。TEMPTABLE类型就是临时表类型。系统默认临时表是不能更新的。
(7)视图对应的表上存在没有默认值的列,而且该列没有包含在视图里。例如,表中包含的name字段没有默认值,但是视图中不包含该字段。那么这个视图是不能更新的。因为,在更新视图时,这个没有默认值的记录将没有值插入,也没有NULL值插入。数据库系统是不会允许这样的情况出现的,数据库系统将会阻止这个视图更新。
注意:视图中虽然可以更新数据,但是有很多的。一般情况下,最好将视图作为查询数据的虚拟表,而不要通过视图来更新数据。因为,使用视图更新数据时,如果没有全面考虑在视图中更新数据的,可能会造成数据更新失败。
除了上述条件不能更新视图以外,WITH[CASCADED|LOCAL]CHECK OPTION也将决定视图能否更新。"LOCAL"参数表示更新视图时要满足该视图本身的定义的条件即可;
8.6 删除视图
删除视图是指删除数据库中已经存在的视图。删除视图时,只能删除视图的定义,不会删除数据。MYSQL中,使用DROP VIEW语句来删除视图,不会删除数据。MySQL中,使用DROP VIEW语句来删除视图。但是,用户必须拥有DROP权限。
DROP VIEW[IF EXISTS] 视图名列表 [RESTRICT|CASCADE]
实例一:
SELECT Drop_priv
FROM mysql.user
WHERE user='root';
CREATE VIEW worker_view_del1
AS SELECT * FROM worker;
CREATE VIEW worker_view_del2
AS SELECT * FROM worker;
CREATE VIEW worker_view_del3
AS SELECT * FROM worker;
DROP VIEW IF EXISTS worker_view_del2, worker_view_del3;
8.7 本章实例
在test数据库中work_info表上进行视图操作。
1. 在test数据库中work_info表
2. 插入记录
3. 创建视图info_view
4. 查看视图info_view的基本结构和详细结构
5. 查看视图info_view的所有记录
6. 修改视图info_view
7. 更新视图
8. 删除视图
work_info表的结构
字段名 字段描述 数据类型 主键 外键 非空 唯一 自增
id 编号 INT(10) 是 否 是 是 否
name 姓名 VARCHAR(20) 否 否 是 否 否
gender 姓别 VARCHAR(4) 否 否 是 否 否
age 年龄 INT(5) 否 否 否 否 否
address 家庭住址 VARCHAR(50) 否 否 否 否 否
tel 电话号码 VARCHAR(20) 否 否 否 否 否
work_info表中的内容
id name gender age address tel
1 张三 M 18 北市市海淀区 01-155151
2 李四 M 22 北京市昌平区 01-215151
3 王五 F 17 湖南省永州市 025-545845
4 赵六 F 25 辽宁省阜新市 0625-514545
(1) 创建work_info表
USE test;
CREATE TABLE IF NOT EXISTS work_info (
id INT(10) NOT NULL UNIQUE PRIMARY KEY,
name VARCHAR(20) NOT NULL,
gender VARCHAR(4) NOT NULL,
age INT(5),
address VARCHAR(50),
tel VARCHAR(20)
) DEFAULT CHARSET=utf8;
(2)向work_info表中插入几条记录。
INSERT INTO work_info VALUES
(1, '张三', 'M', 18, '北市市海淀区','01-155151'),
(2,'李四', 'M', 22, '北京市昌平区', '01-215151'),
(3,'王五','F',17,'湖南省永州市','025-545845'),
(4,'赵六','F',25,'辽宁省阜新市','0625-514545');
(3) 创建视图info_view。从work_info表中选出age>20的记录来创建视图。视图的字段包括id、name、gender和address。ALGORITHM设置为MERGE类型。加上WITH LOCAL CHECK OPTION条件。
CREATE ALGORITHM=MERGE
VIEW info_view(id, name, gender, address)
AS SELECT id, name, gender, address
FROM work_info
WHERE age>20
WITH LOCAL CHECK OPTION;
(4)查看视图info_view的基本结构和详细结构。
SHOW CREATE VIEW info_view \G
(5)查看视图info_view的所有记录。
SELECT * FROM info_view;
(6)修改视图info_view,使其显示age<20的信息,其他条件不变。
ALTER ALGORITHM=MERGE
VIEW info_view(id, name, gender, address)
AS SELECT id, name, gender, address
FROM work_info
WHERE age<20
WITH LOCAL CHECK OPTION;
(7)更新视图,将id为3的记录进行更新。设置其gender为M。
UPDATE info_view SET gender='M' WHERE id=3;
(8)删除视图。
DROP VIEW info_view;
8.8 上机实践
题目要求:
(1)在数据库example下创建college表。
(2)在college表上创建视图college_view。视图的字段包括student_num、student_name、student_age和department。ALGORITHM设置为UNDEFINED类型。加上WITH LOCAL CHECK OPTION条件。
(3)查看视图college_view的详细结构。
(4)更新视图。向视图中插入三条记录。
(5)修改视图,使其显示专业为"计算机"的信息,其他条件不变。
(6)删除视图college_view。
college表的结构
字段名 字段描述 数据类型 主键 外键 非空 唯一 自增
number 学号 INT(10) 是 否 是 是 否
name 姓名 VARCHAR(20) 否 否 是 否 否
major 专业 VARCHAR(20) 否 否 是 否 否
age 年龄 INT(5) 否 否 否 否 否
college_view表的内容
student_num student_name student_age department
0901 张三 20 外语
0902 李四 22 计算机
0903 王五 19 计算机
USE example;
CREATE TABLE college(
number INT(10) NOT NULL UNIQUE PRIMARY KEY,
name VARCHAR(20) NOT NULL,
major VARCHAR(20) NOT NULL,
age TINYINT(3)
) DEFAULT CHARSET=utf8;
CREATE ALGORITHM=UNDEFINED
VIEW college_view(student_num, student_name, student_age, department)
AS SELECT number, name, age, major
FROM college
WITH LOCAL CHECK OPTION;
SHOW CREATE VIEW college_view \G
INSERT INTO college_view VALUES
(0901, '张三', 20, '外语'),
(0902, '李四', 22, '计算机'),
(0903, '王五', 19, '计算机');
CREATE OR REPLACE ALGORITHM=UNDEFINED
VIEW college_view(student_num, student_name, student_age, department)
AS SELECT number, name, age, major
FROM college
WHERE major='计算机'
WITH LOCAL CHECK OPTION;