数学函数 abs(n) 返回n的绝对值 mysql> select abs(2); -> 2 mysql> select abs(-32); -> 32 sign(n) 返回参数的符号(为-1、0或1) mysql> select sign(-32); -> -1 mysql> select sign(0); -> 0 mysql> select sign(234); -> 1 mod(n,m) 取模运算,返回n被m除的余数(同%操作符) mysql> select mod(234, 10); -> 4 mysql> select 234 % 10; -> 4 mysql> select mod(29,9); -> 2 floor(n) 返回不大于n的最大整数值 mysql> select floor(1.23); -> 1 mysql> select floor(-1.23); -> -2 ceiling(n) 返回不小于n的最小整数值 mysql> select ceiling(1.23); -> 2 mysql> select ceiling(-1.23); -> -1 round(n,d) 返回n的四舍五入值,保留d位小数(d的默认值为0) mysql> select round(-1.23); -> -1 mysql> select round(-1.58); -> -2 mysql> select round(1.58); -> 2 mysql> select round(1.298, 1); -> 1.3 mysql> select round(1.298, 0); -> 1 exp(n) 返回值e的n次方(自然对数的底) mysql> select exp(2); -> 7.389056 mysql> select exp(-2); -> 0.135335 log(n) 返回n的自然对数 mysql> select log(2); -> 0.693147 mysql> select log(-2); -> null log10(n) 返回n以10为底的对数 mysql> select log10(2); -> 0.301030 mysql> select log10(100); -> 2.000000 mysql> select log10(-100); -> null pow(x,y) power(x,y) 返回值x的y次幂 mysql> select pow(2,2); -> 4.000000 mysql> select pow(2,-2); -> 0.250000 sqrt(n) 返回非负数n的平方根 mysql> select sqrt(4); -> 2.000000 mysql> select sqrt(20); -> 4.472136 pi() 返回圆周率 mysql> select pi(); -> 3.141593 cos(n) 返回n的余弦值 mysql> select cos(pi()); -> -1.000000 sin(n) 返回n的正弦值 mysql> select sin(pi()); -> 0.000000 tan(n) 返回n的正切值 mysql> select tan(pi()+1); -> 1.557408 acos(n) 返回n反余弦(n是余弦值,在-1到1的范围,否则返回null) mysql> select acos(1); -> 0.000000 mysql> select acos(1.0001); -> null mysql> select acos(0); -> 1.570796 asin(n) 返回n反正弦值 mysql> select a
SELECT 语句中的条件语句经常要使用比较运算符。通过这些比较运算符,可以判断表中的哪些记录是符合条件的。比较结果为真,则返回 1,为假则返回 0,比较结果不确定则返回 NULL。
1、字符串函数 ascii(str) 返回字符串str的第一个字符的ascii值(str是空串时返回0) mysql> select ascii('2'); -> 50 mysql> select ascii(2); -> 50 mysql> select ascii('dete'); -> 100
本章节我们主要介绍 MySQL 的运算符及运算符的优先级。 MySQL 主要有以下几种运算符:
返回X 反余弦, 即, 余弦是X的值。若X 不在-1到 1的范围之内,则返回 NULL 。
MySQL函数大全及用法示例 1、字符串函数 ascii(str) 返回字符串str的第一个字符的ascii值(str是空串时返回0) mysql> select ascii('2'); -> 50 mysql> select ascii(2); -> 50 mysql> select ascii('dete'); -> 100
MySQL数据库中提供了很丰富的函数。MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的操作。
学习的时候我喜欢对比,MySQL和Oracle比,Python和MySQL比,总能有一些收获,也有了新的理解。 今天整理这部分内容的时候,我发现Python和MySQL还是有很多相似之处。学习一门语言,一个数据库,字符串的处理都是一个相对重要的部分,所以我决定对比一下两者的差别。 下面的演示会一边Python,一边MySQL,所以按照这个思路来看就不会感觉突兀了。 转义字符 >>> print '\\' \ mysql> select '\\'; +---+ | \ | +---+ | \ | +
正则表达式描述了一组字符串。最简单的正则表达式是不含任何特殊字符的正则表达式。例如,正则表达式hello匹配hello。 非平凡的正则表达式采用了特殊的特定结构,从而使得它们能够与1个以上的字符串匹配。例如,正则表达式hello|word匹配字符串hello或字符串word。 作为一个更为复杂的示例,正则表达式B[an]*s匹配下述字符串中的任何一个:Bananas,Baaaaas,Bs,以及以B开始、以s结束、并在其中包含任意数目a或n字符的任何其他字符串。 以下是可用于随REGEXP操作符的表的模式。
mysql.user下有所有的用户信息,其中authentication_string为用户密码的hash,如果可以使用可以修改这个值,那么就可以修改任意用户的密码
MySQL之单表查询 创建表 # 创建表 mysql> create table company.employee5( id int primary key AUTO_INCREMENT not null, name varchar(30) not null, sex enum('male','female') default 'male' not null, hire_date date not null, post varchar(50) not null,
1 一个 SQL 语句中的 select_expression 或 where_definition 可由任何使用了下面所描述函数的表达式组成。 2 3 包含 NULL 的表达式总是得出一个 NULL 值结果,除非表达式中的操作和函数在文档中有另外的说明。 4 5 注意:在一个函数名和跟随它的括号之间必须不存在空格。这有助于 MySQL 语法分析程序区分函数调用和对恰巧与函数同名表或列的引用。然而,参数左右两边的空格却是允许的。 6 7 你可以强制 My
<?php require_once 'base.php';?> <?php // 连接数据库 require_once 'dbconfig.php'; // 访问基本情况 $query = "sel
在SQL中,所有逻辑 操作符的求值所得结果均为 TRUE、FALSE或 NULL (UNKNOWN)。在 MySQL中,它们体现为 1 (TRUE)、 0 (FALSE)和 NULL。其大多数都与不同的数据库SQL通用,然而一些服务器对TRUE的返回值可能是任意一个非零值。
一、MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() ,current_timestamp ,localtime() ,localtime ,localtimestamp -- (v4.0.6) ,localtimestamp() -- (v4.0.6) 这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。 1.2 获得当前日期+时间(date + time)函数:sysdate() sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了: mysql> select now(), sleep(3), now(); +---------------------+----------+---------------------+ | now() | sleep(3) | now() | +---------------------+----------+---------------------+ | 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 | +---------------------+----------+---------------------+ mysql> select sysdate(), sleep(3), sysdate(); +---------------------+----------+---------------------+ | sysdate() | sleep(3) | sysdate() | +---------------------+----------+---------------------+ | 2008-08-08 22:28:41 | 0 | 2008-08-08 22:28:44 | +---------------------+----------+---------------------+ 可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3 秒。MySQL Manual 中是这样描述 sysdate() 的:Return the time at which the function executes。 sysdate() 日期时间函数,一般情况下很少用到。 2. 获得当前日期(date)函数:curdate() mysql> select curdate(); +------------+ | curdate() | +------------+ | 2008-08-08 | +------------+ 其中,下面的两个日期函数等同于 curdate(): current_date() ,current_date 3. 获得当前时间(time)函数:curtime() mysql> select curtime(); +-----------+ | curtime() | +-----------+ | 22:41:30 | +-----------+ 其中,下面的两个时间函数等同于 curtime(): current_time() ,current_time 4. 获得当前 UTC 日期时间函数:utc_date(), utc_time(), utc_timestamp() mysql> select utc_timestamp(), utc_date(), utc_time(), now() +---------------------+------------+------------+---------------------+ | utc_timestamp() | utc_date() | utc_time() | now() | +---------------------+------------+------------+----------
用户与权限 创建用户 mysql>create user test identified by 'BaC321@#'; 修改密码 ##5.5版本及以前的命令 mysql>set password for test=passowrd('!1A@2#3'); ##5.6及以上命令 mysql>update mysql.user set authentication_string=password('A1b2c3#!@') where user='test'; 创建用户并授权 mysql>grant sele
正则表达式用来描述或者匹配符合规则的字符串。它的用法和like比较相似,但是它又比like更强大,能够实现一些很特殊的规则匹配;正则表达式需要使用REGEXP命令,匹配上返回"1"匹配不上返回"0",默认不加条件REGEXP相当于like '%%'。在前面加上NOT相当于NOT LIKE。
这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:
转载:http://blog.sina.com.cn/s/blog_6d39dc6f0100m7eo.html
dayofweek(date) 返回日期date是星期几(1=星期天,2=星期一,……7=星期六,odbc标准) mysql> select dayofweek('1998-02-03'); -> 3 weekday(date) 返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。 mysql> select weekday('1997-10-04 22:23:00'); -> 5 mysql> select weekday('1997-11-05'); -> 2 dayofmonth(date) 返回date是一月中的第几日(在1到31范围内) mysql> select dayofmonth('1998-02-03'); -> 3 dayofyear(date) 返回date是一年中的第几日(在1到366范围内) mysql> select dayofyear('1998-02-03'); -> 34 month(date) 返回date中的月份数值 mysql> select month('1998-02-03'); -> 2 dayname(date) 返回date是星期几(按英文名返回) mysql> select dayname("1998-02-05"); -> 'thursday' monthname(date) 返回date是几月(按英文名返回) mysql> select monthname("1998-02-05"); -> 'february' quarter(date) 返回date是一年的第几个季度 mysql> select quarter('98-04-01'); -> 2 week(date,first) 返回date是一年的第几周(first默认值0,first取值1表示周一是 周的开始,0从周日开始) mysql> select week('1998-02-20'); -> 7 mysql> select week('1998-02-20',0); -> 7 mysql> select week('1998-02-20',1); -> 8 year(date) 返回date的年份(范围在1000到9999) mysql> select year('98-02-03'); -> 1998 hour(time) 返回time的小时数(范围是0到23) mysql> select hour('10:05:03'); -> 10 minute(time) 返回time的分钟数(范围是0到59) mysql> select minute('98-02-03 10:05:03'); -> 5 second(time) 返回time的秒数(范围是0到59) mysql> select second('10:05:03'); -> 3 period_add(p,n) 增加n个月到时期p并返回(p的格式yymm或yyyymm) mysql> select period_add(9801,2); -> 199803 period_diff(p1,p2) 返回在时期p1和p2之间月数(p1和p2的格式yymm或yyyymm) mysql> select period_diff(9802,199703); -> 11 date_add(date,interval expr type) date_sub(date,interval expr type) adddate(date,interval expr type) subdate(date,interval expr type) 对日期时间进行加减法运算 (adddate()和subdate()是date_add()和date_sub()的同义词,也 可以用运算符+和-而不是函数 date是一个datetime或date值,expr对date进行加减法的一个表 达式字符串type指明表达式expr应该如何被解释 [type值 含义 期望的expr格式]: second 秒 seconds
当数据的值为NULL的时候,可能出现各种意想不到的效果,让人防不胜防,我们来看看NULL导致的各种神坑,如何避免?比较运算符中使用NULL
16. MySQL常用函数-字符串函数-数字函数-日期函数-高级函数 1. 字符串函数 函数 描述 实例 CHAR_LENGTH(s) 返回字符串 s 的字符数 SELECT CHAR_LENGTH('lijw') AS '长度'; CONCAT(s1,s2...sn) 字符串 s1,s2 等多个字符串合并为一个字符串 SELECT CONCAT('Happy','niu','year'); LOWER(s) 将字符串 s 的所有字母变成小写字母 SELECT LOWER('HAPPY NIU YEAR')
随着近些年来数据库技术发展演进,及国内数据库日益活跃。越来越多的企业将数据库从传统商业数据库迁移到开源或国产数据库平台。本文对比了最为常见的一种情况,从Oracle迁移到MySQL需要关注的一些差异点。这方便应用研发在迁移之初做好必要的评估备。此外,因MySQL生态发展很广泛,很多数据库产品会将MySQL作为兼容的首选。因此,很多其他类型的数据库迁移,也可以参考此文内容。
ifnull函数,2个参数,判断第一个参数是否为空,如果为空返回第一个参数的值,否则返回第一个参数的值。
之前的几篇文章介绍了JSON数据类型,相信大家已经对JSON有了一定的了解,上面一篇文章介绍了《MySQL8.0 JSON函数之创建与返回JSON属性(四)》JSON函数的使用;本节中的函数对JSON值执行搜索或比较操作,以从中提取数据;
DAYOFWEEK(date) 返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准) mysql> select DAYOFWEEK('1998-02-03'); -> 3 WEEKDAY(date) 返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。 mysql> select WEEKDAY('1997-10-04 22:23:00'); -> 5 mysql> select WEEKDAY('1997-11-05'); -> 2 DAYOFMO
mysql> select 1 in (null),1 not in (null),null in (null),null not in
返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。
COALESCE函数可以说是新的if和when...case的替代语句了(感觉最大的收获就是这个了…)
前言 Mysql 8 正式发布了,新增了很多优秀特性,之后我会挑些重点来分享。 下面和大家一起熟悉下 CTE(Common Table Expressions)通用表表达式。 CTE 是什么 派生表大家都比较熟悉了,CTE 就是针对派生表来的,可以说是增强的派生表,或者说时派生表的替换。 派生表是 FROM 中的子查询,例如: SELECT ... FROM (subquery) AS derived, t1 ... CTE 就像派生表,但它的声明是在查询块儿之前,而不是在 FROM 中,例如: WITH
作者在MySQL中发现了一个Double型数据溢出。如果你想了解利用溢出来注出数据,你可以读一下作者之前发的博文:BIGINT Overflow Error based injections,drops上面也有对应翻译,具体见这里。当我们拿到MySQL里的函数时,作者比较感兴趣的是其中的数学函数,它们也应该包含一些数据类型来保存数值。所以作者就跑去测试看哪些函数会出现溢出错误。然后作者发现,当传递一个大于709的值时,函数exp()就会引起一个溢出错误。
字符串函数是最常用的的一种函数,在一个具体应用中通常会综合几个甚至几类函数来实现相应的应用:
DQL(Data QueryLanguage):数据查询语言,通俗点讲就是从数据库获取数据的,按照DQL的语法给数据库发送一条指令,数据库将按需求返回数据。
获得当前日期+时间(date + time)函数:sysdate() sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了:
前几天分析了一个死锁的问题,有一个网友看了以后,就发了邮件给我问一个问题。一般来说,能够发送邮件提出问题的同学,都是很认真的,因为他要准备好日志,准备好操作过程,准备好他已经在做的事情。所以这类问题,我都会认真的分析一下,如果没有结果,那就继续分析再等等,掐指一算,有很多问题已经拖了好久了。 这位网友提的一个问题,我看了以后感觉很是奇怪,因为有些颠覆我对MySQL锁的一些认识。这该如何是好。 这个环境的事务隔离级别是RR,存在主键,存在范围查询。 如何复现这个问题,网友提供了信息。 创建表
offset:表⽰偏移量,通俗点讲就是跳过多少⾏,offset可以省略,默认为0,表
SUBSTR(str,start,len) 返回start开始,长度为len的字符串。注意:字符串起始位置为1。
假如结果的长度大于 max_allowed_packet 系统变量的最大值时,字符串值函数的返回值为NULL。
介绍 本篇主要通过汇总网上的大牛的知识,简单介绍一下如何使用mysql的执行计划,并根据执行计划判断如何优化和是否索引最优。 执行计划可显示估计查询语句执行计划,从中可以分析查询的执行情况是否最优,有助于对不使用索引的语句进行优化。EXPLAIN对每个查询返回一行信息,列出了有序的表格,MySQL处理语句的时候读取他们。MySQL解决所有的连接使用嵌套连接方法。这意味读取第一张一行,然后匹配第二张表的所有行,第三张表甚至更多表。当所有的表在处理时,MySQL会输出已经查询出来的列,并且回溯到表继续
注意关键字where,where后面跟上一个或者多个条件,条件是对前面数据的过滤,只有满足where后面条件的数据才会被返回。
常用sql语句目录概要 select count(*) from mysql.user; select * from mysql.db; select db from mysql.db; select db,user from mysql.db; select * from mysql.db where host like '192.168.%'; insert into db1.t1 values (1, 'abc'); update db1.t1 set name='aaa' where id=1; t
MySQL 数据库函数提供了能够实现各种功能的方法,使我们在查询记录时能够更高效的输出。MySQL 内建了很多函数,常用的包括数学函数、聚合函数、字符串函数和日期时间函数。
查询'admin','baxianwang','shigandang'三个用户的信息
稍后的MYSQL IFNULL使用此功能的特定叙事,供大家参考学习,假设你MYSQL IFNULL条款的使用功能类别遇到似问题。最好看。
MySQL 使用 International Components for Unicode(ICU)实现正则表达式,该组件提供了完整的 Unicode 支持,并且是多字节安全的。在 MySQL 8.0.4 之前,MySQL 使用 Henry Spencer 的正则表达式实现,该实现以字节方式运行,不安全。
dual表是一个伪表。在有些特定情况下,没有具体的表的参与,但是为了保证select语句的完整又必须要一个表名,这时候就使用伪表。
领取专属 10元无门槛券
手把手带您无忧上云