




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本资料由-大学生创业|创业|创业网 /提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药| 本章要点: 集合函数与时间函数 字符串的模式匹配 如何创建索引 检索数据中的一些技巧 第三章向你初步介绍了 SQL。你学会了如何用 SELECT 语句进行查询,你 还学会了如何建立自己的表以及如何录入数据等。在这一章里,你将加深你 SQL 语言知识。你将学习如何建立索引来加快查询速度。你还将学会如果用更多的 SQL 语句和函数来操作表中的数据。 尤其是对检索语句 SELECT 的使用,其中技巧繁多,可以说这是 SQL 语言 中最重要的语句,也是使用者最常使用的语句。本章将详细介绍 SELECT 语句的 用法。 无论如何,这里的介绍都不能包括 SQL 语言的所有技巧,读者应该在平时 的不断使用中积累经验。 M M M M M MY Y Y Y Y YS S S S S SQ Q Q Q Q QL L L L L L 高高高高高高级级级级级级特特特特特特性性性性性性 第第第第4 4 4章章章章 本资料由-大学生创业|创业|创业网 /提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药| 4.1 集合函数 到现在为止,你只学习了如何根据特定的条件从表中取出一条或多条记录。但是, 假如你想对一个表中的记录进行数据统计。例如,如果你想统计存储在表中的一次民意 测验的投票结果。或者你想知道一个访问者在你的站点上平均花费了多少时间。要对表 中的任何类型的数据进行统计,都需要使用集合函数。你可以统计记录数目,平均值, 最小值,最大值,或者求和。当你使用一个集合函数时,它只返回一个数,该数值代表 这几个统计值之一。 这些函数的最大特点就是经常和 GROUP BY 语句配合使用,需要注意的是集合函 数不能和非分组的列混合使用。 4.1.1 行列计数 计算查询语句返回的记录行数 直接计算函数 COUNT(*)的值,例如,计算 pet 表中猫的只数: mysqlSELECT count(*) FROM pet WHERE species=cat; +-+ | count(*) | +-+ | 2 | +-+ 4.1.2 统计字段值的数目 例如,计算 pet 表中 species 列的数目: mysql SELECT count(species) FROM pet; +-+ | count(species) | +-+ | 9 | +-+ 如果相同的种类出现了不止一次,该种类将会被计算多次。如果你想知道种类为某 个特定值的宠物有多少个,你可以使用 WHERE 子句,如下例所示: mysql SELECT COUNT(species) FROM pet WHERE species=cat ; 注意这条语句的结果: +-+ | COUNT(species) | +-+ 本资料由-大学生创业|创业|创业网 /提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药| | 2 | +-+ 这个例子返回种类为cat的作者的数目。如果这个名字在表 pet 中出现了两次,则次 函数的返回值是 2。 而且它和上面提到过的语句的结果是一致的: SELECT count(*) FROM pet WHERE species=cat 实际上,这两条语句是等价的。 假如你想知道有多少不同种类的的宠物数目。你可以通过使用关键字 DISTINCT 来 得到该数目。如下例所示: mysql SELECT COUNT(DISTINCT species) FROM pet; +-+ | COUNT(DISTINCT species) | +-+ | 5 | +-+ 如果种类cat出现了不止一次,它将只被计算一次。关键字 DISTINCT 决定了只有 互不相同的值才被计算。 通常,当你使用 COUNT()时,字段中的空值将被忽略。 另外,COUNT()函数通常和 GROUP BY 子句配合使用,例如可以这样返回每种宠 物的数目: mysql SELECT species,count(*) FROM pet GROUP BY species; +-+-+ | species | count(*) | +-+-+ | bird | 2 | | cat | 2 | | dog | 3 | | hamster | 1 | | snake | 1 | +-+-+ 4.1.3 计算字段的平均值 需要计算这些值的平均值。使用函数 AVG(),你可以返回一个字段中所有值的 平均值。 假如你对你的站点进行一次较为复杂的民意调查。访问者可以在 1 到 10 之间投票, 表示他们喜欢你站点的程度。你把投票结果保存在名为 vote 的 INT 型字段中。要计算 你的用户投票的平均值,你需要使用函数 AVG(): SELECT AVG(vote) FROM opinion 这个 SELECT 语句的返回值代表用户对你站点的平均喜欢程度。函数 AVG()只 本资料由-大学生创业|创业|创业网 /提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药| 能对数值型字段使用。这个函数在计算平均值时也忽略空值。 再给出一个实际例子,例如我们要计算 pet 表中每种动物年龄的平均值,那么使用 AVG()函数和 GROUP BY 子句: mysql SELECT species,AVG(CURDATE()-birth) FROM pet GROUP BY species; 返回的结果为: +-+-+ | species | AVG(CURDATE()-birth) | +-+-+ | bird | 34160 | | cat | 74959.5 | | dog | 112829.66666667 | | hamster | 19890 | | snake | 49791 | +-+-+ 4.1.4 计算字段值的和 假设你的站点被用来出售某种商品,已经运行了两个月,是该计算赚了多少钱的时 候了。假设有一个名为 orders 的表用来记录所有访问者的定购信息。要计算所有定购量 的总和,你可以使用函数 SUM(): SELECT SUM(purchase_amount) FROM orders 函数 SUM()的返回值代表字段 purchase_amount 中所有值的总和。字段 purchase_amount 的数据类型也许是 DECIMAL 类型,但你也可以对其它数值型字段使 用函数 SUM()。 用一个不太恰当的例子说明,我们计算 pet 表中同种宠物的年龄的总和: mysql SELECT species,SUM(CURDATE()-birth) FROM pet GROUP BY species; 你可以查看结果,与前一个例子对照: +-+-+ | species | SUM(CURDATE()-birth) | +-+-+ | bird | 68320 | | cat | 149919 | | dog | 338489 | | hamster | 19890 | | snake | 49791 | +-+-+ 4.1.5 计算字段值的极值 求字段的极值,涉及两个函数 MAX()和 MIN()。 本资料由-大学生创业|创业|创业网 /提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药| 例如,还是 pet 表,你想知道最早的动物出生日期,由于日期最早就是最小,所以 可以使用 MIN()函数: mysql SELECT MIN(birth) FROM pet; +-+ | MIN(birth) | +-+ | 1989-05-13 | +-+ 但是,你只知道了日期,还是无法知道是哪只宠物,你可能想到这样做: SELECT name,MIN(birth) FROM pet; 但是,这是一个错误的 SQL 语句,因为集合函数不能和非分组的列混合使用,这 里 name 列是没有分组的。所以,你无法同时得到 name 列的值和 birth 的极值。 MIN()函数同样可以与 GROUP BY 子句配合使用,例如,找出每种宠物中最早的出 生日期: mysql SELECT species,MIN(birth) FROM pet GROUP BY species; 下面是令人满意的结果: +-+-+ | species | MIN(birth) | +-+-+ | bird | 1997-12-09 | | cat | 1993-02-04 | | dog | 1989-05-13 | | hamster | 1999-03-30 | | snake | 1996-04-29 | +-+-+ 另一方面,如果你想知道最近的出生日期,就是日期的最大值,你可以使用 MAX() 函数,如下例所示: mysql SELECT species,MAX(birth) FROM pet GROUP BY species; +-+-+ | species | MAX(birth) | +-+-+ | bird | 1998-09-11 | | cat | 1994-03-17 | | dog | 1990-08-31 | | hamster | 1999-03-30 | | snake | 1996-04-29 | 本资料由-大学生创业|创业|创业网 /提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药| +-+-+ 4.1.6 总结 在本节中,介绍了一些典型的集合函数的用法,包括计数、均值、极值和总和,这 些都是 SQL 语言中非常常用的函数。 这些函数之所以称之为集合函数,是因为它们应用在多条记录中,所以集合函数最 常见的用法就是与 GROUP BY 子句配合使用,最重要的是集合函数不能同未分组的列 混合使用。 4.2 操作日期和时间 日期和时间函数对建立一个站点是非常有用的。站点的主人往往对一个表中的数据 何时被更新感兴趣。通过日期和时间函数,你可以在秒级跟踪一个表的改变。 日期和时间类型是 DATETIME、DATE、TIMESTAMP、TIME 和 YEAR。这些的 每一个都有合法值的一个范围,而“零”当你指定确实不合法的值时被使用。注意, MySQL 允许你存储某个“不严格地”合法的日期值,例如 1999-11-31,原因我们认为 它是应用程序的责任来处理日期检查,而不是 SQL 服务器。为了使日期检查更“快”, MySQL 仅检查月份在 0-12 的范围,天在 0-31 的范围。上述范围这样被定义是因为 MySQL 允许你在一个 DATE 或 DATETIME 列中存储日期,这里的天或月是零。这对存 储你不知道准确的日期的一个生日的应用程序来说是极其有用的,在这种情况下,你简 单地存储日期象 1999-00-00 或 1999-01-00。(当然你不能期望从函数如 DATE_SUB() 或 DATE_ADD()得到类似以这些日期的正确值)。 4.2.1 返回当前日期和时间 通过函数 GETDATE(),你可以获得当前的日期和时间。例如, CURDATE() 返回当前日期 CURRENT_DATE 以YYYY-MM-DD或 YYYYMMDD 格式返回今天日期值,取决于函数是在一个字 符串还是数字上下文被使用。 mysql select CURDATE(); +-+ | CURDATE() | +-+ | 2001-02-20 | +-+ mysql select CURDATE() + 0; +-+ | CURDATE()+0 | +-+ 本资料由-大学生创业|创业|创业网 /提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药| | 20010220 | +-+ CURTIME() 返回当前时间 以HH:MM:SS或 HHMMSS 格式返回当前时间值,取决于函数是在一个字符串还是 在数字的上下文被使用。 mysql select CURTIME(); +-+ | CURTIME() | +-+ | 10:42:38 | +-+ mysql select CURTIME() + 0; +-+ | CURTIME()+0 | +-+ | 104525 | +-+ NOW() 返回当前时期和时间 NOW()以 YYYY-MM-DD HH:MM:SS 的格式或者 YYYYMMDDHHMMSS 的格式 返回日期和时间值,取决于上下文。 mysqlselect now(); +-+ | now() | +-+ | 2001-02-20 10:45:57 | +-+ mysqlselect now()+0; +-+ | now()+0 | +-+ | 20010220105635 | +-+ 这些得到当前日期和时间的函数,对于日期和时间的计算很方便,尤其是计算一个 时间到现在的时间差。例如,在 pet 表中,我们以天为单位计算宠物的年龄: mysql SELECT name,CURDATE()-birth FROM pet; +-+-+ | name | CURDATE()-birth | +-+-+ 本资料由-大学生创业|创业|创业网 /提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药| | Fluffy | 80016 | | Claws | 69903 | | Buffy | 119707 | | Chirpy | 29309 | | Fang | 109393 | | Bowser | 109389 | | Whistler | 39011 | | Slim | 49791 | | Puffball | 19890 | +-+-+ 4.2.2 自动记录数据的改变时间 TIMESTAMP 列类型提供一种类型,TIMESTAMP 值可以从 1970 的某时的开始一 直到 2037 年,精度为一秒,其值作为数字显示。你可以使用它自动地用当前的日期和 时间标记 INSERT 或 UPDATE 的操作。如果你有多个 TIMESTAMP 列,只有第一个自 动更新。 自动更新第一个 TIMESTAMP 列在下列任何条件下发生: 列没有明确地在一个 INSERT 或 LOAD DATA INFILE 语句中指定。 列没有明确地在一个 UPDATE 语句中指定且一些另外的列改变值。(注意一个 UPDATE 设置一个列为它已经有的值,这将不引起 TIMESTAMP 列被更新,因 为如果你设置一个列为它当前的值,MySQL 为了效率而忽略更改。) 你明确地设定 TIMESTAMP 列为 NULL. 除第一个以外的 TIMESTAMP 列也可以设置到当前的日期和时间,只要将列设为 NULL,或 NOW()。 例如,创建如下的表: mysql CREATE TABLE student - ( - id int, - name char(16), - english tinyint, - chinese tinyint, - history tinyint, - time timestamp - ); 向表中插入记录,可以查看效果: mysql INSERT student(id,name,englisht,Chinese,history) VALUES(11,”Tom”,66,93,67); 查看记录的存储情况: mysql SELECT * FROM student; 本资料由-大学生创业|创业|创业网 /提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药| +-+-+-+-+-+-+ | id | name | english | chinese | history | time | +-+-+-+-+-+-+ | 11 | Tom | 66 | 93 | 67 | 20010220123335 | +-+-+-+-+-+-+ 你可以看到 time 列纪录下了数据录入时的时间值。如果你更新改记录,在查看操作 的结果: mysql UPDATE student SET english=76 WHERE id=11; mysql SELECT * FROM student; +-+-+-+-+-+-+ | id | name | english | chinese | history | time | +-+-+-+-+-+-+ | 11 | Tom | 76 | 93 | 67 | 20010220125736 | +-+-+-+-+-+-+ 可以清楚的看到,time 列的时间被自动更改为修改记录的时间。 有时候你希望不更改任何值,也能打到修改 TIMESTAMP 列的值,这时只要设置该 列的值为 NULL,MySQL 就可以自动更新 TIMESTAMP 列的值: mysql UPDATE student SET time=NULL WHERE id=11; mysql select * from student where id=11; +-+-+-+-+-+-+ | id | name | english | chinese | history | time | +-+-+-+-+-+-+ | 11 | Tom | 76 | 93 | 67 | 20010220130517 | +-+-+-+-+-+-+ 通过明确地设置希望的值,你可以设置任何 TIMESTAMP 列为不同于当前日期和时 间的值,即使对第一个 TIMESTAMP 列也是这样。例如,如果,当你创建一个行时,你 想要一个 TIMESTAMP 被设置到当前的日期和时间,但在以后无论何时行被更新时都不 改变,你可以使用这样使用: 让 MySQL 在行被创建时设置列,这将初始化它为当前的日期和时间。 当你执行随后的对该行中其他列的更改时,明确设定 TIMESTAMP 列为它的当 前值。 例如,当你在修改列时,可以把原有的值付给 TIMESTAMP 列: mysql UPDATE student SET english=66,time=time WHERE id=11; mysql select * from student where id=11; +-+-+-+-+-+-+ | id | name | english | chinese | history | time | 本资料由-大学生创业|创业|创业网 /提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药| +-+-+-+-+-+-+ | 11 | Tom | 66 | 93 | 67 | 20010220130517 | +-+-+-+-+-+-+ 另一方面,你可能发现,当你想要实现上面这个效果时,很容易用一个你用 NOW() 初始化的 DATETIME 列然后不再改变它,这样也许直接些。 但是,TIMESTAMP 列的 以后好处是存储要求比较小,节省空间。TIMESTAMP 的存储需求是 4 字节,而 DATETIME 列的存储需求是 8 字节。 4.2.3 返回日期和时间范围 当你分析表中的数据时,你也许希望取出某个特定时间的数据。我们用下面一个表 来模仿一个 web 站点的记录。 mysql CREATE TABLE weblog - ( - data float, - entrydate datetime - ); 然后随机的增加几个数据: mysql INSERT weblog VALUES(rand(),now(); rand()函数返回一个随机的浮点值,now()函数返回当前时间。多执行上面语句几次, 得到一个作为测试的表。 最为测试你还可以增加一个值: mysql INSERT weblog VALUES(rand(),”2001-02-08”); 这条语句,插入一个 entry 为”2001-02-08 00:00:00”的值(假定现在为 2001 年 2 月 8 日),你可以查看这个表的值: mysql select * from weblog; +-+-+ | data | entrydate | +-+-+ | 0.973723 | 2001-02-08 00:00:00 | | 0.437768 | 2001-02-08 13:57:06 | | 0.327279 | 2001-02-08 13:57:09 | | 0.0931809 | 2001-02-08 13:58:29 | | 0.198805 | 2001-02-08 13:57:54 | +-+-+ 你也许对特定的某一天中比如说 2001 年 2 月 18 日访问者在你站点上的活 动感兴趣。要取出这种类型的数据,你也许会试图使用这样的 SELECT 语句: mysql SELECT * FROM weblog WHERE entrydate=“2001-02-08“ 不要这样做。这个 SELECT 语句不会返回正确的记录它将只返回值为 2000-02- 本资料由-大学生创业|创业|创业网 /提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药| 08 00:00:00 的记录,换句话说,只返回当天零点零时的记录。上面语句的结果为: +-+-+ | data | entrydate | +-+-+ | 0.973723 | 2001-02-08 00:00:00 | +-+-+ 要返回正确的记录,你需要适用日期和时间范围。有不止一种途径可以做到这一 点。 1、使用关系运算符和逻辑运算符来限制时间范围 例如,下面的这个 SELECT 语句将能返回正确的记录: mysql SELECT * FROM weblog - WHERE entrydate=“2001-02-08“ AND entrydate SELECT * FROM weblog WHERE entrydate LIKE 2001-02-08% ; 这个语句可以匹配正确的记录。因为通配符“”代表了任何时间。 +-+-+ | data | entrydate | +-+-+ | 0.973723 | 2001-02-08 00:00:00 | | 0.437768 | 2001-02-08 13:57:06 | | 0.327279 | 2001-02-08 13:57:09 | | 0.0931809 | 2001-02-08 13:58:29 | | 0.198805 | 2001-02-08 13:57:54 | +-+-+ 本资料由-大学生创业|创业|创业网 /提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药| 3、上面两种方法的异同 由于使用关系运算符进行的是比较过程,时转换成内部的存储格式后进行的,因此, 因此时间的书写可以不是那么严格要求。 例如,下面几种写法是等价的: mysql SELECT * FROM weblog WHERE entrydate=“2001-02-08“; mysql SELECT * FROM weblog WHERE entrydate=“2001-2-8“; mysql SELECT * FROM weblog WHERE entrydate=“2001*02*08“; mysql SELECT * FROM weblog WHERE entrydate=“20010208“; SELECT * FROM weblog WHERE entrydate=“2001/2/8“; 而使用 LIKE 运算符和模式匹配,是通过比较串值进行的,因此必须使用标准的时 间书写格式,YYYY-MM-DD HH-MM-SS。 4.2.5 比较日期和时间 已知两个日期,比较它们的前后,可以直接求出它们的差和零值比较,也可以利用 已知的时间函数: TO_DAYS(date) 给出一个日期 date,返回一个天数(从 0 年的天数),date 可以是一个数字,也可以 是一个串值,当然更可以是包含日期的时间类型。 mysql select TO_DAYS(960501); +-+ | TO_DAYS(960501) | +-+ | 729145 | +-+ mysql select TO_DAYS(1997-07-01); +-+ | TO_DAYS(1997-07-01) | +-+ | 729571 | +-+ 例如:返回 2 个时间相差的天数(21 世纪已经过去了多少天) mysql select to_days(now()-to_days(20010101); +-+ | to_days(now()-00000012000000)-to_days(20010101) | +-+ | 38 | +-+ 本资料由-大学生创业|创业|创业网 /提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药| 4.3 字符串模式匹配 MySQL 提供标准的 SQL 模式匹配,以及一种基于象 Unix 实用程序如 vi、grep 和 sed 的扩展正则表达式模式匹配的格式。 4.3.1 标准的 SQL 模式匹配 SQL 的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符 (包括零个字符)。在 MySQL 中,SQL 的模式缺省是忽略大小写的。下面显示一些例子。 注意在你使用 SQL 模式时,你不能使用=或!=;而使用 LIKE 或 NOT LIKE 比较操作符。 例如,在表 pet 中,为了找出以“b”开头的名字: mysql SELECT * FROM pet WHERE name LIKE “b%“; +-+-+-+-+-+-+ | name | owner | species | sex | birth | death | +-+-+-+-+-+-+ | Buffy | Harold | dog | f | 1989-05-13 | NULL | | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 | +-+-+-+-+-+-+ 为了找出以“fy”结尾的名字: mysql SELECT * FROM pet WHERE name LIKE “%fy“; +-+-+-+-+-+-+ | name | owner | species | sex | birth | death | +-+-+-+-+-+-+ | Fluffy | Harold | cat | f | 1993-02-04 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | +-+-+-+-+-+-+ 为了找出包含一个“w”的名字: mysql SELECT * FROM pet WHERE name LIKE “%w%“; +-+-+-+-+-+-+ | name | owner | species | sex | birth | death | +-+-+-+-+-+-+ | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 | | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL | +-+-+-+-+-+-+ 本资料由-大学生创业|创业|创业网 /提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药| 为了找出包含正好 5 个字符的名字,使用“_”模式字符: mysql SELECT * FROM pet WHERE name LIKE “_“; +-+-+-+-+-+-+ | name | owner | species | sex | birth | death | +-+-+-+-+-+-+ | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | +-+-+-+-+-+-+ 4.3.2 扩展正则表达式模式匹配 由 MySQL 提供的模式匹配的其他类型是使用扩展正则表达式。当你对这类模式进 行匹配测试时,使用 REGEXP 和 NOT REGEXP 操作符(或 RLIKE 和 NOT RLIKE,它 们是同义词)。 扩展正则表达式的一些字符是: “.”匹配任何单个的字符。 一个字符类“.”匹配在方括号内的任何字符。例如,“abc”匹配“a”、 “b”或“c”。为了命名字符的一个范围,使用一个“-”。“a-z”匹配任何小写字母, 而“0-9”匹配任何数字。 “ * ”匹配零个或多个在它前面的东西。例如,“x*”匹配任何数量的“x”字符, “0-9*”匹配的任何数量的数字,而“.*”匹配任何数量的任何东西。 正则表达式是区分大小写的,但是如果你希望,你能使用一个字符类匹配两种写法。 例如,“aA”匹配小写或大写的“a”而“a-zA-Z”匹配两种写法的任何字母。 如果它出现在被测试值的任何地方,模式就匹配(只要他们匹配整个值,SQL 模式 匹配)。 为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用 “”或在模式的结尾用“$”。 为了说明扩展正则表达式如何工作,上面所示的 LIKE 查询在下面使用 REGEXP 重 写: 为了找出以“b”开头的名字,使用“”匹配名字的开始并且“bB”匹配小写或 大写的“b”: mysql SELECT * FROM pet WHERE name REGEXP “bB“; +-+-+-+-+-+-+ | name | owner | species | sex | birth | death | +-+-+-+-+-+-+ | Buffy | Harold | dog | f | 1989-05-13 | NULL | | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 | +-+-+-+-+-+-+ 本资料由-大学生创业|创业|创业网 /提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药| 为了找出以“fy”结尾的名字,使用“$”匹配名字的结尾: mysql SELECT * FROM pet WHERE name REGEXP “fy$“; +-+-+-+-+-+-+ | name | owner | species | sex | birth | death | +-+-+-+-+-+-+ | Fluffy | Harold | cat | f | 1993-02-04 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | +-+-+-+-+-+-+ 为了找出包含一个“w”的名字,使用“wW”匹配小写或大写的“w”: mysql SELECT * FROM pet WHERE name REGEXP “wW“; +-+-+-+-+-+-+ | name | owner | species | sex | birth | death | +-+-+-+-+-+-+ | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 | | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL | +-+-+-+-+-+-+ 既然如果一个正规表达式出现在值的任何地方,其模式匹配了,就不必再先前的查 询中在模式的两方面放置一个通配符以使得它
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年合次方合同范文
- 2025至2030中国2苯乙基异氰酸酯行业市场深度研究及发展前景投资可行性分析报告
- 水毁施工方案(3篇)
- 应急逃生预案的意义有哪些(3篇)
- 钢构施工倒塌事故应急预案(3篇)
- 绳锯施工方案(3篇)
- 健身房人员伤害应急预案(3篇)
- 发生火灾应急预案培训小结(3篇)
- 全科医学科临床护理师资考核试题及答案
- 乱占耕地建房风险应急预案(3篇)
- 货款转让协议书
- 燃气公司加气站操作规程及安全要求
- 装修砸墙安全协议书
- DB4407∕T 70-2021 地理标志产品 新会陈皮
- 送水工劳务合同协议
- 读博协议和合同
- 2025CACA子宫颈癌诊疗指南解读
- 2025年第34届全国中学生物理竞赛预赛试卷及答案(完整版)
- 骨科护理10分钟小讲课
- 小红书管理制度
- 2025年创伤救治理论知识试题及答案
评论
0/150
提交评论