MySQL学习笔记6:运算符和函数

来源:互联网 发布:promise js 阮一峰 编辑:程序博客网 时间:2024/06/05 19:20
字符函数,如下图:

CONCAT() 字符连接
mysql> SELECT CONCAT('hello','MySQL');
+-------------------------+
| CONCAT('hello','MySQL') |
+-------------------------+
| helloMySQL              |
+-------------------------+
1 row in set (0.05 sec)
mysql> SELECT CONCAT('hello','-','MySQL');
+-----------------------------+
| CONCAT('hello','-','MySQL') |
+-----------------------------+
| hello-MySQL                 |
+-----------------------------+
1 row in set (0.00 sec)
mysql> CREATE TABLE test(
    -> first_name VARCHAR(20),
    -> last_name VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.12 sec)
mysql> INSERT test VALUES('A','B');
Query OK, 1 row affected (0.09 sec)
mysql> INSERT test VALUES('C','D');
Query OK, 1 row affected (0.05 sec)
mysql> INSERT test VALUES('tom%','123');
Query OK, 1 row affected (0.06 sec)
mysql> INSERT test VALUES(NULL,'11');
Query OK, 1 row affected (0.06 sec)
mysql> SELECT * FROM test;
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| A          | B         |
| C          | D         |
| tom%       | 123       |
| NULL       | 11        |
+------------+-----------+
4 rows in set (0.00 sec)
mysql> SELECT CONCAT(first_name,last_name) AS fullname FROM test;#将数据表test中的first_name字段和last_name字段连接在一起后,输出。
+----------+
| fullname |
+----------+
| AB       |
| CD       |
| tom%123  |
| NULL     |
+----------+
4 rows in set (0.00 sec)
mysql> SELECT CONCAT(NULL,'MySQL');
+----------------------+
| CONCAT(NULL,'MySQL') |
+----------------------+
| NULL                 |
+----------------------+
1 row in set (0.00 sec)
CONCAT_WS()  使用指定的分隔符进行字符连接
mysql> SELECT CONCAT_WS('|','A','B','C'); #使用分隔符 '|' 进行字符连接
+----------------------------+
| CONCAT_WS('|','A','B','C') |
+----------------------------+
| A|B|C                      |
+----------------------------+
1 row in set (0.00 sec)
mysql> SELECT CONCAT_WS('-','Hello','MySQL');
+--------------------------------+
| CONCAT_WS('-','Hello','MySQL') |
+--------------------------------+
| Hello-MySQL                    |
+--------------------------------+
1 row in set (0.00 sec)
FORMAT() 数字格式化,该函数的返回值是 字符型
mysql> SELECT FORMAT(12560.75,2);#保留2位小数
+--------------------+
| FORMAT(12560.75,2) |
+--------------------+
| 12,560.75          |
+--------------------+
1 row in set (0.03 sec)
mysql> SELECT FORMAT(12560.75,1);#保留1位小数
+--------------------+
| FORMAT(12560.75,1) |
+--------------------+
| 12,560.8           |
+--------------------+
1 row in set (0.00 sec)
mysql> SELECT FORMAT(12560.75,0);#保留0位小数(只要整数部分)
+--------------------+
| FORMAT(12560.75,0) |
+--------------------+
| 12,561             |
+--------------------+
1 row in set (0.00 sec)
LOWER() #转换成小写字母
mysql> SELECT LOWER('MySQL');
+----------------+
| LOWER('MySQL') |
+----------------+
| mysql          |
+----------------+
1 row in set (0.00 sec)
UPPER() #转换成大写字母
mysql> SELECT UPPER('mysql');
+----------------+
| UPPER('mysql') |
+----------------+
| MYSQL          |
+----------------+
1 row in set (0.00 sec)
LEFT()获取左侧字符
mysql> SELECT LEFT('MySQL',2);#从'MySQL'左侧取2个字符
+-----------------+
| LEFT('MySQL',2) |
+-----------------+
| My              |
+-----------------+
1 row in set (0.00 sec)
mysql> SELECT LOWER(LEFT('MySQL',2));#先从'MySQL'左侧取2个字符,然后转换成小写。
+------------------------+
| LOWER(LEFT('MySQL',2)) |
+------------------------+
| my                     |
+------------------------+
1 row in set (0.00 sec)
RIGHT()获取右侧字符
mysql> SELECT RIGHT('MySQL',3);#从'MySQL'右侧取3个字符
+------------------+
| RIGHT('MySQL',3) |
+------------------+
| SQL              |
+------------------+
1 row in set (0.00 sec)
mysql> SELECT LOWER(RIGHT('MySQL',3));#先从'MySQL'右侧取3个字符,然后转换成小写。
+-------------------------+
| LOWER(RIGHT('MySQL',3)) |
+-------------------------+
| sql                     |
+-------------------------+

1 row in set (0.00 sec)


LENGTH() 获取字符串的长度(字节长度)
mysql> SELECT LENGTH('MySQL');
+-----------------+
| LENGTH('MySQL') |
+-----------------+
|               5 |
+-----------------+
1 row in set (0.02 sec)
mysql> SELECT LENGTH('学习');
+----------------+
| LENGTH('学习')   |
+----------------+
|              4 |
+----------------+
1 row in set (0.00 sec)
LTRIM() 删除前导空格
RTRIM() 删除后续空格
TRIM() 删除前导和后续空格
mysql> SELECT LENGTH('  MySQL    ');# 2个前导空格,4个后续空格。
+-----------------------+
| LENGTH('  MySQL    ') |
+-----------------------+
|                    11 |
+-----------------------+
1 row in set (0.00 sec)
mysql> SELECT LENGTH(LTRIM('  MySQL    '));#删除前导空格
+------------------------------+
| LENGTH(LTRIM('  MySQL    ')) |
+------------------------------+
|                            9 |
+------------------------------+
1 row in set (0.00 sec)
mysql> SELECT LENGTH(RTRIM('  MySQL    '));#删除后续空格
+------------------------------+
| LENGTH(RTRIM('  MySQL    ')) |
+------------------------------+
|                            7 |
+------------------------------+
1 row in set (0.04 sec)
mysql> SELECT LENGTH(TRIM('  MySQL    '));#删除前导和后续空格
+-----------------------------+
| LENGTH(TRIM('  MySQL    ')) |
+-----------------------------+
|                           5 |
+-----------------------------+
1 row in set (0.00 sec)
mysql> SELECT TRIM(LEADING '?' FROM '??MySQL???');#删除前导问号
+-------------------------------------+
| TRIM(LEADING '?' FROM '??MySQL???') |
+-------------------------------------+
| MySQL???                            |
+-------------------------------------+
1 row in set (0.04 sec)


mysql> SELECT TRIM(TRAILING '?' FROM '??MySQL???');#删除后续问号
+--------------------------------------+
| TRIM(TRAILING '?' FROM '??MySQL???') |
+--------------------------------------+
| ??MySQL                              |
+--------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT TRIM(BOTH '?' FROM '??MySQL???');#删除前导问号和后续问号
+----------------------------------+
| TRIM(BOTH '?' FROM '??MySQL???') |
+----------------------------------+
| MySQL                            |
+----------------------------------+
1 row in set (0.03 sec)
mysql> SELECT TRIM(BOTH '?' FROM '??My??SQL???');#中间的问号删除不了(只能删除前导和后续问号)
+------------------------------------+
| TRIM(BOTH '?' FROM '??My??SQL???') |
+------------------------------------+
| My??SQL                            |
+------------------------------------+
1 row in set (0.00 sec)
如何将中间的问号删除呢?使用REPLACE()函数
REPLACE() 字符串替换
mysql> SELECT REPLACE('??My??SQL???','?','');#将字符串'??My??SQL???'中的'?'替换成空串''
+--------------------------------+
| REPLACE('??My??SQL???','?','') |
+--------------------------------+
| MySQL                          |
+--------------------------------+
1 row in set (0.00 sec)
mysql> SELECT REPLACE('??My??SQL???','?','!*');#将字符串'??My??SQL???'中的'?'替换成'!*'
+----------------------------------+
| REPLACE('??My??SQL???','?','!*') |
+----------------------------------+
| !*!*My!*!*SQL!*!*!*              |
+----------------------------------+
1 row in set (0.00 sec)
mysql> SELECT REPLACE('??My??SQL???','??','!');#将字符串'??My??SQL???'中的'??'替换成'!'
+----------------------------------+
| REPLACE('??My??SQL???','??','!') |
+----------------------------------+
| !My!SQL!?                        |
+----------------------------------+
1 row in set (0.00 sec)
SUBSTRING() 字符串截取      MySQL中,字符串的编号:左侧从1开始编号;右侧从-1开始编号。
mysql> SELECT SUBSTRING('MySQL',1,2);#从编号1开始,取2个字符
+------------------------+
| SUBSTRING('MySQL',1,2) |
+------------------------+
| My                     |
+------------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBSTRING('MySQL',3);#从编号3开始(默认取到字符串的结尾)
+----------------------+
| SUBSTRING('MySQL',3) |
+----------------------+
| SQL                  |
+----------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBSTRING('MySQL',-2);#从编号-2开始(默认取到字符串的结尾)
+-----------------------+
| SUBSTRING('MySQL',-2) |
+-----------------------+
| QL                    |
+-----------------------+
1 row in set (0.04 sec)
mysql> SELECT SUBSTRING('MySQL',-2,1);#从编号-2开始,取1个字符
+-------------------------+
| SUBSTRING('MySQL',-2,1) |
+-------------------------+
| Q                       |
+-------------------------+
1 row in set (0.00 sec)
[NOT] LIKE 模式匹配
MySQL中,%表示任意个任意字符(0个,1个,2个或更多个任意字符)
mysql> SELECT 'MySQL' LIKE 'M%';#返回值是1,表示True
+-------------------+
| 'MySQL' LIKE 'M%' |
+-------------------+
|                 1 |
+-------------------+
1 row in set (0.04 sec)
mysql> SELECT * FROM test;
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| A          | B         |
| C          | D         |
| tom%       | 123       |
| NULL       | 11        |
+------------+-----------+
4 rows in set (0.00 sec)
mysql> SELECT * FROM test WHERE first_name LIKE '%o%';#查找first_name字段包含'o'的记录(%用来匹配任意个任意字符)
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| tom%       | 123       |
+------------+-----------+
1 row in set (0.00 sec)
mysql> SELECT * FROM test WHERE first_name LIKE '%1%%' ESCAPE 1;#查找first_name字段包含'%'的记录
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| tom%       | 123       |
+------------+-----------+
1 row in set (0.00 sec)
注意:'%1%%'中 开头和结尾的%表示通配符(用来匹配任意个任意字符),而中间的 1% 仅仅表示%这个字符。
ESCAPE 1 表示 1后边的% 仅仅表示字符%   当然,其中的1也可以换成其他的数字,如:
mysql> SELECT * FROM test WHERE first_name LIKE '%9%%' ESCAPE 9;
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| tom%       | 123       |
+------------+-----------+
1 row in set (0.00 sec)
mysql> SELECT * FROM test WHERE first_name LIKE '%0%%' ESCAPE 0;
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| tom%       | 123       |
+------------+-----------+
1 row in set (0.00 sec)
在标准的模式匹配中,
%(百分号)可以匹配任意个任意字符,而_(下划线)可以匹配任意的一个字符。
数值运算符与函数,如下图:

mysql> SELECT 3+8;#数值运算符
+-----+
| 3+8 |
+-----+
|  11 |
+-----+
1 row in set (0.02 sec)
mysql> SELECT 8*3;#数值运算符
+-----+
| 8*3 |
+-----+
|  24 |
+-----+
1 row in set (0.00 sec)
CEIL() 向上取整,也叫进一取整;
mysql> SELECT CEIL(3.25);#向上取整
+------------+
| CEIL(3.25) |
+------------+
|          4 |
+------------+
1 row in set (0.03 sec)
FLOOR() 向下取整,也叫舍一取整
mysql> SELECT FLOOR(3.25); #向下取整
+-------------+
| FLOOR(3.25) |
+-------------+
|           3 |
+-------------+
1 row in set (0.00 sec)
DIV() 整数除法(取整)
mysql> SELECT 3/4;
+--------+
| 3/4    |
+--------+
| 0.7500 |
+--------+
1 row in set (0.00 sec)
mysql> SELECT 3 DIV 4;#取整
+---------+
| 3 DIV 4 |
+---------+
|       0 |
+---------+
1 row in set (0.00 sec)
mysql> SELECT 9 DIV 2;#取整
+---------+
| 9 DIV 2 |
+---------+
|       4 |
+---------+
1 row in set (0.00 sec)
MOD 取余数(取模)
% 取余数(取模)
mysql> SELECT 5 MOD 3;#取模
+---------+
| 5 MOD 3 |
+---------+
|       2 |
+---------+
1 row in set (0.00 sec)
mysql> SELECT 5 % 3;#取模
+-------+
| 5 % 3 |
+-------+
|     2 |
+-------+
1 row in set (0.00 sec)
mysql> SELECT 5.3 MOD 3;#小数取模
+-----------+
| 5.3 MOD 3 |
+-----------+
|       2.3 |
+-----------+
1 row in set (0.00 sec)
mysql> SELECT 5.3 % 3;#小数取模
+---------+
| 5.3 % 3 |
+---------+
|     2.3 |
+---------+
1 row in set (0.00 sec)
POWER()幂运算
mysql> SELECT POWER(3,3);#求3的3次方
+------------+
| POWER(3,3) |
+------------+
|         27 |
+------------+
1 row in set (0.00 sec)
ROUND() 四舍五入
mysql> SELECT ROUND(3.652,2);#保留2位小数
+----------------+
| ROUND(3.652,2) |
+----------------+
|           3.65 |
+----------------+
1 row in set (0.00 sec)
mysql> SELECT ROUND(3.652,1);#保留1位小数
+----------------+
| ROUND(3.652,1) |
+----------------+
|            3.7 |
+----------------+
1 row in set (0.00 sec)
mysql> SELECT ROUND(3.652,0);#保留0位小数(只要整数部分)
+----------------+
| ROUND(3.652,0) |
+----------------+
|              4 |
+----------------+
1 row in set (0.00 sec)
TRUNCATE()数字截断
mysql> SELECT TRUNCATE(125.78,1);#保留1位小数,后边的直接丢掉。
+--------------------+
| TRUNCATE(125.78,1) |
+--------------------+
|              125.7 |
+--------------------+
1 row in set (0.00 sec)
mysql> SELECT TRUNCATE(125.78,0);#保留0位小数(只要整数部分),小数部分直接丢掉。
+--------------------+
| TRUNCATE(125.78,0) |
+--------------------+
|                125 |
+--------------------+
1 row in set (0.00 sec)
mysql> SELECT TRUNCATE(125.78,-1);#只要整数部分,并且个位数字取0
+---------------------+
| TRUNCATE(125.78,-1) |
+---------------------+
|                 120 |
+---------------------+
1 row in set (0.00 sec)
mysql> SELECT TRUNCATE(125.78,-2);#只要整数部分,并且个位和十位取0
+---------------------+
| TRUNCATE(125.78,-2) |
+---------------------+
|                 100 |
+---------------------+
1 row in set (0.00 sec)
比较运算符与函数,如下图:

[NOT] BETWEEN……AND…… [不]在范围之内
mysql> SELECT 15 BETWEEN 1 AND 22;#判断15在闭区间[1,22]范围内?返回值是1,表示True
+---------------------+
| 15 BETWEEN 1 AND 22 |
+---------------------+
|                   1 |
+---------------------+
1 row in set (0.04 sec)
mysql> SELECT 22 BETWEEN 1 AND 22;#判断22在闭区间[1,22]范围内?返回值是1,表示True
+---------------------+
| 22 BETWEEN 1 AND 22 |
+---------------------+
|                   1 |
+---------------------+
1 row in set (0.00 sec)
mysql> SELECT 28 BETWEEN 1 AND 22;#判断28在闭区间[1,22]范围内?返回值是0,表示False
+---------------------+
| 28 BETWEEN 1 AND 22 |
+---------------------+
|                   0 |
+---------------------+
1 row in set (0.00 sec)
mysql> SELECT 28 NOT BETWEEN 1 AND 22;
+-------------------------+
| 28 NOT BETWEEN 1 AND 22 |
+-------------------------+
|                       1 |
+-------------------------+
1 row in set (0.00 sec)
[NOT] IN() [不]在列出值范围内
mysql> SELECT 10 IN(5,10,15,20);
+-------------------+
| 10 IN(5,10,15,20) |
+-------------------+
|                 1 |
+-------------------+
1 row in set (0.05 sec)
mysql> SELECT 13 IN(5,10,15,20);
+-------------------+
| 13 IN(5,10,15,20) |
+-------------------+
|                 0 |
+-------------------+
1 row in set (0.00 sec)
IS [NOT] NULL  [不]为空
mysql> SELECT NULL IS NULL;#只有这一种情况,返回真!
+--------------+
| NULL IS NULL |
+--------------+
|            1 |
+--------------+
1 row in set (0.00 sec)
mysql> SELECT '' IS NULL;
+------------+
| '' IS NULL |
+------------+
|          0 |
+------------+
1 row in set (0.00 sec)
mysql> SELECT 0 IS NULL;
+-----------+
| 0 IS NULL |
+-----------+
|         0 |
+-----------+
1 row in set (0.00 sec)
mysql> SELECT * FROM test;
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| A          | B         |
| C          | D         |
| tom%       | 123       |
| NULL       | 11        |
+------------+-----------+
4 rows in set (0.00 sec)
mysql> SELECT * FROM test WHERE first_name IS NULL;#查找first_name字段为空的记录。
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| NULL       | 11        |
+------------+-----------+
1 row in set (0.00 sec)
mysql> SELECT * FROM test WHERE first_name IS NOT NULL;#查找first_name字段不为空的记录。
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| A          | B         |
| C          | D         |
| tom%       | 123       |
+------------+-----------+
3 rows in set (0.00 sec)
日期时间函数,如下图:

NOW()当前日期和时间
mysql> SELECT NOW();#查看当前日期和时间
+---------------------+
| NOW()               |
+---------------------+
| 2016-10-07 09:55:29 |
+---------------------+
1 row in set (0.05 sec)
CURDATE()当前日期
mysql> SELECT CURDATE();#查看当前日期
+------------+
| CURDATE()  |
+------------+
| 2016-10-07 |
+------------+
1 row in set (0.00 sec)
CURTIME()当前时间
mysql> SELECT CURTIME();#查看当前时间
+-----------+
| CURTIME() |
+-----------+
| 09:59:55  |
+-----------+
1 row in set (0.02 sec)
DATE_ADD()日期变化(增加或减少
mysql> SELECT DATE_ADD('2015-3-12',INTERVAL 365 DAY);#正数表示日期的增加
+----------------------------------------+
| DATE_ADD('2015-3-12',INTERVAL 365 DAY) |
+----------------------------------------+
| 2016-03-11                             |
+----------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_ADD('2015-3-12',INTERVAL -365 DAY);#负数表示日期的减少
+-----------------------------------------+
| DATE_ADD('2015-3-12',INTERVAL -365 DAY) |
+-----------------------------------------+
| 2014-03-12                              |
+-----------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_ADD('2015-3-12',INTERVAL 1 YEAR);#增加1年
+---------------------------------------+
| DATE_ADD('2015-3-12',INTERVAL 1 YEAR) |
+---------------------------------------+
| 2016-03-12                            |
+---------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_ADD('2015-3-12',INTERVAL 3 WEEK);#增加3个星期
+---------------------------------------+
| DATE_ADD('2015-3-12',INTERVAL 3 WEEK) |
+---------------------------------------+
| 2015-04-02                            |
+---------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_ADD('2015-3-12',INTERVAL 2 MONTH);#增加2个月
+----------------------------------------+
| DATE_ADD('2015-3-12',INTERVAL 2 MONTH) |
+----------------------------------------+
| 2015-05-12                             |
+----------------------------------------+
1 row in set (0.00 sec)
DATEDIFF()日期差值
mysql> SELECT DATEDIFF('2013-3-12','2014-3-12');
+-----------------------------------+
| DATEDIFF('2013-3-12','2014-3-12') |
+-----------------------------------+
|                              -365 |
+-----------------------------------+
1 row in set (0.03 sec)
mysql> SELECT DATEDIFF('2014-3-12','2013-3-12');
+-----------------------------------+
| DATEDIFF('2014-3-12','2013-3-12') |
+-----------------------------------+
|                               365 |
+-----------------------------------+
1 row in set (0.00 sec)
DATE_FORMAT()日期格式化
%m 月份(包含前导0)        %d 日(包含前导0)
%Y 四位年份                 %y 两位年份

mysql> SELECT DATE_FORMAT('2014-3-2','%m/%d/%Y');
+------------------------------------+
| DATE_FORMAT('2014-3-2','%m/%d/%Y') |
+------------------------------------+
| 03/02/2014                         |
+------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_FORMAT('2014-3-2','%m/%d/%y');
+------------------------------------+
| DATE_FORMAT('2014-3-2','%m/%d/%y') |
+------------------------------------+
| 03/02/14                           |
+------------------------------------+
1 row in set (0.00 sec)
信息函数,如下图:

CONNECTION_ID() 连接ID
mysql> SELECT CONNECTION_ID();#不同的用户连接的ID不一样,因为是多线程的!
+-----------------+
| CONNECTION_ID() |
+-----------------+
|               3 |
+-----------------+
1 row in set (0.00 sec)
DATABASE() 当前数据库
mysql> SELECT DATABASE();#查看当前使用的数据库
+------------+
| DATABASE() |
+------------+
| test       |
+------------+
1 row in set (0.00 sec)

LAST_INSERT_ID() 最后插入记录的ID号

使用该函数,在数据表中必须存在一个自动编号的字段,字段名可以是id,也可以不是id
mysql> DESC test;#此时的数据表中还没有自动编号的字段,需要添加一个自动编号的字段。
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| first_name | varchar(20) | YES  |     | NULL    |       |
| last_name  | varchar(20) | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
2 rows in set (0.06 sec)
添加的字段名可以不是id,但是添加的字段要定义为主键,并且自动编号!
mysql> ALTER TABLE test ADD id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT FIRST;
Query OK, 4 rows affected (0.41 sec)
Records: 4  Duplicates: 0  Warnings: 0
mysql> DESC test;
+------------+----------------------+------+-----+---------+----------------+
| Field      | Type                 | Null | Key | Default | Extra          |
+------------+----------------------+------+-----+---------+----------------+
| id         | smallint(5) unsigned | NO   | PRI | NULL    | auto_increment |
| first_name | varchar(20)          | YES  |     | NULL    |                |
| last_name  | varchar(20)          | YES  |     | NULL    |                |
+------------+----------------------+------+-----+---------+----------------+
3 rows in set (0.03 sec)
mysql> SELECT * FROM test;
+----+------------+-----------+
| id | first_name | last_name |
+----+------------+-----------+
|  1 | A          | B         |
|  2 | C          | D         |
|  3 | tom%       | 123       |
|  4 | NULL       | 11        |
+----+------------+-----------+
4 rows in set (0.00 sec)
mysql> INSERT test(first_name,last_name) VALUES('11','22');#插入一条新记录(id为5)
Query OK, 1 row affected (0.08 sec)
mysql> SELECT * FROM test;
+----+------------+-----------+
| id | first_name | last_name |
+----+------------+-----------+
|  1 | A          | B         |
|  2 | C          | D         |
|  3 | tom%       | 123       |
|  4 | NULL       | 11        |
|  5 | 11         | 22        |
+----+------------+-----------+
5 rows in set (0.00 sec)
mysql> SELECT LAST_INSERT_ID();#返回 最后插入记录的ID号
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                5 |
+------------------+
1 row in set (0.00 sec)
如果同时写入多条记录,LAST_INSERT_ID()返回的是哪一条记录的id号呢?
mysql> INSERT test(first_name,last_name) VALUES('AA','BB'),('CC','DD');#插入2条记录(id为6和7)
Query OK, 2 rows affected (0.05 sec)
Records: 2  Duplicates: 0  Warnings: 0
mysql> SELECT * FROM test;
+----+------------+-----------+
| id | first_name | last_name |
+----+------------+-----------+
|  1 | A          | B         |
|  2 | C          | D         |
|  3 | tom%       | 123       |
|  4 | NULL       | 11        |
|  5 | 11         | 22        |
|  6 | AA         | BB        |
|  7 | CC         | DD        |
+----+------------+-----------+
7 rows in set (0.00 sec)
mysql> SELECT LAST_INSERT_ID();#可以看到,返回的id是6,即:若同时插入多条记录,返回新插入的第一条记录的id
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                6 |
+------------------+
1 row in set (0.00 sec)
USER() 当前用户
mysql> SELECT USER();#查看当前用户
+----------------+
| USER()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
VERSION() 版本信息
mysql> SELECT VERSION();#查看MySQL版本信息
+-----------+
| VERSION() |
+-----------+
| 5.5.37    |
+-----------+
1 row in set (0.00 sec)
聚合函数的特点:只有一个返回值;MySQL中的聚合函数,如下图:

mysql> SELECT * FROM test;
+----+------------+-----------+
| id | first_name | last_name |
+----+------------+-----------+
|  1 | A          | B         |
|  2 | C          | D         |
|  3 | tom%       | 123       |
|  4 | NULL       | 11        |
|  5 | 11         | 22        |
|  6 | AA         | BB        |
|  7 | CC         | DD        |
+----+------------+-----------+
7 rows in set (0.00 sec)
mysql> SELECT AVG(id) FROM test;#求平均值
+---------+
| AVG(id) |
+---------+
|  4.0000 |
+---------+
1 row in set (0.00 sec)
mysql> SELECT COUNT(*) AS ct FROM test;#统计记录条数
+----+
| ct |
+----+
|  7 |
+----+
1 row in set (0.00 sec)
mysql> SELECT COUNT(first_name) AS ct FROM test;#按照first_name字段进行统计,统计时只统计 非空值,空值会被排除。
+----+
| ct |
+----+
|  6 |
+----+
1 row in set (0.00 sec)
mysql> SELECT MAX(id) FROM test;#MAX()使用示例
+---------+
| MAX(id) |
+---------+
|       7 |
+---------+
1 row in set (0.03 sec)
mysql> SELECT MIN(id) FROM test;#MIN()使用示例
+---------+
| MIN(id) |
+---------+
|       1 |
+---------+
1 row in set (0.00 sec)
mysql> SELECT SUM(id) FROM test;#SUM()使用示例
+---------+
| SUM(id) |
+---------+
|      28 |
+---------+
1 row in set (0.00 sec)
关于聚合函数的详细介绍,请参考: http://blog.csdn.net/sxingming/article/details/52713347
加密函数,如下图:

MD5()   信息摘要算法
【如果MySQL中的信息,是为了以后的Web页面做准备,推荐使用MD5()
mysql> SELECT MD5('admin');#加密后的结果是32位的数字
+----------------------------------+
| MD5('admin')                     |
+----------------------------------+
| 21232f297a57a5a743894a0e4a801fc3 |
+----------------------------------+
1 row in set (0.03 sec)
PASSWORD() 密码算法 【主要用于修改客户端密码
mysql> SELECT PASSWORD('admin');
+-------------------------------------------+
| PASSWORD('admin')                         |
+-------------------------------------------+
| *4ACFE3202A5FF5CF467898FC58AAB1D615029441 |
+-------------------------------------------+
1 row in set (0.00 sec)
mysql> SET PASSWORD=PASSWORD('123456');#修改客户端的登录密码为123456
Query OK, 0 rows affected (0.00 sec)


(完)


1 0
原创粉丝点击