首页 技术教程 实用代码 注册破解 正则表达式 网址导航 电子书籍

MySQL数据库:Replace INTO的异同

REPLACE的运行与INSERT很相像。只有一点除外,如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。请参见13.2.4节,“INSERT语法”。   注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。   所有列的值均取自在REPLACE语句中被指定的值。所有缺失的列被设置为各自的默认值,这和INSERT一样。您不能从当前行中引用值,也不能在新行中使用值。如果您使用一个例如&ldq...
类别:数据库 - MySQL    查看:114    更新:2014-05-19

MySQL随机抽取实现方法Order By Rand()技巧

MYSQL的随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。   但是,后来我查了一下MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描。但是在MYSQL 3.23版本中,仍然可以通过ORDER BY RAND()来实现随机。   但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上。查看官方手册,也说rand()放在ORDER BY 子句中会被执行多次,自然效率及很低。   Y...
类别:数据库 - MySQL    查看:133    更新:2014-05-19

MySQL索引优化之Order By

在一些情况下,MySQL可以直接使用索引来满足一个 ORDER BY 或 GROUP BY 子句而无需做额外的排序。尽管 ORDER BY 不是和索引的顺序准确匹配,索引还是可以被用到,只要不用的索引部分和所有的额外的 ORDER BY 字段在 WHERE 子句中都被包括了。   使用索引的MySQL Order By   下列的几个查询都会使用索引来解决 ORDER BY 或 GROUP BY 部分: SELECT * FROM t1 ORDER BY key_part1,key_part2,... ; SELECT * FROM t1 WHERE key_part1=constant ORDER BY key_part2; SELECT * FROM t1 WHERE key_part1=constant GR...
类别:数据库 - MySQL    查看:122    更新:2014-05-19

MySQL数据库死掉及拒绝服务的解决方法

从Mysql 5.x的某个版本之后,MySQL的自动关闭空闲连接的特性被修改了,假如一个连接空闲到超时时间(默认28000秒8小时),再次发起的Reconnect重新连接请求不会被接受,需要重新建立新连接,这就导致了SER的重连机制不能正常工作:SER只会在需要操作数据库时去使用同一个连接接口,断开了则发起重新连接请求,而且这个问题短期内SER也不能够解决。 下文中将具体讲述处理的方法: 1.使用Mysql 4.0或4.1版本,如果没有用到Mysql 5的一些新特性比如存储过程触发器之类。 2.定时重启Mysql服务器或Ser(由于本问题可能同样会影响到其它一些需要Mysql支持的服务器程序,所以重启Mysql服务器为好,但需要检测Mysql服务...
类别:数据库 - MySQL    查看:133    更新:2014-05-19

MySQL安全使用的23个注意事项

使用MySQL,安全问题不能不注意。以下是MySQL提示的23个注意事项: 1.如果客户端和服务器端的连接需要跨越并通过不可信任的网络,那么就需要使用SSH隧道来加密该连接的通信。 2.用set password语句来修改用户的密码,三个步骤,先“mysql -u root”登陆数据库系统,然后“mysql> update mysql.user set password=password('newpwd')”,最后执行“flush privileges”就可以了。 3.需要提防的攻击有,防偷听、篡改、回放、拒绝服务等,不涉及可用性和容错方面。对所有的连接、查询、其他操作使用基于ACL即访问控制列表的安全措施来完成。也有一些对SSL连接的支持。 4.除了root...
类别:数据库 - MySQL    查看:110    更新:2014-05-19

关于MySQL数据库安全的一些建议

当你连接一个MySQL服务器时,你通常应该使用一个口令。口令不以明文在连接上传输。所有其它信息作为能被任何人读懂的文本被传输。如果你担心这个,你可使用压缩协议(MySQL3.22和以上版本)使事情变得更难。甚至为了使一切更安全,你应该安装ssh。用它,你能在一个MySQL服务器与一个MySQL客户之间得到一个加密的tcp/ip连接。   为了使一个MySQL系统安全,强烈要求你考虑下列建议:   对所有MySQL用户使用口令。记住,如果other_user没有口令,任何人能简单地用MySQL -u other_user db_name作为任何其它的人登录。对客户机/服务器应用程序,客户可以指定任何用户名是常见的做法。在你运行它以前,你可以通过...
类别:数据库 - MySQL    查看:126    更新:2014-05-19

MySQL查询和插入的高效技巧

MySQL由于它本身的小巧和操作的高效, 在数据库应用中越来越多的被采用.在开发一个P2P应用的时候曾经使用MySQL来保存P2P节点,由于P2P的应用中,结点数动辄上万个,而且节点变化频繁,因此一定要保持查询和插入的高效.以下是我在使用过程中做的提高效率的三个有效的尝试. l 使用statement进行绑定查询 使用statement可以提前构建查询语法树,在查询时不再需要构建语法树就直接查询.因此可以很好的提高查询的效率. 这个方法适合于查询条件固定但查询非常频繁的场合. 使用方法是: 绑定, 创建一个MYSQL_STMT变量,与对应的查询字符串绑定,字符串中的问号代表要传入的变量,每个问号都必须指定一个变量. 查询, 输入每个指定的...
类别:数据库 - MySQL    查看:113    更新:2014-05-19

Windows系统下MySQL数据库的安全权限及设置

注意:本文的内容涉及到修改NTFS磁盘权限和设置安全策略,请务必在确认您了解操作可能的后果之后再动手进行任何的修改。 文中提及的权限都是在原有权限上附加的权限。 [修改步骤] 1.创建用户 创建一个名为MySQLusr的用户,设置一个随机密码,密码的长度最好 不要少于20位。 2.设置用户的身份 将mysqlusr用户加入Guests组,并去掉其它任何的组。 3.设置磁盘权限 假设MySQL安装在如下目录中 D:hostingsystemmysql 假设MySQL的数据库存放在如下目录中 D:hostingMySQLDB 假设MySQL的服务运行者修改为mysqlusr 目录权限设置如下 D:hostingsystemmysql mysqlusr 读取和运行 列出文件夹...
类别:数据库 - MySQL    查看:129    更新:2014-05-19

MYSQL教程:Show命令

a. show tables或show tables from database_name; — 显示当前数据库中所有表的名称 b. show databases; — 显示mysql中所有数据库的名称 c. show columns from table_name from database_name; 或show columns from database_name.table_name; — 显示表中列名称 d. show grants for user_name; — 显示一个用户的权限,显示结果类似于grant 命令 e. show index from table_name; — 显示表的索引 f. show status; — 显示一些系统特定资源的信息,例如,正在运行的线程数量 g. show variables; — 显示系统变量的名称和值 h. show processlist; — 显示系统中正在运行的所有进程,也就...
类别:数据库 - MySQL    查看:110    更新:2014-05-19

如何提高MySQL中数据装载效率

很多时候关心的是优化SELECT 查询,因为它们是最常用的查询,而且确定怎样优化它们并不总是直截了当。相对来说,将数据装入数据库是直截了当的。然而,也存在可用来改善数据装载操作效率的策略,其基本原理如下: 成批装载较单行装载更快,因为在装载每个记录后,不需要刷新索引高速缓存;可在成批记录装入后才刷新。 在表无索引时装载比索引后装载更快。如果有索引,不仅必须增加记录到数据文件,而且还要修改每个索引以反映增加了的新记录。 较短的SQL 语句比较长的SQL 语句要快,因为它们涉及服务器方的分析较少,而且还因为将它们通过网络从客户机发送到服务器更快。这些因素中有一些似乎微不足道(特别是最后一个因素...
类别:数据库 - MySQL    查看:97    更新:2014-05-19

MySQL全文搜索的SQL写法学习

首先,大家先去下载一份dvbbs.php beta1的代码,解压后先抛开php代码,找出你的mysql手册,如果没有手册那么就直接看下面的实例操作吧! mysql全文搜索,sql的写法: MATCH (col1,col2,…) AGAINST (expr [IN BOOLEAN MODE | WITH QUERY EXPANSION]) 比如: SELECT * FROM articles WHERE MATCH (title,body) AGAINST (’database’); MATCH()函数对于一个字符串执行资料库内的自然语言搜索。一个资料库就是1套1个或2个包含在FULLTEXT内的列。搜索字符串作为对 AGAINST()的参数而被给定。对于表中的每一行, MATC...
类别:数据库 - MySQL    查看:110    更新:2014-05-19

MYSQL错误代码及出错信息对照

mysql的出错代码表,根据mysql的头文件mysql/include/mysqld_error.h整理而成。错误之处,请大家指正。 1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1009:不能删除数据库文件导致删除数据库失败 1010:不能删除数据目录导致删除数据库失败 1011:删除数据库文件失败 1012:不能读取系统表中的记录 1020:记录已被其他用户修改 1021:硬盘剩余空间不足,请加大硬盘可用空间 1022:关键字重复,更改记录失败 1023:关闭时发生错误 1024:读文件错误 1025:更改名字时发生错误 1026:写文件错误 1032:记录不存在 1036:数据表是只读的,不能对它进行修改 10...
类别:数据库 - MySQL    查看:100    更新:2014-05-19

PHP中操作MySQL的一些要注意的问题

对于 MySQL ,第一件你必须牢记的是它的每一行命令都是用分号 (;) 作为结束的,但……没有完全绝对的事,在这儿也是一样,当一行 MySQL 被插入在 PHP 代码中时,最好把后面的分号省略掉,例如: mysql_query ("INSERT INTO tablename (first_name, last_name) VALUES ('$first_name', $last_name')");  这是因为 PHP 也是以分号作为一行的结束的,额外的分号有时会让 PHP 的语法分析器搞不明白,所以还是省略掉的好。在这种情况下,虽然省略了分号,但是 PHP 在执行 MySQL 命令时会自动的帮你加上的。  另外还有一个不要加分号的情况。当你想把要字段的竖者排列显示下...
类别:数据库 - MySQL    查看:92    更新:2014-05-19

MYSQL 关键字 相关性排序 匹配度排序

曾今我也用LIKE ‘%kw%’ 来查找满足条件的数据,但是如果遇到多关键字,在排序上就出现了问题,而大家当然愿意把最匹配的搜索结果排在前列,而不是按其他标准排序。 打个比方,如果搜索关键字“IBM”,“服务器”, 首先,对搜索关键字的处理,代码如下: $kw = preg_replace(”/(s+)|( +)+/”, ” “, $kw);//替代空格,换行,tab,中文空格 $kw = preg_replace( “/(^s*)|(s*$)/ “, “”,$kw);//去除首尾空格 $kw = preg_replace(”/(s+)/”, ” “, $kw);//替换多个空格为一个空格 //$kw = preg_replace( “/[[:punct:]]/&rdqu...
类别:数据库 - MySQL    查看:100    更新:2014-05-19

Apache基于MySQL的身份验证

本文介绍在Apache中实现用户身份验证的方法,讨论如何在MySQL数据库中保存验证信息,然后通过mod_auth_mysql模块实现身份验证。      一、概述   前文讨论了在身份验证中使用数据库的方法,具体介绍了mod_auth_db模块和DB文件的使用。这里要介绍的是如何使用非常流行的MySQL数据库保存身份验证信息,再通过mod_auth_mysql访问MySQL数据库实现身份验证。      1.1 关于MySQL      MySQL是一种优秀的数据库服务器,具有体积小速度快的特点。MySQL以GPL方式发行,它的主页在http://www.mysql.com/。MySQL缺少某些昂贵的大型数据库所提供的功能,比如存储过程、触发子等等,但它具备了大多数...
类别:数据库 - MySQL    查看:101    更新:2014-05-19

MySQL修改root密码的多种方法

方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(’newpass’); 方法2:用mysqladmin mysqladmin -u root password “newpass” 如果root已经设置过密码,采用如下方法 mysqladmin -u root password oldpass “newpass” 方法3: 用UPDATE直接编辑user表 mysql -u root mysql> use mysql; mysql> UPDATE user SET Password = PASSWORD(’newpass’) WHERE user = ‘root’; mysql> FLUSH PRIVILEGES; ...
类别:数据库 - MySQL    查看:109    更新:2014-05-19