-- 创建数据库(这种注释"--"后要有空格) /* 数据库名称:db_search 使用字符集:utf-8 */ create database db_search DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; #使用数据库 show databases; use db_search ; -- 为该数据库创建用户并相关赋予权限 /* 用户名:db_search_user 密码:db_search_passwd */ grant insert,update,delete,select on db_search.* to db_search_user@localhost identified by "db_search_passwd";
-- 创建表t_test create table t_test ( id int auto_increment not null primary key comment '自增id', content text not null comment '内容' ) comment='测试表' ; -- 在t_test中插入数据 insert into t_test(content) values ("Have you ever sat very silently, not with your attention fixed on anything, not making an effort to concentrate, but with the mind very quiet, really still? Then you hear everything, don’t you? You hear the far off noises as well as those that are nearer and those that are very close by, the immediate sounds—which means really that you are listening to everything. Your mind is not confined to one narrow little channel. If you can listen in this way, listen with ease, without strain, you will find an extraordinary change taking place within you, a change which comes without your volition, without your asking; and in that change there is great beauty and depth of insight." ), ("How do you listen? Do you listen with your projections, through your projection, through your ambitions, desires, fears, anxieties, through hearing only what you want to hear, only what will be satisfactory, what will gratify, what will give comfort, what will for the moment alleviate your suffering? " ), ("Listening is an art not easily come by, but in it there is beauty and great understanding."), ("You may superficially agree when you hear it said that nationalism, with all its emotionalism and vested interest, leads to exploitation and the setting of man against man; but to really free your mind from the pettiness of nationalism is another matter."), ("GUI(Graphical User Interface,图形用户界面)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。" ), ("Qt是一个跨平台应用和用户界面开发框架,它包括一个跨平台类库、集成开发工具和跨平台IDE。通过使用Qt,你可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。 "), ("FLTK(The Fast Light Toolkit),一个轻量级的GUI开发库。FLTK除了具有基本的GUI功能之外,还拥有其他一些特性,如跨平台、内置OpenGL、速度更快、尺寸 更小、协议宽松等。FLTK可以在UNIX/Linux、Windows和Mac OS X平台上运行。" ), ("wxWidgets是一个C++库,帮助开发人员创建可运行于32位、64位的Windows、Mac OS X、Linux和UNIX上的应用程序,也可以用来创建移动平台上的应用程序,包括Windows Mobile、iPhone SDK和嵌入式GTK+等。 " );
-- 显示所有数据 select * from t_test; -- 查看版本 select version (); -- 查看所有用户 use mysql ; select * from user; -- 查看某一用户具有的权限 show grants for db_search_user@localhost ; -- 查看表信息 use db_search ; describe t_test ; #表结构 Show create table t_test; #显示表的创建语句 show table status like "t_test" ; #表的详细信息 -- 关于存储引擎 show engines; #支持的存储引擎
select content from t_test where content like 'have%'; #开始是“Have” select content from t_test where content like '%Have%'; #含有“Have” select content from t_test where content like '%listen%'; #含有“listen” select content from t_test where content like '%用户界面%'; #含有“用户界面” select content from t_test where content like 'GUI%用户界面%。' ; #"GUI"开头,内含“用户界面”,以“。”结尾 select content from t_test where content like '%'; #查看所有但是不包括 null select content from t_test where content like '%listen%' or content like '%用户界面%' ; #含有“listen”或者“用户界面” select content from t_test where content like "_ave%"; select content from t_test where content like "%易于接__" ; #汉字也是一个字符
select content from t_test where content regexp "易于接受"; #含有“易于接受” select content from t_test where content regexp "易于接受|listen"; #含有“易于接受”或者“listen” select content from t_test where content regexp "you [hear|listen|ever]"; #含有"you hear"或者“you listen”或者“you ever” select content from t_test where content not regexp "How do you listen"; #不含“How do you listen” select content from t_test where content regexp "[a-z]ow do you listen"; #[a-z ]指a至z的任意一个字符
select content from t_test where content regexp '[[:alnum:]]+';
from http://kb.cnblogs.com/page/99810/ 1. MyISAM: 这种引擎是mysql最早提供的。这种引擎又可以分为静态MyISAM、动态MyISAM和压缩MyISAM三种: 静态MyISAM:如果数据表中的各数据列的长度都是预先固定好的,服务器将自动选择这种表类型。因为数据表中每一条记录所占用的空间都是一样的,所以这种表存取和更新的效率非常高。当数据受损时,恢复工作也比较容易做。 动态MyISAM:如果数据表中出现varchar、xxxtext或xxxBLOB字段时,服务器将自动选择这种表类型。相对于静态MyISAM,这种表存储空间比较小,但由于每条记录的长度不一,所以多次修改数据后,数据表中的数据就可能离散的存储在内存中,进而导致执行效率下降。同时,内存中也可能会出现很多碎片。因此,这种类型的表要经常用optimize table 命令或优化工具来进行碎片整理。 压缩MyISAM:以上说到的两种类型的表都可以用myisamchk工具压缩。这种类型的表进一步减小了占用的存储,但是这种表压缩之后不能再被修改。另外,因为是压缩数据,所以这种表在读取的时候要先时行解压缩。 但是,不管是何种MyISAM表,目前它都不支持事务,行级锁和外键约束的功能。 2. MyISAM Merge引擎:这种类型是MyISAM类型的一种变种。合并表是将几个相同的MyISAM表合并为一个虚表。常应用于日志和数据仓库。 3. InnoDB:InnoDB表类型可以看作是对MyISAM的进一步更新产品,它提供了事务、行级锁机制和外键约束的功能。 4. memory(heap):这种类型的数据表只存在于内存中。它使用散列索引,所以数据的存取速度非常快。因为是存在于内存中,所以这种类型常应用于临时表中。 5. archive:这种类型只支持select 和 insert语句,而且不支持索引。常应用于日志记录和聚合分析方面。 当然MySql支持的表类型不止上面几种。
-- 修改索引 alter table t_test engine = MyISAM; -- 或者 drop table t_test; create table t_test ( id int auto_increment not null primary key comment '自增id', content text not null comment '内容' ) comment='测试表' engine=MyISAM ;
-- fulltext alter table t_test add fulltext(content ); -- 或者 drop table t_test; create table t_test ( id int auto_increment not null primary key comment '自增id', content text not null comment '内容', fulltext (content) ) comment='测试表' engine=MyISAM ; -- 查看索引 show indexes from t_test;
select * from t_test where Match(content ) Against('but'); #无结果 select * from t_test where Match(content ) Against('GUI'); #无结果 select * from t_test where Match(content ) Against('listen'); #有结果 select * from t_test where Match(content ) Against('用户界面' ); #无结果 select * from t_test where Match(content ) Against('sounds—which' ); #有结果 select * from t_test where Match(content ) Against('sounds—which listen' ); #有结果
select * from t_test where Match(content ) Against('sounds—which' with query expansion); #有结果
select * from t_test where Match(content ) Against('sounds—which' in boolean mode ); select * from t_test where Match(content ) Against('sounds—which' );
select * from t_test where Match(content ) Against('attention'); select * from t_test where Match(content ) Against('listen'); select * from t_test where Match(content ) Against('listen -attention' in boolean mode );
insert into t_test(content) values (" find 命令" ), ("跨国 采购 、 企业 采购 、 政府 采购 这 三 大 需求 , 已经 快速 催生 采购 管理 队伍 的 成长"), ("堵车 或 等灯 的 时候 别 跟 的 太近" ), ("不是 每个 人 都 喜欢 服从 命令 的. 命令 的 英文 是 什么" ), ("find 这个 命令 很 好用" ), ("应用程序 是 大家 的 , 你 知道 吗 ?" ), ("你的 意思 我 当然 知道 了 ,我 不 傻" ), ("谷歌 开发 了 很多 应用程序" ), ("谷歌 地球 这款 应用程序 是 谷歌 公司 开发 的 。" ), ("既然 全文 搜索 有 这样 的 优点 , 下面 我们 来 看看 是否 真的 如此"), ("describe 命令 用于 查看 特定 表 的 详细 设计 信息" ), ("是不是 一开始 觉得 有点 令人 气馁 或者 不舒服 ?" );
SELECT * FROM t_test WHERE MATCH ( content) AGAINST ('开发'); #无结果 SELECT * FROM t_test WHERE MATCH ( content) AGAINST ('采购'); #无结果 SELECT * FROM t_test WHERE MATCH ( content) AGAINST ('应用程序'); #有 SELECT * FROM t_test WHERE MATCH ( content) AGAINST ('find'); #有 SELECT * FROM t_test WHERE MATCH ( content) AGAINST ('+"应用程序" +"开发"' in boolean mode ); #无
insert into t_test(content) values ("find命令" ), ("跨国采购、企业采购、政府采购这三大需求,已经快速催生采购管理队伍的成长" ), ("堵车或等灯的时候别跟的太近" ), ("不是每个人都喜欢服从命令的.命令的英文是什么" ), ("find这个命令很好用" ), ("应用程序是大家的,你知道吗 ?" ), ("你的意思我当然知道了,我不傻" ), ("谷歌开发了很多应用程序" ), ("谷歌地球这款应用程序是谷歌公司开发的。" ), ("既然全文搜索有这样的优点,下面我们来看看是否真的如此" ), ("describe命令用于查看特定表的详细设计信息" ), ("是不是一开始觉得有点令人气馁或者不舒服?" );
SELECT * FROM t_test WHERE MATCH ( content) AGAINST ('开发'); #无结果 SELECT * FROM t_test WHERE MATCH ( content) AGAINST ('采购'); #无结果 SELECT * FROM t_test WHERE MATCH ( content) AGAINST ('应用程序'); #无 SELECT * FROM t_test WHERE MATCH ( content) AGAINST ('find'); #无 SELECT * FROM t_test WHERE MATCH ( content) AGAINST ('+"应用程序" +"开发"' in boolean mode ); #无
insert into t_test(content) values ("命令行" ), (" find 命令 命令行" ), ("跨国 采购 、 企业 采购 、 政府 采购 这 三 大 需求 , 命令行 已经 快速 催生 采购 管理 队伍 的 成长"), ("堵车 或 等灯 的 时候 别 跟 的 太近" ), ("不是 每个 人 都 喜欢 服从 命令 的. 命令 的 英文 是 什么" ), ("find 这个 命令 很 好用" ), ("应用程序 是 大家 的 , 你 知道 吗 ?" ), ("你的 意思 我 当然 知道 了 ,我 不 傻" ), ("谷歌 开发 了 很多 应用程序" ), ("谷歌 地球 这款 应用程序 是 谷歌 公司 开发 的 。" ), ("既然 全文搜索 有 命令行 这样 的 优点 , 下面 我们 来 看看 是否 真的 如此"), ("describe 命令 用于 查看 特定 表 的 详细 设计 信息" ), ("是不是 一开始 全文搜索 觉得 有点 令人 气馁 或者 不舒服 ?" );
SELECT * FROM t_test WHERE MATCH ( content) AGAINST ('应用程序'); #有结果 SELECT * FROM t_test WHERE MATCH ( content) AGAINST ('命令行'); #无结果 SELECT * FROM t_test WHERE MATCH ( content) AGAINST ('全文搜索'); #有结果
select content,char_length(content ) from t_test;