Loading... <p>mysql中的集合函数有:count(),sum(),avg(),min(),max(),时间和日期函数等。</p> <p>1. 1) select count(*) from xindi where phone=123456;//计算表xindi中phone=123456的个数 或者 select count(phone)from xindi where phone=123456;</p> <p> 2)select count(phone)from xindi; //phone 列的数目</p> <p> 3)select count(distinct phone)from xindi;//有多少个不同种类的电话</p> <p> 4)如果种类phone出现了不止一次,它将只被计算一次。关键字DISTINCT 决定了只有互不相同的值才被计算。</p> <p>通常,当你使用COUNT()时,字段中的空值将被忽略,不算入内。</p> <p>另外,COUNT()函数通常和GROUP BY子句配合使用,例如可以这样返回每种phone的数目:</p> <p>select phone, count(phone) from xindi group by phone;</p> <p>5)select avg(phone)from xindi; // 在计算平均时,忽略空值,phone共四个值,两个空值,除以时只除2.</p> <p>select name,avg(phone) from xindi group by(name); // 计算每个名字的phone 的平均值</p> <p>6)select sum(phone) from xindi;</p> <p> Select name, sum(phone) group by (name);</p> <p>7)极值:</p> <p>Select min(phone)from xindi;</p> <p>Select name,min(phone)from xindi;//这是错误的sql语句,因为集合函数不能和非分组的列混合使用,上述name未分组。所以应用下面的语句:</p> <p>select name,min(phone) from xindi group by name;</p> <p>2.操作时间和日期:日期和时间类型:DATETIME、DATE、TIMESTAMP、TIME和YEAR这5种类型的每一个都有合法值的一个范围,而“零”当你指定确实不合法的值时被使用。</p> <p>a. 当前日期 select curdate();select curdate()+0;</p> <p> 当前时间 select curtime();select curtime()+0;</p> <p>b. 自动记录数据的改变时间:</p> <p> TIMESTAMP类型提供一种类型,TIMESTAMP值可以从1970的某时的开始一直到2037年,精度为一秒,其值作为数字显示。你可以使用它自动地用当前的日期和时间标记INSERT或UPDATE的操作。</p> <p>mysql> CREATE TABLE student</p> <p>-> (</p> <p>-> id int,</p> <p>-> name char(16),</p> <p>-> time timestamp</p> <p>-> );</p> <p>向表中插入记录,可以查看效果:</p> <p>Insert student values(1,’jim’,null);</p> <p>select *from student;</p> <p>update student set name=’lan’where id=1;</p> <p>select*from student; //time的值会改变</p> <p>有时希望不更改任何值,也能达到修改timestamp列的值,这时设置该列的值为null,mysql就可以自动更新timestamp的值:</p> <p>Update student set time=null where id=1;</p> <p>Select*from student ;//这时timestamp的值已改变</p> <p>如果,当你创建一个行时,你想要一个TIMESTAMP被设置到当前的日期和时间,但在以后无论何时行被更新时都不改变,可以这样</p> <p>Update student set name=’yun’,time=time where id=1;</p> <p>Select *from student where id=1;</p> <p>TIMESTAMP的存储需求是4字节,而DATETIME列的存储需求是8字节。</p> <p>c.返回时间和日期</p> <p>mysql> SELECT * FROM weblog WHERE entrydate>="2001-02-08" AND entrydate<"2001-02-09" ;</p> <p>或者 mysql> SELECT * FROM weblog WHERE entrydate LIKE '2001-02-08%' ;</p> <p>注:LIKE运算符和模式匹配,是通过比较串值进行的,因此必须使用标准的时间书写格式,YYYY-MM-DD HH-MM-SS</p> <p>d. 比较日期和时间:</p> <p>mysql> SELECT FROM_DAYS(729669); -> '1997-10-07'<br /> <br /> TO_DAYS(date) 给出一个日期 date,返回一个天数(从 0 年开始的天数): mysql> SELECT TO_DAYS(950501); -> 728779 mysql> SELECT TO_DAYS('1997-10-07'); -> 729669<br />TO_DAYS() 无意于使用先于格里高里历法(即现行的阳历)(1582)出现的值,因为它不考虑当历法改变时所遗失的天数。<br /> <br />FROM_DAYS(N) 给出一个天数 N,返回一个 DATE 值:<br />返回2个时间相差的天数</p> <p>select to_days(now())-to_days('20100510');</p> <p><br />3. 字符串模式匹配:</p> <p>SQL的模式匹配允许你使用 “_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在MySQL中,SQL的模式缺省是忽略大小写的。</p> <p>select*from xindi where name like "l%i";</p> <p>select*from xindi where name like " %i";</p> <p>select*from xindi where name like "l% ";</p> <p>select*from xindi where name like "l___";//l后面有三个字符的</p> <p>mysql> SELECT * FROM pet WHERE name REGEXP "^[bB]";</p> <p>mysql> SELECT * FROM pet WHERE name REGEXP "fy$";</p> <p>mysql> SELECT * FROM pet WHERE name REGEXP "[wW]";</p> <p>mysql> SELECT * FROM pet WHERE name REGEXP "^.....$";//重复5次(有5个字符)</p> <p>mysql> SELECT * FROM pet WHERE name REGEXP "^.{5}$"; //重复5次(有5个字符)</p> 相关文章 Centos7 完全卸载mysql Golang 汇编入门知识总结 【Redis持久化】服务器突然挂了!Redis缓存都在内存中啊 Typecho在PHP7以上版本中出现"Database Server Error"错误的解决办法 PHP和MySQL中IPV4地址与INT的互相转换 mysql DBA技能 CentOS环境开放3306端口 CentOS 7.0下使用yum安装MySQL mysql笔记(12)--外键约束 mysql笔记(9)--变更数据表结构 Last modification:March 2nd, 2012 at 08:57 pm © 允许规范转载 Support 如果觉得我的文章对你有用,请随意赞赏 ×Close Appreciate the author Sweeping payments Pay by AliPay Pay by WeChat