mysql函数

mysql的空值与NULL的区别

坚强是说给别人听的谎言 提交于 2019-12-18 18:27:34
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> MySQL 数据库是一个基于结构化数据的开源数据库。SQL语句是MySQL数据库中核心语言。不过在MySQL数据库中执行SQL语句,需要小心两个陷阱。   陷阱一:空值不一定为空   空值是一个比较特殊的字段。在MySQL数据库中,在不同的情形下,空值往往代表不同的含义。这是MySQL数据库的一种特性。如在普通的字段中(字符型的数据),空值就是表示空值。但是如果将一个空值的数据插入到TimesTamp类型的字段中,空值就不一定为空。此时为出现什么情况呢   我先创建了一个表。在这个表中有两个字段:User_id(其数据类型是int)、Date(其数据类型是TimesTamp)。现在往这个表中插入一条记录,其中往Date字段中插入的是一个NULL空值。可是当我们查询时,其结果显示的却是插入记录的当前时间。这是怎么一回事呢?其实这就是在MySQL数据库中执行SQL语句时经常会遇到的一个陷阱:空值不一定为空。在操作时,明明插入的是一个空值的数据,但是最后查询得到的却不是一个空值。   在MySQL数据库中,NULL对于一些特殊类型的列来说,其代表了一种特殊的含义,而不仅仅是一个空值。对于这些特殊类型的列,各位读者主要是要记住两个。一个就是笔者上面举的TimesTamp数据类型。如果往这个数据类型的列中插入Null值

mysql-查询(DQL)

落爺英雄遲暮 提交于 2019-12-18 16:02:05
+ 注释:mysql中的+号只有一个作用,就是运算符,没有连接字符串的作用,连接字符串用concat。 select 1+3;两个操作数都是数值型,则做加法运算。 select 'wj'+28; select '3'+94;只要其中有一个时字符型,则会试图将字符转换为数值型。如果转换成功,则做加法运算;如果转换失败,则将字符转换为0继续做加法运算。 select null+100;如果其中一方为null,则结果肯定为null。 concat(str1,str2,…) 注释:连接多个字符串 select concat('a','b','c'); select concat(first_name,last_name) from employees; 条件运算符:> < = != <> >= <= 注释:mysql支持两个形式的不等运算符,!=和<>都支持,但是建议<>。 作用:用于在where关键词后,用于条件筛选。 select * from employees where salary<>100; 逻辑运算符:and or not 注释:逻辑运算符用于连接条件表达式,可以用括号把条件包起来进行逻辑运算。    and(&&)两个条件都是true,则结果为true。    or(||)两个条件有一个为true,则结果为true。    not(!)条件如果为true

mysql替代like模糊查询的方法

こ雲淡風輕ζ 提交于 2019-12-18 15:14:20
LIKE语句 SELECT `column` FROM `table` where `condition` like `%keyword%' 事实上,可以使用 locate(position) 和 instr 这两个函数来代替 一、LOCATE语句 SELECT `column` from `table` where locate(‘keyword’, `condition`)> 0 二、locate 的別名 position POSITION语句 SELECT `column` from `table` where position(‘keyword’ IN `condition`) 三、INSTR语句 SELECT `column` from `table` where instr(`condition`, ‘keyword’ )> 0 locate、position 和 instr 的差別只是参数的位置不同,同时locate 多一个起始位置的参数外,两者是一样的。 mysql> SELECT LOCATE(‘bar’, ‘foobarbar’, 5); instr(str1,str2) 有两种用法:一种是前面参数写变量,后面写列名;还有就是位置调换。两种有不同的效果,instr(str1,str2)的意思是str2在str1中,如果后面写变量前面写列名

mysql横表和纵表以及互转实例

孤街浪徒 提交于 2019-12-18 12:14:19
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一.纵表 相关建表语句: CREATE TABLE `table1` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id', `username` varchar(50) DEFAULT NULL COMMENT '姓名', `course` varchar(50) DEFAULT NULL COMMENT '科目', `grade` double DEFAULT NULL COMMENT '分数', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='纵表' INSERT INTO `table1` (username,course,grade) VALUES('张三','语文',90); INSERT INTO `table1` (username,course,grade) VALUES('李四','英语',88); INSERT INTO `table1` (username,course,grade) VALUES('王五','数学',60); INSERT INTO `table1` (username,course,grade)

mysql row日志格式下 查看binlog sql语句

ぐ巨炮叔叔 提交于 2019-12-18 04:30:53
有时候我们需要使用row作为binlog的日志格式,即配置文件使用了binlog_format= row 参数 这样以来,我们在查看数据库binlog内容时候,就看不到增删改查的具体语句了,在数据库恢复的时候 不利于我们查找恢复数据点。 使用row日志格式的日志: 可以看到都是一段段类似加密过的字符串一样,不要着急,其实sql真实语句就在这里这里,只不过 是经过64位编码转换后的内容,我们使用mysqlbinlog对应的参数即可查看具体的sql内容: mysqlbinlog --base64-output=decode-rows -v --start-date="2017-08-12 15:00:19" --stop-date="2017-08-12 15:30:19" mysql-bin.000055 说明:--base64-ouput=decode-rows 代表解码 -v 代表换行显示这些语句,如果没有-v 你依然看不到具体的语句   --start-date 代表你要获取日志的开始时间   --stop-date 代表你要获取日志的结束数据 备注:你也可以使用pos位置来查询一定阶段呢的日内容 结果: 可以查看到很多###开头的数据,这些就是具体的sql语句,只不过不是在一行而已,而是分行显示,已经不耽误我们查看了。 binlog日志补习: binlog格式

MySQL修改密码方法总结 ZT

寵の児 提交于 2019-12-17 21:11:08
首先要声明一点,大部分情况下,修改MySQL是需要有mysql里的root权限的, 所以一般用户无法更改密码,除非请求管理员。 方法一 使用phpmyadmin,这是最简单的了,修改mysql库的user表, 不过别忘了使用PASSWORD函数。 方法二 使用mysqladmin,这是前面声明的一个特例。 mysqladmin -u root -p password mypasswd 输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。 把命令里的root改为你的用户名,你就可以改你自己的密码了。 当然如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin, 那么这种方法就是无效的。 而且mysqladmin无法把密码清空。 下面的方法都在mysql提示符下使用,且必须有mysql的root权限: 方法三 mysql> INSERT INTO mysql.user (Host,User,Password) VALUES('%','jeffrey',PASSWORD('biscuit')); mysql> FLUSH PRIVILEGES 确切地说这是在增加一个用户,用户名为jeffrey,密码为biscuit。 在《mysql中文参考手册》里有这个例子,所以我也就写出来了。 注意要使用PASSWORD函数

MySQL常用查询语句(23个)

ⅰ亾dé卋堺 提交于 2019-12-17 16:18:27
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,=< 二查询字符串 SELECT * FROM tb_stu WHERE sname = '小刘' SELECT * FROM tb_stu WHERE sname like '刘%' SELECT * FROM tb_stu WHERE sname like '%程序员' SELECT * FROM tb_stu WHERE sname like '%PHP%' 三查询日期型数据 SELECT * FROM tb_stu WHERE date = '2011-04-08' 注:不同数据库对日期型数据存在差异: : (1)MySQL:SELECT * from tb_name WHERE birthday = '2011-04-08' (2)SQL Server:SELECT * from tb_name WHERE birthday = '2011-04-08' (3)Access:SELECT * from tb_name WHERE birthday = #2011-04-08# 四查询逻辑型数据 SELECT * FROM tb_name WHERE

Mysql按条件计数的几种方法

£可爱£侵袭症+ 提交于 2019-12-17 14:46:14
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 最近在给喜乐喜乐网的后台添加一系列的统计功能,遇到很多需要按条件计数的情况。尝试了几种方法,下面简要记录,供大家参考。 问题描述 为使讨论简单易懂,我将问题稍作简化,去掉诸多的背景。 从前有一个皇帝,他有50个妃子,这些妃子很没有天理的给他生了100,000个儿子,于是,皇帝很苦恼,海量的儿子很难管理,而且,他想知道每个妃子给他生了多少个儿子,从而论功行赏,这很难办。于是,皇帝请了一个程序员帮他编了一个程序,用数据库来存储所有的儿子的信息,这样就可以用程序来统计和管理啦。 数据库的结构如下: id 皇子的唯一编号 mother 皇子母亲的唯一编号 皇帝把妃子分成了两个等级,天宫娘娘(编号小于25)和地宫娘娘(编号大于等于25),他想知道天宫娘娘们和地宫娘娘们的生育能力孰强孰弱。于是,程序员开始写SQL Query了。 方法1:使用GROUP BY SQL Query SELECT COUNT(*) FROM `prince` GROUP BY `mother` > 24; 执行结果 count(*) 50029 49971 在100,000行数据上的运行时间:0.0335 秒 分析 这种GROUP BY方法的最大问题在于:无法区分所得到的结果。这两个数字哪一个是天宫娘娘们所生的皇子数

MySQL学习之判断null值

牧云@^-^@ 提交于 2019-12-17 08:48:55
判断null值 is or is not 操作符 函数: # if(isnull(), t, f) 如果test是真,返回t;否则返回f 例如: select lession_name , if ( isnull ( views ) , 1 , 0 ) from lession_views ; # IFNULL(arg1,arg2) 如果arg1不是空值,返回arg1,否则返回arg2 例如: SELECT lession_name , IFNULL ( views , 0 ) + 1000 FROM lession_views ; # NULLIF(arg1,arg2) 如果arg1 = arg2返回 NULL ;否则返回arg1 来源: CSDN 作者: 爱喝水的qdy 链接: https://blog.csdn.net/qq_32617703/article/details/103569588

MySQL 连接

帅比萌擦擦* 提交于 2019-12-17 08:38:29
使用mysql二进制方式连接 您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库。 实例 以下是从命令行中连接mysql服务器的简单实例: [ root @host ] # mysql - u root - p Enter password : * * * * * * 在登录成功后会出现 mysql> 命令提示窗口,你可以在上面执行任何 SQL 语句。 以上命令执行后,登录成功输出结果如下: Welcome to the MySQL monitor . Commands end with ; or \g . Your MySQL connection id is 2854760 to server version : 5.0 .9 Type 'help;' or '\h' for help . Type '\c' to clear the buffer . 在以上实例中,我们使用了root用户登录到mysql服务器,当然你也可以使用其他mysql用户登录。 如果用户权限足够,任何用户都可以在mysql的命令提示窗口中进行SQL操作。 退出 mysql> 命令提示窗口可以使用 exit 命令,如下所示: mysql > exit Bye 使用 PHP 脚本连接 MySQL PHP 提供了 mysqli_connect() 函数来连接数据库。 该函数有 6