您的位置:首页 > 数据库 > MySQL

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

2016-10-07 22:27 573 查看
字符函数,如下图:



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)

(完)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: