**之前項目到遇到了這樣的問題來總結一下**
項目中經常用到模糊查詢,如:有個username字段的的內容是:AA812135023,我們查詢這條記錄,查詢的sql select * from 表 where username
like '%AA%',能找到這條記錄,但是用 select * from 表 where username like '%aa%' 也能查詢到這條記錄.
問題出在哪裏?出現在創建數據表上,應該用下面的code創建表
CREATE TABLE `message` (
`msgId` BIGINT(20) NOT NULL
COMMENT '消息ID',
`bizType` INT(11) NOT NULL
COMMENT '消息業務類型 參見枚舉BizType',
`bizId` INT(11) NOT NULL
COMMENT '消息對應的業務ID',
`src` BIGINT(20) NOT NULL
COMMENT '發送者ID',
`dst` BIGINT(20) NOT NULL
COMMENT '接受者ID',
`msgStatus` INT(11) NOT NULL
COMMENT '消息狀態 參見枚舉MsgStatus',
`status` INT(11) DEFAULT '0'
COMMENT '參考枚舉:Status',
`createBy` INT(11) DEFAULT '0',
`createTime` DATETIME DEFAULT NULL,
`updateBy` INT(11) DEFAULT '0',
`updateTime` DATETIME DEFAULT NULL,
`lastUpdate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`msgId`)
)
ENGINE = InnoDB //使用的搜索引擎,有以下幾種引擎:ISAM、MyISAM、HEAP、InnoDB和Berkley(BDB)
DEFAULT CHARSET = utf8 //編碼格式,有時候數據庫亂碼就出現在這裏.
DEFAULT COLLATE = utf8_bin;//查詢對大小寫敏感
那不是每個表都需要下面這段東西,這樣顯的比較繁瑣,
ENGINE = InnoDB //使用的搜索引擎,有以下幾種引擎:ISAM、MyISAM、HEAP、InnoDB和Berkley(BDB)
DEFAULT CHARSET = utf8 //編碼格式,有時候數據庫亂碼就出現在這裏.
DEFAULT COLLATE = utf8_bin;//查詢對大小寫敏感
我們創建數據庫的時候,用下面的code就不用每個表都寫上面這一段了
create database test default character set utf8 collate utf8_bin;
如果你的數據已經建好了,修改即可
ALTER SCHEMA `bbj_local` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin ;
如何修改mysql默認的搜索引擎?
1、查看mysql存儲引擎命令,在mysql>提示符下搞入show engines;字段 Support爲:Default表示默認存儲引擎
2、設置InnoDB爲默認引擎:在配置文件my.cnf中的 [mysqld] 下面加入default-storage-engine=INNODB 一句
3、重啓mysql服務器:mysqladmin -u root -p shutdown或者service mysqld restart 登錄mysql數據庫,