Welcome 微信登录

首页 / 数据库 / MySQL

深入mysql "ON DUPLICATE KEY UPDATE" 语法的分析

深入mysql "ON DUPLICATE KEY UPDATE" 语法的分析

mysql "ON DUPLICATE KEY UPDATE" 语法如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。 例如,如果列 a 为 主键 或 拥有UNIQUE索引,并且包含值1,则以下两个语句具有相同的效果:复制代码 代码如下:INSERT INTO TABLE...
Ubuntu下取消MySQL数据库本机绑定限制方法

Ubuntu下取消MySQL数据库本机绑定限制方法

出现问题:在Ubuntu系统中,添加了MySQL账户,赋予了数据库完全操作权限,并且允许数据库从外部链接但是,还是无法远程访问MySQL数据库。原因:Ubuntu系统中,默认安装的MySQL限制了只有本机才能访问数据库解决办法:取消MySQL数据库的本机绑定限制nano /etc/mysql/my.cnf #编辑配置文件找到bind-address = 127.0.0.1改为#bind-address = 127.0.0.1ctrl+o #保存配置ctrl...
Ubuntu Server下MySql数据库备份脚本代码

Ubuntu Server下MySql数据库备份脚本代码

说明:我这里要把MySql数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2012_04_11.tar.gz的压缩文件格式(2012_04_11是指备份执行时当天的日期), 最后只保留最近7天的备份。实现步骤:1、创建保存备份文件的目录:/home/mysql_datacd /home #进入目录mkdir mysql_data #创建目录2、创建备份脚本文件:...
如何修改mysql数据库的max_allowed_packet参数

如何修改mysql数据库的max_allowed_packet参数

如在导入数据库时出现“Got a packet bigger than "max_allowed_packet" bytes”或者“MySQL server has gone away”等错误,一般是由于当前导入的数据大于系统的限制的最大包大小。服务器的默认max_allowed_packet值为1MB,通过修改"max_allowed_packet" 参数的大小就可以解决问题。修改方法为:进入mysql的安装目录,找到my.ini文件,在最底下加上 ma...
关于MySQL数据迁移--data目录直接替换注意事项的详解

关于MySQL数据迁移--data目录直接替换注意事项的详解

近日更换服务器,要做数据库迁移,将数据库内的数据从服务器A迁移到服务器B。由于数据量较大,直接做dump耗时太长,故而采用如下方式处理:首先,在服务器B上安装了与服务器A同版本的MySQL,停止MySQL服务,将安装后的data目录删除;然后,服务器A锁住全部表,从服务器A将整个data目录和数据文件直到拷贝到服务器B上,修改服务器B上MySQL的my.cnf文件中的datadir指向新的data目录。最后,启动服务器B上的MySQL服务。结果启动失败,报...
解析MySQL的information_schema数据库

解析MySQL的information_schema数据库

information_schema数据库是在mysql的版本5.0之后产生的,一个虚拟数据库,物理上并不存在。information_schema数据库类似与“数据字典”,提供了访问数据库元数据的方式,即数据的数据。比如数据库名或表名,列类型,访问权限(更加细化的访问方式)。其中重要的表有:SCHEMATA表---SCHEMATA表提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。TABLES表---TABLES表...
解析mysql数据库还原错误:(mysql Error Code: 1005 errno 121)

解析mysql数据库还原错误:(mysql Error Code: 1005 errno 121)

原因大致是主键必须是唯一的,也就是数据库里可能存在和现还原数据库有重复的地方,a restriction that Foreign Keys should be uniquely named throughout the database , 一个有效的办法就是将原来的数据库清除后再创建还原。本人这回的原因是新装的mysql的ibdata1备份文件被我换成之前数据库的ibdata1备份文件了,本来想通过这方法来强制还原的,但是没做到,结果用备份sql文件还...
解析mysql中:单表distinct、多表group by查询去除重复记录

解析mysql中:单表distinct、多表group by查询去除重复记录

单表的唯一查询用:distinct多表的唯一查询用:group bydistinct 查询多表时,left join 还有效,全连接无效,在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重复记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段,用distinct不能解决的话,我只有用二重循环...
总结MySQL建表、查询优化的一些实用小技巧

总结MySQL建表、查询优化的一些实用小技巧

MySQL建表阶段是非常重要的一个环节,表结构的好坏、优劣直接影响着后续的管理维护,赶在明天上班前分享总结个人MySQL建表、MySQL查询优化积累的一些实用小技巧。技巧一、数据表冗余记录添加时间与更新时间 我们用到的很多数据表大多情况下都会有表记录的“添加时间(add_time)”,我建议大家再新增一个记录“更新时间(update_time)”字段,在我的工作里需要为市场部、运营部等建立各种报表,而很多报表里的数据都是需要到大记录表里去查询的,如果直接查...
解析数据库分页的两种方法对比(row_number()over()和top的对比)

解析数据库分页的两种方法对比(row_number()over()和top的对比)

今天,老师带偶们复习了一下数据库中的分页,总体来说,今天感觉还不错,因为以前学的还没忘。好了,进入正题,首先,说说top的方法top方法其实就是将你要查的的页数的数据前得数据去掉 再取前几例:复制代码 代码如下:一页3条数据 取第一页的数据 -- 第一页 select top 3 * from T_news; 取第五页的数据--第五页 select top 3 * from T_News where id not in (select top (3*4)...
关于MYSQL中每个用户取1条记录的三种写法(group by xxx)

关于MYSQL中每个用户取1条记录的三种写法(group by xxx)

今天以前的同学问我关于这方面的SQL语句,我特意记忆一下,毕竟这个也比较常见了复制代码 代码如下:select * from (select * from member_payment order by id desc) t group by member_id limit 10第一种是先排序,然后group,这样的话自然可以取到最适合的一条数据。缺点很明显:Using temporary; Using filesort复制代码 代码如下:select ...
解析在MYSQL语法中使用trim函数删除两侧字符

解析在MYSQL语法中使用trim函数删除两侧字符

在实际开发中,你总是会遇到这种情况或者遇到这种情况数据多了也会令你抓狂,如果还在用select fields from table where like "/%" 绝对是一个吃力不讨好的做法,那么,仔细研究MYSQL自带函数那绝对是首要工作。我第一时间就是想到,PHP函数中的trim是不是也可能用到mysql中呢,回答是肯定的。你可以从MYSQL手册中找到,当然,你可以百度一下,我下面说的与前人相同。SELECT *,trim(LEADING "/" FR...
MySQL Left JOIN时指定NULL列返回特定值详解

MySQL Left JOIN时指定NULL列返回特定值详解

coalesce 函数可以接受多个参数,将会返回这些参数中第一个非NULL的值,若提供的参数全部为NULL,则返回NULLifnull 函数和coalesce功能一样,只是只可以接受两个参数if 函数接受三个参数,实现类似于三元判断符(?:)的功能,即第一个参数不为NULL且不为0时,返回第二个参数,否则返回第三个参数复制代码 代码如下:SELECT a.*,coalesce(t.cous,0) as count FROM brand as a left ...
<< 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 >>