基于wordpress课程网站设计php毕业论文/网站维护是做什么的
文章目录
- 1.MySQL函数
- 2.控制流程函数
- 3.字符串函数
- 4.数值函数
- 5.日期和时间函数
1.MySQL函数
- 控制流程函数
- 字符串函数
- 数值函数
- 日期和时间函数
- 聚合函数
- 下面只是简单列举了常用的,详细见:MySQL5.1参考手册中第12章:函数和操作符
2.控制流程函数
- eg:
CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END /* from:MySql5.1参考手册中的12.2. 控制流程函数的eg */
/* when后面的1与CASE后面的1进行比较,若相等则输出one*/
/* CASE后面的1还可能是数据库中的某个字段 */
mysql> select case 1 when 1 then 'one' when 2 then 'two' else 'more' end;
+------------------------------------------------------------+
| case 1 when 1 then 'one' when 2 then 'two' else 'more' end |
+------------------------------------------------------------+
| one |
+------------------------------------------------------------+
1 row in set (0.00 sec)/* CASE后面1>0则输出true */
mysql> select case when 1>0 then 'true' else 'false' end;
+--------------------------------------------+
| case when 1>0 then 'true' else 'false' end |
+--------------------------------------------+
| true |
+--------------------------------------------+
1 row in set (0.00 sec)
- eg:
/* emp表和salgrade表要连接在一起,使用连接查询
连接条件是在最低工资和最高工资之间
mysql> select ename,sal from EMP,SALGRADE where sal between losal and hisal;
+--------+---------+
| ename | sal |
+--------+---------+
| SMITH | 800.00 |
| ALLEN | 1600.00 |select ename,(select A.sal from SALGRADE where A.sal between losal and hisal) sal from EMP A;select ename 员工, sal 薪金, case grade when 1 then '一级'
when 2 then '二级'
when 3 then '三级'
when 4 then '四级'
when 5 then '五级'
end 等级
from emp, salgrade
where sal between losal and hisal
*/mysql> select ename,sal, case B.grade when 1 then 'wangji'
when 2 then 'shenlulu'
when 3 then 'libiao'
end 'dengji'
from EMP A,SALGRADE B
where A.sal
between B.losal and B.hisal;+--------+---------+----------+
| ename | sal | dengji |
+--------+---------+----------+
| SMITH | 800.00 | wangji |
| ALLEN | 1600.00 | libiao |
| WARD | 1250.00 | shenlulu |IF(expr1,expr2,expr3)
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。
IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。
mysql> select if(1>2,'wangji',1);
+--------------------+
| if(1>2,'wangji',1) |
+--------------------+
| 1 |
+--------------------+
1 row in set (0.00 sec)IFNULL(expr1,expr2)
假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。
IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。
mysql> select ifnull(null,10);
+-----------------+
| ifnull(null,10) |
+-----------------+
| 10 |
+-----------------+
1 row in set (0.00 sec)
3.字符串函数
/* ASCII(str)
返回值为字符串str 的最左字符的数值。
*/
mysql> select ASCII('2a');
+-------------+
| ASCII('2a') |
+-------------+
| 50 |
+-------------+
1 row in set (0.00 sec)mysql> select ASCII('a2');
+-------------+
| ASCII('a2') |
+-------------+
| 97 |
+-------------+
1 row in set (0.00 sec)/* BIN(N)
返回值为N的二进制值的字符串表示*/
mysql> select bin(12);
+---------+
| bin(12) |
+---------+
| 1100 |
+---------+
1 row in set (0.00 sec)mysql> select BIN(12);
+---------+
| BIN(12) |
+---------+
| 1100 |
+---------+
1 row in set (0.00 sec)/* BIT_LENGTH(str)
返回值为二进制的字符串str长度。*/
/* 每个字符8位,返回的就是32位 */
mysql> select bit_length('wangji');
+----------------------+
| bit_length('wangji') |
+----------------------+
| 48 |
+----------------------+
1 row in set (0.00 sec)/* CHAR(N,... [USING charset])
CHAR()将每个参数N理解为一个整数,其返回值为一个包含这些整数的代码值所给出的字符的字符串。
NULL值被省略。 */
mysql> select char(1,2,'3');
+------------------------------+
| char(1,2,'3') |
+------------------------------+
| 0x010203 |
+------------------------------+
1 row in set (0.00 sec)mysql> select char(1,2,3);
+--------------------------+
| char(1,2,3) |
+--------------------------+
| 0x010203 |
+--------------------------+
1 row in set (0.00 sec)/* CHAR_LENGTH(str)
返回值为字符串str 的长度,长度的单位为字符
*/
mysql> select char_length('wangji');
+-----------------------+
| char_length('wangji') |
+-----------------------+
| 6 |
+-----------------------+
1 row in set (0.00 sec)/* CONCAT(str1,str2,...)
返回结果为连接参数产生的字符串。*/mysql> select CONCAT('MY','SQL');
+--------------------+
| CONCAT('MY','SQL') |
+--------------------+
| MYSQL |
+--------------------+
1 row in set (0.00 sec)
4.数值函数
mysql> select 1+2;
+-----+
| 1+2 |
+-----+
| 3 |
+-----+
1 row in set (0.00 sec)mysql> select 1.1+2;
+-------+
| 1.1+2 |
+-------+
| 3.1 |
+-------+
1 row in set (0.00 sec)mysql> select ABS(-10);
+----------+
| ABS(-10) |
+----------+
| 10 |
+----------+
1 row in set (0.00 sec)
5.日期和时间函数
-
具体用法见:MySQL5.1参考手册中12.5. 日期和时间函数
-
eg:
now
date_add/adddate
datediff
date_formatselect now();SELECT DATE_ADD('1998-02-02', INTERVAL 31 DAY);SELECT DATE_ADD('1998-02-02', INTERVAL 28 DAY);
/* 结果一样 */
SELECT adddate('1998-02-02', INTERVAL 28 DAY);
/* 结果一样 */
mysql> select adddate('1998-02-02',28);
+--------------------------+
| adddate('1998-02-02',28) |
+--------------------------+
| 1998-03-02 |
+--------------------------+
1 row in set (0.00 sec)/* DATEDIFF计算两个日期的时间差,以天为时间差*/
select DATEDIFF(now(),'2014-02-01');
mysql> select datediff('2021-11-29','2021-11-30');
+-------------------------------------+
| datediff('2021-11-29','2021-11-30') |
+-------------------------------------+
| -1 |
+-------------------------------------+
1 row in set (0.00 se/* DATE_FORMAT对时间格式化
DATE_FORMAT(date,format)
根据format 字符串安排date 值的格式。
select DATE_FORMAT(now(), '%Y%M%D');
select DATE_FORMAT(now(), '%Y%m%d');
*//*
'%H:%i:%s'表示只取出时分秒
*/
mysql> select date_format(now(),'%h:%i:%s');
+-------------------------------+
| date_format(now(),'%h:%i:%s') |
+-------------------------------+
| 06:56:42 |
+-------------------------------+
1 row in set (0.00 sec)
以下说明符可用在 format 字符串中:
- 小结:
CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] ENDCASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END /* from:MySql5.1参考手册中的12.2. 控制流程函数的eg */
/* when后面的1与CASE后面的1进行比较,若相等则输出one*/
/* CASE后面的1还可能是数据库中的某个字段 */
SELECT CASE 1 WHEN 1 THEN 'one'
WHEN 2 THEN 'two' ELSE 'more' END;/* CASE后面1>0则输出true */
SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;/* emp表和salgrade表要连接在一起,使用连接查询
连接条件是在最低工资和最高工资之间select ename, sal, grade
from emp, salgrade
where sal between losal and hisal;*/select ename 员工, sal 薪金, case grade when 1 then '一级'
when 2 then '二级'
when 3 then '三级'
when 4 then '四级'
when 5 then '五级'
end 等级
from emp, salgrade
where sal between losal and hisal/* ASCII(str)
返回值为字符串str 的最左字符的数值。*/
SELECT ASCII('2a');
SELECT ASCII('a2');
/* BIN(N)
返回值为N的二进制值的字符串表示*/
SELECT BIN(12);
/* BIT_LENGTH(str)
返回值为二进制的字符串str 长度。*/
/* 每个字符8位,返回的就是32位 */
SELECT BIT_LENGTH('text');/* CHAR(N,... [USING charset])
CHAR()将每个参数N理解为一个整数,其返回值为一个包含这些整数的代码值所给出的字符的字符串。NULL值被省略。 */
SELECT CHAR(77,121,83,81,'76');
/* 结果是一样的 */
SELECT CHAR(77,121,83,81,76);/* CHAR_LENGTH(str)
返回值为字符串str 的长度,长度的单位为字符 *//* CONCAT(str1,str2,...)
返回结果为连接参数产生的字符串。*/
mysql> SELECT CONCAT('My', 'S', 'QL');-> 'MySQL'SELECT 3+5;
SELECT 3/5;SELECT ABS(-32);select now();SELECT DATE_ADD('1998-02-02', INTERVAL 31 DAY);SELECT DATE_ADD('1998-02-02', INTERVAL 28 DAY);
/* 结果一样 */
SELECT adddate('1998-02-02', INTERVAL 28 DAY);
/* 结果一样 */
SELECT adddate('1998-02-02', 28);/* DATEDIFF计算两个日期的时间差,以天为时间差*/
select DATEDIFF(now(),'2014-02-01');
select DATEDIFF('2014-02-01','2014-03-01');/* DATE_FORMAT对时间格式化 */
/* '%H:%i:%s'表示只取出时分秒 */
select DATE_FORMAT(now(), '%H:%i:%s');
select DATE_FORMAT(now(), '%Y%M%D');
select DATE_FORMAT(now(), '%Y%m%d');