当前位置: 代码迷 >> MySQL >> mysql 基础(2)
  详细解决方案

mysql 基础(2)

热度:107   发布时间:2016-05-05 16:56:22.0
mysql 基础(二)

日期函数

mysql> select year(curdate());+-----------------+| year(curdate()) |+-----------------+|            2015 |+-----------------+1 row in set

?YEAR()提取日期的年部分,RIGHT()提取日期的MM-DD (日历年)部分的最右面5个字符

? Month() 提取日期的月份

mysql> select year(curdate());+-----------------+| year(curdate()) |+-----------------+|            2015 |+-----------------+1 row in setmysql> select right(curdate(),5);+--------------------+| right(curdate(),5) |+--------------------+| 07-06              |+--------------------+1 row in setmysql> select month(curdate());+------------------+| month(curdate()) |+------------------+|                7 |+------------------+1 row in set

?

DATE_ADD( )允许在一个给定的日期上加上时间间隔

mysql> select MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH));+---------------------------------------------+| MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH)) |+---------------------------------------------+|                                           8 |+---------------------------------------------+

? ?使用IS NULL和IS NOT NULL操作符:

mysql> select mod(9,8);+----------+| mod(9,8) |+----------+|        1 |+----------+1 row in set

?使用IS NULL和IS NOT NULL操作符:请注意在MySQL中,0或 NULL意味着假而其它值意味着真。布尔运算的默认真值是1。

在GROUP BY中,两个NULL值视为相同。

?

执行ORDER BY时,如果运行 ORDER BY ... ASC,则NULL值出现在最前面,若运行ORDER BY ... DESC,则NULL值出现在最后面。

?

mysql> select 1 is null,1 is not null;+-----------+---------------+| 1 is null | 1 is not null |+-----------+---------------+|         0 |             1 |+-----------+---------------+1 row in set

?

模式匹配

?查找已F开头的记录

mysql> select * from pet where name like 'F%';+--------+--------+---------+-----+------------+------------+| name   | owner  | species | sex | birth      | death      |+--------+--------+---------+-----+------------+------------+| Fluffy | Harold | cat     | f   | 1993-02-04 | 0000-00-00 |+--------+--------+---------+-----+------------+------------+1 row in set

?查找以s结尾的记录

? ??

mysql> select * from pet where name like '%s';+-------+-------+---------+-----+------------+------------+| name  | owner | species | sex | birth      | death      |+-------+-------+---------+-----+------------+------------+| Claws | Gwen  | cat     | m   | 1994-03-17 | 1994-03-17 |
mysql> SELECT * FROM PET where name REGEXP 'y$';+--------+--------+---------+-----+------------+------------+| name   | owner  | species | sex | birth      | death      |+--------+--------+---------+-----+------------+------------+| Fluffy | Harold | cat     | f   | 1993-02-04 | 0000-00-00 |+--------+--------+---------+-----+------------+------------+1 row in set
? +-------+-------+---------+-----+------------+------------+ 1 row in set

?查找name中有luf的记录

??

mysql> select * from pet where name like '%luf%';+--------+--------+---------+-----+------------+------------+| name   | owner  | species | sex | birth      | death      |+--------+--------+---------+-----+------------+------------+| Fluffy | Harold | cat     | f   | 1993-02-04 | 0000-00-00 |+--------+--------+---------+-----+------------+------------+1 row in set

?还可以用正则表达式查询匹配的行

? ?查找首个字母是F的行

??

mysql> SELECT * FROM PET where name REGEXP '^F';+--------+--------+---------+-----+------------+------------+| name   | owner  | species | sex | birth      | death      |+--------+--------+---------+-----+------------+------------+| Fluffy | Harold | cat     | f   | 1993-02-04 | 0000-00-00 |+--------+--------+---------+-----+------------+------------+1 row in set

? ?查找结尾是y的行

? ?

mysql> SELECT * FROM PET where name REGEXP 'y$';+--------+--------+---------+-----+------------+------------+| name   | owner  | species | sex | birth      | death      |+--------+--------+---------+-----+------------+------------+| Fluffy | Harold | cat     | f   | 1993-02-04 | 0000-00-00 |+--------+--------+---------+-----+------------+------------+1 row in set

? ?查找包含l的行

? ?

mysql> select * from pet where name REGEXP 'l';+--------+--------+---------+-----+------------+------------+| name   | owner  | species | sex | birth      | death      |+--------+--------+---------+-----+------------+------------+| Fluffy | Harold | cat     | f   | 1993-02-04 | 0000-00-00 || Claws  | Gwen   | cat     | m   | 1994-03-17 | 1994-03-17 |+--------+--------+---------+-----+------------+------------+2 rows in set

?找出包含正好5个字符的名字,

mysql> select * from pet  where name REGEXP '^.....$';+-------+-------+---------+-----+------------+------------+| name  | owner | species | sex | birth      | death      |+-------+-------+---------+-----+------------+------------+| Claws | Gwen  | cat     | m   | 1994-03-17 | 1994-03-17 |+-------+-------+---------+-----+------------+------------+1 row in set

?也可以使用“{n}”“重复n次”操作符重写前面的查询:

mysql> select * from pet  where name REGEXP '^.{5}$';+-------+-------+---------+-----+------------+------------+| name  | owner | species | sex | birth      | death      |+-------+-------+---------+-----+------------+------------+| Claws | Gwen  | cat     | m   | 1994-03-17 | 1994-03-17 |+-------+-------+---------+-----+------------+------------+1 row in setmysql> select * from pet  where name REGEXP '^.{6}$';+--------+--------+---------+-----+------------+------------+| name   | owner  | species | sex | birth      | death      |+--------+--------+---------+-----+------------+------------+| Fluffy | Harold | cat     | f   | 1993-02-04 | 0000-00-00 |+--------+--------+---------+-----+------------+------------+1 row in setmysql> 

?以上详细可以看下mysql的正则表达式

  相关解决方案