MySQL由浅至深(四).ppt_第1页
MySQL由浅至深(四).ppt_第2页
MySQL由浅至深(四).ppt_第3页
MySQL由浅至深(四).ppt_第4页
MySQL由浅至深(四).ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中级2第四章 要做就做最好 要不就不做 操作符优先级圆括号比较函数和操作符逻辑操作符 以下列表显示了操作符优先级的由低到高的顺序 排列在同一行的操作符具有相同的优先级 OR XOR ANDNOTBETWEEN CASE WHEN THEN ELSE IS LIKE REGEXP IN DIV MOD 一元减号 一元比特反转 BINARY COLLATE 使用括弧来规定表达式的运算顺序 例如 mysql SELECT1 2 3 7mysql SELECT 1 2 3 9 比较运算产生的结果为1 TRUE 0 FALSE 或NULL 这些运算可用于数字和字符串 根据需要 字符串可自动转换为数字 而数字也可自动转换为字符串 MySQL按照以下规则进行数值比较 若有一个或两个参数为NULL 除非NULL safe等算符 则比较运算的结果为NULL 若同一个比较运算中的两个参数都是字符串 则按照字符串进行比较 若两个参数均为整数 则按照整数进行比较 十六进制值在不需要作为数字进行比较时 则按照二进制字符串进行处理 假如参数中的一个为TIMESTAMP或DATETIME列 而其它参数均为常数 则在进行比较前将常数转为timestamp 这样做的目的是为了使ODBC的进行更加顺利 注意 这不适合IN 中的参数 为了更加可靠 在进行对比时通常使用完整的datetime date time字符串 在其它情况下 参数作为浮点数进行比较 mysql SELECT1 6x 0mysql SELECT7 6x 1不等于 mysql SELECT 01 0 01 1小于或等于 mysql SELECT0 11小于 mysql SELECT20于或等于 mysql SELECT2 2 1大于 mysql SELECT2 2 0 假如expr大于或等于min且expr小于或等于max 则BETWEEN的返回值为1 或是0 若所有参数都是同一类型 则上述关系相当于表达式 minSELECT1BETWEEN2AND3 0mysql SELECT b BETWEEN a AND c 1 返回值为列表当中的第一个非NULL值 在没有非NULL值得情况下返回值为NULL mysql SELECTCOALESCE NULL 1 1当有2或多个参数时 返回值为最大 最大值的 参数 比较参数所依据的规律同LEAST 相同 mysql SELECTGREATEST 2 0 2若expr为IN列表中的任意一个值 则其返回值为1 否则返回值为0 假如所有的值都是常数 则其计算和分类根据expr的类型进行 这时 使用二分搜索来搜索信息 如IN值列表全部由常数组成 则意味着IN的速度非常之快 如expr是一个区分大小写的字符串表达式 则字符串比较也按照区分大小写的方式进行 mysql SELECT2IN 0 3 5 wefwf 0mysql SELECT wefwf IN 0 3 5 wefwf 1 在SQL中 所有逻辑操作符的求值所得结果均为TRUE FALSE或NULL UNKNOWN 在MySQL中 它们体现为1 TRUE 0 FALSE 和NULL 其大多数都与不同的数据库SQL通用 然而一些服务器对TRUE的返回值可能是任意一个非零值 NOT 逻辑NOT 当操作数为0时 所得值为1 当操作数为非零值时 所得值为0 而当操作数为NOTNULL时 所得的返回值为NULL mysql SELECTNOT10 0mysql SELECTNOT0 1mysql SELECTNOTNULL NULLmysql SELECT 1 1 0mysql SELECT 1 1 1最后一个例子产生的结果为1 原因是表达式的计算方式和 1 1相同 AND 0 OR 逻辑OR 当两个操作数均为非NULL值时 如有任意一个操作数为非零值 则结果为1 否则结果为0 当有一个操作数为NULL时 如另一个操作数为非零值 则结果为1 否则结果为NULL 假如两个操作数均为NULL 则所得结果为NULL mysql SELECT1 1 1mysql SELECT1 0 1mysql SELECT0 0 0mysql SELECT0 NULL NULLmysql SELECT1 NULL 1 XOR逻辑XOR 当任意一个操作数为NULL时 返回值为NULL 对于非NULL的操作数 假如一个奇数操作数为非零值 则计算所得结果为1 否则为0 mysql SELECT1XOR1 0mysql SELECT1XOR0 1mysql SELECT1XORNULL NULLmysql SELECT1XOR1XOR1 1 注 aXORb的计算等同于 aAND NOTb OR NOTa 和b 语法 CASEvalueWHEN compare value THENresult WHEN compare value THENresult ELSEresult ENDCASEWHEN condition THENresult WHEN condition THENresult ELSEresult END在第一个方案的返回结果中 value compare value 而第二个方案的返回结果是第一种情况的真实结果 如果没有匹配的结果值 则返回结果为ELSE后的结果 如果没有ELSE部分 则返回值为NULL mysql SELECTCASE1WHEN1THEN one WHEN2THEN two ELSE more END one mysql SELECTCASEWHEN1 0THEN true ELSE false END true mysql SELECTCASEBINARY B WHEN a THEN1WHEN b THEN2END NULL 控制语法 IF expr1 expr2 expr3 如果expr1是TRUE expr10andexpr1NULL 则IF 的返回值为expr2 否则返回值则为expr3 IF 的返回值为数字值或字符串值 具体情况视其所在语境而定 mysql SELECTIF 1 2 2 3 3mysql SELECTIF 1 yes mysql SELECTIF STRCMP test test1 no yes no ASCII str 返回值为字符串str的最左字符的数值 假如str为空字符串 则返回值为0 假如str为NULL 则返回值为NULL ASCII 用于带有从0到255的数值的字符 mysql SELECTASCII 2 50mysql SELECTASCII 2 50mysql SELECTASCII dx 100 BIN N 返回值为N的二进制值的字符串表示 其中N为一个longlong BIGINT 数字 这等同于CONV N 10 2 假如N为NULL 则返回值为NULL mysql SELECTBIN 12 1100 BIT LENGTH str 返回值为二进制的字符串str长度 mysql SELECTBIT LENGTH text 32 CHAR N USINGcharset CHAR 将每个参数N理解为一个整数 其返回值为一个包含这些整数的代码值所给出的字符的字符串 NULL值被省略 mysql SELECTCHAR 77 121 83 81 76 MySQL mysql SELECTCHAR 77 77 3 77 3 MMM mysql SELECTCHAR 97 a 注 大于255的CHAR 参数被转换为多结果字符 例如 CHAR 256 相当于CHAR 1 0 而CHAR 256 256 则相当于CHAR 1 0 0 CHAR LENGTH str 返回值为字符串str的长度 长度的单位为字符 一个多字节字符算作一个单字符 对于一个包含五个二字节字符集 LENGTH 返回值为10 而CHAR LENGTH 的返回值为5 CHARACTER LENGTH str CHARACTER LENGTH 是CHAR LENGTH 的同义词 COMPRESS string to compress 压缩一个字符串 这个函数要求MySQL已经用一个诸如zlib的压缩库压缩过 否则 返回值始终是NULL UNCOMPRESS 可将压缩过的字符串进行解压缩 mysql SELECTLENGTH COMPRESS REPEAT a 1000 21mysql SELECTLENGTH COMPRESS 0mysql SELECTLENGTH COMPRESS a 13mysql SELECTLENGTH COMPRESS REPEAT a 16 15 注 空字符串按照空字符串存储 非空字符串未压缩字符串的四字节长度进行存储 首先为低字节 后面是压缩字符串 如果字符串以空格结尾 就会在后加一个 号 以防止当结果值是存储在CHAR或VARCHAR类型的字段列时 出现自动把结尾空格去掉的现象 不推荐使用CHAR或VARCHAR来存储压缩字符串 最好使用一个BLOB列代替 CONCAT str1 str2 返回结果为连接参数产生的字符串 如有任何一个参数为NULL 则返回值为NULL 或许有一个或多个参数 如果所有参数均为非二进制字符串 则结果为非二进制字符串 如果自变量中含有任一二进制字符串 则结果为一个二进制字符串 一个数字参数被转化为与之相等的二进制字符串格式 若要避免这种情况 可使用显式类型cast 例如 SELECTCONCAT CAST int colASCHAR char col mysql SELECTCONCAT My S QL MySQL mysql SELECTCONCAT My NULL QL NULLmysql SELECTCONCAT 14 3 14 3 ELT N str1 str2 str3 若N 1 则返回值为str1 若N 2 则返回值为str2 以此类推 若N小于1或大于参数的数目 则返回值为NULL ELT 是FIELD 的补数 mysql SELECTELT 1 ej Heja hej foo ej mysql SELECTELT 4 ej Heja hej foo foo INSERT str pos len newstr 返回字符串str 其子字符串起始于pos位置和长期被字符串newstr取代的len字符 如果pos超过字符串长度 则返回值为原始字符串 假如len的长度大于其它字符串的长度 则从位置pos开始替换 若任何一个参数为null 则返回值为NULL mysql SELECTINSERT Quadratic 3 4 What QuWhattic mysql SELECTINSERT Quadratic 1 4 What Quadratic mysql SELECTINSERT Quadratic 3 100 What QuWhat 这个函数支持多字节字元 INSTR str substr 返回字符串str中子字符串的第一个出现位置 这和LOCATE 的双参数形式相同 除非参数的顺序被颠倒 mysql SELECTINSTR foobarbar bar 4mysql SELECTINSTR xbar foobar 0 LCASE str LCASE 是LOWER 的同义词 LEFT str len 返回从字符串str开始的len最左字符 mysql SELECTLEFT foobarbar 5 fooba LENGTH str 返回值为字符串str的长度 单位为字节 一个多字节字符算作多字节 这意味着对于一个包含5个2字节字符的字符串 LENGTH 的返回值为10 而CHAR LENGTH 的返回值则为5 mysql SELECTLENGTH text 4 UPPER str 返回字符串str 以及根据最新字符集映射转化为大写字母的字符 默认为cp1252Latin1 mysql SELECTUPPER Hello HELLO LOWER str 返回字符串str以及所有根据最新的字符集映射表变为小写字母的字符 默认为cp1252Latin1 mysql SELECTLOWER Hello hello 返回字符串str 其左边由字符串padstr填补到len字符长度 假如str的长度大于len 则返回值被缩短至len字符mysql SELECTLPAD hi 4 hi mysql SELECTLPAD hi 1 h LTRIM str 返回字符串str 其引导空格字符被删除 mysql SELECTLTRIM barbar barbar RTRIM str 返回字符串str 结尾空格字符被删去 mysql SELECTRTRIM barbar barbar TRIM str 去掉左右两边的空格mysql SELECTTRIM bar bar 返回一个由重复的字符串str组成的字符串 字符串str的数目等于count 若countSELECTREPEAT MySQL 3 MySQLMySQLMySQL REPLACE str from str to str 返回字符串str以及所有被字符串to str替代的字符串from str mysql SELECTREPLACE w Ww WwWwW REVERSE str 返回字符串str 顺序和字符顺序相反 mysql SELECTREVERSE abc cba RIGHT str len 从字符串str开始 返回最右len字符 mysql SELECTRIGHT foobarbar 4 rbar RPAD str len padstr 返回字符串str 其右边被字符串padstr填补至len字符长度 假如字符串str的长度大于len 则返回值被缩短到与len字符相同长度 mysql SELECTRPAD hi 5 hi mysql SELECTRPAD hi 1 h 根据 MySQL会自动将数字转化为字符串 反之亦然 mysql SELECT1 1 2mysql SELECTCONCAT 2 t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论