易截截图软件、单文件、免安装、纯绿色、仅160KB

一个MYSQL的小问题

一下是一个SQL的小问题,困扰了3分钟,写下来记录一下。
数据库是MYSQL 5, 表的结构很简单, 就一个字段是abc,整型。
一下语句运行的结果是一样的。自己不留神,导致困扰了3分钟。
select * from table1 from abc = '123'
select * from table1 from abc = '123_1'
以上语句原来是查找是否数据存在,结果123_1和123,只要里面有123, 就是存在的。
其实原因很简单,就是mysql 把123_1转成整数在比较,它把123_1转成整数后就是123了。所以2个语句的返回结果是一样的。


相关文档:

Linux + JDK + Tomcat + MySQL + JDBC 安装手记

Linux + JDK + Tomcat + MySQL + JDBC 安装手记
一、Red Hat Linux
1.分区
           
                        | swap  & ......

Wireshark 抓包MySQL的查询语句

过滤器条件
mysql.query contains "SELECT"
..
..
..
..
MySQL Protocol
    Packet Length: 168
    Packet Number: 0
    Command
        Command: Query (3)
        State ......

mysql的sql_mode介绍

mysql可以运行在不同sql mode模式下面,sql mode模式定义了mysql应该支持的sql语法,数据校验等!
 
查看默认的sql mode模式:
select @@sql_mode;
我的数据库是:
STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
在此模式下面,如果插入的数据的长度大于定义的长度,那么就会报错!
  ......

mysql常用命令


1、MySQL常用命令
create database name; 创建数据库
use databasename; 选择数据库
drop database name 直接删除数据库,不提醒
show tables; 显示表
describe tablename; 表的详细描述
select 中加上distinct去除重复字段
mysqladmin drop databasename 删除数据库前,有提示。
显示当前mysql版本和当前日期
s ......

对mysql的order by及limit优化要适数据情况而定

以下这篇文章论述上在什么情况下子查询比一般的内连接查询更加快速
http://www.mysqlperformanceblog.com/2010/03/18/when-the-subselect-runs-faster/
以下是我对mysql的order by和limit优化的建议,要适表的数据量和用来过滤列的唯一值的个数而定
(1)where子句中用来过滤结果的列所在索引的cadinality很小,即用相关 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号