2011年10月8日星期六

MySQL必知必会 chap 17-22

用UNION组合多个select查询,默认会去掉重复行;用UNION ALL则会保留重复行

MyISAM引擎支持全文本查询,InnoDB不支持全文本查询

指定全文索引FULLTEXT(some_column),不要在导入数据时使用FULLTEXT。在所有数据都导入完毕后,再添加FULLTEXT

全文搜索时,Match指定列,Against指定搜索表达式,默认不区分大小写:select node_text from products WHERE Match(note_text) Against('rabbit');

指定IN BOOLEAN MODE可以进行更细致的全文搜索,但性能较差

如果数据检索较为重要,可以指定INSERT LOW_PRIORITY INTO降低插入操作的优先级

将select结果写入另一张表:INSERT INTO table_a(column_a, column_b) SELECT column_a, column_b from table_b;

指定更新数据在某些行出错的时候也继续执行:UPDATE IGNORE sometable …

删除表中所有行 TRUNCATE TABLE sometable;

建表:

CREATE TABLE IF NOT EXISTS customers (

id int NOT NULL AUTO_INCREMENT,

name char(50) NOT NULL DEFAULT 'test_name',

PRIMARY KEY (id)

) ENGINE=InnoDB;

每个表只允许一个AUTO_INCREMENT列,并且它必须被索引(成为主键)

几个引擎:

InnoDB 支持事务处理,不支持全文本搜索

MyISAM 不支持事务处理,支持全文本搜索

MEMORY 功能等同于MyISAM,但数据存在内存中(不在磁盘中),速度很快(特别适合临时表)

定义外键:ALTER TABLE sometable_a ADD CONSTRAINT sometable_a_column FOREIGN KEY (vend_id) REFERENCES vendors (vend_id);

重命名表 RENAME TABLE table_a TO table_b;

视图只包含使用时动态检索数据的查询,视图不能索引,也不能有关联的触发器或默认值

查看视图:SHOW CREATE VIEW someview;

建立视图:CREATE VIEW someview AS SELECT column_a,column_b FROM sometable;

视图一般用于检索,而不用于更新或删除

没有评论:

发表评论