场景:产品列表显示产品的多个标签 mysql 查询。
以往的解决办法都是查出先查出产品列表,在循环查询标签,多个标签用","隔开。
这样查询列表查一次数据库,循环列表又要查询数据库多次。性能太差。
CREATE TABLE `kx_product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL DEFAULT '标题',
`preview` varchar(200) NOT NULL DEFAULT '' COMMENT '预览图片',
`content` varchar(2000) NOT NULL DEFAULT '' COMMENT '内容',
`number` varchar(20) NOT NULL DEFAULT '' COMMENT '货号',
`stock` int(10) NOT NULL DEFAULT '0' COMMENT '库存',
`add_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
`update_time` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
`memo` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='系统:产品表';
CREATE TABLE `kx_product_label` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL DEFAULT '' COMMENT '标题',
`deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1:删除;0:正常',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '-1:删除;-1:隐藏;0:禁用; 1:启用;2:锁定',
`add_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
`update_time` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
`memo` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='系统:产品标签';
产品标签关系表:
CREATE TABLE `kx_product_item_label` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_product` int(11) NOT NULL DEFAULT '0' COMMENT 'from:kx_product->id',
`id_label` int(11) NOT NULL DEFAULT '0' COMMENT 'from:kx_product_label->id',
`deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1:删除;0:正常',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '-1:删除;-1:隐藏;0:禁用; 1:启用;2:锁定',
`add_time` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
`update_time` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
`memo` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8 COMMENT='系统:产品标签集合 一个产品有很多个标签';
解决办法:
使用
关键词 GROUP_CONCAT():(返回一个字符串结果,该结果由分组中的值连接组合而成。)
1.做链接查询:
SELECT
a.id,
a.content,
a.title,
a.add_time,
a. CODE,
a.number,
l.title
FROM
`kx_product` `a`
LEFT JOIN `kx_product_item_label` `ls` ON `ls`.`id_product` = `a`.`id`
LEFT JOIN `kx_product_label` `l` ON `l`.`id` = `ls`.`id_label`
上面sql 查询出所有结果 我们要的是产品列表 中显示 多个标签
2.加上
GROUP_CONCAT() 关键字
加上关键字后,结果集发生了变化,变成了一条数据的字段显示了所有标签
分组处理:得到想要的结果
备注:
GROUP_CONCAT关键字 可以去重,排序
去重:GROUP_CONCAT(DISTINCT l.title SEPARATOR ',' ) AS labels
排序:GROUP_CONCAT( l.title order by l.id desc SEPARATOR ',') AS labels
场景:产品列表显示产品的多个标签 mysql 查询。以往的解决办法都是查出先查出产品列表,在循环查询标签,多个标签用","隔开。这样查询列表查一次数据库,循环列表又要查询数据库多次。性能太差。表结构:产品表:CREATE TABLE `kx_product` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(200) NOT NULL DEFAULT '标题', `preview` varchar(200) NOT...
《PHP程序开发范例宝典》全面介绍了应用PHP进行网站开发的各种技术和技巧。《PHP程序开发范例宝典》分为20章,内容包括PHP的运行环
境配置、表单及表单元素的应用、CSS与JavaScript脚本的应用、验证控件、构建PHP动态网页、PHP与
MySQL
的
数据
库技术、PHP与其他
数据
库技
术、SQL
查询
相关技术、
MySQL
高级应用技术、字符串的处理技术、PHP面向对象编程技术、文件管理、图像和多媒体技术、信息提取与图表分析
技术、报表与打印技术、网络通信技术、PHP与XML技术、安全技术、PHP高级应用技术以及综合应用等。《PHP程序开发范例宝典》共提供了453
个实例,每个实例都突出实用性,绝大部分实例都体现了PHP编程人员在实际项目开发过程中总结出的经验技巧。
《PHP程序开发范例宝典》内容充实,实例丰富,特别适于PHP编程人员和广大计算机爱好者学习开发使用,也可供大、中专院校师生阅读
《PHP程序开发范例宝典》附有配套光盘。光盘提供了书中所有实例的源代码。代码都经过精心调试,在Windows XP/Windows
2000/Windows 2003 Server/Linux/UNIX下测试通过。
实例003 Windows下PHP的安装配置 6
实例004 Window下phpMyAdmin的安装配置 7
实例005 使用AppServ架设Apache+
MySQL
+PHP运行环境 8
实例006 使用IIS服务器运行PHP脚本 10
实例007 Windows下发布“明日科技”网站 12
1.2 Linux下环境配置 14
实例008 Linux下Apache1.x安装配置 14
实例009 Linux下安装与配置Apache 2.x 15
实例010 Linux下PHP的安装配置 16
实例011 Linux下
MySQL
的安装配置 18
实例012 启用Red Hat Linux 9自带的PHP运行环境 19
实例013 Linux下实现PHP支持Socket 20
实例014 Linux下实现PHP支持
mysql
i扩展技术 21
实例015 开机自动启动Apache服务 21
实例016 开机自动启动
MySQL
服务 22
实例017 Linux下发布“读者之家”网站 22
1.3 应用常用开发工具开发PHP程序 23
实例018 应用Dreamweaver开发PHP程序 24
实例019 应用Eclipse开发PHP程序 25
实例020 应用PHPEditor开发PHP程序 27
实例021 应用UltraEdit开发PHP程序 29
实例022 应用Namo WebEditor开发PHP程序 30
第2章 表单及表单元素的应用 33
2.1 获取表单元素提交的值 34
实例023 获取文本框的值 34
实例024 获取隐藏域的值 35
实例025 获取文本域的值 36
实例026 获取复选框的值 37
实例027 获取单选按钮组的值 38
实例028 获取下拉列表的值 40
实例029 获取跳转菜单的值 41
实例030 获取文件域的值 42
2.2 动态添加表单元素 42
实例031 不提交表单获取单选按钮的值 43
实例032 选中单选按钮后
显示
其他表单元素 44
实例033 根据
数据
表结构自动生
成
数据
录入页面 45
实例034 投票系统中单选按钮与复选框的应用 47
2.3 下拉列表的应用 50
实例035 在下拉菜单中
显示
数据
表某列的
字段
值 50
实例036 在下拉菜单中
显示
数组中的元素 51
实例037 级联菜单的应用 52
实例038 修改
数据
时下拉列表的默认值为
数据
库中原
数据
信息 54
实例039 可输入字符的下拉菜单 56
实例040 应用下拉列表选择所要联机的网站 57
实例041 根据下拉列表的值
显示
不同控件 58
2.4 文本框组件的应用 60
实例042 自动计算金额 60
实例043 设置文本框的只读属性 61
实例044 设置安全的密码域 63
实例045 限制多行文本域输入的字符个数 64
2.5 表单的综合应用 65
实例046 表单组件的综合应用 65
实例047 同
一个
页面中的多表单提交 66
实例048 获取表单中提交的所有
数据
68
实例049 以文件域的形式
显示
数据
信息 70
第3章 CSS与JavaScript脚本的应用 73
3.1 文字特效 74
实例050 逐个闪烁的文字 74
实例051 荧光灯文字 75
实例052 滚动的文字 77
3.2 控件样式 80
实例053 通过鼠标的移动改变文本框的背景色 80
实例054 改变下拉列表框的背景色 82
实例055 带颜色变化的动态链接按钮 82
实例056 设置图片的样式 83
实例057 设置表格的样式 84
实例058 模拟的进度条 86
3.3 超链接样式 87
实例059 鼠标单击文字超链接样式 87
实例060 鼠标滑过图片超链接样式 88
实例061 鼠标单击文字获得帮助效果 89
3.4 页面样式 90
实例062 动态标题栏 90
实例063 滚动条样式 91
实例064 页面整体风格 92
实例065 首尾页切换特效 94
3.5 导航菜单设计 96
实例066 带图标的文字导航条 96
实例067 flash导航条 97
实例068 按钮导航条 99
实例069 导航条的动画效果 100
实例070 不用图片实现质感导航条 102
实例071 弹出式下拉菜单 103
实例072 二级导航菜单 105
实例073 半透明背景的下拉菜单 106
实例074 展开式导航条 110
实例075 解释型菜单 111
实例076 自动隐藏的弹出式菜单 112
实例077 收缩式导航菜单 114
实例078 树状导航菜单 116
实例079 鼠标右键菜单 117
3.6 状态栏设计 118
实例080 状态栏中的跑马灯文字 119
实例081 在状态栏中收缩
显示
文字 120
实例082 在状态栏中
显示
数字时钟 121
3.7 弹出窗口控制 122
实例083 在首页右下角弹出渐显的广告窗口 122
实例084 浮动的广告窗口 124
实例085 打开居中
显示
详细信息的新窗口 126
实例086 关闭弹出窗口时自动刷新父窗口 128
实例087 在弹出的对话框中选择个性头像 130
实例088 自动关闭的广告窗口 131
实例089 关闭IE主窗口时,不弹出询问对话框 132
实例090 弹出提示对话框并重定向网页 133
3.8 弹出网页对话框 134
实例091 弹出全屏
显示
的网页模式对话框 134
实例092 网页拾色器 136
实例093 日期选择器 138
3.9 无边框窗口 140
实例094 全屏
显示
无边框有滚动条窗口 140
实例095 应用JavaScript实现指定尺寸的无边框窗口 142
实例096 应用CSS+DIV实现无边框窗口 143
实例097 通过双击鼠标实现页面自动滚屏 145
3.10 其他 146
实例098 设置主页 147
实例099 收藏本站 147
实例100 离开时启动收藏夹 148
第4章 验证控件 151
4.1 通信类验证 152
实例101 验证E-mail地址 152
实例102 验证网址 153
实例103 验证电话号码 155
实例104 验证邮政编码 156
4.2 日期与时间类验证 157
实例105 验证日期的输入格式 157
实例106 验证时间的输入格式 159
实例107 验证日期与时间的输入格式 161
4.3 文本与数值验证 163
实例108 验证表单元素是否为空 163
实例109 验证输入的数值是否在指定范围内 165
实例110 验证
数据
是否为数值型 166
实例111 验证用户名和密码是否正确 167
实例112 验证两个文本框的值是否相等 168
实例113 验证输入的文本是否为汉字 170
实例114 限制输入字符串的长度 171
实例115 验证字符串是否以指定字符串开头 172
实例116 验证身份证号码 174
实例117 验证护照编号 175
实例118 验证车牌号码 176
4.4 自定义验证 177
实例119 验证合法的
数据
表名称 178
实例120 验证货币类型 179
第5章 构建PHP动态网页 181
5.1 页面间的
数据
传递 182
实例121 通过POST方法提交 182
实例122 通过GET方法提交 183
实例123 通过SESSION实现页面间的
数据
传递 184
5.2 页面跳转 185
实例124 使用header()函数实现页面跳转 185
实例125 应用HTML标记进行跳转 186
实例126 使用脚本语言实现页面跳转 187
5.3 包含文件 189
实例127 include()函数的应用 189
实例128 include_once()函数的应用 190
实例129 require()函数的应用 191
实例130 require_once()函数的应用 192
实例131 使用switch语句实现站内导航 193
5.4 COOKIE技术 195
实例132 表单提交与COOKIE 195
实例133 简单的COOKIE计数器 197
实例134 使用COOKIE记录用户登录信息 198
实例135 使用COOKIE限制用户访问网站的时间 199
5.5 会话控制 201
实例136 通过SESSION判断用户的权限 201
实例137 通过SESSION禁止页面刷新 203
实例138 通过SESSION存储
数据
204
实例139 通过SESSION实现购物车的功能 205
5.6 框架的应用 209
实例140 框架在聊天室中的应用 209
实例141 使用框架嵌套技术居中
显示
框架页 211
第6章 PHP与
MySQL
数据
库技术 213
6.1 连接
MySQL
数据
库 214
实例142 通过
mysql
_connect函数连接
数据
库 214
实例143 通过
Mysql
i_connect()函数连接
数据
库 216
实例144 通过面向对象连接
数据
库 217
6.2
数据
插入 218
实例145 单条
数据
录入 218
实例146 批量
数据
录入 220
实例147 插入系统日志信息 222
6.3
数据
更新 224
实例148 单条
数据
更新 224
实例149 批量
数据
更新 226
6.4
数据
查询
227
实例150 不刷新页面筛选
数据
库中的
数据
227
实例151
查询
企业员工的详细信息 229
6.5
数据
删除 231
实例152 单条
数据
删除 231
实例153 批量
数据
删除 232
实例154 删除
数据
前给予提示信息 234
实例155 统计从
数据
库里删除的记录数 236
6.6 在线删除表或索引 237
实例156 在线删除指定的
数据
表 237
实例157 在线删除多个指定的
数据
表 239
实例158 在线删除指定
数据
表中的索引 241
6.7 清除部分或全部
数据
表中的
数据
243
实例159 清空指定
数据
表中的所有
数据
243
实例160 清空指定
数据
表中的指定
数据
245
实例161 批量清空
数据
表 246
6.8
MYSQL
数据
库的备份 248
实例162 通过命令模式备份
数据
库 248
实例163 通过phpMyAdmin备份
数据
库 249
实例164 通过手动方式备份
数据
库 251
6.9
MYSQL
数据
库的恢复 252
实例165 通过命令模式恢复
数据
库 252
实例166 通过phpMyAdmin恢复
数据
库 253
实例167 通过手动方式恢复
数据
库 255
6.10 动态创建
数据
库、
数据
表和
字段
255
实例168 动态创建
MySQL
数据
库 255
实例169 动态创建
MySQL
数据
表 257
实例170 动态创建
字段
259
实例171 动态创建
一个
完整的
数据
库 261
6.11
数据
的导入导出 263
实例172
MySQL
数据
库自身的导入导出 263
实例173 SQL Server
数据
导入到
MySQL
数据
库 266
实例174 Aceess
数据
导入到
MySQL
数据
库 268
6.12 分页技术 270
实例175
查询
结果的分页
显示
271
实例176 单击页码跳转到指定页 272
实例177 输入页码跳转到指定页 275
实例178 超长文本的分页
显示
276
实例179
查询
结果的分栏
显示
278
实例180 分类、分栏和分页的综合应用 279
第7章 PHP与其他
数据
库技术 283
7.1 PHP操纵ACCESS
数据
库 284
实例181 通过ADO方式连接ACCESS
数据
库 284
实例182 通用
数据
信息的
查询
285
实例183
查询
结果的分页
显示
287
实例184 用户身份验证类的实现 289
实例185 图片的分栏
显示
291
7.2 PHP操纵SQL Server
数据
库 292
实例186 通过ADO方式连接SQL Server
数据
库 292
实例187 通过mssql_connect()函数连接SQL Server
数据
库 293
实例188 通过ADO方式实现指定时间段的信息检索 294
实例189 通过函数实现商品信息的检索 296
实例190 通过ADO方式实现输入页码跳转到指定页 297
实例191 通过函数实现单击页码跳转到指定页 300
实例192 添加图书类的实现 302
第8章 SQL
查询
相关技术 305
8.1
数据
库操作 306
实例193 创建
数据
库 306
实例194 查看
数据
库 307
实例195 删除
数据
库 308
8.2
数据
表操作 308
实例196 创建
数据
表 309
实例197 查看
数据
表 310
实例198 删除
数据
表 311
8.3
查询
常量 312
实例199
查询
数值型
数据
312
实例200
查询
字符串 313
实例201
查询
日期型
数据
314
实例202
查询
逻辑型
数据
316
实例203
查询
所有非空
数据
318
8.4
查询
变量 319
实例204 利用变量
查询
字符串
数据
319
实例205 利用变量
查询
数值型
数据
321
8.5
查询
指定的n条记录 322
实例206
查询
前n条记录 323
实例207
查询
后n条记录 324
实例208
查询
从指定位置开始的n条记录 325
实例209
查询
统计结果中的前n条记录 326
8.6
查询
周期、日期 328
实例210
查询
指定时间段的
数据
328
实例211 按月
查询
统计
数据
329
8.7 大小比较、逻辑
查询
、重复 330
实例212
查询
大于指定条件的记录 330
实例213
查询
结果不
显示
重复记录 332
实例214 NOT与谓词进行组合条件的
查询
333
实例215
显示
数据
表中的重复记录和记录条数 335
8.8 排序、分组统计 336
实例216 对
数据
进行降序
查询
336
实例217 对
数据
进行
多条
件排序 337
实例218 对统计结果进行排序 338
实例219 单列
数据
分组统计 340
实例220 多列
数据
分组统计 341
实例221 多表分组统计 342
8.9 聚集函数 344
实例222 使用聚集函数SUM对学生
成
绩进行汇总 344
实例223 使用聚集函数AVG求某班学生的平均
成
绩 346
实例224 使用聚集函数MIN求销售额、利润最少的商品 347
实例225 使用聚集函数MAX求月销售额完
成
最多的销售记录 349
实例226 使用聚集函数COUNT求日销售额大于某值的记录数 350
实例227 使用聚集函数First或Last求
数据
表中第
一条
或最后
一条
记录 352
8.10 多表
查询
354
实例228 使用select语句进行多表
查询
354
实例229 使用表的别名 355
实例230
合并
多个结果集 356
8.11 嵌套
查询
358
实例231 简单的嵌套
查询
358
实例232 复杂的嵌套
查询
359
实例233 嵌套
查询
在
查询
统计中的应用 361
8.12 子
查询
362
实例234 使用子
查询
作派生的表 362
实例235 使用子
查询
作表达式 364
实例236 使用子
查询
关联
数据
365
8.13 联合语句 367
实例237 多表联合
查询
367
实例238 对联合
查询
后的结果进行排序 368
实例239 条件联合语句 369
8.14 内连接
查询
371
实例240 简单内连接
查询
371
实例241 复杂内连接
查询
372
8.15 外连接
查询
373
实例242 使用外连接进行多表联合
查询
373
实例243 left outer join
查询
375
实例244 right outer join
查询
376
8.16 IN子
查询
377
实例245 利用in或notin语句限定范围 377
实例246 用IN
查询
表中的记录信息 379
实例247 由IN引入的关联子
查询
380
8.17 交叉表
查询
382
实例248 利用transform分析
数据
382
实例249 利用transform统计
数据
383
8.18 函数
查询
385
实例250 使用格式化函数转换
查询
条件的
数据
类型 385
实例251 在
查询
中使用字符串函数 387
实例252 在
查询
中使用日期函数 388
8.19 having语句应用 390
实例253 利用having语句过滤分组
数据
390
第9章
MySQL
高级应用技术 393
9.1 PHP的
mysql
i扩展 394
实例254 通过
mysql
i扩展技术实现
数据
库信息的检索 394
实例255 查看服务器连接错误报告 395
实例256 通过
mysql
i扩展技术实现多表
查询
397
实例257 通过
mysql
i扩展技术实现内存的回收 398
9.2
MySQL
视图的应用 399
实例258 创建视图 400
实例259 修改视图 401
实例260 应用视图 403
9.3
MySQL
存储过程 404
实例261 存储过程的创建 404
实例262 使用存储过程实现用户注册 405
9.4
MySQL
触发器 407
实例263 创建触发器 407
实例264 查看触发器 408
9.5
MySQL
事务 409
实例265 使用事务处理技术实现关联表间信息的删除 409
实例266 使用事务处理技术实现银行的安全转账 411
第10章 字符串的处理技术 413
10.1 字符串的应用及处理 414
实例267 获取字符串的长度 414
实例268 字符串大小写之间的转换 416
实例269 字符串首尾空格的处理 417
实例270 字符串的逆序输出 418
实例271 字符串格式化输出 419
实例272 字符串的分割与连接 420
实例273 特殊字符的查找 421
实例274 字符串的替换 423
实例275 字符串的大小比较 424
实例276 获取两个字符串的相似度 425
实例277 字符串的base64编码 426
实例278 字符串的url编码 427
实例279 特殊字符的转义 429
实例280 字符与ASCII之间的转换 429
实例281 合理定义上传文件名称 430
实例282 通过异或方式对字符串进行加密 432
实例283 金额的格式化输出 433
实例284 字符串首字母的大小写转换 434
实例285 字符数组的建立 434
实例286 字符串与数字之间的转换 435
实例287 利用正则表达式实现字符串的匹配查找 437
实例288 利用IP地址查找主机所在地 438
10.2 Web程序中常见字符串问题处理及解决方案 439
实例289 HTML标记的原义输出 439
实例290 解决用substr()函数对中文字符串截取时的乱码 441
实例291 创建PHP 5.0新型字符串 442
实例292 字符串与HTML标记相互转换 443
第11章 PHP面向对象编程技术 445
11.1 PHP面向对象基础 446
实例293
数据
成
员的初始化 446
实例294 父类构造函数的调用 447
实例295 对象的克隆 448
实例296 类的继承 449
11.2 PHP中常用类 451
实例297
数据
库连接类 451
实例298
数据
信息检索类 452
实例299
数据
信息录入类 454
实例300
数据
信息更改类 455
实例301
数据
信息删除类 457
实例302 计数器类 459
实例303 翻页类 460
实例304 购物车类 462
第12章 文件管理 467
12.1 文件上传 468
实例305 以二进制形式上传文件到
数据
库 468
实例306 上传文件到服务器 469
实例307 限制大小的文件上传 471
实例308 限制上传文件的类型 472
12.2 图片上传 474
实例309 以二进制形式上传图片到
数据
库 474
实例310 限制上传图片的格式 476
实例311 上传单图片到服务器并
显示
477
实例312 上传多图片到服务器并分页
显示
479
12.3 下载 481
实例313 通过链接方式下载 481
实例314 应用header()函数实现下载 482
12.4 文件遍历 484
实例315 遍历指定目录下的所有文件 484
实例316 文件浏览 485
12.5 文件操作 488
实例317 创建、复制、移动、删除文件 488
实例318 修改文件名 489
实例319 判断文件是否存在 490
实例320 从文本文件中读取注册服务条款 491
实例321 应用文本文件保存访客人数的计数器 493
实例322 判断文件是否被改动 494
12.6 目录操作 496
实例323 创建目录 496
实例324 删除目录 497
实例325 获取当前脚本目录 498
实例326 读取注册表信息 499
第13章 图像和多媒体技术 503
13.1 头像选择 504
实例327 通过下拉列表选择头像 504
实例328 从网页对话框中选择头像 505
13.2 图像与统计 507
实例329 图形计数器 507
实例330 通过图像
显示
投票统计结果 508
13.3 控制、
显示
图片特效 509
实例331 通过鼠标滑轮控制图片大小 509
实例332
显示
随机图像 510
实例333 获取页面中图像的实际尺寸 511
实例334 图像的手动播放 512
实例335 图像的自动播放 513
13.4 MP3点播与下载 514
实例336 MP3在线点播 514
实例337 MP3下载 515
13.5 嵌入Flash动画 516
实例338 在网页中嵌入背景透明的Flash 516
实例339 Flash播放器的实现 517
13.6 影音播放 518
实例340 嵌入式流媒体播放器的实现 518
实例341 在网页中加入可控的背景音乐 520
第14章 信息提取与图表分析技术 521
14.1 简单图表 522
实例342 连接GD2函数库 522
实例343 利用GD2函数绘制文字 523
实例344 应用GD2函数绘制几何图形 524
实例345 向图表中添加行和列标签 526
实例346 图表分析产品
数据
528
实例347 图表
显示
数据
并打印 529
14.2 柱形图表 531
实例348 单商品月销售量柱形图分析 531
实例349 将汇总
数据
利用图表分析 533
实例350 对比
数据
图表分析 535
实例351 图表动态分析不同的
数据
表 538
实例352 图表分析投票结果 541
14.3 折线图表 543
实例353 商品的价格走势分析 543
实例354 折线图表分析人口出生率 545
实例355 网站年终访问量曲线分析 547
实例356 年销售额及利润图表分析 550
14.4 饼形图表 552
实例357 饼形图分析软件图书市场占有率 552
实例358 多饼形图分析企业各类员工的比例 555
第15章 报表与打印技术 559
15.1 Web打印 560
实例359 调用IE自身的打印功能实现打印 560
实例360 打印指定框架中的内容 561
实例361 利用WebBrowser打印报表 563
实例362 设置页眉页脚 564
15.2 利用Word打印报表 567
实例363 将Web页中的表格导出到Word并打印 567
实例364 打开指定的Word文档并打印 569
实例365 调用word自动打印指定格式的会议记录 570
15.3 利用Excel打印报表 572
实例366 将Web页面中的
数据
导出到Excel 572
实例367 将Web页面中的
数据
导出到Excel并自动打印 574
15.4 利用CSS样式打印 577
实例368 利用CSS样式打印页面中的指定内容 577
实例369 利用CSS样式实现分页打印 579
15.5 套打印邮寄产品单 581
实例370 打印汇款单 582
实例371 打印快递单 583
实例372 打印信封 585
第16章 网络通信技术 587
16.1 邮件技术 588
实例373 SMTP服务器的安装与配置 588
实例374 POP3服务器的安装与配置 590
实例375 利用mail()函数实现邮件发送 592
实例376 发邮件类 594
实例377 收邮件类 597
实例378 查找邮件 602
实例379 删除邮件 604
实例380 邮件群发 605
16.2 发送短信 607
实例381 通过fsockopen()函数发送短信 607
实例382 通过调用Web Service发送短信 608
实例383 短信群发 610
第17章 PHP与XML技术 613
17.1 读写XML文件 614
实例384 创建XML文件 614
实例385 读取XML文件 615
实例386 添加XML
数据
617
实例387
查询
XML文件 619
实例388 修改XML文件 620
实例389 删除XML文件 623
实例390 PHP+XML留言板 624
17.2 XML文件转换 628
实例391 XSL转换XML文件 628
实例392 在HTML页面中使用XML文件 629
实例393 在XML文件中应用CSS样式 630
第18章 安全技术 633
18.1 用户登录 634
实例394 用户安全登录 634
实例395 验证码技术登录 635
实例396 防止用户直接输入地址访问PHP文件 637
18.2
数据
加密 638
实例397 对登录密码进行base64编码 638
实例398 对
查询
字符串进行url编码 639
实例399 MD5加密登录用户名称和密码 640
实例400 使用crypt()函数进行加密 642
18.3 Access
数据
库安全 643
实例401 操作带密码的Access
数据
库 644
实例402 防止Access
数据
库被下载 646
18.4 防止SQL注入 647
实例403 过滤HTML非法字符 647
实例404 禁止用户输入字符串中的危险字符 649
18.5 获取客户端信息 650
实例405 确定对方的IP地址 651
实例406 获取客户端TCP/IP端口的方法 652
18.6 禁止用户复制网页内容 653
实例407 禁止复制网页内容 653
实例048 禁止网页被另存为 654
18.7 禁止用户刷新屏幕 655
实例409 屏蔽IE主菜单 655
实例410 屏蔽键盘相关事件 657
实例411 屏蔽鼠标右键 659
第19章 PHP高级应用技术 661
19.1 PHP操纵Word 662
实例412 将
数据
库中的
数据
保存到Word 662
实例413 将
查询
结果保存到Word 664
19.2 PHP操纵Excel 666
实例414 将Excel中的
数据
导出到
MySQL
数据
库 667
实例415 将
查询
结果保存到Excel 669
19.3 PHP中压缩与解压文件 672
实例416 PHP中压缩RAR文件 672
实例417 PHP中解压RAR文件 673
实例418 PHP中压缩ZIP文件 674
实例419 PHP中解压ZIP文件 675
19.4 信息共享 676
实例420 在PHP中实现ASP中的Application功能 676
实例421 图形计数器 677
19.5 PHP管理FTP服务器 679
实例422 连接FTP服务器 679
实例423 上传文件到FTP服务器 680
实例424 从FTP服务器中下载文件 682
实例425 更改FTP服务器中的文件名称 683
实例426 删除FTP服务器中指定的文件 684
实例427 在FTP服务器中建立指定的目录 686
实例428 获取FTP服务器中指定目录下的文件列表 687
第20章 综合应用 689
20.1 用户注册 690
实例429 一般用户注册 690
实例430 带检测用户名的用户注册 692
实例431 分步用户注册 694
20.2 留言本 696
实例432 简易留言本 696
实例433 带留言分类的留言本 698
实例434 具有版主回复的留言本 700
20.3 聊天室 702
实例435
数据
库形式的聊天室 703
实例436 聊天室中私聊的实现 707
20.4 论坛 710
实例437 查看主题信息 710
实例438 发布主题信息 713
实例439 回复主题信息 714
实例440 删除主题及回复信息 716
20.5 购物车 717
实例441 添加至购物车 718
实例442 查看购物车 719
实例443 从购物车中移去指定商品 722
实例444 修改商品购买数量 723
实例445 清空购物车 724
实例446 收银台结账 725
20.6 博客网站 727
实例447 博客用户图片管理 727
实例448 博客文章评论管理 733
实例449 用户安全登录 738
实例450 用户安全退出 740
20.7 搜索 742
实例451 一般搜索 742
实例452 高级搜索 744
实例453 常用搜索 745
技术要点
对应
实例位置 749
查询
数据
指从
数据
库中获取所需要的
数据
。
查询
数据
是
数据
库操作中最常用,也是最重要的操作。用户可以根据自己对
数据
的需求,使用不同的
查询
方式。通过不同的
查询
方式,可以获得不同的
数据
。
MySQL
中是使用SELECT语句来
查询
数据
的。在这一章中将讲解的内容包括。
1、
查询
语句的基本语法
2、在单表上
查询
数据
3、使用聚合函数
查询
数据
4、多表上联合
查询
5、子
查询
6、
合并
查询
结果
7、为表和
字段
取别名
8、使用正则表达式
查询
什么是
查询
?
怎么查的?
数据
的准备如下:
[sql] view plain copy
create table STUDENT(
STU_ID int primary KEY,
STU_NAME char(10) not null,
STU_AGE smallint unsigned not null,
STU_SEX char(2) not null
insert into STUDENT values(2001,'小王',13,'男');
insert into STUDENT values(2002,'明明',12,'男');
insert into STUDENT values(2003,'红红',14,'女');
insert into STUDENT values(2004,'小花',13,'女');
insert into STUDENT values(2005,'天儿',15,'男');
insert into STUDENT values(2006,'阿猎',13,'女');
insert into STUDENT values(2007,'阿猫',16,'男');
insert into STUDENT values(2008,'阿狗',17,'男');
insert into STUDENT values(2009,'黑子',14,'男');
insert into STUDENT values(2010,'小玉',13,'女');
insert into STUDENT values(2011,'头头',13,'女');
insert into STUDENT values(2012,'冰冰',14,'女');
insert into STUDENT values(2013,'美丽',13,'女');
insert into STUDENT values(2014,'神乐',12,'男');
insert into STUDENT values(2015,'天五',13,'男');
insert into STUDENT values(2016,'小三',11,'男');
insert into STUDENT values(2017,'阿张',13,'男');
insert into STUDENT values(2018,'阿杰',13,'男');
insert into STUDENT values(2019,'阿宝',13,'女');
insert into STUDENT values(2020,'大王',14,'男');
然后这是学生
成
绩表,其中定义了外键约束
[sql] view plain copy
create table GRADE(
STU_ID INT NOT NULL,
STU_SCORE INT,
foreign key(STU_ID) references STUDENT(STU_ID)
insert into GRADE values(2001,90);
insert into GRADE values(2002,89);
insert into GRADE values(2003,67);
insert into GRADE values(2004,78);
insert into GRADE values(2005,89);
insert into GRADE values(2006,78);
insert into GRADE values(2007,99);
insert into GRADE values(2008,87);
insert into GRADE values(2009,70);
insert into GRADE values(2010,71);
insert into GRADE values(2011,56);
insert into GRADE values(2012,85);
insert into GRADE values(2013,65);
insert into GRADE values(2014,66);
insert into GRADE values(2015,77);
insert into GRADE values(2016,79);
insert into GRADE values(2017,82);
insert into GRADE values(2018,88);
insert into GRADE values(2019,NULL);
insert into GRADE values(2020,NULL);
一、
查询
语句的基本语法
查询
数据
是指从
数据
库中的
数据
表或视图中获取所需要的
数据
,在
mysql
中,可以使用SELECT语句来
查询
数据
。根据
查询
条件的不同,
数据
库系统会找到不同的
数据
。
SELECT语句的基本语法格式如下:
[sql] view plain copy
SELECT 属性列表
FROM 表名或视图列表
[WHERE 条件表达式1]
[GROUP BY 属性名1 [HAVING 条件表达式2]]
[ORDER BY 属性名2 [ASC|DESC]]
属性列表:表示需要
查询
的
字段
名。
表名或视图列表:表示即将进行
数据
查询
的
数据
表或者视图,表或视图可以有多个。
条件表达式1:设置
查询
的条件。
属性名1:表示按该
字段
中的
数据
进行分组。
条件表达式2:表示满足该表达式的
数据
才能输出。
属性2:表示按该
字段
中的
数据
进行排序,排序方式由ASC或DESC参数指定。
ASC:表示按升序的顺序进行排序。即表示值按照从小到大的顺序排列。这是默认参数。
DESC:表示按降序的顺序进行排序。即表示值按照从大到小的顺序排列。
如果有WHERE子句,就按照“条件表达式1”指定的条件进行
查询
;如果没有WHERE子句,就
查询
所有记录。
如果有GROUP BY子句,就按照“属性名1”指定的
字段
进行分组;如果GROUP BY子句后面带着HAVING关键字,那么只有满足“条件表达式2”中指定的条件的记录才能够输出。GROUP BY子句通常和COUNT()、SUM()等聚合函数一起使用。
如果有ORDER BY子句,就按照“属性名2”指定的
字段
进行排序。排序方式由ASC或DESC参数指定。默认的排序方式为ASC。
二、在单表上
查询
数据
2.1、
查询
所有
字段
[sql] view plain copy
select * from STUDENT;
2.2、按条件
查询
(1) 比较运算符
> , < ,= , != (),>= , 13;
in(v1,v2..vn) ,符合v1,v2,,,vn才能被查出
IN关键字可以判断某个
字段
的值是否在指定的集合中。如果
字段
的值在集合中,则满足
查询
条件,该纪录将被
查询
出来。如果不在集合中,则不满足
查询
条件。其语法规则如下:[ NOT ] IN ( 元素1, 元素2, …, 元素n )
[sql] view plain copy
select * from STUDENT where STU_AGE in(11,12);
between v1 and v2 在v1至v2之间(包含v1,v2)
BETWEEN AND关键字可以判读某个
字段
的值是否在指定的范围内。如果
字段
的值在指定范围内,则满足
查询
条件,该纪录将被
查询
出来。如果不在指定范围内,则不满足
查询
条件。其语法规则如下:
[ NOT ] BETWEEN 取值1 AND 取值2
[sql] view plain copy
select * from STUDENT where STU_AGE between 13 and 15;
or ( || ) 逻辑或
OR关键字也可以用来联合多个条件进行
查询
,但是与AND关键字不同。使用OR关键字时,只要满足这几个
查询
条件的其中
一个
,这样的记录将会被
查询
出来。如果不满足这些
查询
条件中的任何
一个
,这样的记录将被排除掉。OR关键字的语法规则如下:
条件表达式1 OR 条件表达式2 [ …OR 条件表达式n ]
其中,OR可以用来连接两个条件表达式。而且,可以同时使用多个OR关键字,这样可以连接更多的条件表达式。
[sql] view plain copy
select * from STUDENT where STU_ID2015;
and ( && ) 逻辑与
AND关键字可以用来联合多个条件进行
查询
。使用AND关键字时,只有同时满足所有
查询
条件的记录会被
查询
出来。如果不满足这些
查询
条件的其中
一个
,这样的记录将被排除掉。AND关键字的语法规则如下:
条件表达式1 AND 条件表达式2 [ … AND 条件表达式n ]
其中,AND可以连接两个条件表达式。而且,可以同时使用多个AND关键字,这样可以连接更多的条件表达式。
(3)模糊
查询
like 像
LIKE关键字可以匹配字符串是否相等。如果
字段
的值与指定的字符串相匹配,则满足
查询
条件,该纪录将被
查询
出来。如果与指定的字符串不匹配,则不满足
查询
条件。其语法规则如下:[ NOT ] LIKE '字符串'
“NOT”可选参数,加上 NOT表示与指定的字符串不匹配时满足条件;“字符串”表示指定用来匹配的字符串,该字符串必须加单引号或双引号。
% 任意字符
[sql] view plain copy
select * from STUDENT where STU_NAME LIKE '%王';
表示匹配任何以王结尾的
[sql] view plain copy
select * from STUDENT where STU_NAME LIKE '阿%';
表示匹配任何以阿开头的
_ 单个字符
比如说插入
[sql] view plain copy
insert into STUDENT values(2021,'天下无镜',14,'男');
[sql] view plain copy
select * from STUDENT where STU_NAME LIKE '_下_';
查询
的结果为空
但是如果下后面加两个_符号
[sql] view plain copy
select * from STUDENT where STU_NAME LIKE '_下__';
查询
结果不为空
“字符串”参数的值可以是
一个
完整的字符串,也可以是包含百分号(%)或者下划线(_)的通配字符。二者有很大区别
“%”可以代表任意长度的字符串,长度可以为0;
“_”只能表示单个字符。
如果要匹配姓张且名字只有两个字的人的记录,“张”字后面必须要有两个“_”符号。因为
一个
汉字是两个字符,而
一个
“_”符号只能代表
一个
字符。
(4)空值
查询
IS NULL关键字可以用来判断
字段
的值是否为空值(NULL)。如果
字段
的值是空值,则满足
查询
条件,该记录将被
查询
出来。如果
字段
的值不是空值,则不满足
查询
条件。其语法规则如下:
IS [ NOT ] NULL
其中,“NOT”是可选参数,加上NOT表示
字段
不是空值时满足条件。
IS NULL是
一个
整体,不能将IS换
成
”=”.
三、使用聚合函数
查询
数据
3.1、group by 分组
[sql] view plain copy
select * from STUDENT group by STU_SEX;
不加条件,那么就只取每个分组的第
一条
。
如果想看分组的内容,可以加groub_concat
[sql] view plain copy
select STU_SEX,group_concat(STU_NAME) from STUDENT group by STU_SEX;
3.2、一般情况下group需与统计函数(聚合函数)一起使用才有意义
先准备一些
数据
:
[sql] view plain copy
create table EMPLOYEES(
EMP_NAME CHAR(10) NOT NULL,
EMP_SALARY INT unsigned NOT NULL,
EMP_DEP CHAR(10) NOT NULL
insert into EMPLOYEES values('小王',5000,'销售部');
insert into EMPLOYEES values('阿小王',6000,'销售部');
insert into EMPLOYEES values('工是不',7000,'销售部');
insert into EMPLOYEES values('人人乐',3000,'资源部');
insert into EMPLOYEES values('满头大',4000,'资源部');
insert into EMPLOYEES values('天生一家',5500,'资源部');
insert into EMPLOYEES values('小花',14500,'资源部');
insert into EMPLOYEES values('大玉',15000,'研发部');
insert into EMPLOYEES values('条条',12000,'研发部');
insert into EMPLOYEES values('笨笨',13000,'研发部');
insert into EMPLOYEES values('我是天才',15000,'研发部');
insert into EMPLOYEES values('无语了',6000,'审计部');
insert into EMPLOYEES values('什么人',5000,'审计部');
insert into EMPLOYEES values('不知道',4000,'审计部');
mysql
中的五种统计函数:
(1)max:求最大值
求每个部门的最高工资:
[sql] view plain copy
select EMP_NAME,EMP_DEP,max(EMP_SALARY) from EMPLOYEES group by EMP_DEP;
(2)min:求最小值
求每个部门的最仰工资:
[sql] view plain copy
select EMP_NAME,EMP_DEP,min(EMP_SALARY) from EMPLOYEES group by EMP_DEP;
(3)sum:求总数和
求每个部门的工资总和:
[sql] view plain copy
select EMP_DEP,sum(EMP_SALARY) from EMPLOYEES group by EMP_DEP
(4)avg:求平均值
求每个部门的工资平均值
[sql] view plain copy
select EMP_DEP,avg(EMP_SALARY) from EMPLOYEES group by EMP_DEP;
(5)count:求总行数
求每个部门工资大于一定金额的人数
[sql] view plain copy
select EMP_DEP,count(*) from EMPLOYEES where EMP_SALARY>=500 group by EMP_DEP;
3.3、带条件的groub by
字段
having,利用HAVING语句过滤分组
数据
having 子句的作用是筛选满足条件的组,即在分组之后过滤
数据
,条件中经常包含聚组函数,使用having 条件
显示
特定的组,也可以使用多个分组标准进行分组。
having 子句被限制子已经在SELECT语句中定义的列和聚合表达式上。通常,你需要通过在HAVING子句中重复聚合函数表达式来引用聚合值,就如你在SELECT语句中做的那样。
[sql] view plain copy
select EMP_DEP,avg(EMP_SALARY),group_concat(EMP_NAME)from EMPLOYEES group by EMP_DEP HAVING avg(EMP_SALARY) >=6000;
查找平均工资大于6000的部门,并把部门里的人全部列出来
四、多表上联合
查询
多表上联合
查询
分为内连接
查询
和外连接
查询
(1)隐式内连接
查询
[sql] view plain copy
select STUDENT.STU_ID,STUDENT.STU_NAME,STUDENT.STU_AGE,STUDENT.STU_SEX,GRADE.STU_SCORE from STUDENT,GRADE WHERE STUDENT.STU_ID=GRADE.STU_ID AND GRADE.STU_SCORE >=90;
查找大于90分的学生信息:
(2)显式内连接
查询
[sql] view plain copy
select STUDENT.STU_ID,STUDENT.STU_NAME,STUDENT.STU_AGE,STUDENT.STU_SEX,GRADE.STU_SCORE from STUDENT inner join GRADE on STUDENT.STU_ID=GRADE.STU_ID AND GRADE.STU_SCORE >=90;
用法:select .... from 表1 inner join 表2 on 条件表达式
(3)外连接
查询
left join.左连接
查询
。
用法 :select .... from 表1 left join 表2 on 条件表达式
意思是表1查出来的
数据
不能为null,但是其
对应
表2的
数据
可以为null
[sql] view plain copy
select STUDENT.STU_ID,STUDENT.STU_NAME,STUDENT.STU_AGE,STUDENT.STU_SEX,GRADE.STU_SCORE from STUDENT left join GRADE on STUDENT.STU_ID=GRADE.STU_ID;
right join就是相反的了,用法相同
用left join的时候,left join操作符左侧表里的信息都会被
查询
出来,右侧表里没有的记录会填空(NULL).right join亦然;inner join的时候则只有条件合适的才会
显示
出来
full join()
完整外部联接返回左表和右表中的所有行。当某行在另
一个
表中没有匹配行时,则另
一个
表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的
数据
仅当至少有
一个
同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另
一个
表中的任何行不匹配的行。而外联接会返回 FROM 子句中提到的至少
一个
表或
视图的所有行,只要这些行符合任何 WHERE 或 HAVING 搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外
部联接中两个表的所有行都将返回。
五、子
查询
以
一个
查询
select的结果作为另
一个
查询
的条件
语法:select * from 表1 wher 条件1(select ..from 表2 where 条件2)
1、与In结合
[sql] view plain copy
select * from STUDENT where STU_ID IN(select STU_ID from GRADE where STU_SCORE>85);
查找大于85分的学生信息
2、与EXISTS结合
EXISTS和NOT EXISTS操作符只测试某个子
查询
是否返回了
数据
行。如果是,EXISTS将是true,NOT EXISTS将是false。
[sql] view plain copy
select * from STUDENT where EXISTS (select STU_ID from GRADE where STU_SCORE>=100);
如果有学生
成
绩大于100,才
查询
所有的学生信息
3、ALL、ANY和SOME子
查询
any和all的操作符常见用法是结合
一个
相对比较操作符对
一个
数据
列子
查询
的结果进行测试。它们测试比较值是否与子
查询
所返回的全部或一部分值匹配。比方说,如果比较值小于或等于子
查询
所返回的每
一个
值,<=all将是true,只要比较值小于或等于子
查询
所返回的任何
一个
值,<=any将是true。some是any的
一个
同义词。
[sql] view plain copy
select STU_ID from GRADE where STU_SCORE = any (select STU_ID from GRADE where STU_SCORE 80 order by STU_SCORE;
默认是按升序的,
也可以这么写
[sql] view plain copy
select * from GRADE where STU_SCORE >80 order by STU_SCORE ASC;
结果如下:
如果想换
成
降序的:
[sql] view plain copy
select * from GRADE where STU_SCORE >80 order by STU_SCORE desc;
7.2、limit
limit [offset,] N
offset 偏移量,可选,不写则相当于limit 0,N
N 取出条目
取分数最高的前5条
[sql] view plain copy
select * from GRADE order by STU_SCORE desc limit 5;
取分数最低的前5条
[sql] view plain copy
select * from GRADE order by STU_SCORE asc limit 5;
取分数排名在10-15之间的5条
[sql] view plain copy
select * from GRADE order by STU_SCORE desc limit 10,5
九、使用正则表达式
查询
正则表达式是用某种模式去匹配一类字符串的
一个
方式。例如,使用正则表达式可以
查询
出包含A、B、C其中任一字母的字符串。正则表达式的
查询
能力比通配字符的
查询
能力更强大,而且更加的灵活。正则表达式可以应用于非常复杂
查询
。
MySQL
中,使用REGEXP关键字来匹配
查询
正则表达式。其基本形式如下:
属性名 REGEXP '匹配方式'
在使用前先插入一些
数据
:
[sql] view plain copy
insert into STUDENT values(2022,'12wef',13,'男');
insert into STUDENT values(2023,'faf_23',13,'男');
insert into STUDENT values(2024,'fafa',13,'女');
insert into STUDENT values(2025,'ooop',14,'男');
insert into STUDENT values(2026,'23oop',14,'男');
insert into STUDENT values(2027,'woop89',14,'男');
insert into STUDENT values(2028,'abcdd',11,'男');
(1)使用字符“^”可以匹配以特定字符或字符串开头的记录。
查询
所有以阿头的
[sql] view plain copy
select * from STUDENT where STU_NAME REGEXP '^阿';
以数字开头
[sql] view plain copy
select * from STUDENT where STU_NAME REGEXP '^[0-9]';
(2)使用字符“$”可以匹配以特定字符或字符串结尾的记录
以数字结尾
[sql] view plain copy
select * from STUDENT where STU_NAME REGEXP '[0-9]$';
(3)用正则表达式来
查询
时,可以用“.”来替代字符串中的任意
一个
字符。
[sql] view plain copy
select * from STUDENT where STU_NAME REGEXP '^w....[0-9]$';
以w开头,以数字结束,中间有4个
(4)使用方括号([])可以将需要
查询
字符组
成
一个
字符集。只要记录中包含方括号中的任意字符,该记录将会被
查询
出来。
例如,通过“[abc]”可以
查询
包含a、b、c这三个字母中任何
一个
的记录。
使用方括号可以指定集合的区间。
“[a-z]”表示从a-z的所有字母;
“[0-9]”表示从0-9的所有数字;
“[a-z0-9]”表示包含所有的小写字母和数字。
“[a-zA-Z]”表示匹配所有字母。
[sql] view plain copy
select * from STUDENT where STU_NAME REGEXP '[0-9a-z]';
查询
所有包含有数字和小写字母的
使用“[^字符集合]”可以匹配指定字符以外的字符
(5){}表示出现的次数
正则表达式中,“字符串{M}”表示字符串连续出现M次;“字符串{M,N}”表示字符串联连续出现至少M次,最多N次。例如,“ab{2}”表示字符串“ab”连续出现两次。“ab{2,4}”表示字符串“ab”连续出现至少两次,最多四次。
o出现2次
[sql] view plain copy
select * from STUDENT where STU_NAME REGEXP 'o{2}';
(6)+表示到少出现一次
fa至少出现一次
[sql] view plain copy
select * from STUDENT where STU_NAME REGEXP '(fa)+';
正则表达式可以匹配字符串。当表中的记录包含这个字符串时,就可以将该记录
查询
出来。如果指定多个字符串时,需要用符号“|”隔开。只要匹配这些字符串中的任意
一个
即可。每个字符串与”|”之间不能有空格。因为,
查询
过程中,
数据
库系统会将空格也当作
一个
字符。这样就
查询
不出想要的结果。
正则表达式中,“*”和“+”都可以匹配多个该符号之前的字符。但是,“+”至少表示
一个
字符,而“*”可以表示零个字符。
mysql
中有种可以通过join相关操作进行表与表之间的方式
查询
不同结果集,但是在
一对多
的情况下,关键
查询
的结果是
多条
的.例如:班级和学习的关系,我想很直观的看到班级和学生的情况,列表
显示
出班级的信息和班级的男生女生姓名,通过关联
查询
肯定是无法实现的.
1首先我们了解上述相关使用场景之后,结合相关如下相关示例
单个列表中,需要
显示
不同快递公司的配送区域,相关表中存储是的
对应
的地区id
字段
2主表中记录相关业务
数据
,然后关联相地址表处理结果集,就可以得到我们需要的结果
最终需要的
数据
执行的SQL如下
SELECT
template.temple
MYSQL
常用命令
1.导出整个
数据
库
mysql
dump -u 用户名 -p --default-character-set=latin1
数据
库名 > 导出的文件名(
数据
库默认编码是latin1)
mysql
dump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.导出
一个
表
mysql
dump -u 用户名 -p
数据
库名 表名> 导出的文件名
mysql
dump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
3.导出
一个
数据
库结构
mysql
dump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:wcnc_db.sql
-d 没有
数据
–add-drop-table 在每个create语句之前增加
一个
drop table
4.导入
数据
库
A:常用source 命令
进入
mysql
数据
库控制台,
如
mysql
-u root -p
mysql
>use
数据
库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql
>source wcnc_db.sql
B:使用
mysql
dump命令
mysql
dump -u username -p dbname < filename.sql
C:使用
mysql
命令
mysql
-u username -p -D dbname
2、退出
MySQL
:quit或exit
二、库操作
1、、创建
数据
库
命令:create database
例如:建立
一个
名为xhkdb的
数据
库
mysql
> create database xhkdb;
2、
显示
所有的
数据
库
命令:show databases (注意:最后有个s)
mysql
> show databases;
3、删除
数据
库
命令:drop database
例如:删除名为 xhkdb的
数据
库
mysql
> drop database xhkdb;
4、连接
数据
库
命令: use
例如:如果xhkdb
数据
库存在,尝试存取它:
mysql
> use xhkdb;
屏幕提示:Database changed
5、查看当前使用的
数据
库
mysql
> select database();
6、当前
数据
库包含的表信息:
mysql
> show tables; (注意:最后有个s)
三、表操作,操作之前应连接某个
数据
库
命令:create table ( [,.. ]);
mysql
> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default '0',
> degree double(16,2));
2、获取表结构
命令: desc 表名,或者show columns from 表名
mysql
>DESCRIBE MyClass
mysql
> desc MyClass;
mysql
> show columns from MyClass;
3、删除表
命令:drop table
例如:删除表名为 MyClass 的表
mysql
> drop table MyClass;
4、插入
数据
命令:insert into [( [,.. ])] values ( 值1 )[, ( 值n )]
例如,往表 MyClass中插入二条记录, 这二条记录表示:编号为1的名为Tom的
成
绩为96.45, 编号为2 的名为Joan 的
成
绩为82.99,编号为3 的名为Wang 的
成
绩为96.5.
mysql
> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
5、
查询
表中的
数据
1)、
查询
所有行
命令: select from where
例如:查看表 MyClass 中所有
数据
mysql
> select * from MyClass;
2)、
查询
前几行
数据
例如:查看表 MyClass 中前2行
数据
mysql
> select * from MyClass order by id limit 0,2;
mysql
> select * from MyClass limit 0,2;
6、删除表中
数据
命令:delete from 表名 where 表达式
例如:删除表 MyClass中编号为1 的记录
mysql
> delete from MyClass where id=1;
7、修改表中
数据
:update 表名 set
字段
=新值,… where 条件
mysql
> update MyClass set name='Mary' where id=1;
7、在表中增加
字段
:
命令:alter table 表名 add
字段
类型 其他;
例如:在表MyClass中添加了
一个
字段
passtest,类型为int(4),默认值为0
mysql
> alter table MyClass add passtest int(4) default '0'
8、更改表名:
命令:rename table 原表名 to 新表名;
例如:在表MyClass名字更改为YouClass
mysql
> rename table MyClass to YouClass;
更新
字段
内容
update 表名 set
字段
名 = 新内容
update 表名 set
字段
名 = replace(
字段
名,'旧内容','新内容');
文章前面加入4个空格
update article set content=concat(' ',content);
字段
类型
1.INT[(M)] 型: 正常大小整数类型
2.DOUBLE[(M,D)] [ZEROFILL] 型: 正常大小(双精密)浮点数字类型
3.DATE 日期类型:支持的范围是1000-01-01到9999-12-31。
MySQL
以YYYY-MM-DD格式来
显示
DATE值,但是允许你使用字符串或数字把值赋给DATE列
4.CHAR(M) 型:定长字符串类型,当存储时,总是是用空格填满右边到指定的长度
5.BLOB TEXT类型,最大长度为65535(2^16-1)个字符。
6.VARCHAR型:变长字符串类型
5.导入
数据
库表
(1)创建.sql文件
(2)先产生
一个
库如auction.c:
mysql
bin>
mysql
admin -u root -p creat auction,会提示输入密码,然后
成
功创建。
(2)导入auction.sql文件
c:
mysql
bin>
mysql
-u root -p auction grant select,insert,delete,create,drop
on *.* (或test.*/user.*/..)
to 用户名@localhost
identified by '密码';
如:新建
一个
用户帐号以便可以访问
数据
库,需要进行如下操作:
mysql
> grant usage
-> ON test.*
-> TO testuser@localhost;
Query OK, 0 rows affected (0.15 sec)
此后就创建了
一个
新用户叫:testuser,这个用户只能从localhost连接到
数据
库并可以连接到test
数据
库。下一步,我们必须指定testuser这个用户可以执行哪些操作:
mysql
> GRANT select, insert, delete,update
-> ON test.*
-> TO testuser@localhost;
Query OK, 0 rows affected (0.00 sec)
此操作使testuser能够在每
一个
test
数据
库中的表执行SELECT,INSERT和DELETE以及UPDATE
查询
操作。现在我们结束操作并退出
MySQL
客户程序:
mysql
> exit
Bye9!
1:使用SHOW语句找出在服务器上当前存在什么
数据
库:
mysql
> SHOW DATABASES;
2:2、创建
一个
数据
库
MYSQL
DATA
mysql
> Create DATABASE
MYSQL
DATA;
3:选择你所创建的
数据
库
mysql
> USE
MYSQL
DATA; (按回车键出现Database changed 时说明操作
成
功!)
4:查看现在的
数据
库中存在什么表
mysql
> SHOW TABLES;
5:创建
一个
数据
库表
mysql
> Create TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
6:
显示
表的结构:
mysql
> DESCRIBE MYTABLE;
7:往表中加入记录
mysql
> insert into MYTABLE values ("hyq","M");
8:用文本方式将
数据
装入
数据
库表中(例如D:/
mysql
.txt)
mysql
> LOAD DATA LOCAL INFILE "D:/
mysql
.txt" INTO TABLE MYTABLE;
9:导入.sql文件命令(例如D:/
mysql
.sql)
mysql
>use database;
mysql
>source d:/
mysql
.sql;
10:删除表
mysql
>drop TABLE MYTABLE;
11:清空表
mysql
>delete from MYTABLE;
12:更新表中
数据
mysql
>update MYTABLE set sex="f" where name='hyq';
以下是无意中在网络看到的使用
MySql
的管理心得,
摘自:http://www1.xjtusky.com/article/htmldata/2004_12/3/57/article_1060_1.html
在windows中
MySql
以服务形式存在,在使用前应确保此服务已经启动,未启动可用net start
mysql
命令启动。而Linux中启动时可用“/etc/rc.d/init.d/
mysql
d start"命令,注意启动者应具有管理员权限。
刚安装好的
MySql
包含
一个
含空密码的root帐户和
一个
匿名帐户,这是很大的安全隐患,对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名帐户删除、 root帐户设置密码,可用如下命令进行:
use
mysql
;
delete from User where User="";
update User set Password=PASSWORD('newpassword') where User='root';
如果要对用户所用的登录终端进行限制,可以更新User表中相应用户的Host
字段
,在进行了以上更改后应重新启动
数据
库服务,此时登录时可用如下类似命令:
mysql
-uroot -p;
mysql
-uroot -pnewpassword;
mysql
mydb -uroot -p;
mysql
mydb -uroot -pnewpassword;
上面命令参数是常用参数的一部分,详细情况可参考文档。此处的mydb是要登录的
数据
库的名称。
在进行开发和实际应用中,用户不应该只用root用户进行连接
数据
库,虽然使用root用户进行测试时很方便,但会给系统带来重大安全隐患,也不利于管理技术的提高。我们给
一个
应用中使用的用户赋予最恰当的
数据
库权限。如
一个
只进行
数据
插入的用户不应赋予其删除
数据
的权限。
MySql
的用户管理是通过 User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的
数据
行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下:
grant all on mydb.* to NewUserName@HostName identified by "password" ;
grant usage on *.* to NewUserName@HostName identified by "password";
grant select,insert,update on mydb.* to NewUserName@HostName identified by "password";
grant update,delete on mydb.TestTable to NewUserName@HostName identified by "password";
若要给此用户赋予他在相应对象上的权限的管理能力,可在GRANT后面添加WITH GRANT OPTION选项。而对于用插入User表添加的用户,Password
字段
应用PASSWORD 函数进行更新加密,以防不轨之人窃看密码。对于那些已经不用的用户应给予清除,权限过界的用户应及时回收权限,回收权限可以通过更新User表相应
字段
,也可以使用REVOKE操作。
下面给出本人从其它资料(www.cn-java.com)获得的对常用权限的解释:
全局管理权限:
FILE: 在
MySQL
服务器上读写文件。
PROCESS:
显示
或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭
MySQL
服务。
数据
库/
数据
表/
数据
列权限:
Alter: 修改已存在的
数据
表(例如增加/删除列)和索引。
Create: 建立新的
数据
库或
数据
表。
Delete: 删除表的记录。
Drop: 删除
数据
表或
数据
库。
INDEX: 建立或删除索引。
Insert: 增加表的记录。
Select:
显示
/搜索表的记录。
Update: 修改表中已存在的记录。
特别的权限:
ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录--其它什么也不允许做。
---------------------
MYSQL
常用命令
有很多朋友虽然安装好了
mysql
但却不知如何使用它。在这篇文章中我们就从连接
MYSQL
、修改密码、增加用户等方面来学习一些
MYSQL
的常用命令。
有很多朋友虽然安装好了
mysql
但却不知如何使用它。在这篇文章中我们就从连接
MYSQL
、修改密码、增加用户等方面来学习一些
MYSQL
的常用命令。
一、连接
MYSQL
格式:
mysql
-h主机地址 -u用户名 -p用户密码
1、例1:连接到本机上的
MYSQL
首先在打开DOS窗口,然后进入目录
mysql
bin,再键入命令
mysql
-uroot -p,回车后提示你输密码,如果刚安装好
MYSQL
,超级用户root是没有密码的,故直接回车即可进入到
MYSQL
中了,
MYSQL
的提示符是:
mysql
>
2、例2:连接到远程主机上的
MYSQL
假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql
-h110.110.110.110 -uroot -pabcd123
(注:u与root可以不用加空格,其它也一样)
3、退出
MYSQL
命令: exit (回车)
二、修改密码
格式:
mysql
admin -u用户名 -p旧密码 password 新密码
1、例1:给root加个密码ab12。首先在DOS下进入目录
mysql
bin,然后键入以下命令
mysql
admin -uroot -password ab12
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2、例2:再将root的密码改为djg345
mysql
admin -uroot -pab12 password djg345
MYSQL
常用命令(下)
一、操作技巧
1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把
一个
完整的命令分
成
几行来打,完后用分号作结束标志就OK。
2、你可以使用光标上下键调出以前的命令。但以前我用过的
一个
MYSQL
旧版本不支持。我现在用的是
mysql
-3.23.27-beta-win。
二、
显示
命令
1、
显示
数据
库列表。
show databases;
刚开始时才两个
数据
库:
mysql
和test。
mysql
库很重要它里面有
MYSQL
的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
2、
显示
库中的
数据
表:
use
mysql
; //打开库,学过FOXBASE的一定不会陌生吧
show tables;
3、
显示
数据
表的结构:
describe 表名;
4、建库:
create database 库名;
5、建表:
use 库名;
create table 表名 (
字段
设定列表);
6、删库和删表:
drop database 库名;
drop table 表名;
7、将表中记录清空:
delete from 表名;
8、
显示
表中的记录:
select * from 表名;
三、
一个
建库和建表以及插入
数据
的实例
drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default '深圳',
year date
); //建表结束
//以下为插入
字段
insert into teacher values('','glchengang','深圳一中','1976-10-10');
insert into teacher values('','jack','深圳一中','1975-12-23');
注:在建表中(1)将ID设为长度为3的数字
字段
:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他
成
为主
字段
primary key
(2)将NAME设为长度为10的字符
字段
(3)将ADDRESS设为长度50的字符
字段
,而且缺省值为深圳。varchar和char有什么区别呢,只有等以后的文章再说了。
(4)将YEAR设为日期
字段
。
如果你在
mysql
提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入
一个
文本文件中假设为school.sql,然后复制到c:\下,并在DOS状态进入目录\
mysql
\bin,然后键入以下命令:
mysql
-uroot -p密码 school.bbb
注释:将
数据
库school备份到school.bbb文件,school.bbb是
一个
文本文件,文件名任取,打开看看你会有新发现。
一.SELECT语句的完整语法为:
SELECT[ALL|DISTINCT|DISTINCTROW|TOP]
{*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]}
FROM tableexpression[,…][IN externaldatabase]
[WHERE…]
[GROUP BY…]
[HAVING…]
[ORDER BY…]
[WITH OWNERACCESS OPTION]
用中括号([])括起来的部分表示是可选的,用大括号({})括起来的部分是表示必须从中选择其中的
一个
。
1 FROM子句
FROM 子句指定了SELECT语句中
字段
的来源。FROM子句后面是包含
一个
或多个的表达式(由逗号分开),其中的表达式可为单一表名称、已保存的
查询
或由 INNER JOIN、LEFT JOIN 或 RIGHT JOIN 得到的复合结果。如果表或
查询
存储在外部
数据
库,在IN 子句之后指明其完整路径。
例:下列SQL语句返回所有有定单的客户:
SELECT OrderID,Customer.customerID
FROM Orders Customers
WHERE Orders.CustomerID=Customers.CustomeersID
2 ALL、DISTINCT、DISTINCTROW、TOP谓词
(1) ALL 返回满足SQL语句条件的所有记录。如果没有指明这个谓词,默认为ALL。
例:SELECT ALL FirstName,LastName
FROM Employees
(2) DISTINCT 如果有多个记录的选择
字段
的
数据
相同,只返回
一个
。
(3) DISTINCTROW 如果有重复的记录,只返回
一个
(4) TOP
显示
查询
头尾若干记录。也可返回记录的百分比,这是要用 TOP N PERCENT子句(其中N 表示百分比)
例:返回5%定货额最大的定单
SELECT TOP 5 PERCENT*
FROM [ Order Details]
ORDER BY UnitPrice*Quantity*(1-Discount) DESC
3 用 AS 子句为
字段
取别名
如果想为返回的列取
一个
新的标题,或者,经过对
字段
的计算或总结之后,产生了
一个
新的值,希望把它放到
一个
新的列里
显示
,则用AS保留。
例:返回FirstName
字段
取别名为NickName
SELECT FirstName AS NickName ,LastName ,City
FROM Employees
例:返回新的一列
显示
库存价值
SELECT ProductName ,UnitPrice ,UnitsInStock ,UnitPrice*UnitsInStock AS valueInStock
FROM Products
二 .WHERE 子句指定
查询
条件
1 比较运算符
比较运算符 含义
= 大于等于
<= 小于等于
!> 不大于
!#1/1/96# AND OrderDate#96-1-1#
也可以表示为:
WHERE OrderDate>Datevalue(‘1/1/96’)
使用 NOT 表达式求反。
例:查看96年1月1日以后的定单
WHERE Not OrderDateQuantity
另一种方法是用 Microsof JET SQL 独有的 JNNER JOIN
FROM table1 INNER JOIN table2
ON table1.field1 comparision table2.field2
其中comparision 就是前面WHERE子句用到的比较运算符。
SELECT FirstName,lastName,OrderID,CustomerID,OrderDate
FROM Employees
INNER JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID
INNER JOIN不能连接Memo OLE Object Single Double
数据
类型
字段
。
在
一个
JOIN语句中连接多个ON子句
SELECT fields
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field1 AND
ON table1.field2 compopr table2.field2 OR
ON table1.field3 compopr table2.field3
SELECT fields
FROM table1 INNER JOIN
(table2 INNER JOIN [( ]table3
[INNER JOER] [( ]tablex[INNER JOIN]
ON table1.field1 compopr table2.field1
ON table1.field2 compopr table2.field2
ON table1.field3 compopr table2.field3
外部连接返回更多记录,在结果中保留不匹配的记录,不管存不存在满足条件的记录都要返回另一侧的所有记录。
FROM table [LEFT|RIGHT]JOIN table2
ON table1.field1comparision table.field2
用左连接来建立外部连接,在表达式的左边的表会
显示
其所有的
数据
例:不管有没有定货量,返回所有商品
SELECT ProductName ,OrderID
FROM Products
LEFT JOIN Orders ON Products.PrductsID=Orders.ProductID
右连接与左连接的差别在于:不管左侧表里有没有匹配的记录,它都从左侧表中返回所有记录。
例:如果想了解客户的信息,并统计各个地区的客户分布,这时可以用
一个
右连接,即使某个地区没有客户,也要返回客户信息。
空值不会相互匹配,可以通过外连接才能测试被连接的某个表的
字段
是否有空值。
SELECT *
FROM talbe1
LEFT JOIN table2 ON table1.a=table2.c
1 连接
查询
中使用Iif函数实现以0值
显示
空值
Iif表达式: Iif(IsNull(Amount,0,Amout)
例:无论定货大于或小于¥50,都要返回
一个
标志。
Iif([Amount]>50,?Big order?,?Small order?)
五. 分组和总结
查询
结果
在SQL的语法里,GROUP BY和HAVING子句用来对
数据
进行汇总。GROUP BY子句指明了按照哪几个
字段
来分组,而将记录分组后,用HAVING子句过滤这些记录。
GROUP BY 子句的语法
SELECT fidldlist
FROM table
WHERE criteria
[GROUP BY groupfieldlist [HAVING groupcriteria]]
注:Microsoft Jet
数据
库 Jet 不能对备注或OLE对象
字段
分组。
GROUP BY
字段
中的Null值以备分组但是不能被省略。
在任何SQL合计函数中不计算Null值。
GROUP BY子句后最多可以带有十个
字段
,排序优先级按从左到右的顺序排列。
例:在‘WA’地区的雇员表中按头衔分组后,找出具有同等头衔的雇员数目大于1人的所有头衔。
SELECT Title ,Count(Title) as Total
FROM Employees
WHERE Region = ‘WA’
GROUP BY Title
HAVING Count(Title)>1
JET SQL 中的聚积函数
聚集函数 意义
SUM ( ) 求和
AVG ( ) 平均值
COUNT ( ) 表达式中记录的数目
COUNT (* ) 计算记录的数目
MAX 最大值
MIN 最小值
VAR 方差
STDEV 标准误差
FIRST 第
一个
值
LAST 最后
一个
值
六. 用Parameters声明创建参数
查询
Parameters声明的语法:
PARAMETERS name datatype[,name datatype[, …]]
其中name 是参数的标志符,可以通过标志符引用参数.
Datatype说明参数的
数据
类型.
使用时要把PARAMETERS 声明置于任何其他语句之前.
PARAMETERS[Low price] Currency,[Beginning date]datatime
SELECT OrderID ,OrderAmount
FROM Orders
WHERE OrderAMount>[low price]
AND OrderDate>=[Beginning date]
七. 功能
查询
所谓功能
查询
,实际上是一种操作
查询
,它可以对
数据
库进行快速高效的操作.它以选择
查询
为目的,挑选出符合条件的
数据
,再对
数据
进行批处理.功能
查询
包括更新
查询
,删除
查询
,添加
查询
,和生
成
表
查询
.
1 更新
查询
UPDATE子句可以同时更改
一个
或多个表中的
数据
.它也可以同时更改多个
字段
的值.
更新
查询
语法:
UPDATE 表名
SET 新值
WHERE 准则
例:英国客户的定货量增加5%,货运量增加3%
UPDATE OEDERS
SET OrderAmount = OrderAmount *1.1
Freight = Freight*1.03
WHERE ShipCountry = ‘UK’
2 删除
查询
DELETE子句可以使用户删除大量的过时的或冗于的
数据
.
注:删除
查询
的对象是整个记录.
DELETE子句的语法:
DELETE [表名.*]
FROM 来源表
WHERE 准则
例: 要删除所有94年前的定单
DELETE *
FROM Orders
WHERE OrderData<#94-1-1#
3 追加
查询
INSERT子句可以将
一个
或一组记录追加到
一个
或多个表的尾部.
INTO 子句指定接受新记录的表
valueS 关键字指定新记录所包含的
数据
值.
INSERT 子句的语法:
INSETR INTO 目的表或
查询
(
字段
1,
字段
2,…)
valueS(数值1,数值2,…)
例:增加
一个
客户
INSERT INTO Employees(FirstName,LastName,title)
valueS(‘Harry’,’Washington’,’Trainee’)
4 生
成
表
查询
可以一次性地把所有满足条件的记录拷贝到一张新表中.通常制作记录的备份或副本或作为报表的基础.
SELECT INTO子句用来创建生
成
表
查询
语法:
SELECT
字段
1,
字段
2,…
INTO 新表[IN 外部
数据
库]
FROM 来源
数据
库
WHERE 准则
例:为定单制作
一个
存档备份
SELECT *
INTO OrdersArchive
FROM Orders
八. 联合
查询
UNION运算可以把多个
查询
的结果
合并
到
一个
结果集里
显示
.
UNION运算的一般语法:
[表]
查询
1 UNION [ALL]
查询
2 UNION …
例:返回巴西所有供给商和客户的名字和城市
SELECT CompanyName,City
FROM Suppliers
WHERE Country = ‘Brazil’
UNION
SELECT CompanyName,City
FROM Customers
WHERE Country = ‘Brazil’
缺省的情况下,UNION子句不返回重复的记录.如果想
显示
所有记录,可以加ALL选项
UNION运算要求
查询
具有相同数目的
字段
.但是,
字段
数据
类型不必相同.
每
一个
查询
参数中可以使用GROUP BY 子句 或 HAVING 子句进行分组.要想以指定的顺序来
显示
返回的
数据
,可以在最后
一个
查询
的尾部使用OREER BY子句.
九. 交叉
查询
交叉
查询
可以对
数据
进行总和,平均,计数或其他总和计算法的计算,这些
数据
通过两种信息进行分组:
一个
显示
在表的左部,另
一个
显示
在表的顶部.
Microsoft Jet SQL 用TRANSFROM语句创建交叉表
查询
语法:
TRANSFORM aggfunction
SELECT 语句
GROUP BY 子句
PIVOT pivotfield[IN(value1 [,value2[,…]]) ]
Aggfounction指SQL聚积函数,
SELECT语句选择作为标题的的
字段
,
GROUP BY 分组
Pivotfield 在
查询
结果集中创建列标题时用的
字段
或表达式,用可选的IN子句限制它的取值.
value代表创建列标题的固定值.
例:
显示
在1996年里每一季度每一位员工所接的定单的数目:
TRANSFORM Count(OrderID)
SELECT FirstName&’’&LastName AS FullName
FROM Employees INNER JOIN Orders
ON Employees.EmployeeID = Orders.EmployeeID
WHERE DatePart(“yyyy”,OrderDate)= ‘1996’
GROUP BY FirstName&’’&LastName
ORDER BY FirstName&’’&LastName
POVOT DatePart(“q”,OrderDate)&’季度’
十 .子
查询
子
查询
可以理解为 套
查询
.子
查询
是
一个
SELECT语句.
1 表达式的值与子
查询
返回的单一值做比较
表达式 comparision [ANY|ALL|SOME](子
查询
)
ANY 和SOME谓词是同义词,与比较运算符(=,,,=)一起使用.返回
一个
布尔值True或 False.ANY的意思是,表达式与子
查询
返回的一系列的值逐一比较,只要其中的一次比较产生True结果,ANY测试的返回 True值(既WHERE子句的结果),
对应
于该表达式的当前记录将进入主
查询
的结果中.ALL测试则要求表达式与子
查询
返回的一系列的值的比较都产生 True结果,才回返回True值.
例:主
查询
返回单价比任何
一个
折扣大于等于25%的产品的单价要高的所有产品
SELECT * FROM Products
WHERE UnitPrice>ANY
(SELECT UnitPrice FROM[Order Details] WHERE Discount>0.25)
2 检查表达式的值是否匹配子
查询
返回的一组值的某个值
[NOT]IN(子
查询
)
例:返回库存价值大于等于1000的产品.
SELECT ProductName FROM Products
WHERE ProductID IN
(SELECT PrdoctID FROM [Order DEtails]
WHERE UnitPrice*Quantity>= 1000)
3检测子
查询
是否返回任何记录
[NOT]EXISTS (子
查询
)
例:用EXISTS检索英国的客户
SELECT ComPanyName,ContactName
FROM Orders
WHERE EXISTS
(SELECT *
FROM Customers
WHERE Country = ‘UK’ AND
Customers.CustomerID= Orders.CustomerID)
SELECT GROUP_CONCAT(DISTINCT ct.ch_name) from cd_tag_mod ctm left join cd_tag ct on ctm.tag_id =ct.tag_id WHERE ctm.con_id='2050' GROUP BY ctm.con_id
GROUP_CONCAT函...
from user a
left join school b on a.id=b.userId
一个
用户
对应
多个学校查出
多条
数据
,把用户提出来,多个学校变
成
数组
查询
出来:
例:用户:
用户名:,
用户id:,
用户密码:,
schoolChild:{
学校名: ,
学校地点:
学校名: ,
书名:《PHP开发实战1200例(第I卷)》(清华大学出版社.潘凯华.刘中华)
PDF格式扫描版,全书分为5篇15章,共899页。2011年1月出版。
全书压缩打包
成
2部分,这是第1部分。
注:本系列图书的第I、II卷再版时均相应改名为《xxx开发实例大全》(基础卷)及(提高卷),但内容基本无变化,需要的童鞋可自由匹配查找。
《PHP开发实战1200例》分为I、II两卷共计1200个例子,包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;书中实例来源于多位工程师的多年积累,具有很强的实用性。
本书是第I卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用PHP进行Web开发的各个方面的知识和技巧,主要包括开发环境、PHP基础、Web页面交互、文件操作、会话应用、图形图像处理及面向对象等内容。本书分为5篇15章,共计625个实例和625个经验技巧。每个实例都经作者精心筛选,具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案。
本书适合PHP的初学者,如高校学生、求职人员作为练习、速查、学习使用,也适合PHP程序员参考、查阅。
目录: 第1篇 基础篇
第1章 开发环境 2
1.1 AppServ——PHP集
成
化安装包 3
实例001 通过AppServ配置PHP开发环境 3
实例002 AppServ应用技巧 6
实例003 第1个PHP程序 7
1.2 XAMPP——PHP集
成
化安装包 8
实例004 通过XAMPP配置PHP开发环境 8
实例005 测试XAMPP是否安装
成
功 11
实例006 XAMPP应用技巧 12
实例007 第2个PHP程序 13
1.3 IIS+PHP+
MySQL
——独立搭建PHP
开发环境 14
实例008 安装PHP 14
实例009 安装
MySQL
15
实例010 安装IIS 21
实例011 第3个PHP程序 23
1.4 LAMP——独立配置PHP开发环境 24
实例012 安装Apache服务器 24
实例013 安装
MySQL
数据
库服务器 26
实例014 安装PHP.50 28
实例015 第4个PHP程序 30
1.5 XAMPP——Linux版PHP集
成
化安装包 31
实例016 XAMPP——Linux下PHP开发环境的集
成
化 31
实例017 Linux操作系统下启动XAMPP 32
实例018 设置
MySQL
数据
库root用户的密码 33
实例019 第5个PHP程序 34
1.6 Dreamweaver开发工具 35
实例020 Dreamweaver中编码格式的选择 35
实例021 Dreamweaver中创建表格 36
实例022 在表格中插入宠物照片 38
实例023 Dreamweaver创建表单 40
实例024 Dreamweaver中创建和附加CSS样式 42
实例025 Dreamweaver控制弹出信息 45
实例026 Dreamweaver控制浏览器的窗口 46
实例027 通过Dreamweaver创建站点 47
实例028 通过Dreamweaver开发第1个PHP程序 48
1.7 Zend Studio开发工具 50
实例029 安装Zend Studio 50
实例030 Zend Studio创建PHP项目 52
实例031 Zend Studio编码格式的转换 56
实例032 Zend Studio中快捷键的运用 57
实例033 Zend Studio中部署Apache服务器 60
第2章 PHP基础 63
2.1 基本语法 64
实例034 在页面中打印PHP的配置信息 64
实例035 在页面中打印服务器时间 65
实例036 在页面中打印当前执行的PHP文件名 67
实例037 区分单引号和双引号 68
实例038 动态输出JavaScript代码 69
实例039 当数字遇到了字符串 70
实例040 PHP程序员的基础——变量的应用 72
实例041 打印系统环境变量信息print_r($_ENV) 73
实例042 使用可变变量输出“I Like PHP!” 73
实例043 使用转义字符输出特殊字符 74
实例044 使用常量指定PI的值计算圆的面积 75
2.2 运算符 75
实例045 自定义数字的加密/解密算法 76
实例046 比较两个时间戳的大小 77
实例047 使用条件运算符判断数字的奇偶性 78
实例048 判断用户是否具有后台管理权限 79
实例049 打印随机组合生日祝福语 80
实例050 打印2000~2020年的所有闰年 81
实例051 前置运算符和后置运算符的区别 82
实例052 使用位运算对数字进行加密和解密 83
2.3 包含语句 84
实例053 提高代码重用率 84
实例054 包含
数据
库连接文件 85
实例055 包含网站头文件 86
实例056 包含网站尾文件 87
实例057 包含网站的主文件 88
2.4 条件语句 89
实例058 员工生日提醒 89
实例059 考试
成
绩评定标准 90
实例060 控制登录用户权限 91
实例061 网页框架的制作 92
实例062 图片验证码 93
实例063 健康生活提醒 95
2.5 循环控制 96
实例064 员工生日列表 96
实例065 员工详细信息浏览 97
实例066 员工信息的批量删除 98
实例067 表格的动态创建 99
实例068 SESSION购物车中
数据
的读取 100
实例069 员工信息的管理 102
实例070 网页版九九乘法表 104
实例071 读取数组购物车中的
数据
105
实例072 图像验证码的生
成
106
2.6 跳转语句 107
实例073 控制页面中表情图的输出 107
实例074 控制页面中
数据
的输出数量 108
实例075 动态改变页面中单元格的背景颜色 109
实例076 屏蔽偶数次的
数据
输出 110
实例077 跳过
数据
输出中指定的记录 111
实例078 执行指定次数的循环 112
2.7 自定义函数 113
实例079 自定义函数截取中文字符串 113
实例080 公告标题的截取 114
实例081 论坛内容的简短输出 116
实例082 自定义函数过滤字符串 117
2.8 字符串 118
实例083 过滤论坛帖子中的空白和特殊字符 118
实例084 对论坛帖子的内容进行转义 119
实例085 还原论坛中帖子的内容 120
实例086 截取论坛标题 121
实例087 分割、合
成
字符串 121
实例088
查询
关键字描红 122
实例089 统计
查询
关键字的出现次数 123
实例090 获取上传文件的后缀 124
实例091 统一上传文件名称的大小写 125
实例092 论坛中直接输出HTML脚本 126
实例093 统计帖子标题的长度 127
实例094 计算论坛帖子的字节数 128
实例095 实现帖子内容的定位查找 129
实例096 去除帖子标题的首尾空格 129
实例097 货币
数据
的格式化输出 130
实例098 日期、时间的格式化输出 131
实例099 比对论坛中帖子的相似度 132
实例100 对用户注册的密码进行加密和解密 132
实例101 保护URL地址中传递的参数 133
实例102 解析URL地址中传递的编码参数 134
实例103 转义帖子中的特殊字符 135
实例104 获取任意字符的ASCII码 136
实例105 查找指定ASCII码
对应
的字符 136
实例106 合理定义上传文件的名称 137
实例107 通过异或方式对用户注册密码进行加密 139
实例108 统一英文注册用户首字母的大小写 139
实例109 字符串与数字之间的转换 140
实例110 通过正则表达式对字符串进行匹配查找 141
实例111 通过IP地址查找主机所在地 142
实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143
实例113 字符串与HTML标记相互转换 144
实例114 运用PHP 5.0新型字符串输出XML
数据
145
实例115 判断字符串中是否存在指定子串 146
2.9 正则表达式 147
实例116 验证电话号码的格式是否正确 147
实例117 验证Email地址格式是否正确 148
实例118 验证IP地址是否有效 149
实例119 统计关键字的
查询
结果 150
实例120 计算
查询
操作的执行时间 151
实例121
查询
关键字描红 152
实例122 判断上传文件的类型 153
实例123 判断邮政编码格式是否正确 154
2.10 数组 154
实例124 创建并输出数组 155
实例125 统计数组元素个数 156
实例126 向数组中添加元素 156
实例127 将数组中指定索引位置的元素替换 157
实例128 获取数组中最后
一个
元素 158
实例129 去除数组中的重复元素 158
实例130 字符串与数组的转换 159
实例131 对数组元素进行随机排序 160
实例132 随机抽取数组中元素 161
实例133 二维数组的输出 162
实例134 获取数组当前的键名和值 162
实例135 检测数组中是否存在某个值 163
实例136 获取数组中的当前单元 164
实例137 从数组中随机取出元素 165
实例138
合并
数组 166
实例139 拆分数组 167
实例140 遍历数组 168
2.11 日期和时间 169
实例141 设置系统的当前时间 169
实例142 将日期和时间转换为时间戳 170
实例143 获取系统中的特定日期和时间 171
实例144 比较时间的大小 172
实例145 计算考试时间 173
实例146 倒计时 173
实例147 网页闹钟 174
实例148 计算程序运行时间 176
第3章 Web页面交互 178
3.1 获取表单元素的值 179
实例149 设计论坛登录界面 179
实例150 可以上传图片的表单 180
实例151 通过POST方法提交表单元素 182
实例152 通过$_POST方法获取表单元素 182
实例153 通过GET方法提交表单元素 184
实例154 通过$_GET方法获取表单元素 185
3.2 文本框组件的应用 186
实例155 以文本域的形式
显示
数据
信息 186
实例156 限制多行文本域输入的字符个数 187
实例157 设置文本框的只读属性 188
实例158 自动计算金额 189
实例159 为文本框设置默认值 190
实例160 设置文本框的样式 191
实例161 文本域的滚动条 192
3.3 下拉列表的应用 193
实例162 省市级联动菜单 193
实例163 省市县级联动菜单 194
实例164 应用下拉列表选择所要联机的网站 196
实例165 可输入字符的下拉菜单 197
实例166 设置下拉列表的默认值 198
实例167 设置下拉列表的样式 199
实例168 下拉列表打开窗口 200
实例169 Tab键在文本域中的体现 201
3.4 表单元素的动态操作 203
实例170 投票系统中单选按钮与复选框的应用 203
实例171 选中单选按钮后
显示
其他表单元素 205
实例172 不提交表单获取单选按钮的值 207
实例173 实现复选框中的全选、反选和不选 208
实例174 隐藏域提交用户的ID值 210
实例175 图像域替代提交按钮 211
实例176 跳转菜单实现页面跳转 213
实例177 上传图片预览 214
实例178 去掉下拉选项的边框 215
实例179 修改表单属性为弹出窗口 216
实例180 表单输入单元的文字设置 217
实例181 表单输入单元单击删除 218
实例182 表单文本输入的移动选择 219
实例183 通过下拉列表选择头像 220
3.5 CSS+DIV页面布局 222
实例184 应用CSS+DIV实现无边框窗口 222
实例185 设置表格样式 224
实例186 设置图片的样式 225
实例187 滚动条样式 226
实例188 设置表单样式 227
实例189 设置超链接的样式 229
实例190 设置body的样式 230
实例191 模拟的进度条 231
实例192
标签设计用户注册页面 232
实例193 div标签设计论坛帖子浏览页面 234
实例194
标签设计论坛后台管理页面 236
实例195
标签设计页面布局 237
实例196 页面布局(2列左窄右宽高度自适应) 240
实例197 页面布局(2列固定宽度+头部+导航+尾部) 242
实例198 页面布局(3列左右侧固定中间自适应居中) 244
实例199 页面布局(2列右侧固定左侧自适应宽度) 247
实例200 页面布局(2列左固定右自适宽度+底平齐) 249
实例201 页面布局(2列右固定左自适宽度+底平齐) 252
3.6 弹出窗口 254
实例202 弹出指定尺寸的无边框窗口 254
实例203 全屏
显示
无边框有滚动条窗口 255
实例204 网页拾色器 257
实例205 日期选择器 259
实例206 弹出全屏
显示
的网页模式对话框 261
实例207 关闭IE主窗口时不弹出询问对话框 262
实例208 弹出提示对话框并重定向网页 263
实例209 自动关闭的广告窗口 264
实例210 在弹出的对话框中选择个性头像 265
实例211 浮动的广告窗口 266
实例212 在页面右下角弹出渐显的广告窗口 268
3.7 状态栏设计 269
实例213 跑马灯文字 269
实例214 状态栏中的收缩
显示
文字 270
实例215 状态栏中
显示
数字时钟 271
3.8 导航菜单设计 272
实例216 树状导航菜单 272
实例217 收缩式导航菜单 274
实例218 展开式导航菜单 276
实例219 解释型菜单 277
实例220 半透明背景的下拉菜单 277
实例221 二级导航菜单 279
实例222 导航条的动画效果 281
第2篇 常用技术篇
第4章 文件操作 284
4.1 文件上传 285
实例223 以二进制形式上传文件到
数据
库 285
实例224 上传文件到服务器 287
实例225 限制上传文件的大小 288
实例226 限制上传文件的类型 291
实例227 上传多个文件到服务器 292
4.2 文件下载 294
实例228 通过链接方式下载 294
实例229 通过header函数进行下载 295
4.3 文件遍历 296
实例230 读取整个文件的内容 296
实例231 文本文件的分页读取 298
4.4 文件操作 300
实例232 文件操作汇总 300
实例233 目录、文件定位器 302
实例234 改头换面 303
实例235 文件属性分析 304
实例236 文件类型检测 306
实例237 判断文件的权限 308
实例238 从文本文件中读取注册服务条款 309
实例239 可以屏蔽刷新功能的文本计数器 310
实例240 判断文件是否被修改 312
实例241 重新定义上传文件的名称 313
实例242 读取远程文件中的
数据
314
实例243 删除指定目录下的所有.ini文件 315
实例244 将文本文件中
数据
存储到
数据
库中 316
4.5 文件的压缩与解压 318
实例245 PHP中压缩RAR文件 319
实例246 PHP中将上传文件转换
成
RAR文件 320
实例247 PHP中对RAR文件进行解压 321
实例248 PHP中压缩ZIP文件 322
实例249 PHP中解压ZIP文件 323
4.6 目录操作 323
实例250 目录操作汇总 324
实例251 重新定义目录的名称 326
实例252 获取磁盘分区的大小 327
实例253 遍历指定目录下的所有文件 329
实例254 遍历、删除指定目录下的所有文件 330
第5章 会话应用 333
5.1 COOKIE 334
实例255 控制登录用户的过期时间 334
实例256 自动登录 335
实例257 单击登录 336
实例258 统计用户在线时间 339
实例259 限制用户访问网站的时间 340
实例260 用户来访时客户端创建COOKIE 341
实例261 删除客户端的COOKIE 343
实例262 使客户端浏览器支持COOKIE 344
5.2 SESSION 345
实例263 掌控登录用户的权限 346
实例264 屏蔽页面刷新对计数器的影响 347
实例265 在不同页面之间传递
数据
348
实例266 SESSION购物车 350
实例267 解决SESSION中的常见问题 353
实例268 控制页面的访问权限 354
实例269 将SESSION
数据
存储到
数据
库中 355
实例270 SESSION更换聊天室界面 357
实例271 清理SESSION缓存提高网站访问的效率 358
第6章 图形图像处理 361
6.1 图像与统计 362
实例272 图形计数器 362
实例273 GD2图形计数器 363
实例274 通过图像
显示
投票统计结果 365
实例275 通过图像
显示
密码安全强度 367
实例276 数字图像验证码 369
实例277 中文图像验证码 370
实例278 缩略图艺术库 371
实例279 提取图像的EXIF信息 374
6.2 控制、
显示
图片特性 376
实例280 通过鼠标滑轮控制图片大小 376
实例281
显示
随机图像 377
实例282 获取页面中图像的实际尺寸 378
实例283 图像的手动播放 379
实例284 图像的自动播放 380
实例285 任意调整上传图片的大小 381
实例286 Apache防盗链技术 383
实例287 通过SESSION变量防盗链 385
6.3 Jpgraph类库 386
实例288 柱形图分析产品月销售量 386
实例289 柱形图展示年度收支情况 388
实例290 柱状图展示编程词典6、7月份销售量 390
实例291 柱状图展示编程词典上半年销量 391
实例292 柱形图展示2009年上半年总销售额 393
实例293 柱形图展示2009年第一季度编程词典销量 394
实例294 折线图分析网站一天内的访问走势 396
实例295 柱形图与折线图分析图书销量和市场占有率 398
实例296 折线图分析2009年牛肉市场价格走势 399
实例297 折线图分析2009年销售额 400
实例298 柱形图分析编程词典销售比例 402
实例299 饼形图分析2009年图书销量 403
实例300 饼形图展示各语言编程词典销售比例 404
实例301 多饼形图区块分析2009年图书销量 406
实例302 多饼形图分析2009年上半年编程词典销量 407
实例303 环饼形图分析2009年图书销量 408
6.4 GD2函数库 410
实例304 绘制基本的几何图形 410
实例305 GD2函数填充几何图形 411
实例306 GD2函数输出英文字符串 412
实例307 GD2函数在照片上添加文字 413
实例308 GD2函数为图片添加文字水印 415
实例309 GD2函数为图片添加图像水印 416
实例310 GD2函数生
成
图形验证码 417
实例311 GD2函数折线图分析网站月访问量走势 419
实例312 GD2函数柱形图分析编程词典满意度调查 421
实例313 GD2函数饼形图分析图书市场的份额 422
第7章 面向对象 425
7.1 类的定义 426
实例314 使用类的属性保存
数据
库连接参数 426
实例315
数据
库连接类中定义
数据
库连接方法 427
实例316
数据
统计类中定义求数值平均值的方法 429
实例317 使用重载实现不同类型
数据
的运算 430
实例318 使用$this关键字调用汽车类自身的方法 431
实例319 使用self关键字调用学生类自身的静态方法 433
实例320 调用汽车类中的刹车方法和颜色属性 435
实例321 学生类中使用构造方法为学生信息初始化 436
实例322 圆类中使用const关键字定义圆周率类常量 437
7.2 类的访问修饰符 439
实例323 汽车类使用public关键字定义汽车的行驶方法 439
实例324 使用private关键字定义汽车的颜色属性 440
实例325 使用protected关键字定义汽车的保修年限 441
7.3 类的继承 442
实例326 苹果子类继承水果父类 442
实例327 使用parent关键字调用父类的方法 444
实例328 苹果子类中覆盖水果父类中的方法 445
7.4 抽象类和接口 446
实例329 美食抽象类 447
实例330 学生类多重接口的实现 448
7.5 类的多态 450
实例331 通过继承实现多态 450
实例332 通过接口实现多态 451
7.6 常用关键字 453
实例333 使用final关键字防止类被继承 453
实例334 使用static关键字定义类的静态
成
员 454
实例335 使用clone关键字实现对象的克隆 456
实例336 检测当前对象属于哪个类 458
7.7 魔术方法 459
实例337 使用__set()方法为类中未声明的属性赋值 459
实例338 使用__get()方法获取未定义属性的名称 461
实例339 使用__call()方法打印类中未定义方法的信息 462
实例340 使用__toString()方法将类的实例转化为字符串 463
实例341 使用__isset()方法提示未定义属性信息 464
实例342 使用__unset()方法提示未定义属性信息 466
实例343 使用__autoload()方法自动导入类文件 467
7.8 设计模式 468
实例344 使用单例模式制作
数据
库管理类 468
实例345 使用策略模式打印客户端浏览器类型 470
实例346 使用工厂模式设置用户访问权限 472
第3篇
数据
库篇
第8章
MySQL
数据
库与PHP 478
8.1
MySQL
服务器的启动和关闭 479
实例347 启动
MySQL
服务器 479
实例348 连接
MySQL
服务器 480
实例349 关闭
MySQL
服务器 481
8.2
MySQL
数据
库 482
实例350 创建PHP图书
数据
库 482
实例351 选择PHP图书
数据
库 483
实例352 删除PHP图书
数据
库 484
8.3
MySQL
数据
表 485
实例353 在PHP图书
数据
库中创建图书信息表 485
实例354 查看图书信息表 486
实例355 修改图书信息表 487
实例356 重命名图书信息表 488
实例357 删除图书信息表 489
8.4
MySQL
数据
489
实例358 向图书信息表中添加
数据
489
实例359 修改图书信息表中的
数据
490
实例360 删除图书信息表中所有
数据
492
实例361 删除图书信息表中指定
数据
493
8.5 PHP操作
MySQL
数据
库 494
实例362
mysql
_connect()函数连接
MySQL
服务器 494
实例363
mysql
_select_db()函数选择
MySQL
数据
库 495
实例364
mysql
_query()函数执行SQL语句 496
实例365
mysql
_fetch_array()函数将结果返回到数组中 497
实例366
mysql
_fetch_row()函数从结果集中获取
数据
499
实例367
mysql
_num_rows()函数获取结果集中记录数 500
实例368
mysql
_result()函数获取结果
数据
501
实例369 Insert语句添加图书信息 502
实例370 Select语句
查询
图书信息 503
实例371 分页
显示
图书信息 505
实例372 Update语句更新图书信息 506
实例373 图书信息的批量更新 508
实例374 Delete语句删除图书信息 510
实例375
数据
信息的批量删除 511
实例376 避免输出中文字符串时出现乱码 512
实例377 动态创建
MySQL
数据
库 514
实例378 动态创建
数据
表 515
实例379 动态创建
MySQL
数据
字段
516
8.6 SQL
查询
语句 518
实例380
查询
数值型
数据
518
实例381
查询
字符串 519
实例382
查询
日期型
数据
520
实例383
查询
逻辑型
数据
521
实例384
查询
非空
数据
522
实例385 利用变量
查询
数值型
数据
523
实例386 利用变量
查询
字符串
数据
524
实例387
查询
前n条记录 526
实例388
查询
后n条记录 527
实例389
查询
从指定位置的n条记录 528
实例390
查询
统计结果中的前n条记录 529
实例391
查询
指定时间段的
数据
530
实例392 按月
查询
统计
数据
531
实例393
查询
大于指定条件的记录 533
实例394
查询
结果不
显示
重复记录 534
实例395 NOT与谓词进行组合条件的
查询
535
实例396
显示
数据
表中的重复记录和记录条数 536
实例397 对
数据
进行降序
查询
537
实例398 对
数据
进行
多条
件排序 538
实例399 对统计结果进行排序 539
实例400 单列
数据
分组统计 540
实例401 多列
数据
分组统计 541
实例402 多表分组统计 542
实例403 使用聚集函数sum()对学生
成
绩进行汇总 543
实例404 使用聚集函数avg求学生的平均
成
绩 545
实例405 使用聚集函数min()求利润最少的商品 546
实例406 使用聚集函数max()求销售利润最高的商品 547
实例407 使用聚集函数count()求利润大于某值的
数据
548
实例408 聚集函数first()和last()的使用 549
8.7 多表
查询
551
实例409 使用select子句进行多表
查询
551
实例410 使用表的别名进行多表
查询
552
实例411
合并
多个结果集 553
实例412 简单的嵌套
查询
554
实例413 复杂的嵌套
查询
555
实例414 嵌套
查询
在
查询
统计中的应用 556
实例415 使用子
查询
作派生的表 558
实例416 使用子
查询
作表达式 559
实例417 使用子
查询
关联
数据
560
实例418 多表联合
查询
561
实例419 对联合
查询
后的结果进行排序 562
实例420 条件联合语句 563
实例421 简单内连接
查询
564
实例422 复杂内连接
查询
565
实例423 两表的内连接关联 566
实例424 使用外连接进行多表联合
查询
567
实例425 left outer join
查询
568
实例426 right outer join
查询
569
实例427 利用in或notin关键字限定范围 570
实例428 用in
查询
表中的记录信息 571
实例429 由in引入的关联子
查询
572
实例430 利用transform分析
数据
573
实例431 利用transform动态分析
数据
574
实例432 使用格式化函数转换
查询
条件的
数据
类型 575
实例433 在
查询
中使用字符串函数 577
实例434 在
查询
中使用日期函数 578
实例435 利用having语句过滤分组
数据
580
8.8
数据
的导入和导出 581
实例436
MySQL
数据
自身的导入和导出 581
实例437 SQL Server
数据
导入到
MySQL
数据
库 582
实例438 Access
数据
导入到
MySQL
数据
库中 584
8.9
MySQL
数据
库的备份和恢复 586
实例439 通过命令模式备份
数据
库 586
实例440 通过phpMyAdmin备份
数据
库 587
实例441 通过手动方式备份
数据
库 588
实例442 通过命令模式恢复
数据
库 589
实例443 通过phpMyAdmin恢复
数据
库 590
实例444 通过手动方式恢复
数据
库 591
8.10 phpMyAdmin图形化管理工具 591
实例445 通过phpMyAdmin修改
MySQL
用户密码 591
实例446 通过phpMyAdmin设置
数据
库、
数据
表编码 593
实例447 phpMyAdmin操作
数据
库 594
实例448 phpMyAdmin操作
数据
表 595
实例449 phpMyAdmin操作
数据
596
第9章
MySQL
高级应用技术 598
9.1 PHP的
MySQL
i扩展库 599
实例450 使用
MySQL
i扩展库连接
MySQL
数据
库 599
实例451 通过
mysql
i扩展库实现
数据
库信息的检索 600
实例452 查看服务器连接错误报告 602
实例453 通过
MySQL
i扩展库实现多表
查询
603
实例454 通过
MySQL
i扩展技术实现内存的回收 604
实例455 用户登录 606
实例456 用户注册 607
实例457
数据
的浏览 609
实例458
数据
库、
数据
表中
数据
的动态输出 611
9.2
MySQL
视图的应用 613
实例459 在
MySQL
数据
库中创建视图 613
实例460 修改
MySQL
数据
库中的视图 614
实例461 删除
MySQL
视图 616
实例462 使用
MySQL
视图
查询
学生
成
绩信息 617
9.3
MySQL
存储过程 618
实例463 创建
MySQL
存储过程 618
实例464 使用存储过程实现用户登录 619
实例465 使用存储过程实现用户注册 621
9.4
MySQL
触发器 622
实例466 创建
MySQL
触发器 622
实例467 查看
MySQL
触发器 623
9.5
MySQL
事务 624
实例468 使用事务处理技术实现关联表间信息的删除 624
实例469 使用事务处理技术实现银行的安全转账 626
第10章 PHP操作SQL Server
数据
库 628
10.1 连接
数据
库 629
实例470 通过ADO方式连接SQL Server
数据
库 629
实例471 mssql_connect()函数连接SQL Server
数据
库 630
10.2 操作
数据
库 631
实例472 通过ADO方式实现指定时间段的信息检索 632
实例473 检索商品信息 633
实例474 获取指定位置的图书信息 634
实例475 取得
数据
中指定的
字段
信息 635
实例476 利用mssql_field_name()函数获取
字段
名称 637
实例477 通过结果集对象输出
数据
638
实例478 通过结果集数组输出
数据
639
实例479 返回结果集中的单元内容 640
实例480 利用函数返回指定
字段
的长度 641
实例481 利用函数返回指定
字段
的类型 642
实例482 取得结果集中的
字段
数目 644
实例483 获取
数据
表中
数据
记录数 645
实例484 mssql_free_result()函数的应用 646
实例485 mssql_close()函数的应用 647
实例486 编写
数据
库连接类 648
实例487 添加图书类的实现 649
实例488 删除图书类的实现 651
实例489 更新图书类的实现 653
实例490 通过ADO方式实现输入页码跳转到指定页 655
实例491 利用mssql函数库实现指定页跳转 657
10.3 SQL Server
数据
库的综合应用 659
实例492 首页设计 659
实例493 网站模块导航设计 660
实例494 内容树状导航设计 663
实例495 内容展示区设计 666
10.4 SQL Server
数据
库的安全与维护 668
实例496 压缩
数据
库 668
实例497 收缩日志和
数据
669
实例498 备份
数据
库 670
实例499 备份事务日志 671
实例500 检查备份集 673
实例501 定时备份
数据
库 674
实例502
数据
库中
数据
的加密 675
实例503 SQL Server
数据
库的分离和附加 675
实例504 从SQL Server
数据
库导出到Excel表中 676
实例505 将
查询
到的
数据
导
成
一个
Excel文件 678
第11章 PHP操作Access
数据
库 679
11.1 连接
数据
库 680
实例506 通过COM类连接Access
数据
库 680
实例507 连接带密码的Access
数据
库 681
11.2 操作Access
数据
库 682
实例508 通用
数据
信息的
查询
682
实例509
查询
结果的分页
显示
684
实例510 用户身份验证类 686
实例511 图片的分栏
显示
687
实例512 插入图书信息 688
实例513 删除图书信息 689
11.3 Access
数据
库的安全 691
实例514 操作带密码的Access
数据
库 691
实例515 防止Access
数据
库被下载 693
11.4 Access
数据
库的综合运用 694
实例516 ADODB连接Access
数据
库 694
实例517 ADODB操作Access
数据
库 696
实例518 聊天室 698
实例519 聊天室管理 702
第12章 PHP操作Oracle
数据
库 704
12.1 连接Oracle
数据
库 705
实例520 oci_connect()函数连接Oracle
数据
库 705
实例521 ADODB连接Oracle
数据
库 707
实例522 删除Oracle
数据
库中
数据
710
12.2 操作Oracle
数据
库 711
实例523 员工信息的添加、更新和
查询
711
实例524 下拉列表框值的动态添加 713
实例525 统计
数据
库中
数据
的记录数 714
实例526 动态获取
数据
表中的
字段
和
数据
716
实例527 获取
数据
表中
字段
的详细信息 718
实例528 修改Oracle
数据
库用户的密码 719
实例529 应用事务处理技术确保操作的同步执行 720
实例530 通过PHP变量输出
数据
表中
数据
722
12.3 Oracle
数据
库应用 723
实例531 Oracle——管理员注册功能 723
实例532 Oracle——管理员登录 725
实例533 Oracle——管理员
数据
管理 727
实例534 Smarty+Adodb完
成
Oracle
数据
的分页
显示
729
实例535 Oracle——存储过程更新员工信息 732
12.4 Oracle
数据
的导入和导出 734
实例536 Oracle
数据
库中
数据
导出到文本文件 734
实例537 文本文件中
数据
导入到Oracle 735
第4篇 新技术篇
第13章 ADODB类库 738
13.1 封装ADODB操作类 739
实例538 ADODB连接
数据
库类 739
实例539 ADODB操作
数据
库类 741
实例540 ADODB分页类 743
13.2 ADODB的应用 745
实例541 ADODB分页技术 745
实例542 Adodb_pager类实现分页功能 746
实例543 ADODB操作结果集的方法 747
实例544 ADODB控制结果集的存取方法 750
实例545 一次连接两个
数据
库 751
实例546 ADODB连接
数据
库类 753
实例547 ADODB生
成
HTML表格 754
实例548 ADODB生
成
下拉列表框 755
实例549 事务处理机制保证
数据
库操作的完整性 756
13.3 ADODB中的错误处理 758
实例550 输出系统中执行的SQL语句 758
实例551 ErrorMsg返回错误信息 759
实例552 返回所有错误信息 760
实例553 将错误信息存储于日志文件中 761
13.4 ADODB操作
数据
库 762
实例554 应用ADODB访问Access
数据
库 762
实例555 应用ADODB访问
MySQL
数据
库 764
实例556 应用ADODB访问SQL Server
数据
库 765
第14章 Smarty模板 767
14.1 环境搭建 768
实例557 Smarty开发环境搭建 768
实例558 Smarty模板的配置 769
实例559 封装Smarty模板的配置方法 771
14.2 输出
数据
773
实例560 通过if语句判断当前用户的权限 773
实例561 Smarty模板中生
成
数字验证码 775
实例562 Smarty模板中的页面设计 776
实例563 Smarty模板中直接定义CSS样式 778
实例564 Smarty模板中嵌入JavaScript脚本 779
实例565 html_option函数向下拉列表中添加列表项 780
实例566 Smarty模板制作日期、时间选择器 782
14.3 综合应用 785
实例567 Smarty模板制作用户注册页面 785
实例568 Smarty模板制作后台管理系统主页 788
实例569 通过section循环输出
数据
790
实例570 Smarty模板中
数据
的分页
显示
792
实例571 Smarty+ADODB完
成
数据
的分页
显示
794
实例572 Smarty模板中日期、时间的格式化输出 797
实例573 Smarty模板中的编码 798
实例574 Smarty模板中应用正则表达式 799
实例575 Smarty模板中的关键字描红技术 801
实例576 Smarty模板中控制输出字符串的行宽 802
实例577 Register_object()方法注册模板对象 804
实例578 Register_function()方法注册模板函数 807
实例579 Smarty模板中truncate方法截取字符串 809
实例580 开启网站注册页面的缓存 811
实例581 通过配置文件定义变量 813
第5篇 综合应用篇
第15章 综合应用 816
15.1 PHP页面编码 817
实例582 设计GB2312编码格式的网页 817
实例583 设计GBK编码格式的网页 818
实例584 设计UTF-8编码格式的网页 819
实例585 PHP的国际化 821
15.2 网站公共文件设计 823
实例586
数据
库连接类 823
实例587
数据
库管理类 825
实例588
数据
库分页类 827
实例589 Smarty模板引擎配置类 829
实例590 字符串处理类 830
实例591 网站的头文件设计 833
实例592 网站的尾文件设计 835
实例593 首页广告设计 836
15.3 注册、登录 837
实例594 用户注册 837
实例595 用户登录 840
实例596 用户中心 841
实例597 我的订单 844
实例598 找回密码 846
15.4
数据
的输出 847
实例599 图书导航 847
实例600 图书fenlei 848
实例601 特别图书 851
实例602 图书试读 853
实例603 图书详细信息展示 855
实例604 新闻公告 857
15.5 站内搜索 859
实例605 一般搜索 859
实例606 高级搜索 861
15.6 购物车 863
实例607 购物车类 863
实例608 购物车功能实现 865
15.7 图书订单处理 868
实例609 填写收货人信息 868
实例610 确认订购信息 870
实例611 支付宝在线支付 871
实例612 工行在线支付 873
15.8 后台管理系统登录 875
实例613 管理员登录 875
实例614 后台管理系统主页设计 877
15.9 系统管理 879
实例615 系统信息设置 879
实例616 更改管理员密码 880
15.10 图书类别管理 881
实例617 图书大类管理 881
实例618 图书小类管理 883
实例619 出版社fenlei管理 884
15.11 图书管理 886
实例620 图书信息管理 887
实例621 图书试读管理 890
15.12 用户管理 892
实例622 用户管理 892
实例623 用户反馈管理 894
15.13 订单信息管理 895
实例624 订单信息管理 895
15.14 通用信息管理 897
实例625 新闻公告管理 897
易语言5.1 相对于易语言5.0更新说明:
支持静态链接其它编程语言(如C/C++、汇编等)编译生
成
的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。
使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib或.obj为后缀的将被视为静态库,可使用绝对路径或相对路径(相对当前源代码所在目录),如依赖多个静态库请分别列出并以逗号分隔;“在库中的
对应
命令名”请务必准确填写静态库中公开导出的符号名称(C函数(cdecl)编译后,符号名称通常是在函数名称前加下划线(_));“在库中的
对应
命令名”以@开头表示以cdecl方式调用,否则表示以默认的stdcall方式调用;各参数声明要与其定义一致。
请参考易语言安装目录内的例程:samples\静态编译\调用LIB和OBJ
1. 静态编译方面的改进和优化。
2. 符号重命名程序(resym.exe)增加对.obj文件的支持,并更新了文档(sdk\static_docs)。
3. 编译生
成
安装软件时已支持打包静态编译后的程序,但需事先静态编译出该程序。
4. 升级加密狗驱动程序,增加了对 Windows 7, Vista 等操作系统的支持。
5. 操作系统界面功能支持库(shell.fne)中的“执行()”命令增加
一个
参数“窗口
显示
方式”,作用与核心库“运行()”命令的同名参数一致。
6.
数据
库操作支持库增加读写长整数
字段
的功能,但受限于系统接口暂不能读写超出整数范围的数值。
7. 修改高级表格支持库,通过鼠标调整行高列宽时不改变当前光标行列号。
8. 修改BUG:在IDE中打开源代码文件(.e)后,高级选择夹组件不能正确切换到“现行子夹”属性设定的子夹。
9. 修改BUG:矢量动画支持库中的“矢量编辑框”组件在光标位于组件右下角时按右光标键进入下一行会导致
显示
错误。
10. 修改BUG:矢量动画支持库中的“矢量编辑框”组件在光标位于组件左上角时按左光标键进入前一行可能会导致
显示
错误或内存申请失败。
11. 修改BUG:网络传送支持库在使用代理下载时可能会导致程序崩溃。
12. 修改BUG:超级列表框.置列图片()有时功能不正常或导致随机错误。
13. 修改BUG:Sqlite3
数据
库支持库中的“Sqlite记录集.绑定参数()”命令不支持汉字/UTF-8。
14. 修改BUG:VCL相关支持库部分组件在修改个别属性或调用个别方法后不可见,并改进了Delphi版本的支持库SDK。
15. 修改BUG:高级表格在列类型为数值型时,添加新行且省略标题的情况下,会导致程序异常。
16. 修改BUG:数值计算支持库“大数.四舍五入()”命令在最高位进位时,会导致程序异常。
17. 修改BUG:办公组件支持库打印进度对话框的标题和用户设置的内容不一致。
18. 修改BUG:办公组件静态编译后无法正常销毁。
19. 修改BUG:应用接口支持库“取内存容量信息()”命令不能正常处理大于2G的内存。
20. 修改BUG:超级列表框在属性“整行选择”为真时,鼠标单击第一列右面也会导致第一列中的选择框被选中或取消选中。
21. 修改BUG:Sqlite3
数据
库支持库中“Sqlite
数据
库.取错误文本()”返回的文本是UTF-8编码(应是GB18030编码)。
--------------------------------------------------------------------------------
易语言5.0 相对于易语言4.x更新说明(2010/02/01):
增加静态编译功能,支持挂接第三方链接器(比如VC6中的link.exe)。
静态编译后的易语言可执行程序(exe)和动态链接库(dll),运行时不再依赖任何支持库文件,文件尺寸更小(相对以前的独立编译),PE结构更合理(取消了“易格式体”),加载速度更快,而且有效解决了“病毒误报”和“易被脱壳”的难题。
为实现静态编译,易语言编译器、核心支持库、集
成
开发环境(IDE)等均有重大更新,支持库开发架框有扩展性调整,绝大多数官方支持库都已针对静态编译完
成
自身改造并提供静态库。
目前绝大多数官方支持库均已支持静态编译,只有极少数不支持静态编译:vclbase.fne, jedi.fne, com.run/cominf.run/ocx.run。
第三方支持库,由源代码作者按照静态编译技术文档(参见sdk\static_docs)完
成
自身改造并提供静态库后,可支持静态编译。外部OCX组件和COM组件,不支持静态编译。
此次重大版本升级不影响以前的源代码(.e)和模块(.ec)。只要代码或模块中未用到“不支持静态编译”的支持库、COM/OCX等,都可以静态编译。以前编译好的模块(.ec)甚至不需要重新编译即可直接支持静态编译。
支持库开发框架调整是扩展性调整,比较好的做到了向前向后兼容。即,新版支持库可被旧版易语言或易程序使用,旧版支持库也可被新版易语言或易程序使用(只是不支持静态编译)。
静态编译后的易语言EXE/DLL之间不能再共享譬如窗口、窗口组件等类似资源,对于已经静态连接到
一个
EXE/DLL中的支持库,该支持库中的
数据
或资源将不能再被其它EXE/DLL中所使用的同名支持库访问。这是因为代码被分别静态链接接到各个独立模块(EXE/DLL)中。
大连大有吴涛易语言软件开发有限公司 http://www.eyuyan.com
--------------------------------------------------------------------------------
易语言5.0测试版3相对于测试版2更新内容:
1. 支持设置程序(EXE)图标
2. 支持设置使用通用组件库6.0
3. 支持“链接后动作(post_link_action)”(参见tools\link.ini中注释)
4. 重新整理所有官方支持库的静态库,有望彻底解决链接时可能出现的符号冲突
5. 全面取消静态编译中的人为功能限制(此前有最多5个支持库同时参与静态链接等功能限制)
6. 公开易语言静态编译技术文档(参见sdk\static_docs),便于第三方支持库作者针对静态编译进行支持库改造
7. 修改以下多个BUG:
1) 修改在静态编译的DLL中调用其它DLL失败的BUG
2) 修改静态编译后“选择列表框”在“单选”属性为真时不
显示
项目内容的BUG
3) 修改核心库中“播放音乐”命令在没有声卡或声卡被禁用时未正确释放资源的BUG
4) 修改静态编译后“读配置项”命令在第三个参数“配置项名称”为空文本时导致程序崩溃的BUG
5) 修改高级选择夹中的组件在窗口载入后强制得到焦点的BUG
6) 修改
MYSQL
支持库跨静态编译的EXE和DLL传递连接句柄和记录集句柄无效的BUG(改动较大,可能会产生兼容性问题,我们已经仔细测试,也请使用到此库的用户帮助我们多多测试,以便及早发现问题,谢谢)
7) 其它修改
注意:静态编译后的易语言EXE和DLL之间不能再共享“某些”句柄或资源,这一点和原动态连接时的程序行为不能保持一致,使用时请务必设法避免此类用法(
MYSQL
支持库我们作了特别处理)。
注意:静态编译后常量
数据
位于PE文件的.rdata段中,只可读不可写,编程时请避免修改它们。譬如以下的代码,静态编译后就可能会出现问题:
a = " "
GetWindowTextA(hWnd, a, 20)
正确的代码为:
a = 取空白文本 (20)
GetWindowTextA(hWnd, a, 20)
易语言5.0测试版2相对于测试版1的更新内容:
1. 修改了很多由于符号冲突而导致无法完
成
静态编译的BUG
易语言5.0测试版1发布于2009/12/28,是易语言5.0静态编译版第
一个
公开测试版本
********************************************************************************
** 以下是易语言4.x及以前版本的升级信息
********************************************************************************
易语言4.14版相对于4.13更新说明:
对易语言核心支持库、编译器、开发环境的更新:
1. 修复了打印机对象的自定义纸张尺寸的支持问题
2. 修复了打印机对象的打印份数的支持问题
3. 修复了滑块条的选择长度不能到最大的问题
对其它支持库的更新:
1. 修改XML解析支持库,解决“XML树.取节点值文本()”返回的文本会失效的BUG。
2. 修改高级表格支持库,解决在鼠标按下和抬起之间收到时钟周期事件的情况下,无法收到“被单击”事件的BUG。
3. 修改扩展界面支持库三,解决单击卷帘菜单后导致日期框不能弹出下拉窗口的BUG。
4. 修改XP风格支持库,解决GDI资源泄露,以及在使用通用组件库六时组合框标题出现重影的BUG。
5. 修改扩展界面支持库一,解决树形框项目无法通过鼠标点击进入编辑状态的BUG。
6. 修改高级表格支持库,解决插入行/插入列在未指定行号/列号的情况下插入位置不正确的BUG。
7. 修改文本语音转换支持库,增加“机读文本.重新创建并初始化()”方法。
8. 修改应用接口支持库,增强“取快捷方式目标”命令功能,可以获取目标、参数、启始位置、图标、运行方式、快捷键、备注等信息。
9. 修改扩展界面支持库三,解决高级选择夹会导致所在窗口的收不到“首次激活”事件的BUG,相应地修改了核心库和开发环境。
10. 为所有支持库文件统一添加了版本信息。
--------------------------------------------------------------------------------
易语言4.13版相对于4.12更新说明(2009/4/13):
对易语言编译器、开发环境、核心支持库的更新:
1. 修改核心支持库,为窗口增加
一个
“窗口类名”属性。
2. 修改核心支持库,为外部
数据
库的连接类命令增加参数“不
显示
ODBC连接对话框”。
3. 修改核心支持库,解决用“播放音乐()”播放“音频采样大小为24位”的WAV文件时产生噪音的BUG。
4. 修改编译器,可以为编译出的EXE、DLL添加版本信息(通过“程序配置”设定)。
5. 修改集
成
开发环境,自动记忆非独立编译时是否写出依赖文件的选项。
6. 大幅提高编译速度。
对其它支持库的更新:
1. 修改高级表格支持库,在双击单元格进入编辑状态后,不能收到第
一个
“字符输入”事件的BUG。
2. OpenGL支持库中的部分英文名称常量已改为中文,并统一在所有常量名称之前加前缀“GL_”,以减少与其它库的冲突机率。
3. 互联网支持库中的“FTP目录列表”命令返回的文件时间改为FTP服务器返回的原始时间,不做任何时区转换。
4. 互联网支持库中的“置代理服务器”命令增加了参数,用于支持代理服务器用户认证。
5. 修改控制台操作支持库中“控制台对象.取
显示
区大小”的参数名称及其说明。
6. 修改外部
数据
库在4.12版中导致的不兼容问题,并增加了对MS SQL Server
数据
库中image和text
字段
类型的说明。
7. 修改扩展界面支持库一,禁止透明标签在父窗口刷新时自动刷新,以解决其导致窗口刷新缓冲的问题。
8. 改进应用接口支持库中“设置屏幕分辨率”命令。
9. 修改外部
数据
库在“表中记录数为零”时可能导致程序崩溃的BUG。
10. 修改扩展界面支持库一,修改“超级列表框.取标题()”不能返回长度大于256的包含汉字的文本。
11. 修改扩展界面支持库一,为“超级列表框.查找表项()”增加可空参数“列索引”,以指定查找哪一列。
12. 修改扩展界面支持库一,添加“工具条.置标题()”方法。
13. 修改高级表格支持库在表格空白处(所有单元格之外)单击鼠标导致当前光标处单元格自动进入编辑状态的BUG。
14. 修改扩展界面支持库一,为“超级列表框”增加“检查框状态被改变”事件。
15. 修改扩展界面支持库一,为“树形框”增加“是否已加粗()”方法。
16. 修改扩展界面支持库一,为“树形框”增加多态检查框功能,相应地添加了多个与检查框相关的属性、方法和事件。
17. 修改高级表格支持库,允许“复制选定文本()”“剪切选定文本()”在“允许选择块”属性为假时复制剪切当前单元格中的文本。
18. 修改扩展界面支持库三,为“高级选择夹”增加“不点燃选中子夹”属性。
19. 修改XML解析支持库,增加写出CDATA
数据
功能,解决解析XML时错误的丢弃换行和TAB字符的BUG,解决读取节点值时对CDATA
数据
进行转义处理的BUG。
20. 修改扩展界面支持库一,超级列表框“置列图片()”导致列图片被强行设置到标题左边的BUG。
21. 修改通用对象支持库,“快速字节集对象.倒找字节集()”的
一个
BUG。
22. 修改扩展界面支持库一,“超级列表框.取标题()”在表项标题为空的情况下可能会返回乱码文本的BUG。
23. 修改农历日期支持库,内部农历
数据
错误(2013年四五月份大小进错位)的BUG。
24. 修改远程服务支持库,“远程服务.启动()”第三个参数的描述与实际不符的BUG。
25. 修改应用接口支持库,“取硬盘信息()”命令,将尽量获取能够获取的信息(有时只能获取部分信息)。
26. 修改文本语音转换支持库,为
数据
类型“机读文本”的方法“文本到语音()”增加超时等待和事件反馈功能,并增加方法“是否可用()”,并在该对象创建时,自动选择
一个
“可能”为中文的语音库(通过名称猜测)。
27. 修改
MySql
支持库,第二次连接失败会导致前一次连接句柄无法使用的BUG。
28. 修改VCLBase支持库,解决VCL组件“对齐”属性和VCL滚动框失效的BUG。
其它更新:
1. 修改“树型框操作类.e”例程,加入项目时检查索引数组下标越界的BUG
--------------------------------------------------------------------------------
易语言4.12版相对于4.11更新说明:
对易语言编译器、开发环境、核心支持库的更新:
1. 修改“文件是否存在”命令不支持“路径字符大于127的文件”的BUG,感谢易友企达软件。
2. 修改“到全角”命令对“~”转全角字符结果不对的BUG,感谢易友叮咚茶。
3. 修改窗口“位置”属性和“可视”属性在特定情况下相互冲突的BUG,感谢易友牛非牛。
4. 修改核心支持库,窗口的“销毁()”命令,在销毁窗口后,不能再次载入窗口的BUG,感谢易友hsy_jj,上上签。
5. 修改核心支持库,窗口底图方式增加“图片缩放”功能,感谢易友世恒。
6. 修改核心支持库“组合框.可有焦点()”命令,在组合框获得焦点后,还是返回“假”的BUG,感谢易友lilho_e。
7. 修改核心支持库“销毁”方法增加了
一个
参数“立即销毁”。
8. 修改核心支持库,画板在调整尺寸后,不能重画的BUG,感谢易友浮云缭绕。
9. 修改编辑框在字体变大,编辑框高度自动调整后,原来的编辑框仍然会留在窗口上的BUG,感谢易友水影。
10. 修改核心支持库“插入字节集”命令的帮助说明,感谢易友低调生存。
11. 修改“变体型”对数值型数组
数据
支持不完善的BUG,感谢易友神2。
12. 修改核心支持库,“横向滚动条”和“纵向滚动条”位置被改变后,禁止由“真”变为“假”的BUG,感谢易友ming1228。
13. 修改窗口“在任务条中
显示
”属性和“总在最前”属性在特定情况下相互冲突的BUG,感谢易友ok5168。
14. 修改易语言开发环境,为自定义
数据
类型时,粘贴代码,
数据
类型为“”的BUG,感谢易友叮咚茶。
15. 修改核心支持库“组合框.禁止=真”,在给“组合框.列表项目”属性赋值后,“组合框.禁止=真”失效的BUG,感谢易友子涵。
16. 修改易语言编译器,可以指定独立编译的程序运行时的支持库释放目录,感谢易友西风。
17. 修改核心支持库,“其它”类别增加了六个命令(“取组件名称”“寻找组件”等),用作支持窗口组件反查。
18. 修改核心支持库“播放音乐()”命令,个别WAV文件不能播放的BUG,感谢易友破天一箭,流川枫,别康桥,得心应手,一帆风,z284949127,上等兵,yanshi810,xushushun。
19. “特殊功能支持库”中的“置入代码”命令已移入核心库,原有命令已被隐藏。
20. 在开发环境中打开被调用命令的参数引导(Alt+→)后,对每个参数的说明已可体现出是否为数组类型。
21. 修改“取配置节名”在节名个数超过一定数量时可能会导致返回值出错的BUG。
22. 修改“取对象类型”命令取不到FNR支持库中窗口组件类型名称的BUG。
对其它支持库的更新:
1. 修改应用接口支持库“取窗口标题”命令在指定窗口标题为空的情况下返回窗口类名称的BUG,感谢易友叮咚茶。
2. 修改应用接口支持库“取文件版本信息”在失败的情况下返回上次结束的BUG,同时添加逻辑型返回值,感谢易友yhan。
3. 修改应用接口支持库“取窗口类名”命令在指定窗口不存在的情况下取出窗口类名为乱码的BUG。
4. 修改通用对象支持库中“快速文本对象”“快速字节集对象”没有复制构造函数的BUG,感谢易友wentianxin。
5. 修改应用接口支持库“截取屏幕区域”命令未及时释放GDI资源的BUG,感谢易友醉。
6. 修改数值计算支持库“大数.导入文本()”,允许参数文本以
一个
或多个0开头,感谢易友王军。
7. 修改应用接口支持库“取窗口标题”在窗口标题以汉字开头的情况下可能返回空文本的BUG,感谢易友叮咚茶。
8. 修改
数据
结构支持库,为
数据
类型“表”添加方法“删除键值对”“删除所有键值对”,感谢易友.end。
9. 修改VCLBase支持库,因为设置
数据
类型“键值编辑器”的“可调整列位置”属性时会引发异常“可调整列位置 是不支持的选项”,所以将其删除,感谢易友MMiao79,nfh_china。
10. 修改应用接口支持库“取窗口标题”最多只能返回511个字符的BUG,感谢易友叮咚茶。
11. 修改
数据
结构支持库中
数据
类型“表”未及时释放内存的BUG,感谢易友.end。
12. 修改应用接口支持库“取窗口标题”命令取得的标题比实际标题少1到2个字符的BUG,感谢易友叮咚茶,wentianxin。
13. 修改高级表格在表头列类型为非文本的情况下“取
数据
()”返回结果不对的BUG,感谢易友小熊。
14. 修改应用接口支持库“取窗口标题”命令在取其它进程中的窗口标题时取出的文本不完整的BUG,感谢易友叮咚茶。
15. 修改扩展界面支持库一“工具条.取状态()”命令说明中的笔误。
16. 修改windows媒体播放器“鼠标按键被按下”事件中,第
一个
参数“鼠标按键”说明中的笔误,感谢易友xyx20021129。
17. 修改热键框“功能键”的属性名称,感谢易友mingriver。
18. 修改高级表格支持库,解决在部分打印机中打印不出图片的BUG,感谢易友97998。
19. 修改
数据
图表支持库,解决“柱状图控件”与“曲线图控件”在第
一个
X轴标注文字为空文本的情况下,导致X轴其它标注文字
显示
不完整的BUG,感谢易友wentianxin。
20. 修改高级表格,“回车键功能”属性增加“3.无”,感谢易友hswad。
21. 修改
数据
库支持库在记录集未置
数据
库连接的情况下调用“删除(3)”导致程序异常退出的BUG,感谢易友王庆。
22. 修改外部
数据
库组件不支持MS SQL Server中的nvarchar类型的BUG,感谢易友见易思迁。
23. 修改外部
数据
库组件无法读取MSSQL中binary类型
字段
的BUG,感谢易友NightCAT。
24. 修改外数
数据
库.
查询
()之后自动定位到首记录,感谢易友见易思迁。
25. 修改远程服务支持库在客户端连接失败的情况下出现socket句柄泄露的BUG,感谢易友readyisme。
26. 修改
数据
库支持库“记录集.写
字段
”在
字段
名称不存在的情况下也返回真的BUG,感谢易友liyunxing。
27. 修改高级表格,置图片多次GDI资源泄露问题,感谢易友borisc。
28. 修改超级菜单,当菜单条不可见时在代码中修改菜单的可视属时,弹出菜单的子菜单标题不可见的BUG,感谢易友搞怪。
29. 修改数值运算支持库大数除法的一处BUG,感谢易友zhen。
30. 修改
MySql
支持库,添加了“取影响行数” 方法,感谢易友浮云缭绕。
31. 修改高级表格调整行列数时未正确处理现有
合并
单元格的BUG,感谢易友wentianxin。
32. 修改互联网支持库,“HTTP读文件”命令支持读取HTTPS协议文件,感谢易友季翔。
33. 修改XML解析支持库,在连续两个自结束节点()存在时可能导致导入失败的BUG,感谢易友.end。
34. 修改XML解析支持库,允许XML文件中双引号之间的属性文本中存在任意字符,包括,感谢易友技术支持部、user190。
35. 完善XML解析支持库,增加对CDATA的支持,和XML文本格式化功能,感谢易友goomoo。
36. 完善XML解析支持库,导出到文本或字节集时必要的时候使用自结束节点格式,感谢易友goomoo。
37. 修改应用接口支持库,完善了“是否与互联网连接”和“是否登入网络”的命令说明,并隐藏了后者,感谢易友mijac。
38. 修改数值计算支持库,“曲线拟合.三次样条插值()”的第二个参数“三次样条方程系数”可以直接接受“曲线拟合.三次多项式方程()”的计算结果作为参数,感谢易友搞怪。
39. 修改高级表格支持库,增加“表头被单击”“表头被双击”事件。
40. 修改高级表格支持库,将属性“表头可单击”更名为“响应表头被单击”。
41. 修改扩展界面支持库一,在主窗口刷新时透明标签没有及时刷新的BUG,感谢易友地球销售代表。
42. 修改VCLBase支持库,高级分隔条“高亮渐变起始颜色”属性名称重复的BUG。
其它更新:
1. 更新了易语言知识库(ESDN)(仅在完全安装版中提供)。
2. 增加了“硬件操作精解-精简版”教程(仅在完全安装版中提供)
3. 在“行业控件”类例程中新增“Grid++report报表控件”。
4. 在“行业控件”类例程中新增“滴答报表控件”。
5. 在“行业控件”类例程中新增“skinsharp皮肤控件”。
6. 在“硬件控制”类“加密锁”例程中新增“ET199”。
7. 修改易语言安装制作程序,允许在开始菜单生
成
多级程序组(目录),感谢易友银戒指、电子商务。
8. 修改远程服务支持库例程“网络
数据
库中间件.e”中删除意外断开连接客户的BUG,感谢易友雨纷飞。
9. 修改了购买易语言的说明信息,由学习版50元,改为免费,感谢易友majiyunsea。
--------------------------------------------------------------------------------
易语言4.11版相对于4.10更新说明:
对易语言编译器、开发环境、核心支持库的更新:
1. 修改易语言编译器“‘调用外部DLL命令的程序’执行结束后未释放该DLL”的BUG,感谢易友企达软件。
2. 修改易语言编译器编译动态链接库时提示“寻找指定库命令失败”的BUG。
3. 修改易语言开发环境,在调试状态下允许通过双击设计窗口中的组件跳转到
对应
的事件处理子程序。
4. 修改易语言开发环境“在窗体设计器中拖动组件导致GDI资源泄漏”的BUG。
5. 修改易语言开发环境,解决了程序集名称过长不
显示
程序集名称选择夹的BUG。
6. 修改核心支持库,窗口的“销毁()”命令改为通过PostMessage间接实现。
对其他支持库和相关例程的更新:
1. 修改支持库例程“INI手术室.e”,在勾选“是否使用Windows通用组件库6.0版”后编译,工具栏上的图标无法
显示
的BUG。
2. 修改扩展功能支持库一“当窗口总在最前时,气球提示框会被窗口挡在后面”的BUG。
3. 修改扩展功能支持库一“设置文件拖放”的错误,感谢易友叮咚茶。
4. 修改
MySql
支持库“读
字段
值”,当参数“
字段
索引”被传入类型为小数的参数值后,读取失败的BUG。
5. 更新多线程支持库:启动线程() 增加
一个
可选参数,用于接收线程句柄;并增加以下命令:等待线程,强制结束线程,关闭线程句柄。感谢易友zhe001。
6. 修改保密通讯支持库可能导致程序异常退出的BUG。
7. 修改高级表格预览时表格线不
显示
的BUG,感谢易友一帆风。
8. 修改高级表格选择块时鼠标回到首选择单元格致使该单元格自动进入编辑状态的BUG,感谢易友民政,wanwan5。
9. 修改农历日期框被禁止后文本和按钮不变灰的BUG,感谢易友p_anch;修改农历日期框控件默认大小为200*24。
10. 修改XP风格支持库“应用XP风格后令单选框文本颜色与选择框文本颜色失效”的BUG,感谢易友yulimate。
11. 修改VCLBase支持库中“单一实例”组件,“标识文本”属性为空文本时组件功能失效的BUG。
12. 修改
数据
操作支持库“记录集.读字节集()”读取失败的BUG,感谢易友rsrs168,xuejsh。
13. 修改DirectX支持库“输入设备.置鼠标边界()”命令说明中的笔误。
14. 修改高级表格累加公式功能可能累加其它列的BUG,并允许结果列小于开始列,感谢易友浮云缭绕。
15. 修改高级表格在粘贴“类CSV”格式文本时错误处理连续分隔符的BUG,感谢易友风精灵。
16. 修改高级表格在列类型为选择型时取不出表头文本的BUG,感谢易友恶人磨。
17. 修改可执行
数据
转换支持库令转换后的正则表达式支持库无法载入的BUG。
18. 修改高级表格,增加了“可否被编辑”事件,可在此事件中返回假以阻止当前选中单元格进入编辑状态,感谢易友123yizheng123。
19. 增加超级列表框状态图片组及其索引的说明,索引不能大于14(Windows的局限),感谢易友企达软件。
20. 优化调整Java支持库中JVM的查找及加载策略。
21. 修改XP风格支持库令分组框文本颜色无效的BUG,感谢易友破天一箭。
22. 修改易语言下载快车例程在程序已启动情况下新建下载任务时获取的URL缺少最后
一个
字符的BUG,感谢易友520zone。
23. 修改
数据
操作支持库中“记录集.删除(3)”不能删除所有记录的BUG,感谢易友rsrs168。
24. 修改
数据
库操作支持库有时取不到记录集记录数量的BUG,感谢易友h179635532。
25. 修改树形框“图片组被重新赋值后导致之前动态加入的项目丢失”的BUG,感谢易友菜鸟老大。
26. 修改高级表格“修改单元格数值时导致计算列无穷递归计算”的BUG,感谢易友一帆风。
27. 修改数值计算支持库“计算大数相乘时存在递归进位的情况下导致结果出错”的BUG,感谢易友chegjigfg。
28. 修改网络通讯支持库“网络服务器.断开连接()”导致CPU使用率100%的BUG,感谢易友尘土.飞扬,.end。
29. 修改数值计算支持库求实矩阵逆的BUG(注意不再返回矩阵行列式),感谢易友wuestuary。
30. 修改
MySql
支持库写入空字节集失败的BUG,感谢易友angelye。
31. 修改高级表格最后一行(或行)只
显示
半行(或列)而没有出现滚动条的BUG,感谢易友cbw,liweiyong和zye7504。
32. 修改高级表格,用鼠标或键盘选中高级表格某单元格时使其尽量完整
显示
(而不是只
显示
单元格上边或左边一部分),感谢易友 esir。
33. 修改易语言完整版安装程序“未选中安装多媒体教程的情况下仍然安装了多媒体教程”的BUG,感谢易友秋风下的落叶。
34. 网络通讯支持库网络服务器、网络客户端和网络
数据
报的“接收”方法均增加
一个
参数,用于返回是否接收
成
功。感谢易友.end。
35. 修改WORD2000支持库Word程序的文档即将保存事件的第二个参数修改无效的BUG,感谢易友97998。
36. 修改DirectX支持库“MIDI音乐.播放()”不支持含空格的文件名的BUG,感谢易友张飞,klasp。
37. 修改应用接口支持库“取网卡信息列表()”命令消耗大量内存且不释放的BUG,感谢易友伟业,花无心。
38. 修改农历日期支持库内部取节气的一处
数据
错误,感谢易友净莲。
39. 修改超级列表框不能通过对“现行选中项”属性赋值-1从而取消选中现行选中项的BUG,感谢易友zye7504。
40. 修改超级菜单支持库,在没有菜单条的窗口上放置
一个
超级菜单组件,运行时在标题栏点右键导致程序异常退出的bug,感谢易友狼性本色。
41. 修改超级列表框多次调用“置列图片(-1)”导致程序无故退出的BUG,感谢易友redxblue。
42. 修改应用接口支持库“是否与互联网链接()”未及时关闭网络连接句柄的BUG,感谢易友zzy90。
43. 修改超级列表框表项编辑对话框删除表项时未同时删除子表项的BUG,感谢易友TLSWR。
44. 修改
MySql
支持库"取
字段
属性"方法返回的
字段
属性值与
字段
类型常量无法
对应
的BUG,感谢易友gaoheran。
45. 修改互联网支持库“HTTP读文件”命令不能读取非80端口URL的BUG,感谢易友goomoo。
46. 修改超级列表框刷新问题和图标
显示
问题。
47. 增加超级列表框插入表项的帮助说明,“类型”属性为“大图标列表框”或“小图标列表框”的情况下,将始终在所有表项的最后插入新的表项,感谢易友redsleaf。
48. 修改超文本浏览框,补充完善了对事件“已就绪”和“载入完毕”的说明,感谢易友qq136013347。
49. 修改超文本浏览框未释放BSTR指针的BUG,感谢易友东灿。
50. 扩展界面支持库二“提取加入图片”命令增加
一个
参数以提取小图标,感谢易友redxblue。
51. 修改超级编辑框“最大允许长度”属性为0时最大允许输入长度仍被限制为64K的BUG,感谢易友红花。
52. 修改扩展界面支持库二“RTF到纯文本”命令无法处理\emdash\lquote\rquote等殊符号的BUG,感谢易友zjc2008。
53. 修改扩展界面支持库二超级编辑框设定字符格式为“#禁止更改”后无法取消“禁止更改”的BUG。
54. 修改超文本浏览框的逻辑型属性或逻辑型方法返回值可能有误的BUG,感谢易友wincom1。
55. 修改IP编辑框无法得到“获得焦点”和“失去焦点”事件的BUG,感谢易友hedogn,poplarshine。
56. 修改IP编辑框的默认窗口尺寸为104*20。
57. 为IP编辑框增加“地址被改变”事件,感谢易友zjzqs。
58. 修改压缩解压支持库“生
成
的压缩包内文件日期和解压缩后文件日期与原被压缩文件日期不符”的BUG,感谢易友wanwan5。
59. 修改易语言知识库中办公组件帮助文档中的笔误,感谢易友sxfxx。
60. 修改易语言知识库中“取网卡信息列表”命令例程有重复的程序集名称导致程序无法编译的错误,感谢易友cjdn。
61. 修改VCL相关支持库中在组件事件中销毁窗口可能导致程序非法访问内存的错误,感谢易友redxblue,nfh_china。
62. 修改VclBase支持库中位图按钮类型为“确认”、“是”时修改按钮标题后在运行时不
显示
按钮图片的BUG,感谢易友redxblue。
63. 扩展功能支持库一增加“拖放树型框项目”命令。
其它更新:
1. 在“行业控件”类例程中新增“Grid++report报表控件”。
--------------------------------------------------------------------------------
易语言4.10版相对于4.06版(修订版1)更新说明:
1. 更新易语言开发环境和核心支持库,提供对VCL控件的更好支持。
2. 增加了易语言支持库开发包(SDK),目前有C++版本和Delphi版本。
3. 增加了两个用Delphi开发的支持库,VCLBase 和 JEDI,含大约20个封装自VCL的易语言窗口组件。
4. 增加了“硬件控制”方面的多个例程。
5. 增加了“网友优秀作品”例程。
6. 修改开发环境主程序,独立编译前提示,修改整体搜索的BUG。
7. 修改了通过右键菜单新建的.e文件不能直接保存的问题。
8. 修改了日期框自动跳转日期的问题。
9. 修改了
MySQL
支持库“执行SQL语句”的问题。
10. 修改了特殊功能支持库中“调用子程序”的问题。
11. 修改了“
数据
库语言转换器.e”转换出现乱码的错误。
12. 修改了“
数据
库管理器.e”有密码打开失败的错误。
13. 修改了“MIDI测试.e”音乐文件在桌面不能播放的错误。
14. 修改了多媒体支持库“CD播放.是否有CD”的BUG。
15. 修改了Excel支持库设置字体下划线无效的BUG。
16. 修改了“气球提示框”单击鼠标或按键导致提示框关闭未发送“提示框即将隐藏”事件的BUG。
17. 修改了“shellEx支持库”注册热键的BUG。
18. 修改了“网络通讯支持库”内存泄露的BUG。
19. 修改了小数型
数据
到文本函数多次执行出错的问题。
20. 修改了正则表达式“搜索全部”时假死的问题,和程序中多次频繁调用正则容易出错的问题。
21. 修改了多个支持库例程。
22. “可执行文件
数据
转换”支持库的代码打乱功能得到了较大的提升,不同的打乱码将得到差异性很大的结果,因此用户可以尝试使用不同的打乱码来从技术上应对杀毒软件的误报。
关于可执行文件
数据
转换,说明如下:
1、多次重复转换可能会导致转换后的可执行文件或易语言支持库无法使用,请确保只转换一次;
2、对于非易语言编译的可执行文件或DLL,不保证转换后能够正常使用;
3、如果想转换易语言独立编译可执行文件,应该在易语言的系统设置里面直接设置打乱码后进行编译转换,而不能在独立编译后再使用本命令来转换;
4、尽量在易语言系统设置里面设置打乱码后进行编译转换,在这种情况下,所编译出来的可执行文件将得到最好的打乱效果。
--------------------------------------------------------------------------------
易语言4.06版(修订版1)相对于4.06版更新说明:
1. 未注册情况下,除不提供编译功能外,不再有其它任何限制,即等同于以前的学习版功能。
2. 核心库中播放音乐功能已支持多个音乐同时播放(混音)。
3. 修改了扩展界面支持库二中动画框PNG图片透明的问题。
4. 修改了可执行文件
数据
转换支持库,在Win98下转换的支持库存在载入失败的问题。
5. 修改了
数据
库支持库不能正常读写双精度小数的问题。
6. 修改了
mysql
支持库“读
字段
值”、“查找记录”、“创建表”、“修改表”的问题。
7. 修改了编码转换支持库部分情况下不能正常进行编码转换的问题。
8. 修改了远程服务支持库不能同时启动两个服务器的问题。
9. 对以往支持库的相关例程做了修正更新。
10. 对安装包中的部分执行文件(.exe)进行了重新编译。
--------------------------------------------------------------------------------
易语言4.06版相对于4.05版(修订版1)更新说明:
1. 扩展界面支持库二中增加了动画框组件
2. 增加了可执行文件
数据
转换支持库,以应付一些使用落后的特征码查毒技术的杀毒软件,使其不再或很难对易语言编译出来的程序和易语言本身支持库误报.
3. "工具->系统配置->目的程序安全"选项中增加了编译结果打乱码设置,设置此选项后将会自动对"编译"、"独立编译"、"编译生
成
安装软件"菜单功能所产生的结果进行自动打乱。
4. 远程服务支持库修改了服务端和客户端线程句柄泄露的错误.
5. 高级表格支持库,在类型为“选择型”的单元格中按下空格键前后,将分别触发“将被编辑”“结束编辑”事件.
--------------------------------------------------------------------------------
易语言4.05版(修订版1)相对于4.05版更新说明:
1. 编译器,更正了“对全局数组变量和局部变量多次赋值可能无效”的BUG。
2. 核心库,更正了“取时间间隔”命令的BUG。
3. 扩展界面支持库三,更正了高级选择夹“无法删除表头字体”和“‘竖排子夹名称’属性为‘真’时子夹名称
显示
不完整”的BUG;外加一项改进:编辑“子夹管理”时可预览字体和字体颜色。
--------------------------------------------------------------------------------
易语言4.05版相对于4.04版更新说明:
1. 对以往支持库和相关例程发现的问题做了修正更新。
2. 开发环境新增了剪辑历史处理和展开全部代码功能
--------------------------------------------------------------------------------
易语言4.04版相对于4.03版更新说明:
1. 对以往支持库和相关例程发现的问题做了修正更新。
2. 增加了3个支持库:
自定义图形支持库
编码转换支持库
矢量动画支持库
--------------------------------------------------------------------------------
易语言4.03版相对于4.02版更新说明:
编程环境新增快速跳转夹和书签支持。
系统新增长文本常量支持。
新增“代码编辑框”支持库
新增“通用对象支持库”,内含“快速文本对象”“快速字节集对象”等
数据
类型。
特殊功能支持库:新增“取文本”等三个命令。
Sqlite
数据
库支持库:“Sqlite表”新增“查找”方法;将Sqlite版本升级至目前最新的3.3.4版。
扩展界面支持库三:改进卷帘式菜单控件,允许修改非选中菜单中的项目属性;改进高级选择夹控件在表头样式为梯形时的外观
显示
;改进部分属性和方法的说明信息。
扩展界面支持库五:修改气球提示框控件在Windows98系统下字体不清晰的BUG;新增对的支持。
扩展界面支持库六:对多功能条控件进行的小的改进。
农历日期支持库:修改农历日期框控件调用“增减日期”“置农历日期”“置公历日期”等方法后未及时更新
显示
文本的BUG。
数据
结构支持库:修改"链表.加入节点"方法有时不能按键值正确排序的BUG。
其它一些支持库的改进和修正
--------------------------------------------------------------------------------
易语言4.02版相对于4.0版更新说明:
1、DLL命令调用功能全面增强,具体请参见核心支持库手册里面的“调用API.e”例程和相关文档。
2、新增位图操作和易LOGO两个支持库。
3. 核心库中的外部
数据
库组件被修正。
4、以下支持库被修正或增加新功能:
互联网服务支持库
网络传送支持库
mysql
支持库
Sqlite
数据
库支持库:增加了20个命令以直接返回相关
数据
(而不是写入到参数变量中)。
扩展界面支持库三:增加了提示文本功能,同时更新了卷帘式菜单和高级选择夹的属性编辑对话框并增加了相关方法;在卷帘式菜单控件的“项目”属性编辑对话框中,如果项目名称为空文本,则
显示
为“未命名”,以便于用户以鼠标点击选中。
扩展界面支持库五:“汽球提示框”更名为“气球提示框”并增加“批量关联组件”方法,以方便用户动态指定提示文本;修改其“提示框即将弹出”事件的参数“手柄横向坐标”“手柄纵向坐标”,由屏幕坐标改为客户坐标,以方便用户处理。
数据
图表支持库:曲线图和柱状图增加了“
显示
标注”和“提示文本”属性;鼠标指向曲线图和柱状图的相应区域时会有提示框弹出并
显示
当前
数据
值。
XML解析支持库:增加导入导出字节集功能,另外增加了9个命令以直接返回相关
数据
(而不是写入到参数变量中)。
--------------------------------------------------------------------------------
易语言4.0版相对于易语言3.8正式版更新说明:
1、“新建”对话框布局改变,将一些新建项目进行了分类,大家可以在Samples和Wizard目录中组织目录,“新建”对话框会自动列出。
2、新的“文本代码编辑器”工具。
代码编辑方式是以文本方式编辑,在每一行程序编辑完
成
后不必回车确认,直接下移光标继续输入。或按[Shift+回车]可代替原单键[回车]形式。
可以将代码以文本方式复制到记事本,或从记事本将文本代码粘贴回来,系统自动恢复为程序代码。
“系统配置”中可以设置改变编辑区字体及字号。
“系统配置”中的“输入新语句后自动检查语法错误”项选中时,当光标在代码行末时回车,就可以编译当前行检查是否有语法错误,并在提示面板中提示出来。默认为选中。
若“系统配置”的“输入新语句后自动检查语法错误”项未勾选,代码编辑时将不会弹出错误提示,代码编辑后的运算符号不会规范整理,而会在调试或编译时给出错误提示,或使用全程提示工具检查,或通过按[Shift+回车]编译当前行进行检查。
3、新的“全程提示”工具,当用户将鼠标移至常量、变量、属性表等名称上停留片刻,会
显示
当前名称的相关信息。对未事先声明的变量不作任何提示。
4、新的“寻找替换管理器”工具。可以在当前程序集中进行寻找与替换。
5、新的“程序调试管理器”工具。新设计的“调用表”面板与“监视表”面板代替了原调试面板,具体使用与原来的调试方法类似,可用“查看表达式/变量”菜单查看当前子程序变量值。
6、新的“整体搜寻管理器”工具。提示夹中增加“搜寻1”、“搜寻2”两个面板。使用“整体搜寻”菜单命令可将搜寻结果
显示
在其中,并且可以对比查看。
7、新的“条件断点管理器”工具。新增“条件断点”菜单,可以设置断点时给定一组条件,方便调试,如果断点不是条件公式,就会自动转换为普通断点。
8、新的“组件排列管理器”工具。当没有安装扩展组件、OCX组件或COM组件时,不
显示
分类,当组件排列拥挤时,自动增加分类。
9、新的“配色方案管理器”工具。编辑代码区与属性表的配色方案已
合并
,且支持任意颜色自由定制,大家可将自定义的配色方案拷贝到Clr目录中,就可在列表中看到。
请使用菜单“工具”→“系统配置”→“程序
显示
”→“颜色配置”,在下拉列表中选择本Clr目录中的颜色配置文件。
10、“提示”面板中
显示
命令帮助内容时,将会
显示
当前命令所处的上级支持库分类信息,以利于用户
查询
所在支持库。
11、调试中断后回到代码编译界面,可将鼠标移到变量上查看变量值提示。
12、备注直接使用单引号标注,并兼容打开以前版本的代码自动改为单引号标注形式。
13、热键调整:如原直接使用键盘的方向键可展开命令,现在需要使用[ALT+方向键]才可以展开,“单步跟踪”热键有所改动。
编辑时原[F1]热键插入文件名称路径现改为[F2]热键插入。[F10]可删除一行,[CTRL+K]可屏蔽一行。
14、菜单调整:如“配置”子菜单移至“程序”菜单下,增加“条件断点”菜单,原“易向导”菜单改为“执行易向导”菜单.....具体请自行对比。
15、Samples目录中增加大量的经典例程,供大家学习交流。
16、Ecom易模块目录中新增若干易模块及例程。
17、易向导中增加“通用密码登录管理向导”及“OpenGL向导”。
18、系统配置对话框的“编译选项”中新增“是否使用Windows通用组件库6.0版”选项,默认不选中。如果选中,编译后的程序将使用6.0版风格的组件。
19、推出了以下新的支持库:
农历月历支持库中新增“农历月历”组件
拖放支持库
正则表达式支持库
进程通讯支持库
BT下载支持库
网络通讯支持库二
扩展界面支持库三中增加“高级选择夹”组件(本库必须在易语言4.0以上版本中使用)
应用接口支持库
OpenGL支持库
DirectX发支持库
SQLite
数据
库支持库
控制台操作支持库
扩展界面支持库五
20、办公组件支持库已升级,推荐大家使用该升级后的支持库。
21、新表格组件改名为高级表格以区分基本支持库中的表格,方便大家定义
数据
类型。
22、网络传送支持库更新及易语言下载快车已更新。
23、基本组件中的打印机组件已支持自定义纸张,“开始打印”方法中当“纸张”参数为-1时,可以自定纸张宽高。
24、“打印机”对象和“打印设置信息”
数据
类型中的打印纸类型新增了100多种扩展打印纸类型。
25、系统核心支持库中的“寻找字节集”和“倒找字节集”命令各增加
一个
参数。
26、窗口组件的基本事件中加入了“滚轮被滚动”事件,以支持鼠标滚轮编程。
27、核心库“其它”类别中增加了“DLL命令调用转向”命令,以支持程序中对非固定文件名DLL中的输出命令进行调用。
28、编辑组件的文本型属性时可以编辑多行文本。
29、组件箱右上角增加
一个
按钮,可以在组件图标排列与组件名列表中切换。
30、“输出调试文本”命令支持通用
数据
类型。
31、编译使用了易模块的易程序时,由过去仅在易语言安装目录ECOM下寻找所需要的易模块文件改为首先在易程序所处目录下寻找,然后再去ECOM目录下寻找。
32、易模块管理对话框中新增了“创建指定易模块文件的接口程序集”按钮。
33、为规范编程,多个易语言打开同
一个
源代码时,将会提示切换到打开的程序中,否则请另存为新文件名后再打开,以保护程序。但如果你用新建方式打开程序时,不受此保护。
34、修改了用户程序当支持库不存在时弹出的出错信息。
35、所有带图片组属性的组件选索引时支持直接通过选取图片组的方式输入。在索引项目后多了
一个
按钮,点击按钮后弹出图片组预选窗口,直接选中图片即可。
36、扩展界面库一中的树型框增加了“右键单击项目”事件。
37、系统颜色配置里面新增了“窗体设计器背景”项。
38、编译时实施了严格的重复名称检查,编译选项中新增“严格的重复名称检查”选项,为了兼容以前的程序,默认为不选中,建议将其选中。
39、支持库列表中增加排序功能,可按拼音顺序排列支持库。具体是支持库面板的鼠标右键菜单中增加“排序”子菜单。
40、核心支持库中的“窗口”
数据
类型增加了“置父窗口”方法。
41、核心库中的“数值转换”类中新增了“到字节”、“到短整数”、“到整数”、“到长整数”、“到小数”命令。
42、核心库中的“位运算”类中新增了“左移”、“右移”、“
合并
整数”、“
合并
短整数”命令。
43、核心库中的“变体型”
数据
类型新增“取字节集”方法,并且其“赋值”方法支持置入字节集类型
数据
。
44、核心库中的“载入”命令被改进,当以对话框方式载入不可视窗口时,不再强制
显示
并等待,而直接返回,
然后可以通过设置该窗口的可视属性为真来
显示
该对话框。此改进后,可以进行以下操作:
载入 (窗口1, , 真)
窗口1.标题 = "演示"
窗口1.可视 = 真
45、核心库中的“从字节集转换”命令更名为“取字节集
数据
”,并增加
一个
参数,以支持从字节集中随意取出部分
数据
。
46、核心库中的“打印机”对象有所改进,并且增加了四个方法用作在Windows2000/NT/XP下设置自定义纸张类型。
47、“支持库配置”对话框上方加入了查找功能。
48、“支持库配置”对话框下方增加了删除支持库按钮。
49、“系统配置”对话框内“颜色配置”部分增加了“导入”按钮。
50、左侧支持库列表中
数据
类型部分列入了
成
员事件并加入了全面的提示。
51、属性表下方的事件组合框内对已有事件子程序的事件进行了标记,并将自有事件和固定事件分开。
52、鼠标指针属性新增“手型”类型。
53、对列表式组件箱进行了排序。
54、窗口设计器中右键单击组件后所弹出的菜单内新增了“查看
数据
类型定义”菜单项。
55、组件右键菜单中加入“锁定”和“解除锁定”菜单,锁定组件时只能使用键盘的光标键移动或使用SHIFT的组合改变大小。
56、当前系统正在编辑一份易程序时,双击打开新易程序时,会弹出询问对话框,用户可以选择重新启动一份易语言系统打开程序。
57、输入备注时不再有提示框出现。
58、单行编辑框文字垂直居中。
59、恢复了调试变量表。
60、恢复了在行尾回车时自动询问增加未定义的变量、子程序、常量名(仅当“输入新语句后自动检查语法错误”系统设置被选中时有效)。
61、打印机对象改正了默认纸张的设置问题。
62、核心支持库增加“置错误提示管理”命令,用作支持用户自行提示严重错误信息。
63、核心支持库中的“选择夹”组件增加了“是否填充背景”、“背景颜色”两个属性,用作解决“隐藏自身”属性为真时选择夹内
一些子组件的刷新问题。
64、系统的“程序”菜单中新增“重新名称关联”菜单项。
65、加入了源代码加密功能。
66、核心库中“服务器”组件的“取回客户”方法支持在“
数据
到达”事件中使用。
67、核心库中“媒体播放”类别中增强了对MP3播放的支持。
68、核心库中“系统处理”类别中增加了“多文件对话框 ”命令。
69、编译器所支持语法格式改进,返回值支持直接引用其
成
员,如“a.方法1 ().a1.方法2 ()”语句格式现在已经可以使用。
70、系统的“工具->系统配置”菜单中新增“目的程序安全”选项夹。
71、系统的“编辑”菜单中新增“到最近修改处”菜单项。
72、改进了各种编程语言对易语言DLL的调用支持。
73、新增扩展界面支持库六、DirectX3D支持库。
74、自定义鼠标指针支持彩色。
75、易模块管理功能被去除,支持新的易模块引入功能,且易模块公开支持项目增多。
76、系统自带易模块中新增3D图形引擎支持易模块。
--------------------------------------------------------------------------------
易语言3.8正式版(修正第二版)相对于3.8测试版的改动部分:
1、支持开发并使用易语言向导程序,具体例程请见lib\ewizard\samples目录下的“应用程序向导.e”及“API助手.e”文件。
2、源程序编辑窗口右键菜单中新增“收缩屏蔽”功能,可以用作一次性屏蔽大段代码。
3、系统不再默认载入所有支持库,而必须在支持库配置中指定。
4、源程序的载入速度得到提高。
5、推出了以下新的支持库:
易向导支持库
农历日期支持库
远程服务支持库
扩展界面支持库三
互联网服务支持库
邮件接受支持库
多媒体支持库
表格支持库
超级菜单支持库
保密通讯支持库
办公组件支持库
另外,图表支持库和表格支持库现在支持和打印机对象合作打印。
--------------------------------------------------------------------------------
易语言3.8测试版相对于3.7正式版的改动部分:
1、支持完全的面向对象编程,可以在程序中定义并使用对象。
2、编写DLL时其中的公开子程序可以接受文本
数据
类型参数,且可以返回文本和字节集型
数据
。
3、支持源程序代码的收缩和展开(操作方法:选中程序块后单击右键选“收缩”菜单项,在子程序头上可以直接左键单击子程序名左边的减号)。
附,易语言面向对象开发特性简要说明:
1、易语言支持类的构造、析构、继承、虚拟方法、多态、封装特性。
2、对象的构造:
构造顺序为:先构造基类对象,再构造其继承类对象,如果类中具有对象
成
员,则先于其所处对象构造。
3、对象的析构:
析构顺序为:先析构继承类对象,再析构基类对象,如果类中具有对象
成
员,则在其所处对象后析构。
4、继承:
任何类均可以指定另外一类作为其基类,继承层数不限。
5、虚拟方法:
在基类中的方法可以被其继承类中的同名方法覆盖,当调用此方法时,系统自动根据所调用的对象
实体去调用
对应
的方法。
6、多态性:
可以将
一个
继承类对象赋予到其基类
数据
类型变量中,此时对此基类对象变量进行操作,将反映出继承类对象的特性。
7、类的封装:
A、类的所有
成
员
数据
变量只能由该类本身的方法代码所访问,属于私有性质。
B、在继承类中可以以“类名.方法名”的方式指定访问基础类中的方法。
C、只有标记为“公开”的方法才能在类代码外部通过该类的对象实体来访问。
--------------------------------------------------------------------------------
易语言3.7正式版相对于3.7测试版的改动部分:
1、编辑环境可以打开未安装
对应
支持库的易语言源程序。
2、“内码转换”支持GBK与日文内码SJIS之间的转换。
3、核心支持库中的“对象”
数据
类型增加了“取接口”方法。
4、“到字节集”、“到文本”命令被增强。
5、“数值到人民币”改名为“数值到金额”。
6、“取系统语言”命令支持linux,并增加日文类别。
7、“取操作系统类别”命令支持linux。
8、所有COM封装对象的“取子对象”方法更改为“取接口”,并增加一参数以取出指定接口。
9、改进后的packcom工具,用3.7测试版中的packcom生
成
的npk请使用本版本中的packcom打开后保存,以进行转换。
10、对测试过程中发现的所有问题都已经纠正。
--------------------------------------------------------------------------------
易语言3.7测试版 相对于 3.6 正式版的新增功能:
1、对微软COM技术的全面支持,包括ActiveX组件、OLE自动机、COM类型库等等,详细说明请见ESDN帮助
2、跨平台的网络通讯支持库
3、跨平台的
Mysql
数据
库支持库,且功能全面加强
4、跨平台的多线程支持库
5、EXCEL2000支持库(直接操作Excel)
6、WORD2000支持库(直接操作Word)
7、PowerPoint2000支持库(直接操作PowerPoint)
8、
数据
图表支持库(柱形图,饼形图、曲线图)
9、脚本语言支持库(可以运行VB script Jave script等脚本)
10、文本语音支持库(提供对文本转语音输出以及语音识别的支持)
11、易语言支持库在运行时支持动态加载
12、枚举常量的支持(详细说明见ESDN帮助)
13、更新了setup安装程序(即菜单"编译生
成
安装软件"的功能改进,解决了反安装时删除全部目录的问题,添加额外文件时增加了批量添加,还有更多安装功能的增强!)
14、部分功能的加强(如:树型框可以高速批量加入项目、标准输入命令支持密码输入、启动多线程支持参数等等)
15、其他很多地方改进。
--------------------------------------------------------------------------------
易语言 3.6 公司
成
立纪念版 相对于 3.5 正式版的新增功能:
1、增加了对Linux平台的支持,可以用易语言在Windows环境下编写Linux控制台程序
2、增加了Windows动态链接库(DLL)的编写,用易语言能编写出DLL供自己以及其他编程语言(VB,VC,Delphi等)调用。
3、增加了控制台操作的2个命令“标准输出”、“标准输入”,
4、增加了3个命令:“指针到文本”(文本操作),“指针到字节集”(字节集操作)、“写到内存”(其他),最佳使用场合在易语言回调子程序和易语言DLL公开子程序中用作对外输出
数据
。
5、增加了图形图像支持库 - 格式1.0版,支持多种图片格式的转换。
6、增加了XP风格界面库1.1版,支持部分控件的4种风格类型的转换。
7、增加了文件压缩/解压缩支持库1.0版,支持.zip格式的压缩解压,同时用本库压缩的.zip文件也可以被其他压缩软件使用
8、增加了多线程支持库1.1版,供对多线程的支持,并通过实现进入许可证机制以避免多线程冲突。
9、增加了
数据
库操作支持库1.0版,本支持库用来访问各种类型
数据
库。
10、增加了
MySql
支持库1.1版,本支持库实现对
MySql
的支持。
11、扩展界面支持库二1.1版中增加了“IP编辑框”窗口组件,支持对IP地址的输入和编辑。
12、修改了易模块的接口结构,在支持原有结构的基础上,增加了新的接口创建方式。
13、开发环境增加了即时输入提示。
14、全面增补帮助文档(esdn.chm),增订图片及例程。
15、其他很多地方改进。
以上新增功能详细情况请看易语言新版esdn帮助文档(esdn.chm),均有详细说明及例程。
--------------------------------------------------------------------------------
易语言 3.5 正式版 相对于 3.39 版的新增功能:
1、增加了扩展界面支持库二,包含超级按钮、高级影像框、分隔条、
超级编辑框等窗口单元,包含图片组处理、文档格式转换等分类命令。
2、增加了端口访问支持库,以支持对计算机端口的直接访问。
3、图片组支持真彩且制作工具性能提升。
4、表格拖动选择闪烁的问题已经解决。
5、系统配置中可以设置不
显示
程序备注。
6、
数据
源支持设置基于单元格的只读属性。
7、组合框和列表框的
数据
绑定实现方式改变。
8、其他很多地方改进。
--------------------------------------------------------------------------------
易语言 3.39 正式版相对 3.38 版的新增功能:
1、可以读取繁体版易语言编写的程序。
2、增加了 cncnv 内码转换支持库。
3、增加了树型框的事件和方法。
4、改进了打印预览。
5、运行时树型框的“项目”属性可以读出当前项目
数据
。
6、可以在“程序设置”对话框中设置程序版本号。
7、改正了读取SQL SERVER
数据
库出现的问题。
8、改正了xp下托盘图标弹出菜单单击桌面不消失的问题。
--------------------------------------------------------------------------------
易语言 3.38 正式版相对 3.36 版的新增功能:
1、支持加密狗。
2、操作系统界面功能支持库中增加了“关闭系统”命令,支持重启、关机、注销、休眠、冬眠。
3、改进了扩展界面支持库中的透明标签单元。
4、其他改进。
--------------------------------------------------------------------------------
易语言 3.36 正式版相对 3.3 版的新增功能:
1、开发环境支持源代码打印。
2、开发环境窗口单元箱增加了滚动按钮。
3、改进了安装卸载子系统。
4、改进了端口组件,添加了方法和属性。
5、改进了“操作系统界面功能支持库”中的“创建快捷方式”命令。
6、改进了OCX支持。
--------------------------------------------------------------------------------
易语言 3.3 正式版相对 3.2 版的新增功能:
1、新增了“操作系统界面功能支持库”,支持Windows外壳功能。
2、试用限次在各版本之间不再累加。
3、支持
数据
库加密。系统核心支持库
数据
库类别中增加了“是否已加密”、
“置
数据
库密码”、“密码输入框”、“复制密码”命令。“打开”命令
的
数据
库密码参数已经启用,改进了
数据
库管理器和易之表以支持加密
数据
库;
4、
数据
操作支持库一中增加了对RSA数字签名和验证的支持(提供了“数字
签名钥匙测试.e”例程),并增加了对RC4加密算法的支持;
5、系统核心支持库中的“文件读写”类别中增加了“打开加密文件”命令,
用作保存加密文件
数据
,并提供了“加解密工具.e”例程;
6、改进了安装程序的卸载功能。
--------------------------------------------------------------------------------
易语言 3.2 正式版相对 3.1 版的新增功能:
1、增加了对OCX组件(即ActiveX组件)的支持。
易语言 3.1 正式版相对 3.0 版的新增功能:
1、支持独立编译,独立编译后的易语言程序可以脱离易语言系统单独运行。
易语言3.0 正式版相对测试五版的新增功能:
1、增加电子注册支持。
易语言3.0 测试五版本相对于测试版三新增功能:
1、“系统处理”命令类别中加入了对配置文件进行操作及取操作系统类别的命令。
2、改进了调试过程中查改容器的功能(移到了工具条上)。
3、完
成
了安装制作工具的开发,具体请见系统setup目录中的readme.txt文件说明。
只是由于目前编译功能尚未开放,所以暂时不能被使用。
易语言3.0 测试三版本相对于测试版二新增功能:
1、加入了程序调试支持系统。
易语言3.0 Beta版本相对于2.51版本新增加的功能和需要注意点:
一、新增功能:
建立了完全的易程序编译器系统,支持全编译,可以直接将程序编译为CPU指令码
运行,从而突破了长期以来的速度瓶颈。
二、新增特性:
1、子程序指针值为该子程序的内存代码地址,可以直接传递给DLL命令用作回调。
2、只有被使用到的代码和
数据
才会被编译到可执行文件中。
3、如果需要屏蔽子程序中的某段程序使之不会被编译输出,直接使用类似:
“判断循环首(假)”或 “如果真(假)”括住该语句块即可。
4、程序配置中允许设置任
书名:《PHP开发实战1200例(第I卷)》(清华大学出版社.潘凯华.刘中华)
PDF格式扫描版,全书分为5篇15章,共899页。2011年1月出版。
全书压缩打包
成
2部分,这是第2部分。
注:本系列图书的第I、II卷再版时均相应改名为《xxx开发实例大全》(基础卷)及(提高卷),但内容基本无变化,需要的童鞋可自由匹配查找。
《PHP开发实战1200例》分为I、II两卷共计1200个例子,包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;书中实例来源于多位工程师的多年积累,具有很强的实用性。
本书是第I卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用PHP进行Web开发的各个方面的知识和技巧,主要包括开发环境、PHP基础、Web页面交互、文件操作、会话应用、图形图像处理及面向对象等内容。本书分为5篇15章,共计625个实例和625个经验技巧。每个实例都经作者精心筛选,具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案。
本书适合PHP的初学者,如高校学生、求职人员作为练习、速查、学习使用,也适合PHP程序员参考、查阅。
目录: 第1篇 基础篇
第1章 开发环境 2
1.1 AppServ——PHP集
成
化安装包 3
实例001 通过AppServ配置PHP开发环境 3
实例002 AppServ应用技巧 6
实例003 第1个PHP程序 7
1.2 XAMPP——PHP集
成
化安装包 8
实例004 通过XAMPP配置PHP开发环境 8
实例005 测试XAMPP是否安装
成
功 11
实例006 XAMPP应用技巧 12
实例007 第2个PHP程序 13
1.3 IIS+PHP+
MySQL
——独立搭建PHP
开发环境 14
实例008 安装PHP 14
实例009 安装
MySQL
15
实例010 安装IIS 21
实例011 第3个PHP程序 23
1.4 LAMP——独立配置PHP开发环境 24
实例012 安装Apache服务器 24
实例013 安装
MySQL
数据
库服务器 26
实例014 安装PHP.50 28
实例015 第4个PHP程序 30
1.5 XAMPP——Linux版PHP集
成
化安装包 31
实例016 XAMPP——Linux下PHP开发环境的集
成
化 31
实例017 Linux操作系统下启动XAMPP 32
实例018 设置
MySQL
数据
库root用户的密码 33
实例019 第5个PHP程序 34
1.6 Dreamweaver开发工具 35
实例020 Dreamweaver中编码格式的选择 35
实例021 Dreamweaver中创建表格 36
实例022 在表格中插入宠物照片 38
实例023 Dreamweaver创建表单 40
实例024 Dreamweaver中创建和附加CSS样式 42
实例025 Dreamweaver控制弹出信息 45
实例026 Dreamweaver控制浏览器的窗口 46
实例027 通过Dreamweaver创建站点 47
实例028 通过Dreamweaver开发第1个PHP程序 48
1.7 Zend Studio开发工具 50
实例029 安装Zend Studio 50
实例030 Zend Studio创建PHP项目 52
实例031 Zend Studio编码格式的转换 56
实例032 Zend Studio中快捷键的运用 57
实例033 Zend Studio中部署Apache服务器 60
第2章 PHP基础 63
2.1 基本语法 64
实例034 在页面中打印PHP的配置信息 64
实例035 在页面中打印服务器时间 65
实例036 在页面中打印当前执行的PHP文件名 67
实例037 区分单引号和双引号 68
实例038 动态输出JavaScript代码 69
实例039 当数字遇到了字符串 70
实例040 PHP程序员的基础——变量的应用 72
实例041 打印系统环境变量信息print_r($_ENV) 73
实例042 使用可变变量输出“I Like PHP!” 73
实例043 使用转义字符输出特殊字符 74
实例044 使用常量指定PI的值计算圆的面积 75
2.2 运算符 75
实例045 自定义数字的加密/解密算法 76
实例046 比较两个时间戳的大小 77
实例047 使用条件运算符判断数字的奇偶性 78
实例048 判断用户是否具有后台管理权限 79
实例049 打印随机组合生日祝福语 80
实例050 打印2000~2020年的所有闰年 81
实例051 前置运算符和后置运算符的区别 82
实例052 使用位运算
MYSQL
常用命令
1.导出整个
数据
库
mysql
dump -u 用名 -p –default-character-set=latin1
数据
库名 > 导出的文件名(
数据
库默认编码是latin1)
mysql
dump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.导出
一个
表
mysql
dump -u 用户名 -p
数据
库名 表名> 导出的文件名
mysql
dump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
3.导出
一个
数据
库结构
mysql
dump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:wcnc_db.sql
-d 没有
数据
–add-drop-table 在每个create语句之前增加
一个
drop table
4.导入
数据
库
A:常用source 命令
进入
mysql
数据
库控制台,
如
mysql
-u root -p
mysql
>use
数据
库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql
>source wcnc_db.sql
B:使用
mysql
dump命令
mysql
dump -u username -p dbname < filename.sql
C:使用
mysql
命令
mysql
-u username -p -D dbname
2、退出
MySQL
:quit或exit
二、库操作
1、创建
数据
库
命令:create database
例如:建立
一个
名为xhkdb的
数据
库
mysql
> create database xhkdb;
2、
显示
所有的
数据
库
命令:show databases (注意:最后有个s)
mysql
> show databases;
3、删除
数据
库
命令:drop database
例如:删除名为 xhkdb的
数据
库
mysql
> drop database xhkdb;
4、连接
数据
库
命令:use
例如:如果xhkdb
数据
库存在,尝试存取它:
mysql
> use xhkdb;
屏幕提示:Database changed
5、查看当前使用的
数据
库
mysql
> select database();
6、当前
数据
库包含的表信息:
mysql
> show tables; (注意:最后有个s)
三、表操作,操作之前应连接某个
数据
库
命令:create table ( [,.. ]);
mysql
> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default ’′,
> degree double(16,2));
2、获取表结构
命令:desc 表名,或者show columns from 表名
mysql
>DESCRIBE MyClass
mysql
> desc MyClass;
mysql
> show columns from MyClass;
3、删除表
命令:drop table
例如:删除表名为 MyClass 的表
mysql
> drop table MyClass;
4、插入
数据
命令:insert into [( [,.. ])] values ( 值 )[, ( 值n )]
例如,往表 MyClass中插入二条记录, 这二条记录表示:编号为的名为Tom的
成
绩为.45, 编号为 的名为Joan 的
成
绩为.99,编号为 的名为Wang 的
成
绩为.5.
mysql
>insert into MyClass values(1,’Tom’,96.45),(2,’Joan’,82.99), (2,’Wang’, 96.59);
5、
查询
表中的
数据
1)、
查询
所有行
命令:select from where
例如:查看表 MyClass 中所有
数据
mysql
> select * from MyClass;
2)、
查询
前几行
数据
例如:查看表 MyClass 中前行
数据
mysql
> select * from MyClass order by id limit 0,2;
mysql
> select * from MyClass limit 0,2;
6、删除表中
数据
命令:delete from 表名 where 表达式
例如:删除表 MyClass中编号为 的记录
mysql
> delete from MyClass where id=1;
7、修改表中
数据
:update 表名 set
字段
=新值,…where 条件
mysql
> update MyClass set name=’Mary’where id=1;
7、在表中增加
字段
:
命令:alter table 表名 add
字段
类型 其他;
例如:在表MyClass中添加了
一个
字段
passtest,类型为int(4),默认值为
mysql
> alter table MyClass add passtest int(4) default ’′
8、更改表名:
命令:rename table 原表名 to 新表名;
例如:在表MyClass名字更改为YouClass
mysql
> rename table MyClass to YouClass;
更新
字段
内容
update 表名 set
字段
名 = 新内容
update 表名 set
字段
名 = replace(
字段
名,’旧内容’,'新内容’)
1.INT[(M)] 型:正常大小整数类型
2.DOUBLE[(M,D)] [ZEROFILL] 型:正常大小(双精密)浮点数字类型
3.DATE 日期类型:支持的范围是-01-01到-12-31。
MySQL
以YYYY-MM-DD格式来
显示
DATE值,但是允许你使用字符串或数字把值赋给DATE列
4.CHAR(M) 型:定长字符串类型,当存储时,总是是用空格填满右边到指定的长度
5.BLOB TEXT类型,最大长度为(2^16-1)个字符。
6.VARCHAR型:变长字符串类型
5.导入
数据
库表
()创建.sql文件
()先产生
一个
库如auction.c:
mysql
bin>
mysql
admin -u root -p creat auction,会提示输入密码,然后
成
功创建。
()导入auction.sql文件
c:
mysql
bin>
mysql
-u root -p auction grant select,insert,delete,create,drop
on *.* (或test.*/user.*/..)
to 用户名@localhost
identified by ‘密码’;
如:新建
一个
用户帐号以便可以访问
数据
库,需要进行如下操作:
mysql
> grant usage
-> ON test.*
-> TO testuser@localhost;
Query OK, 0 rows affected (0.15 sec)
此后就创建了
一个
新用户叫:testuser,这个用户只能从localhost连接到
数据
库并可以连接到test
数据
库。下一步,我们必须指定testuser这个用户可以执行哪些操作:
mysql
> GRANT select, insert, delete,update
-> ON test.*
-> TO testuser@localhost;
Query OK, 0 rows affected (0.00 sec)
此操作使testuser能够在每
一个
test
数据
库中的表执行SELECT,INSERT和DELETE以及UPDATE
查询
操作。现在我们结束操作并退出
MySQL
客户程序:
mysql
> exit
Bye9!
1:使用SHOW语句找出在服务器上当前存在什么
数据
库:
mysql
> SHOW DATABASES;
2:2、创建
一个
数据
库
MYSQL
DATA
mysql
> Create DATABASE
MYSQL
DATA;
3:选择你所创建的
数据
库
mysql
> USE
MYSQL
DATA; (按回车键出现Database changed 时说明操作
成
功!)
4:查看现在的
数据
库中存在什么表
mysql
> SHOW TABLES;
5:创建
一个
数据
库表
mysql
> Create TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
6:
显示
表的结构:
mysql
> DESCRIBE MYTABLE;
7:往表中加入记录
mysql
> insert into MYTABLE values (“hyq”,”M”);
8:用文本方式将
数据
装入
数据
库表中(例如D:/
mysql
.txt)
mysql
> LOAD DATA LOCAL INFILE “D:/
mysql
.txt”INTO TABLE MYTABLE;
9:导入.sql文件命令(例如D:/
mysql
.sql)
mysql
>use database;
mysql
>source d:/
mysql
.sql;
10:删除表
mysql
>drop TABLE MYTABLE;
11:清空表
mysql
>delete from MYTABLE;
12:更新表中
数据
mysql
>update MYTABLE set sex=”f”where name=’hyq’;
以下是无意中在网络看到的使用
MySql
的管理心得,
在windows中
MySql
以服务形式存在,在使用前应确保此服务已经启动,未启动可用net start
mysql
命令启动。而Linux中启动时可用“/etc/rc.d/init.d/
mysql
d start”命令,注意启动者应具有管理员权限。
刚安装好的
MySql
包含
一个
含空密码的root帐户和
一个
匿名帐户,这是很大的安全隐患,对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名帐户删除、root帐户设置密码,可用如下命令进行:
use
mysql
;
delete from User where User=”";
update User set Password=PASSWORD(‘newpassword’) where User=’root’;
如果要对用户所用的登录终端进行限制,可以更新User表中相应用户的Host
字段
,在进行了以上更改后应重新启动
数据
库服务,此时登录时可用如下类似命令:
mysql
-uroot -p;
mysql
-uroot -pnewpassword;
mysql
mydb -uroot -p;
mysql
mydb -uroot -pnewpassword;
上面命令参数是常用参数的一部分,详细情况可参考文档。此处的mydb是要登录的
数据
库的名称。
在进行开发和实际应用中,用户不应该只用root用户进行连接
数据
库,虽然使用root用户进行测试时很方便,但会给系统带来重大安全隐患,也不利于管理技术的提高。我们给
一个
应用中使用的用户赋予最恰当的
数据
库权限。如
一个
只进行
数据
插入的用户不应赋予其删除
数据
的权限。
MySql
的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的
数据
行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下:
grant all on mydb.* to NewUserName@HostName identified by “password”;
grant usage on *.* to NewUserName@HostName identified by “password”;
grant select,insert,update on mydb.* to NewUserName@HostName identified by “password”;
grant update,delete on mydb.TestTable to NewUserName@HostName identified by “password”;
若要给此用户赋予他在相应对象上的权限的管理能力,可在GRANT后面添加WITH GRANT OPTION选项。而对于用插入User表添加的用户,Password
字段
应用PASSWORD 函数进行更新加密,以防不轨之人窃看密码。对于那些已经不用的用户应给予清除,权限过界的用户应及时回收权限,回收权限可以通过更新User表相应
字段
,也可以使用REVOKE操作。
下面给出本人从其它资料(www.cn-java.com)获得的对常用权限的解释:
全局管理权限:
FILE: 在
MySQL
服务器上读写文件。
PROCESS:
显示
或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭
MySQL
服务。
数据
库/
数据
表/
数据
列权限:
Alter: 修改已存在的
数据
表(例如增加/删除列)和索引。
Create: 建立新的
数据
库或
数据
表。
Delete: 删除表的记录。
Drop: 删除
数据
表或
数据
库。
INDEX: 建立或删除索引。
Insert: 增加表的记录。
Select:
显示
/搜索表的记录。
Update: 修改表中已存在的记录。
特别的权限:
ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录–其它什么也不允许做。
———————
MYSQL
常用命令
有很多朋友虽然安装好了
mysql
但却不知如何使用它。在这篇文章中我们就从连接
MYSQL
、修改密码、增加用户等方面来学习一些
MYSQL
的常用命令。
有很多朋友虽然安装好了
mysql
但却不知如何使用它。在这篇文章中我们就从连接
MYSQL
、修改密码、增加用户等方面来学习一些
MYSQL
的常用命令。
一、连接
MYSQL
格式:
mysql
-h主机地址-u用户名-p用户密码
、例:连接到本机上的
MYSQL
首先在打开DOS窗口,然后进入目录
mysql
bin,再键入命令
mysql
-uroot -p,回车后提示你输密码,如果刚安装好
MYSQL
,超级用户root是没有密码的,故直接回车即可进入到
MYSQL
中了,
MYSQL
的提示符是:
mysql
>
、例:连接到远程主机上的
MYSQL
假设远程主机的IP为:.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql
-h110.110.110.110 -uroot -pabcd123
(注:u与root可以不用加空格,其它也一样)
、退出
MYSQL
命令:exit (回车)
二、修改密码
格式:
mysql
admin -u用户名-p旧密码password 新密码
、例:给root加个密码ab12。首先在DOS下进入目录
mysql
bin,然后键入以下命令
mysql
admin -uroot -password ab12
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
、例:再将root的密码改为djg345
mysql
admin -uroot -pab12 password djg345
MYSQL
常用命令(下)
一、操作技巧
、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把
一个
完整的命令分
成
几行来打,完后用分号作结束标志就OK。
、你可以使用光标上下键调出以前的命令。但以前我用过的
一个
MYSQL
旧版本不支持。我现在用的是
mysql
-3.23.27-beta-win。
二、
显示
命令
、
显示
数据
库列表。
show databases;
刚开始时才两个
数据
库:
mysql
和test。
mysql
库很重要它里面有
MYSQL
的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
、
显示
库中的
数据
表:
use
mysql
;//打开库,学过FOXBASE的一定不会陌生吧
show tables;
、
显示
数据
表的结构:
describe 表名;
create database 库名;
use 库名;
create table 表名(
字段
设定列表);
、删库和删表:
drop database 库名;
drop table 表名;
、将表中记录清空:
delete from 表名;
、
显示
表中的记录:
select * from 表名;
三、
一个
建库和建表以及插入
数据
的实例
drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default ‘深圳’,
year date
); //建表结束
//以下为插入
字段
insert into teacher values(”,’glchengang’,'深圳一中’,’-10-10′);
insert into teacher values(”,’jack’,'深圳一中’,’-12-23′);
注:在建表中()将ID设为长度为的数字
字段
:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他
成
为主
字段
primary key
()将NAME设为长度为的字符
字段
()将ADDRESS设为长度的字符
字段
,而且缺省值为深圳。varchar和char有什么区别呢,只有等以后的文章再说了。
()将YEAR设为日期
字段
。
如果你在
mysql
提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入
一个
文本文件中假设为school.sql,然后复制到c:\下,并在DOS状态进入目录\
mysql
\bin,然后键入以下命令:
mysql
-uroot -p密码school.bbb
注释:将
数据
库school备份到school.bbb文件,school.bbb是
一个
文本文件,文件名任取,打开看看你会有新发现。
一.SELECT语句的完整语法为:
SELECT[ALL|DISTINCT|DISTINCTROW|TOP]
{*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]}
FROM tableexpression[,…][IN externaldatabase]
[WHERE…]
[GROUP BY…]
[HAVING…]
[ORDER BY…]
[WITH OWNERACCESS OPTION]
用中括号([])括起来的部分表示是可选的,用大括号({})括起来的部分是表示必须从中选择其中的
一个
。
1 FROM子句
FROM 子句指定了SELECT语句中
字段
的来源。FROM子句后面是包含
一个
或多个的表达式(由逗号分开),其中的表达式可为单一表名称、已保存的
查询
或由INNER JOIN、LEFT JOIN 或RIGHT JOIN 得到的复合结果。如果表或
查询
存储在外部
数据
库,在IN 子句之后指明其完整路径。
例:下列SQL语句返回所有有定单的客户:
SELECT OrderID,Customer.customerID
FROM Orders Customers
WHERE Orders.CustomerID=Customers.CustomeersID
2 ALL、DISTINCT、DISTINCTROW、TOP谓词
(1) ALL 返回满足SQL语句条件的所有记录。如果没有指明这个谓词,默认为ALL。
例:SELECT ALL FirstName,LastName
FROM Employees
(2) DISTINCT 如果有多个记录的选择
字段
的
数据
相同,只返回
一个
。
(3) DISTINCTROW 如果有重复的记录,只返回
一个
(4) TOP
显示
查询
头尾若干记录。也可返回记录的百分比,这是要用TOP N PERCENT子句(其中N 表示百分比)
例:返回%定货额最大的定单
SELECT TOP 5 PERCENT*
FROM [ Order Details]
ORDER BY UnitPrice*Quantity*(1-Discount) DESC
3 用AS 子句为
字段
取别名
如果想为返回的列取
一个
新的标题,或者,经过对
字段
的计算或总结之后,产生了
一个
新的值,希望把它放到
一个
新的列里
显示
,则用AS保留。
例:返回FirstName
字段
取别名为NickName
SELECT FirstName AS NickName ,LastName ,City
FROM Employees
例:返回新的一列
显示
库存价值
SELECT ProductName ,UnitPrice ,UnitsInStock ,UnitPrice*UnitsInStock AS valueInStock
FROM Products
二.WHERE 子句指定
查询
条件
1 比较运算符
比较运算符含义
= 大于等于
<= 小于等于
!> 不大于
!#1/1/96# AND OrderDate#96-1-1#
也可以表示为:
WHERE OrderDate>Datevalue(‘/1/96’)
使用NOT 表达式求反。
例:查看年月日以后的定单
WHERE Not OrderDateQuantity
另一种方法是用Microsof JET SQL 独有的JNNER JOIN
FROM table1 INNER JOIN table2
ON table1.field1 comparision table2.field2
其中comparision 就是前面WHERE子句用到的比较运算符。
SELECT FirstName,lastName,OrderID,CustomerID,OrderDate
FROM Employees
INNER JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID
INNER JOIN不能连接Memo OLE Object Single Double
数据
类型
字段
。
在
一个
JOIN语句中连接多个ON子句
SELECT fields
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field1 AND
ON table1.field2 compopr table2.field2 OR
ON table1.field3 compopr table2.field3
SELECT fields
FROM table1 INNER JOIN
(table2 INNER JOIN [( ]table3
[INNER JOER] [( ]tablex[INNER JOIN]
ON table1.field1 compopr table2.field1
ON table1.field2 compopr table2.field2
ON table1.field3 compopr table2.field3
外部连接返回更多记录,在结果中保留不匹配的记录,不管存不存在满足条件的记录都要返回另一侧的所有记录。
FROM table [LEFT|RIGHT]JOIN table2
ON table1.field1comparision table.field2
用左连接来建立外部连接,在表达式的左边的表会
显示
其所有的
数据
例:不管有没有定货量,返回所有商品
SELECT ProductName ,OrderID
FROM Products
LEFT JOIN Orders ON Products.PrductsID=Orders.ProductID
右连接与左连接的差别在于:不管左侧表里有没有匹配的记录,它都从左侧表中返回所有记录。
例:如果想了解客户的信息,并统计各个地区的客户分布,这时可以用
一个
右连接,即使某个地区没有客户,也要返回客户信息。
空值不会相互匹配,可以通过外连接才能测试被连接的某个表的
字段
是否有空值。
SELECT *
FROM talbe1
LEFT JOIN table2 ON table1.a=table2.c
1 连接
查询
中使用Iif函数实现以值
显示
空值
Iif表达式:Iif(IsNull(Amount,0,Amout)
例:无论定货大于或小于¥,都要返回
一个
标志。
Iif([Amount]>50,?Big order?,?Small order?)
五. 分组和总结
查询
结果
在SQL的语法里,GROUP BY和HAVING子句用来对
数据
进行汇总。GROUP BY子句指明了按照哪几个
字段
来分组,而将记录分组后,用HAVING子句过滤这些记录。
GROUP BY 子句的语法
SELECT fidldlist
FROM table
WHERE criteria
[GROUP BY groupfieldlist [HAVING groupcriteria]]
注:Microsoft Jet
数据
库Jet 不能对备注或OLE对象
字段
分组。
GROUP BY
字段
中的Null值以备分组但是不能被省略。
在任何SQL合计函数中不计算Null值。
GROUP BY子句后最多可以带有十个
字段
,排序优先级按从左到右的顺序排列。
例:在‘WA’地区的雇员表中按头衔分组后,找出具有同等头衔的雇员数目大于人的所有头衔。
SELECT Title ,Count(Title) as Total
FROM Employees
WHERE Region = ‘WA’
GROUP BY Title
HAVING Count(Title)>1
JET SQL 中的聚积函数
聚集函数意义
SUM ( ) 求和
AVG ( ) 平均值
COUNT ( ) 表达式中记录的数目
COUNT (* ) 计算记录的数目
MAX 最大值
MIN 最小值
VAR 方差
STDEV 标准误差
FIRST 第
一个
值
LAST 最后
一个
值
六. 用Parameters声明创建参数
查询
Parameters声明的语法:
PARAMETERS name datatype[,name datatype[, …]]
其中name 是参数的标志符,可以通过标志符引用参数.
Datatype说明参数的
数据
类型.
使用时要把PARAMETERS 声明置于任何其他语句之前.
PARAMETERS[Low price] Currency,[Beginning date]datatime
SELECT OrderID ,OrderAmount
FROM Orders
WHERE OrderAMount>[low price]
AND OrderDate>=[Beginning date]
七. 功能
查询
所谓功能
查询
,实际上是一种操作
查询
,它可以对
数据
库进行快速高效的操作.它以选择
查询
为目的,挑选出符合条件的
数据
,再对
数据
进行批处理.功能
查询
包括更新
查询
,删除
查询
,添加
查询
,和生
成
表
查询
.
1 更新
查询
UPDATE子句可以同时更改
一个
或多个表中的
数据
.它也可以同时更改多个
字段
的值.
更新
查询
语法:
UPDATE 表名
SET 新值
WHERE 准则
例:英国客户的定货量增加%,货运量增加%
UPDATE OEDERS
SET OrderAmount = OrderAmount *1.1
Freight = Freight*1.03
WHERE ShipCountry = ‘UK’
2 删除
查询
DELETE子句可以使用户删除大量的过时的或冗于的
数据
.
注:删除
查询
的对象是整个记录.
DELETE子句的语法:
DELETE [表名.*]
FROM 来源表
WHERE 准则
例: 要删除所有年前的定单
DELETE *
FROM Orders
WHERE OrderData<#94-1-1#
3 追加
查询
INSERT子句可以将
一个
或一组记录追加到
一个
或多个表的尾部.
INTO 子句指定接受新记录的表
valueS 关键字指定新记录所包含的
数据
值.
INSERT 子句的语法:
INSETR INTO 目的表或
查询
(
字段
,
字段
,…)
valueS(数值,数值,…)
例:增加
一个
客户
INSERT INTO Employees(FirstName,LastName,title)
valueS(‘Harry’,’Washington’,’Trainee’)
4 生
成
表
查询
可以一次性地把所有满足条件的记录拷贝到一张新表中.通常制作记录的备份或副本或作为报表的基础.
SELECT INTO子句用来创建生
成
表
查询
语法:
SELECT
字段
,
字段
,…
INTO 新表[IN 外部
数据
库]
FROM 来源
数据
库
WHERE 准则
例:为定单制作
一个
存档备份
SELECT *
INTO OrdersArchive
FROM Orders
八. 联合
查询
UNION运算可以把多个
查询
的结果
合并
到
一个
结果集里
显示
.
UNION运算的一般语法:
[表]
查询
UNION [ALL]
查询
UNION …
例:返回巴西所有供给商和客户的名字和城市
SELECT CompanyName,City
FROM Suppliers
WHERE Country = ‘Brazil’
UNION
SELECT CompanyName,City
FROM Customers
WHERE Country = ‘Brazil’
缺省的情况下,UNION子句不返回重复的记录.如果想
显示
所有记录,可以加ALL选项
UNION运算要求
查询
具有相同数目的
字段
.但是,
字段
数据
类型不必相同.
每
一个
查询
参数中可以使用GROUP BY 子句或HAVING 子句进行分组.要想以指定的顺序来
显示
返回的
数据
,可以在最后
一个
查询
的尾部使用OREER BY子句.
九. 交叉
查询
交叉
查询
可以对
数据
进行总和,平均,计数或其他总和计算法的计算,这些
数据
通过两种信息进行分组:
一个
显示
在表的左部,另
一个
显示
在表的顶部.
Microsoft Jet SQL 用TRANSFROM语句创建交叉表
查询
语法:
TRANSFORM aggfunction
SELECT 语句
GROUP BY 子句
PIVOT pivotfield[IN(value1 [,value2[,…]]) ]
Aggfounction指SQL聚积函数,
SELECT语句选择作为标题的的
字段
,
GROUP BY 分组
Pivotfield 在
查询
结果集中创建列标题时用的
字段
或表达式,用可选的IN子句限制它的取值.
value代表创建列标题的固定值.
例:
显示
在年里每一季度每一位员工所接的定单的数目:
TRANSFORM Count(OrderID)
SELECT FirstName&’’&LastName; AS FullName
FROM Employees INNER JOIN Orders
ON Employees.EmployeeID = Orders.EmployeeID
WHERE DatePart(“yyyy”,OrderDate)= ‘’
GROUP BY FirstName&’’&LastName;
ORDER BY FirstName&’’&LastName;
POVOT DatePart(“q”,OrderDate)&’季度’
十.子
查询
子
查询
可以理解为套
查询
.子
查询
是
一个
SELECT语句.
1 表达式的值与子
查询
返回的单一值做比较
表达式comparision [ANY|ALL|SOME](子
查询
)
ANY 和SOME谓词是同义词,与比较运算符(=,,,=)一起使用.返回
一个
布尔值True或False.ANY的意思是,表达式与子
查询
返回的一系列的值逐一比较,只要其中的一次比较产生True结果,ANY测试的返回True值(既WHERE子句的结果),
对应
于该表达式的当前记录将进入主
查询
的结果中.ALL测试则要求表达式与子
查询
返回的一系列的值的比较都产生True结果,才回返回True值.
例:主
查询
返回单价比任何
一个
折扣大于等于%的产品的单价要高的所有产品
SELECT * FROM Products
WHERE UnitPrice>ANY
(SELECT UnitPrice FROM[Order Details] WHERE Discount>0.25)
2 检查表达式的值是否匹配子
查询
返回的一组值的某个值
[NOT]IN(子
查询
)
例:返回库存价值大于等于的产品.
SELECT ProductName FROM Products
WHERE ProductID IN
(SELECT PrdoctID FROM [Order DEtails]
WHERE UnitPrice*Quantity>= 1000)
3检测子
查询
是否返回任何记录
[NOT]EXISTS (子
查询
)
例:用EXISTS检索英国的客户
SELECT ComPanyName,ContactName
FROM Orders
WHERE EXISTS
(SELECT *
FROM Customers
WHERE Country = ‘UK’AND
Customers.CustomerID= Orders.CustomerID)
MYSQL
单表
一对多
查询
,将
多条
记录
合并
成
一条
记录
一、描述:
在
MySQL
5.6环境下,应工作需求:将
一个
表中
多条
某个相同
字段
的其他
字段
合并
(不太会表达,有点绕,直接上图)
想要达到的效果:
实现SQL语句:
1 SELECT
2 a.books,
3 GROUP_CONCAT(a.name SEPARATOR ‘||’) AS NAMES,
4 GROUP_CONCAT(a.code SEPARATOR ‘||’) AS codes
5 FROM
6 temp_info
order_info-订单信息表
CREATE TABLE `order_info` (
`order_id` varchar(32) NOT NULL COMMENT '订单id',
`user_id` varchar(64) DEFAULT NULL COMMENT '买家id',
`user_phone` varchar(32) DEFAULT NULL COMMENT '下单钉钉绑定的手机号',
`belong_group` char(1) DEFAULT NU
SELECT *
FROM table_name t1
WHERE (SELECT COUNT(*) FROM table_name t2 WHERE t2.group_id = t1.group_id AND t2.field_name >= t1.field_name) <= N;
其中,table_name 是你要
查询
的表名,group_id 是你要分组的
字段
名,field_name 是你要比较的
字段
名,N 是你要获取的每组最大值的数量。
解决git error: could not lock config file C:/Program Files/Git/mingw64/etc/gitconfig: Permission denie
42851
解决git error: could not lock config file C:/Program Files/Git/mingw64/etc/gitconfig: Permission denie
正在长身体: