mysql 函数学习(常用)
1、时间函数(组1)
- SELECT CURRENT_DATE() AS date, CURRENT_TIME() AS `time`, CURRENT_TIMESTAMP() AS `timestamp`;
- -- 输出
- -- +------------+----------+---------------------+
- -- | date | time | timestamp |
- -- +------------+----------+---------------------+
- -- | 2019-04-10 | 12:55:01 | 2019-04-10 12:55:01 |
- -- +------------+----------+---------------------+
2、时间函数(组2)
- -- 把时间拿掉,只显示日期部份
- SELECT DATE(NOW()) AS date;
- -- 输出
- -- +------------+
- -- | date |
- -- +------------+
- -- | 2019-04-10 |
- -- +------------+
- -- YEAR MONTH DAY HOUR MINUTE SECOND
- SELECT DATE_ADD(DATE(NOW()), INTERVAL 1 DAY) AS `after_date`, DATE_ADD(DATE(NOW()), INTERVAL 1 MONTH) AS `after_month`, DATE_ADD(DATE(NOW()), INTERVAL 1 YEAR) AS `after_year`;
- -- 输出
- +------------+-------------+------------+
- -- | after_date | after_month | after_year |
- -- +------------+-------------+------------+
- -- | 2019-04-11 | 2019-05-10 | 2020-04-10 |
- -- +------------+-------------+------------+
- -- 用法如上面的方法
- SELECT DATE_SUB(DATE(NOW()), INTERVAL 1 MONTH) AS `before_month`;
- -- 输出
- -- +--------------+
- -- | before_month |
- -- +--------------+
- -- | 2019-03-10 |
- -- +--------------+
- -- 显示两个日期的时间差,结果以天数为单位,如果后面的日期比前面大,那么显示的是负数,否则显示的是正数
- SELECT DATEDIFF("2017-5-3","2018-4-8") AS `big`, DATEDIFF("2017-5-3","2016-4-8") AS `small`;
- -- 输出
- -- +------+-------+
- -- | big | small |
- -- +------+-------+
- -- | -340 | 390 |
- -- +------+-------+
- SELECT DATEDIFF(NOW(), '1949-10-1')/365 AS `year`;
- -- 输出
- -- +---------+
- -- | year |
- -- +---------+
- -- | 69.5699 |
- -- +---------+
3、时间函数(组3)
- SELECT TIMEDIFF(NOW()+10,NOW()) AS `diff`
- -- 输出
- -- +----------+
- -- | diff |
- -- +----------+
- -- | 00:00:10 |
- -- +----------+
- SELECT YEAR(NOW()) AS year, MONTH(NOW()) AS month, DAY(NOW()) AS day;
- -- 输出
- -- +------+-------+------+
- -- | year | month | day |
- -- +------+-------+------+
- -- | 2019 | 4 | 10 |
- -- +------+-------+------+
UNIX_TIMESTAMP() =>返回当前时间的时间截
FROM_UNIXTIME(时间截,格式)或者用DATE_FORMAT(时间截,格式)用法也是一样的
- SELECT UNIX_TIMESTAMP();
- -- 输出
- -- +------------------+
- -- | UNIX_TIMESTAMP() |
- -- +------------------+
- -- | 1554909947 |
- -- +------------------+
- SELECT FROM_UNIXTIME(1554909947, "%Y-%m-%d %H:%i:%s") AS time;
- -- 输出
- -- +---------------------+
- -- | time |
- -- +---------------------+
- -- | 2019-04-10 23:25:47 |
- -- +---------------------+
3、字符串函数
CHARSET(str) 返回字符串对应的字符集
- -- 测试表内容worker表
- -- +----+------+--------+-------+-----------+
- -- | id | name | course | score | fix_score |
- -- +----+------+--------+-------+-----------+
- -- | 1 | aaa | 1,2 | 80 | 10 |
- -- | 2 | bbb | 1,5 | 30 | 20 |
- -- | 3 | ccc | 3,5 | 40 | 30 |
- -- | 4 | ddd | 5,6 | 50 | 40 |
- -- | 5 | eee | 2 | 80 | 50 |
- -- +----+------+--------+-------+-----------+
- SELECT CHARSET(`name`) AS `charset` FROM `worker`;
- -- 输出
- -- +---------+
- -- | charset |
- -- +---------+
- -- | utf8 |
- -- | utf8 |
- -- | utf8 |
- -- | utf8 |
- -- | utf8 |
- -- +---------+
CONCAT(str1,str2,...)字符串连接函数
- SELECT CONCAT(`name`,'分数是',`SCORE`) AS `intro` FROM worker;
- -- 输出
- -- +-------------+
- -- | intro |
- -- +-------------+
- -- | aaa分数是80 |
- -- | bbb分数是30 |
- -- | ccc分数是40 |
- -- | ddd分数是50 |
- -- | eee分数是80 |
- -- +-------------+
UCASE(str),LCASE(str)字母的大小写转换
- SELECT UCASE(`name`), LCASE(`name`) FROM `worker`;
- -- 输出
- -- +---------------+---------------+
- -- | UCASE(`name`) | LCASE(`name`) |
- -- +---------------+---------------+
- -- | AAA | aaa |
- -- | BBB | bbb |
- -- | CCC | ccc |
- -- | DDD | ddd |
- -- | EEE | eee |
- -- +---------------+---------------+
LEFT(str,len),RIGHT(str,len)分别表示从左边或者是右边的字符串取出len个字符
- SELECT LEFT(`name`, 1) AS `left`,RIGHT(`name`, 1) AS `right` FROM `worker`;
- -- 输出
- -- +------+-------+
- -- | left | right |
- -- +------+-------+
- -- | a | a |
- -- | b | b |
- -- | c | c |
- -- | d | d |
- -- | e | e |
- -- +------+-------+
LENGTH(str) 表示计算字符串的长度(注意:是计算字节的长度而非字符的长度与默认的编码有关系)
- SELECT LENGTH(`name`) FROM worker;
- SELECT LENGTH(`name`) FROM worker WHERE `id`=1;
- -- 输出
- -- +----------------+
- -- | LENGTH(`name`) |
- -- +----------------+
- -- | 3 |
- -- | 3 |
- -- | 3 |
- -- | 3 |
- -- | 3 |
- -- +----------------+
- -- +----------------+
- -- | LENGTH(`name`) |
- -- +----------------+
- -- | 3 |
- -- +----------------+
REPLACE(str,str_find,str_repl) 表示在str这个字符串中找到str_find字符,并且把它替换成str_repl这个字符
- SELECT REPLACE(`name`,"b", "haha") FROM `worker`; -- 不会改变原有的数据
- -- 输出
- -- +-----------------------------+
- -- | REPLACE(`name`,"b", "haha") |
- -- +-----------------------------+
- -- | aaa |
- -- | hahahahahaha |
- -- | ccc |
- -- | ddd |
- -- | eee |
- -- +-----------------------------+
- SELECT REPLACE(`name`, "a", "are you ok???") AS `name` FROM `worker` WHERE `id`= 1;
- -- 输出
- -- +-----------------------------------------+
- -- | name |
- -- +-----------------------------------------+
- -- | are you ok???are you ok???are you ok??? |
- -- +-----------------------------------------+
SUBSTRING(str,position,len) 表示从str的position这个位置取len个字符,如果没有指定len那么表示取完字符串,position是从1开始计算的
- SELECT SUBSTRING(`name`, 2, 2) AS abs FROM `worker`;
- -- 输出
- -- +------+
- -- | abs |
- -- +------+
- -- | aa |
- -- | bb |
- -- | cc |
- -- | dd |
- -- | ee |
- -- +------+
- SELECT SUBSTRING(`name`, 1) AS abs FROM `worker`;
- -- 输出
- -- +------+
- -- | abs |
- -- +------+
- -- | aaa |
- -- | bbb |
- -- | ccc |
- -- | ddd |
- -- | eee |
- -- +------+
LTRIM(str),RTRIM(str),TRIM(str)分别表示去除左,右以及全部的空格
字符串综合案例,要求显示名字首字母小写,其他大写的
- SELECT CONCAT(LCASE(LEFT(`name`,1)), UCASE(SUBSTRING(`name`,1))) AS `name` FROM `worker`;
- -- 输出
- -- +------+
- -- | name |
- -- +------+
- -- | aAAA |
- -- | bBBB |
- -- | cCCC |
- -- | dDDD |
- -- | eEEE |
- -- +------+
4、数学函数
ABS(num) 表示求数字绝对值
- SELECT ABS(`fix_score`) AS num FROM `worker`;
- -- 输出
- -- +-----+
- -- | num |
- -- +-----+
- -- | 10 |
- -- | 20 |
- -- | 30 |
- -- | 40 |
- -- | 50 |
- -- +-----+
CEILING(num) 表示向上取整, FLOOR(num) 表示向下取整,ROUND(num1,num2) 表示进行四舍五入,num2表示小数点的位数
- SELECT CEILING(`num`) AS `ceil`, FLOOR(`num`) AS `floor` FROM `worker`;
- -- 输出
- -- +------+-------+
- -- | ceil | floor |
- -- +------+-------+
- -- | 1 | 0 |
- -- | 35 | 34 |
- -- | 235 | 234 |
- -- | 99 | 98 |
- -- | 223 | 222 |
- -- +------+-------+
FROMAT(num,len)格式化数字,len表示保留几位小数
- SELECT FORMAT(`num`,2) AS `formate` FROM `worker`;
- -- 输出
- -- +---------+
- -- | formate |
- -- +---------+
- -- | 0.34 |
- -- | 34.12 |
- -- | 234.12 |
- -- | 98.90 |
- -- | 222.12 |
- -- +---------+
MOD(num1,num2) 表示求num1 % num2的余数
- SELECT MOD(10, 2) AS `num1`, MOD(10, 3) AS `num2`;
- -- 输出
- -- +------+------+
- -- | num1 | num2 |
- -- +------+------+
- -- | 0 | 1 |
- -- +------+------+
RAND() 表示返回0-1的随机数
- SELECT RAND() AS `rand1`, ROUND(RAND()) AS `rand2`;
- -- 输出
- -- +--------------------+-------+
- -- | rand1 | rand2 |
- -- +--------------------+-------+
- -- | 0.3990743340915761 | 0 |
- -- +--------------------+-------+
5、mysql的流程控制语句
注意: 以上只改变数据的显示,而不会改变原数据
- -- 表内容
- -- +----+------+--------+-------+-----------+------+
- -- | id | name | course | score | fix_score | num |
- -- +----+------+--------+-------+-----------+------+
- -- | 1 | aaa | 1,2 | 80 | 10 | 0.00 |
- -- | 2 | bbb | 1,5 | 30 | 20 | 0.00 |
- -- | 3 | ccc | 3,5 | 40 | 30 | 0.00 |
- -- | 4 | ddd | 5,6 | 50 | 40 | 0.00 |
- -- | 5 | eee | 2 | 80 | 50 | 0.00 |
- -- +----+------+--------+-------+-----------+------+
- SELECT SUM(IF(`score`>50, 1, 0)) AS `count` FROM `worker`;
- -- 输出
- -- +-------+
- -- | count |
- -- +-------+
- -- | 2 |
- -- +-------+
- -- 需求,给分数小于等30的num加20,30-50加30,50-90加50,不改变原表
- SELECT `name`,(CASE WHEN `score`<=30 THEN `num`+20 WHEN 30<`score` AND `score`<=50 THEN `num`+30 WHEN 50<`score` AND `score`<=90 THEN `num`+50 ELSE `num` END) AS num FROM `worker`;
- -- 输出
- -- +------+-------+
- -- | name | num |
- -- +------+-------+
- -- | aaa | 50.00 |
- -- | bbb | 20.00 |
- -- | ccc | 30.00 |
- -- | ddd | 30.00 |
- -- | eee | 50.00 |
- -- +------+-------+
6、mysql的其他函数
7、mysql用户管理
mysql用户都保存在mysql数据库的user表中,具体如下:
说明
(1) Host表示该用户可以登录的ip, 如果是localhost表示只能本机登录,不能远程登录,注意在实际开发中,我们只能让用户本机登录mysql
(2) User字段;用户名 ,说明在mysql中,一个完整的用户名是有User和Host组成比如 'root'@'localhost';
(3) Password:用户密码, 使用password函数加密的.
mysql用户创建
基本语法/ 指令
create user '用户名'@'主机名' identified by '密码';
(1) 这是创建一个用户是 '用户名'@'主机名'
(2) identified by 后面可以指定密码
- -- 表示创建一个用户名为yf密码为password的账户
- CREATE USER "yf"@"localhost" IDENTIFIED BY "password";
mysql用户删除
基本语法
drop user '用户名'@'主机名';
- -- 删除指定用户
- DROP USER "yf"@"localhost";
修改密码
修改自己的密码
set password = password('密码');
- -- 修改密码,把现在密码改成test
- SET PASSWORD = PASSWORD("test")
修改其它用户的密码
set password for '用户名'@'主机名'= password('密码');
给mysql用户赋权限
当我们新创建一个用户时,该用户除了可以登录,没有其它的权限.
在mysql中,权限一览表:
基本语法
grant 权限列表 ON 数据库.表(数据对象) TO '用户名'@'主机名' [identified by '密码']; 数据对象包括 表 视图 函数 存储过程 触发器
(1) 权限列表可以是 select , update , insert ,delete ...., 如果你希望将所有的权限都给某个用户,则可以写 all, 比如:
也可以一次给多个权限
grant select , delete , update to 数据库.表'hsp'@'localhost' ;
(1) 数据库.表:
a、 可以将某个库的某个表给某个用户使用,比如 itbull.emp
b、 如果希望将某个库的所有的表都给用户,则可以 数据库.*, 比如itbull.*
c、 如果你希望将所有库的所有表都给用户,可以写成 *.*
(2) 对identified by '密码' 的说明
回收mysql用户的权限
基本语法
revoke 权限列表 ON 数据库.表名 from '用户名'@'主机名 ';
说明:
revoke 的权限列表和 数据库.表名的用法和前面 grant 是一样。
举例说明
查询mysql用户的权限
基本语法
show grants for '用户名'@'主机名';
让权限生效
如果我们给某个用户赋权限后,发现没有生效,则可以使用下面的指令,让权限立即管用.
用户管理的注意事项
在创建用户的时候,如果不指定Host, 则为% , %表示表示所有IP都有连接权限
说明,这样创建用户很危险,该用户可以远程登录,所有不要这样使用.
a、还可以这样创建用户
create user 'xxx'@'192.168.0.%' 表示 xxx用户在 192.168.0.*的ip可以登录mysql
b、在删除用户的时候,如果 host 不是 %, 需要明确指定 '用户'@'host', 如果host是 %, 则删除用户不需要指定host
mysql 函数学习(常用)的更多相关文章
- MySQL函数学习(一)-----字符串函数
一.MySQL 字符串函数 \ 函 数 名 称 作 用 完 成 1 LENGTH 计算字符串字节长度 勾 2 CONCAT 合并字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个 勾 3 ...
- mysql学习【第4篇】:MySQL函数和编程
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第4篇]:MySQL函数 官方文档 : 官方文档 常用函数 分类: 数学函数 , ...
- mysql存储过程及常用函数
原文:mysql存储过程及常用函数 一.函数 1.数学函数 CEIL()进一取整 SELECT CEIL(1.2);2 FLOOR()舍一取整 SELECT FLOOR(1.9);9 MOD取余数(取 ...
- Mysql中的常用函数:
Mysql中的常用函数: 1.字符串函数: (1).合并字符串 concat():// concat('M','y',"SQL",'5.5');== MySQL5.5//当传入的参 ...
- 常用MySQL函数
MySQL数据库提供了很多函数包括: 数学函数: 字符串函数: 日期和时间函数: 条件判断函数: 系统信息函数: 加密函数: 格式化函数: 一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ...
- numpy常用函数学习
目录numpy常用函数学习点乘法线型预测线性拟合裁剪.压缩和累乘相关性多项式拟合提取符号数组杂项点乘法该方法为数学方法,但是在numpy使用的时候略坑.numpy的点乘为a.dot(b)或numpy. ...
- MYSQL数据库学习----MYSQL函数
MYSQL函数分为几种 数学函数 字符串函数 日期和时间函数 条件判断函数 系统信息函数 加密函数 格式化函数 一:数学函数 主要使用的几个数学函数 1 ABS()----绝对值函数 eg. SELE ...
- mysql数据库管理、常用命令及函数(10.10 第十八天)
数据库管理: MYSQL 轻量级数据库,适用于中小型企业,性能好,开源的(免费的) MSSQL 微软开发的,需要安装在NT系统中,不支持跨平台,适用于中大型企业 ACCESS 小巧方便,适用于小型企业 ...
- MySQL学习05(MySQL函数)
MySQL函数 常用函数 官方文档 : https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html 数据函数 SELECT ABS ...
随机推荐
- Leetcode 4.28 string
1. 38. Count and Say 就是对于前一个数,找出相同元素的个数,把个数和该元素存到新的string里.数量+字符 class Solution { public String coun ...
- pixy&STM32使用记录(串口&SPI外设)
先踏踏实实的把stm32的外设串口,SPI搞清楚,不要眼高手低,看不起小事.用SPI通信将pixy的数据读出来,将数据用串口发到串口助手上,然后处理数据,利用STM32的定时器调节pwm,控制电机,先 ...
- JPA:identifier of an instance of was altered from
由于前台提交的对象,并没有关联对象的数据. 所以要把关联对象赋值一下,在合并集合. WmsOutboundreport entity2 = service.findOne(item.getOutbou ...
- linux Java项目CPU内存占用高故障排查
linux Java项目CPU内存占用高故障排查 top -Hp 进程号 显示进程中每个线程信息,配合jstack定位java线程运行情况 # 线程详情 jstack 线程PID # 查看堆内存中的对 ...
- AtCoder瞎做第二弹
ARC 067 F - Yakiniku Restaurants 题意 \(n\) 家饭店,\(m\) 张餐票,第 \(i\) 家和第 \(i+1\) 家饭店之间的距离是 \(A_i\) ,在第 \( ...
- 树莓派中QT实现I2C
树莓派中QT实现I2C 在QT中实现 I2C 使用的驱动为 wiringPi 库的引入 LIBS += -lwiringPi LIBS += -lwiringPiDev 代码实现 widget.h 中 ...
- Java集合的总结
参考博客: http://www.jianshu.com/p/63e76826e852 http://www.cnblogs.com/LittleHann/p/3690187.html https:/ ...
- jsp:include动作功能
jsp:plugin动作:连接客户端的Applet或Bean插件 jsp:useBean动作:应用javaBean组件 jsp:setProperty动作:设置javaBean属性 jsp:getPr ...
- Educational Codeforces Round 63 (Rated for Div. 2)
传送门 A. Reverse a Substring 题意: 给你一串 s,让你判断能否通过反转区间[l,r]的元素,使得反转后的串的字典序小于 s: 如果能,输出 "YES",并 ...
- Spring cloud gateway
==================================为什么需要API gateway?==================================企业后台微服务互联互通, 因为 ...