1 日期函数
mysql> select current_date( ) ;
+----------------+
| current_date( ) |
+----------------+
| 2024 -12-10 |
+----------------+
1 row in set ( 0.00 sec)
mysql> select current_time( ) ;
+----------------+
| current_time( ) |
+----------------+
| 10 :29:21 |
+----------------+
1 row in set ( 0.00 sec)
mysql> select current_timestamp( ) ;
+---------------------+
| current_timestamp( ) |
+---------------------+
| 2024 -12-10 10 :30:04 |
+---------------------+
1 row in set ( 0.01 sec)
mysql> select date_add( '2022-12-10' , interval 10 day) ;
+-----------------------------------------+
| date_add( '2022-12-10' , interval 10 day) |
+-----------------------------------------+
| 2022 -12-20 |
+-----------------------------------------+
1 row in set ( 0.02 sec)
mysql> select date_sub( '2022-12-10' , interval 20 day) ;
+-----------------------------------------+
| date_sub( '2022-12-10' , interval 20 day) |
+-----------------------------------------+
| 2022 -11-20 |
+-----------------------------------------+
1 row in set ( 0.00 sec)
mysql> select datediff( '2022-10-20' , '2022-9-1' ) ;
+------------------------------------+
| datediff( '2022-10-20' , '2022-9-1' ) |
+------------------------------------+
| 49 |
+------------------------------------+
1 row in set ( 0.01 sec)
1.1 例子1
mysql> create table tmp(
-> id int primary key auto_increment,
-> birthday date
-> ) ;
Query OK, 0 rows affected ( 0.03 sec)
mysql> insert into tmp( birthday) values( current_date( )) ;
Query OK, 1 row affected ( 0.01 sec)
mysql> select * from tmp;
+----+------------+
| id | birthday |
+----+------------+
| 1 | 2024 -12-10 |
+----+------------+
1 row in set ( 0.00 sec)
1.2 例子2
mysql> create table msg(
-> id int primary key auto_increment,
-> content varchar( 30 ) not null,
-> sendtime datetime
-> ) ;
Query OK, 0 rows affected ( 0.27 sec)
mysql> insert into msg( content, sendtime) values( 'hello world' , now( )) ;
Query OK, 1 row affected ( 0.00 sec)
mysql> insert into msg( content, sendtime) values( 'hello linux' , now( )) ;
Query OK, 1 row affected ( 0.00 sec)
mysql> select * from msg;
+----+-------------+---------------------+
| id | content | sendtime |
+----+-------------+---------------------+
| 1 | hello world | 2024 -12-10 10 :40:22 |
| 2 | hello linux | 2024 -12-10 10 :40:33 |
+----+-------------+---------------------+
2 rows in set ( 0.00 sec)
显示所有留言信息,发布日期只显示日期,不用显示时间
mysql> select content,date( sendtime) from msg;
+-------------+----------------+
| content | date( sendtime) |
+-------------+----------------+
| hello world | 2024 -12-10 |
| hello linux | 2024 -12-10 |
+-------------+----------------+
2 rows in set ( 0.00 sec)
mysql> select * from msg where date_add( sendtime, interval 2 minute) > now( ) ;
Empty set ( 0.00 sec)
2. 字符串函数
2.1 例子
mysql> select * from emp;
+--------+--------+-----------+------+---------------------+---------+---------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+--------+--------+-----------+------+---------------------+---------+---------+--------+
| 007369 | SMITH | CLERK | 7902 | 1980 -12-17 00:00:00 | 800.00 | NULL | 20 |
| 007499 | ALLEN | SALESMAN | 7698 | 1981 -02-20 00:00:00 | 1600.00 | 300.00 | 30 |
| 007521 | WARD | SALESMAN | 7698 | 1981 -02-22 00:00:00 | 1250.00 | 500.00 | 30 |
| 007566 | JONES | MANAGER | 7839 | 1981 -04-02 00:00:00 | 2975.00 | NULL | 20 |
| 007654 | MARTIN | SALESMAN | 7698 | 1981 -09-28 00:00:00 | 1250.00 | 1400.00 | 30 |
| 007698 | BLAKE | MANAGER | 7839 | 1981 -05-01 00:00:00 | 2850.00 | NULL | 30 |
| 007782 | CLARK | MANAGER | 7839 | 1981 -06-09 00:00:00 | 2450.00 | NULL | 10 |
| 007788 | SCOTT | ANALYST | 7566 | 1987 -04-19 00:00:00 | 3000.00 | NULL | 20 |
| 007839 | KING | PRESIDENT | NULL | 1981 -11-17 00:00:00 | 5000.00 | NULL | 10 |
| 007844 | TURNER | SALESMAN | 7698 | 1981 -09-08 00:00:00 | 1500.00 | 0.00 | 30 |
| 007876 | ADAMS | CLERK | 7788 | 1987 -05-23 00:00:00 | 1100.00 | NULL | 20 |
| 007900 | JAMES | CLERK | 7698 | 1981 -12-03 00:00:00 | 950.00 | NULL | 30 |
| 007902 | FORD | ANALYST | 7566 | 1981 -12-03 00:00:00 | 3000.00 | NULL | 20 |
| 007934 | MILLER | CLERK | 7782 | 1982 -01-23 00:00:00 | 1300.00 | NULL | 10 |
+--------+--------+-----------+------+---------------------+---------+---------+--------+
14 rows in set ( 0.00 sec)
mysql> select charset( ename) from emp;
+----------------+
| charset( ename) |
+----------------+
| gbk |
| gbk |
| gbk |
| gbk |
| gbk |
| gbk |
| gbk |
| gbk |
| gbk |
| gbk |
| gbk |
| gbk |
| gbk |
| gbk |
+----------------+
14 rows in set ( 0.00 sec)
要求显示student表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”
mysql> select concat( name, '的语文是' , chinese, '分,数学是' , math, '分' ) as '分数' from exam_result;
+---------------------------------------------+
| 分数 |
+---------------------------------------------+
| 唐三藏的语文是134分,数学是98分 |
| 猪悟能的语文是176分,数学是98分 |
| 曹孟德的语文是140分,数学是90分 |
| 刘玄德的语文是110分,数学是115分 |
| 孙权的语文是140分,数学是73分 |
| 宋公明的语文是150分,数学是95分 |
+---------------------------------------------+
6 rows in set ( 0.00 sec)
mysql> select length( name) ,name from exam_result;
+--------------+-----------+
| length( name) | name |
+--------------+-----------+
| 6 | 唐三藏 |
| 6 | 猪悟能 |
| 6 | 曹孟德 |
| 6 | 刘玄德 |
| 4 | 孙权 |
| 6 | 宋公明 |
+--------------+-----------+
6 rows in set ( 0.00 sec)
mysql> select replace( ename, 'S' , '上海' ) ,ename from emp;
+-------------------------------+--------+
| replace( ename, 'S' , '上海' ) | ename |
+-------------------------------+--------+
| 上海MITH | SMITH |
| ALLEN | ALLEN |
| WARD | WARD |
| JONE上海 | JONES |
| MARTIN | MARTIN |
| BLAKE | BLAKE |
| CLARK | CLARK |
| 上海COTT | SCOTT |
| KING | KING |
| TURNER | TURNER |
| ADAM上海 | ADAMS |
| JAME上海 | JAMES |
| FORD | FORD |
| MILLER | MILLER |
+-------------------------------+--------+
14 rows in set ( 0.00 sec)
mysql> select substring( ename, 2 , 2 ) , ename from emp;
+------------------------+--------+
| substring( ename, 2 , 2 ) | ename |
+------------------------+--------+
| MI | SMITH |
| LL | ALLEN |
| AR | WARD |
| ON | JONES |
| AR | MARTIN |
| LA | BLAKE |
| LA | CLARK |
| CO | SCOTT |
| IN | KING |
| UR | TURNER |
| DA | ADAMS |
| AM | JAMES |
| OR | FORD |
| IL | MILLER |
+------------------------+--------+
14 rows in set ( 0.00 sec)
mysql> select concat( lcase( substring( ename,1, 1 )) , substring( ename, 2 )) , ename from emp;
+-----------------------------------------------------------+--------+
| concat( lcase( substring( ename,1, 1 )) , substring( ename, 2 )) | ename |
+-----------------------------------------------------------+--------+
| sMITH | SMITH |
| aLLEN | ALLEN |
| wARD | WARD |
| jONES | JONES |
| mARTIN | MARTIN |
| bLAKE | BLAKE |
| cLARK | CLARK |
| sCOTT | SCOTT |
| kING | KING |
| tURNER | TURNER |
| aDAMS | ADAMS |
| jAMES | JAMES |
| fORD | FORD |
| mILLER | MILLER |
+-----------------------------------------------------------+--------+
14 rows in set ( 0.00 sec)
3.数学函数
mysql> select( -11.5) ;
+---------+
| ( -11.5) |
+---------+
| -11.5 |
+---------+
1 row in set ( 0.00 sec)
mysql> select ceiling( 23.04 ) ;
+----------------+
| ceiling( 23.04 ) |
+----------------+
| 24 |
+----------------+
1 row in set ( 0.00 sec)
mysql> select floor( 23.04 ) ;
+--------------+
| floor( 23.04 ) |
+--------------+
| 23 |
+--------------+
1 row in set ( 0.00 sec)
mysql> select floor( -23.04) ;
+---------------+
| floor( -23.04) |
+---------------+
| -24 |
+---------------+
1 row in set ( 0.01 sec)
mysql> select ceiling( -23.04) ;
+-----------------+
| ceiling( -23.04) |
+-----------------+
| -23 |
+-----------------+
1 row in set ( 0.00 sec)
mysql> select format( 12.34567 , 2 ) ;
+---------------------+
| format( 12.34567 , 2 ) |
+---------------------+
| 12.35 |
+---------------------+
1 row in set ( 0.00 sec)
mysql> select format( 12.34367 , 2 ) ;
+---------------------+
| format( 12.34367 , 2 ) |
+---------------------+
| 12.34 |
+---------------------+
1 row in set ( 0.00 sec)
mysql> select rand( ) ;
+---------------------+
| rand( ) |
+---------------------+
| 0.05758768139182374 |
+---------------------+
1 row in set ( 0.00 sec)
4.其他函数
mysql> select user( ) ;
+----------------+
| user( ) |
+----------------+
| root@localhost |
+----------------+
1 row in set ( 0.00 sec)
md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
mysql> select md5( 'hello' ) ;
+----------------------------------+
| md5( 'hello' ) |
+----------------------------------+
| 5d41402abc4b2a76b9719d911017c592 |
+----------------------------------+
1 row in set ( 0.00 sec)
mysql> select database( ) ;
+------------+
| database( ) |
+------------+
| test_db |
+------------+
1 row in set ( 0.00 sec)
ifnull(val1, val2),返回结果不为空的,都不为空,优先返回val1
mysql> select ifnull( 'aaaa' , 'bvbbbb' ) ;
+--------------------------+
| ifnull( 'aaaa' , 'bvbbbb' ) |
+--------------------------+
| aaaa |
+--------------------------+
1 row in set ( 0.00 sec)
mysql> select ifnull( null, 'bvbbbb' ) ;
+------------------------+
| ifnull( null, 'bvbbbb' ) |
+------------------------+
| bvbbbb |
+------------------------+
1 row in set ( 0.00 sec)
mysql> select ifnull( null, null) ;
+--------------------+
| ifnull( null, null) |
+--------------------+
| NULL |
+--------------------+
1 row in set ( 0.00 sec)
mysql> select ifnull( 'aaaa' , null) ;
+----------------------+
| ifnull( 'aaaa' , null) |
+----------------------+
| aaaa |
+----------------------+
1 row in set ( 0.00 sec)