欢迎访问 水平网    今天是:2017年11月22日 注册 | 登录 | 订阅 | 收藏
推荐文章
热点文章
专题
JQuery框架
Prototype.js
HTML5

mysql中case when语句的使用方法

mysql中也有像php语言中switch case 这样的语句。 例如,下面的语句显示中文年月 select getdate() as 日期,case month(getdate()) when 11 then '十一' when 12 then '十二' else substring('一二三四五六七八九十', month(getdate()),1) end+'月' as 月份 CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。 首先让我们看一下 CASE 的语法。在一般的 SELECT 中,其语法如下: SELECT <myColumnSpec> = CASE WHEN <A> THEN <somethingA> WHEN <B> THEN <s...
类别:数据库 - MySQL,阅读:571,更新:2014-07-29

MySQL server has gone away问题的解决方法

应用程序(比如PHP)长时间的执行批量的MYSQL语句。执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理。都容易引起MySQL server has gone away。今天遇到类似的情景,MySQL只是冷冷的说:MySQL server has gone away。大概浏览了一下,主要可能是因为以下几种原因:一种可能是发送的SQL语句太长,以致超过了max_allowed_packet的大小,如果是这种原因,你只要修改my.cnf,加大max_allowed_packet的值即可。还有一种可能是因为某些原因导致超时,比如说程序中获取数据库连接时采用了Singleton的做法,虽然多次连接数据库,但其实使用的都是同一个连接,而且程序中某两次操作...
类别:数据库 - MySQL,阅读:715,更新:2014-07-15

MySQL数据库:root用户密码重置方法

1、首先停止正在运行的MySQL进程 Linux下,运行 killall -TERM mysqld Windows下,如果写成服务的 可以运行:net stop mysql,如未加载为服务,可直接在进程管理器中进行关闭。 2、以安全模式启动MySQL Linux下,运行 /usr/local/mysql/bin/mysqld_safe --skip-grant-tables & Windows下,在命令行下运行 X:/MySQL/bin/mysqld-nt.exe --skip-grant-tables 3、完成以后就可以不用密码进入MySQL了 Linux下,运行 /usr/local/mysql/bin/mysql -u root -p 进入 Windows下,运行 X:/MySQL/bin/mysql -u root -p 进入 4、更改密码 >use mysql >update user set password=passwor...
类别:数据库 - MySQL,阅读:434,更新:2014-05-19

MySQL数据库:server has gone away问题与解决

一种可能是发送的SQL语句太长,以致超过了max_allowed_packet的大小,如果是这种原因,你只要修改my.cnf,加大max_allowed_packet的值即可。   还有一种可能是因为某些原因导致超时,比如说程序中获取数据库连接时采用了Singleton的做法,虽然多次连接数据库,但其实使用的都是同一个连接,而且程序中某两次操作数据库的间隔时间超过了wait_timeout(SHOW STATUS能看到此设置),那么就可能出现问题。最简单的处理方式就是把wait_timeout改大,当然你也可以在程序里时不时顺手 mysql_ping()一下,这样MySQL就知道它不是一个人在战斗。   解决MySQL server has gone away   1、应用程序(比如PHP)长时间...
类别:数据库 - MySQL,阅读:495,更新:2014-05-19

MySQL数据库:Replace INTO的异同

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

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

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

MySQL查询和插入的高效技巧

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