相关文章推荐
刚毅的馒头  ·  qml ...·  1 年前    · 
风流倜傥的小笼包  ·  执行mysqld ...·  1 年前    · 
销魂的馒头  ·  Get-Process ...·  1 年前    · 
不敢表白的啤酒  ·  No connection could ...·  1 年前    · 

假如我查到了1000条记录,我想取其中的第200~300条记录

sqlserver:
with t as ( select top 300 row_number() over(order by 字段) r, * from 表)
select * from t where r>=200
oracle:
with t as ( select rownum r, * from 表 where rownum<=300 )
select * from t where r>=200
mysql:
select * from 表 limit 199,100
db2:
with t as ( select row_number() over(order by 字段) r, * from 表 fetch frist 300 rows only)
select * from t where r>=200
其中 sqlserver\oracle\db2也可直接
with t as (select row_number() over(order by 字段) r, * from 表)
select * from t where r between 200 and 300

假如我查到了1000条记录,我想取其中的第200~300条记录sqlserver:with t as ( select top 300 row_number() over(order by 字段) r, * from 表)select * from t where r&amp;gt;=200oracle:with t as ( select rownum r, * from 表 where r...
书名:《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+My SQL ——独立搭建PHP 开发环境 14 实例008 安装PHP 14 实例009 安装My SQL 15 实例010 安装IIS 21 实例011 第3个PHP程序 23 1.4 LAMP——独立配置PHP开发环境 24 实例012 安装Apache服务器 24 实例013 安装My SQL 数据库服务器 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 设置My SQL 数据库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章 My SQL 数据库与PHP 478 8.1 My SQL 服务器的启动和关闭 479 实例347 启动My SQL 服务器 479 实例348 连接My SQL 服务器 480 实例349 关闭My SQL 服务器 481 8.2 My SQL 数据库 482 实例350 创建PHP图书数据库 482 实例351 选择 PHP图书数据库 483 实例352 删除PHP图书数据库 484 8.3 My SQL 数据表 485 实例353 在PHP图书数据库 创建图书信息表 485 实例354 查看图书信息表 486 实例355 修改图书信息表 487 实例356 重命名图书信息表 488 实例357 删除图书信息表 489 8.4 My SQL 数据 489 实例358 向图书信息表 添加数据 489 实例359 修改图书信息表 的数据 490 实例360 删除图书信息表 所有数据 492 实例361 删除图书信息表 指定数据 493 8.5 PHP操作My SQL 数据库 494 实例362 my sql _connect()函数连接My SQL 服务器 494 实例363 my sql _select_db()函数 选择 My SQL 数据库 495 实例364 my sql _query()函数执行 SQL 语句 496 实例365 my sql _fetch_array()函数将结果返回到数组 497 实例366 my sql _fetch_row()函数从结果集 获取数据 499 实例367 my sql _num_rows()函数获取结果集 记录 数 500 实例368 my sql _result()函数获取结果数据 501 实例369 Insert语句添加图书信息 502 实例370 Select语句 查询 图书信息 503 实例371 分页显示图书信息 505 实例372 Update语句更新图书信息 506 实例373 图书信息的批量更新 508 实例374 Delete语句删除图书信息 510 实例375 数据信息的批量删除 511 实例376 避免输出 文字符串时出现乱码 512 实例377 动态创建My SQL 数据库 514 实例378 动态创建数据表 515 实例379 动态创建My SQL 数据字段 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 My SQL 数据自身的导入和导出 581 实例437 SQL Server数据导入到My SQL 数据库 582 实例438 Access数据导入到My SQL 数据库 584 8.9 My SQL 数据库的备份和恢复 586 实例439 通过命令模式备份数据库 586 实例440 通过phpMyAdmin备份数据库 587 实例441 通过手动方式备份数据库 588 实例442 通过命令模式恢复数据库 589 实例443 通过phpMyAdmin恢复数据库 590 实例444 通过手动方式恢复数据库 591 8.10 phpMyAdmin图形化管理工具 591 实例445 通过phpMyAdmin修改My SQL 用户密码 591 实例446 通过phpMyAdmin设置数据库、数据表编码 593 实例447 phpMyAdmin操作数据库 594 实例448 phpMyAdmin操作数据表 595 实例449 phpMyAdmin操作数据 596 第9章 My SQL 高级应用技术 598 9.1 PHP的My SQL i扩展库 599 实例450 使用My SQL i扩展库连接My SQL 数据库 599 实例451 通过my sql i扩展库实现数据库信息的检索 600 实例452 查看服务器连接错误报告 602 实例453 通过My SQL i扩展库实现多表 查询 603 实例454 通过My SQL i扩展技术实现内存的回收 604 实例455 用户登录 606 实例456 用户注册 607 实例457 数据的浏览 609 实例458 数据库、数据表 数据的动态输出 611 9.2 My SQL 视图的应用 613 实例459 在My SQL 数据库 创建视图 613 实例460 修改My SQL 数据库 的视图 614 实例461 删除My SQL 视图 616 实例462 使用My SQL 视图 查询 学生成绩信息 617 9.3 My SQL 存储过程 618 实例463 创建My SQL 存储过程 618 实例464 使用存储过程实现用户登录 619 实例465 使用存储过程实现用户注册 621 9.4 My SQL 触发器 622 实例466 创建My SQL 触发器 622 实例467 查看My SQL 触发器 623 9.5 My SQL 事务 624 实例468 使用事务处理技术实现关联表间信息的删除 624 实例469 使用事务处理技术实现银行的安全转账 626 第10章 PHP操作 SQL Server数据库 628 10.1 连接数据库 629 实例470 通过ADO方式连接 SQL Server数据库 629 实例471 ms sql _connect()函数连接 SQL Server数据库 630 10.2 操作数据库 631 实例472 通过ADO方式实现指定时间段的信息检索 632 实例473 检索商品信息 633 实例474 获取指定位置的图书信息 634 实例475 取得数据 指定的字段信息 635 实例476 利用ms sql _field_name()函数获取字段名称 637 实例477 通过结果集对象输出数据 638 实例478 通过结果集数组输出数据 639 实例479 返回结果集 的单元内容 640 实例480 利用函数返回指定字段的长度 641 实例481 利用函数返回指定字段的类型 642 实例482 取得结果集 的字段数目 644 实例483 获取数据表 数据 记录 数 645 实例484 ms sql _free_result()函数的应用 646 实例485 ms sql _close()函数的应用 647 实例486 编写数据库连接类 648 实例487 添加图书类的实现 649 实例488 删除图书类的实现 651 实例489 更新图书类的实现 653 实例490 通过ADO方式实现输入页码跳转到指定页 655 实例491 利用ms sql 函数库实现指定页跳转 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访问My SQL 数据库 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
SELECT * FROM table  LIMIT [offset,] rows | rows OFFSET offset 使用 查询 语句的时候,要返回前几条或者 中间 某几行数据,用Llimit   可以实现:    1. LIMIT 子句可以被用于强制 SELECT 语句返回指定的 记录 数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一
查询 数据指从数据库 获取所需要的数据。 查询 数据是数据库操作 最常用,也是最重要的操作。用户可以根据自己对数据的需求,使用不同的 查询 方式。通过不同的 查询 方式,可以获得不同的数据。My SQL 是使用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); 一、 查询 语句的基本语法 查询 数据是指从数据库 的数据表或视图 获取所需要的数据,在my sql ,可以使用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; not ( ! ) 逻辑非 [ sql ] view plain copy select * from STUDENT where STU_AGE NOT IN(13,14,16); 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,'审计部'); my sql 的五种统计函数: (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其 任一字母的字符串。正则表达式的 查询 能力比通配字符的 查询 能力更强大,而且更加的灵活。正则表达式可以应用于非常复杂 查询 。 My SQL ,使用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)+'; 正则表达式可以匹配字符串。当表 记录 包含这个字符串时,就可以将该 记录 查询 出来。如果指定多个字符串时,需要用符号“|”隔开。只要匹配这些字符串 的任意一个即可。每个字符串与”|”之间不能有空格。因为, 查询 过程 ,数据库系统会将空格也当作一个字符。这样就 查询 不出想要的结果。 正则表达式 ,“*”和“+”都可以匹配多个该符号之前的字符。但是,“+”至少表示一个字符,而“*”可以表示零个字符。
从一个“普通”的Oracle DBA(Oracle数据库管理员)转变为Oracle Applications DBA(Oracle应用程序数据库管理员),有两个内容你必须去弄清楚。第一个内容是如何成为一个Oracle Applications DBA(Oracle应用程序数据库管理员)。第二个内容是你要搞清楚Oracle应用程序背后的架构体系,也就是说你要明白诸如以下产品的结构体系:Oracle电子商务套件、Oracle 11i数据库、Siebel产品等。 本文首先讲述如何从一个普通的Oracle DBA转变为一个Oracle Applications DBA(Oracle应用程序数据库管理员),接着讲述一些Oracle应用软件架构方面的内容 。 如何成为Oracle应用程序数据库管理员 首先是角色的转变 Oracle Applications DBA(Oracle应用程序数据库管理员)对“普通”的Oracle DBA(Oracle数据库管理员)来说是一个很大的挑战。拿Oracle EBS DBA(Oracle 电子商务套件DBA)来说,不仅需要了解EBS的各个组件、服务,而且还要更主动和其他相关人员接触。 一个Oracle Applications DBA(Oracle应用程序数据库管理员)不仅需要和其他DBA一样去负责managing、 sizing、maintaining和 tuning database这些日常的数据库管理的工作,如果他的Apps database是OLTP系统的话,他还需要监察wait和lock 。Oracle E-Business Suite还有一些特性需要DBA去完成,比如从外部资源里灌数据到Apps database里,或支持开发人员从已有数据 提取数据。 接着工作内容的转变 作为一个Oracle Applications DBA(Oracle应用程序数据库管理员),要想更好的对Oracle Application database做支持,需要仔细记住以下几项。 1.网络上没有什么比较容易简单的文档让你去熟悉Apps DBA,所以我建议去看帮助。 2.在你没有经过多次测试并且得到客户认可的时候不要去打补丁,并且你要确信这个补丁解决了现有的问题,而且没有带来其它新的问题。 3.记住Oracle Applications会有很多索引,定期rebuild index会对性能有好处,当然做这项工作应该在系统的空闲时间。 4.不要为了提高性能而在没有询问oracle Support前试着去增加额外的indexes。如果你一定要去做,那千万记住要有文档作 记录 ,因为在这之后你再打patch的时候它可能会把你做的修改自动复原。 5. 知道怎么样是正确的打patch,先计划打哪个patch,然后取得patch,接着打patch,测试,最后文档 记录 。 6. 要知道任何时刻数据库都可能会有一些object 是invalid的,你的一些操作也会增加invalid objects,定期检查这些invalid objects的数量,然后定期用utlrp去重新编译,utlrp.squ在ORACLE HOME的rdbms/admin下,需要用SYS运行。在你的DB运行过程 如果碰到错误,就可以先重新编译invalid objects,如果没有解决问题再去递交iTAR(Internet created Technical Assistance Request). 7.能看懂日志。 8.了解Apps database的环境,包括操作系统和DB的,当你对你的工作环境了如指掌后,一切也就变得容易了,那时,你就是一个悠闲的Apps DBA了。 另外,对于APPS DB(应用程序数据库)来说,你可能需要创建或拷贝(克隆)多个生产库以外的数据库,比如测试和开发数据库,当然,需要多少数据库是由你的商业需求所决定的。开发环境数据库是供开发人员进行report,PL/ SQL 等开发的,这个环境可以在开发人员觉得数据已经不再满足开发需求的时候,当然也可以在这个环境测试补丁(patches)。当然最终使用patch的时候还需要在测试环境做测试,因为测试数据库是和生产数据库环境最接近的。(上面说的克隆cloning是一种将applications layer和database layer完全复制的一种方法。)所以,当你拥有这三个数据库的时候,打patch的步骤是先development database再test database最后才在production database环境应用。 构架应用体系 如果你研究过Oracle Forms,使用过Application Server和Devel
1) Pro*C/C++/... : C语言和数据库打交道的方法,比OCI更常用; 2) ODBC 3) OCI: C语言和数据库打交道的方法,和Pro*C很相似,更底层,很少用 只适合ORACLE; 4) SQL J: 很新的一种用Java访问Oracle数据库的方法,会的人不多; 5) JDBC 6) PL/ SQL : 存储在数据库内运行, 其他方法为在数据库外对数据库访问,只适合ORACLE; 2. PL/ SQL 1) PL/ SQL (Procedual language/ SQL )是在标准 SQL 的基础上增加了过程化处理的语言; 2) Oracle客户端工具访问Oracle服务器的操作语言; 3) Oracle对 SQL 的扩充; 4. PL/ SQL 的优缺点 优点:1) 结构化模块化编程,不是面向对象; 2) 良好的可移植性(不管Oracle运行在何种操作系统); 3) 良好的可维护性(编译通过后存储在数据库里); 4) 提升系统性能; 缺点 1) 不便于向异构数据库移植应用程序(只能用于Oracle); 5. SQL 与PL/ SQL 的区别 SQL :1) 第四代语言(智能语言); 2) 做什么,不管怎么做; 3) 缺少过程与控制语句; 4) 无算法 PL/ SQL : (相对 SQL 扩展 部分 ) 1) 扩展变量和类型; 2) 扩展控制结构; 3) 扩展过程与函数; 4) 扩展对象类型与方法 ---- 第二章 PL/ SQL 程序结构 ---- 1. PL/ SQL 块 1) 申明 部分 , DECLARE (如果语句不需要声明任何变量,可以不写); 2) 执行 部分 , BEGIN <---------> END; 3) 异常处理,EXCEPTION(可以没有); 2. PL/ SQL 开发环境 可以运用任何纯文本的编辑器编辑,例如:VI 3. PL/ SQL 字符集 字母: A-Z, a-z; 数字: 0-9; 空白: TAB , SPACE , 回车; 符号: +_)(*&^%$#@!~ ; PL/ SQL 对大小写不敏感(注意) 4. 标识符命名规则答: 1) 字母开头; 2) 后跟任意的 非空格字符 数字 货币符号( $ ) 下划线( _ ) 或 # ; 3) 最大长度为30个字符(八个字符左右最合适); 用来给对象命名(潜规则): 变量: 以v_开头 游标: 以c_开头 5. 分界符 1) 运算符 + - * / **(指数操作符) 2) 关系 =(相当于JAVA 的==) > < <> != ~= ^= <= >= 3) 赋值 := 例子a:=2 4) 连接 || 例: 'abc' || 123 5) 标号 << 需要的标记 >> 6) 注释 --(单行) /* */(段落) 7) 替代 <scape> <tab> <enter> 6. 文字 1)字符型文字(字符串) 'tom' (单引号) 'tom''s pen' ''为2个单引号(标识转义) 为tom's pen 2)数字型 123 -4 +56 0 9.0 1.23E5 9.8e-3 3)布尔型 TRUE FALSE NULL 7. 变量声明 语法 Var_name [CONSTANT](标识常量,可选) type [NOT NULL](标识为not-null后必须在后面初始化) [:=value](赋值,初始化); Var_name [CONSTANT](标识常量,可选) type [NOT NULL] [ default value](赋值,初始化)等同于上面的语句; 注:1) 申明时可以有默认值也可以没有; 2) 如有[CONSTANT][NOT NULL], 变量一定要有一个初始值; 3) 赋值语句为“:=”; 4) 变量可以认为是数据库里一个字段; 5) 规定没有初始化的变量为NULL; ---- 第三章 变量与数据类型 ---- 1. 数据类型 1) 标量型:数字型(BINARY_INTEGER,NUMBER)(DEC,FLOAT,REAL... NUMBER的子类型)、 NUMBER(P,S) P:精度:整个的有效数位(从左边开始第一个不为0的数字起) S:刻度,可选(小数点后面的保留位数) BINARY_INTEGER:保存整数. 和NUMBER的底层的保存方式不同, BINARY_INTEGER为2进制保存,NUMBER 需要考虑其他东西不是2进制方式 BINARY_INTEGER之间做加法效率快而NUMBER要先转换2进制再计算 单纯的计算---->BINARY_INTEGER 考虑和表 其他数据的交互的话一般------->NUMBER 字符型、CHAR VARCHAR VARCHAR2 STRING 一般CHAR VARCHAR2就够了 CHAR 定长(例子:CHAR(5) 如果不够5个字符的话就会用空白填充 ) ,可以不带长度规定(默认为1) VARCHAR2 变长((VARCHAR2(5)标识最长可以保存5个字符) 后面的长度规定必须要有 布尔型、BOOLEAN 日期型; DATE(后增加 TIMESTAMP(比DATE更精细点(精确到秒) INTERVAL) 一般用DATE 2) 组合型:RECORD(常用)、TABLE(常用)、VARRAY(较少用) 3) 参考型:REF CURSOR(游标)、REF object_type 4) LOB(Large Object) 2. %TYPE [变量名] [表名.字段名] [%TYPE] 表示变量具有与数据库的表 某一字段相同的类型 例:v_FirstName s_emp.first_name%TYPE; 3. RECORD类型 TYPE t_emp IS RECORD( /*其 TYPE,IS,RECORD为关键字,record_name为变量名称*/ field1 type [NOT NULL][:=expr1], /*每个等价的成员间用逗号分隔*/ field2 type [NOT NULL][:=expr2], /*如果一个字段限定NOT NULL,那么它必须拥有一个初始值*/ ... /*所有没有初始化的字段都会初始为NULL*/ fieldn type [NOT NULL][:=exprn] 4. %ROWTYPE 返回一个基于数据库定义的类型 DECLARE v_emp s_emp%ROWTYPE; /*s_emp为表的名字*/ 注:与RECORD类型 定一个record相比,一步就完成, 而RECORD类型 定义分二步:a. 所有的成员变量都要申明; b. 实例化变量; 可以代替RECORD类型. 5. TABLE类型 TYPE tabletype IS TABLE OF type(类型名,要保存成的数据类型) INDEX BY BINARY_INTEGER; 例:DECLARE TYPE t_emp IS TABLE OF s_emp%ROWTYPE INDEX BY BINARY_INTERGER; v_emp t_emp; BEGIN SELECT * INTO v_emp(100) FROM s_emp WHERE id = 1; SELECT * INTO v_emp(200) FROM s_emp WHERE id = 2; DBMS_OUTPUT.PUT_LINE(v_emp(200).id||' '||v_emp(200).lastname||' '||v_emp(200).salary); 注:1) id(索引) 的数目的限制由BINARY_INTEGER的范围决定(-2147483647<----->2147483647); 2) TABLE类型与map<int,_T>类似; 3) 表 的元素可以是复合类型; 4) KEY 没有必要是顺序的; 5) 当数据被插入表 的时候,表所需的空间就被分配了; 6. 变量的作用域和可见性 <<outer>> 1) 执行块里可以嵌入执行块; 2) 里层执行块的变量对外层不可见; 3) 里层执行块对外层执行块变量的修改会影响外层块变量的值 (在此里层,对其他里层则不影响,想要不影响此里层的话可以使用标号标注外层); ---- 第四章 PL/ SQL 控制语句 ---- 1. 条件语句 IF boolean_expression1(条件1) THEN ELSIF boolean_expression2(条件2) THEN /*注意是ELSIF,而不是ELSEIF*/ ... /*ELSE语句(ELSIF)不是必须的,但END IF;是必须的*/ END IF; 注意:1)有多个BOOLEAN表达式时候 AND(与),OR(或),NOT(非) 2)条件为FALSE与TRUE 相同; 2. 循环语句 1) Loop 循环 ... (循环体) IF boolean_expr(条件) THEN /* 加条件语句,当满足条件时候退出循环*/ EXIT; /* EXIT WHEN boolean_expr */ END IF; END LOOP; 2) WHILE 循环 WHILE boolean_expr(条件) LOOP /* boolean_expr 循环条件*/ ... (循环体) END LOOP; 3) FOR循环 FOR loop_counter IN [REVERSE] low_bound..high_bound LOOP /* 范围 中间 用2个点表示 从 low_blound 到 high_bound */ ... (循环体) END LOOP; 例: FOR v_cnt IN 1..5 LOOP SELECT * INTO v_emp FROM s_emp WHERE id = v_cnt; 注:a. 加上REVERSE关键字 表示递减,从结束边界到起始边界,递减步长为一; 不加为递增,从起始边界到结束边界,递减步长为一; b. low_blound 起始边界; high_bound 结束边界; 3. GOTO语句 GOTO label_name; 1) 只能由内部块跳往外部块; 2) 设置标签:<< >> 3) 示例: LOOP IF D%ROWCOUNT = 50 THEN GOTO l_close; END IF; END LOOP; <<l_close>>: ... 4. NULL语句 在语句块 加空语句,用于补充语句的完整性。 例:IF boolean_expr THEN ELSE NULL; END IF; 5. SQL in PL/ SQL 1) 只有DML SQL 和transaction Control SQL 可以直接在PL/ SQL 使用; 2) PL/ SQL 的动态 SQL 可以使用所有有效的 SQL 语句,包括DDL; 3) 动态 SQL 在运行时动态生成 SQL 语句,然后分析语句并执行; 4) PL/ SQL 的动态 SQL 有两种:本地动态 SQL 和DBMS_ SQL 包; ---- 第五章 PL/ SQL 游标 ---- 1. 游标(CURSOR) 游标是从数据表 提取出来的数据,以临时表的形式存放在内存 ,在游标 有一个数 据指针,在初始状态下指向的是首 记录 ,利用 fetch 语句可以移动该指针,从而对游标 的数 据进行各种操作,然后将操作结果写回数据表 。 1)分类: a)显式游标:程序员可以操作控制,是针对select 语句的,指向select 语句的结束集 b)隐式游标:程序员不可控制,但可以有限制的应用 2)作用:用于处理 查询 语句的结果,提取多行数据集; 3)使用步骤: a) 声明游标: a. 普通声明: DELCARE v_emp s_emp%ROWTYPE; v_did s_dept.id%TYPE; CURSOR cur_emp IS select * FROM s_emp WHERE dept_id =v_did; /* CURSOR的内容必须是一条 查询 语句 */ b. 带参数声明明:DELCARE CURSOR c_emp(v_did s_emp.ID%TYPE) SELECT * FROM s_emp WHERE dept_id = v_did; b) 为 查询 打开游标: OPEN cur_emp; /* 相当于执行select语句,且把执行结果存入CURSOR; c) 从游标 取结果,存入PL/ SQL 变量 : a. FETCH cur_emp INTO var1, var2, ...(变量名 1, 变量名 2,.......); /* 变量的数量、类型、顺序要和Table 字段一致; */ b. FETCH cur_emp INTO record_var( 记录 型变量名); 注:将值从CURSOR取出放入变量 ,每FETCH一次取一条 记录 ; d) 关闭游标: CLOSE cur_emp; 注:a. 游标使用后应该关闭; b. 关闭后的游标不能FETCH和再次CLOSE; c. 关闭游标相当于将内存 CURSOR的内容清空; 2. 游标的属性 游标名%属性名 1) %FOUND: 是否有值; 有则返回TRUE,否则返回FALSE; 2) %NOTFOUND: 是否没有值; 如果没有值则返回TRUE,否则返回FALSE; 3) %ISOPEN: 是否是处于打开状态; 处于打开状态就返回TRUE,否则返回FALSE; 4) %ROWCOUNT: CURSOR当前的 记录 号(当前游标的指针位移量,表示在此之前,游标所处理的数据量(多少条 记录 )); 3. 游标的FETCH循环 1) LOOP FETCH 游标名 INTO 定义的变量 EXIT WHEN 游标名%NOTFOUND; /* 当游标没取道 记录 后退出 要及时的做出判断 */ END LOOP; 2) WHILE 游标名%FOUND LOOP FETCH 游标名 INTO 定义的变量; END LOOP; 3) FOR 保存数据的变量(不用事先定义,是根据游标声明的时候SELECT 的类型来确定) IN 游标名 LOOP (FETCH 游标名 INTO ...) (可以不用FETCH 语句) END LOOP; 4.带参数的游标CURSOR DECLARE v_emp s_emp%ROWTYPE CURSOR cur_emp(p_did s_emp.dept_id%TYPE) IS /* 定义参数p_did的类型 */ SELECT * FROM s_emp WHERE dept_id= p_did FOR UPDATE OF salary; /*FOR UPDATE OF salary; 加行级锁,在我修改这些数据的时候, *其他人无法修改数据,直到游标被CLOSE后 */ BEGIN OPEN cur_emp(31); /*带的参数值 31 就是赋给参数p_did 的 */ FETCH cur_emp INTO v_emp; EXIT WHEN cur_emp%NOTFOUND; DBMS_OUTPUT.PUT_LINE(v_emp.id||' '||v_emp.first_name); END LOOP; CLOSE cur_emp; 5.显式游标主要是用于对 查询 语句的处理,尤其是在 查询 结果为多条 记录 的情况下; 而对于非 查询 语句,如修改、删除操作,则由ORACLE 系统自动地为这些操作设置游标并创建其工作区,这些由系统隐含创建的游标称为隐式游标,隐式游标的名字为 SQL ,这是由ORACLE 系统定义的。 对于隐式游标的操作,如定义、打开、取值及关闭操作,都由ORACLE 系统自动地完成,无需用户进行处理。 用户只能通过隐式游标的相关属性,来完成相应的操作。 在隐式游标的工作区 ,所存放的数据是与用户自定义的显示游标无关的、最新处理的一条 SQL 语句所包含的数据。 格式调用为: SQL % 注:INSERT, UPDATE, DELETE, SELECT 语句 不必明确定义游标。 隐式游标属性 SQL %FOUND 布尔型属性,当最近一次读 记录 时成功返回,则值为true; SQL %NOTFOUND 布尔型属性,与%found相反; SQL %ROWCOUNT 数字型属性, 返回已从游标 读取得 记录 数; SQL %ISOPEN 布尔型属性, 取值总是FALSE。 SQL 命令执行完毕立即关闭隐式游标。
select tables.num from (select left(stuff(shangpindata,1,charindex(',',shangpindata),''),charindex(',',stuff(shangpindata,1,charindex(',',shangpindata),''))-1) as num from orderlist) as tables 截取 中间 字符如“3,5,2”截取5
虽然 SQL 是一套标准化的语言,但是由于市场上给个厂家生产的数据库并不完全统一,因此在不同数据库 的数据 SQL 的编写就不一样。在此总结了 部分 数据库 查询 部分 数据的 SQL 。 1. ORACLE SELECT * FROM TABLE1 WHERE ROWNUM HQL: from table1 t order by t.createTime desc where rownum length参数:可选。需要截取的长度。缺省,即截取到结束位置。 注意:若必选参数为空,那返回的结果也为空。 3、简单示例:substr(‘123456’,3,2); 结果是–34 substr(‘1
使用的函数: substring(字符串表达式,开始位置,长度)  字符串表达式,即字段值  开始位置,即开始的index值, sql server index值是从1开始,不像C#等从0开始 charindex(字符串表达式1,字符串表达式2)   获取字符串表达式1在字符串表达式2 的index值LEN(字符串表达式)  返回字符串表达式 的字符数,不能计算Text类型字段的长度(单字节和...
# substring(a,b,c) 3个参数,从a 截取,b开始位置,长度为c的字符串 # position(a in b) 获取字符串a在字符串b的位置 SELECT substring( #截取的开始位置 结果要是想从子字符串开始就不要加子字符串长度 (position('开始子字符串' in 列名) + 子字符串长度), #截取的长度 position('结束子字符串' in 列名) - (position('开始子字符串' in 列名) + 子字符串长度) ) as a UPDATE table_name SET column_name = (SELECT expression FROM table_name WHERE conditions) WHERE conditions; 其 ,table_name 是指要修改数据的表的名称,column_name 是指要修改的列的名称,expression 是指用于 查询 结果的表达式,conditions 是指用于筛选数据的条件。 例如,如果有一张名为 "employees" 的表,其 有一列 "salary",想要将 "salary" 列的所有值修改为与 "salary" 列相同的值的平方,可以使用如下 SQL 语句: UPDATE employees SET salary = (SELECT salary * salary FROM employees) 这样,"salary" 列的所有值都会被修改为与原来的值的平方。