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)
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)
(完)