seo网站优化师小程序商城代码
第17章 组 合 查 询
创建组合查询
可用UNION操作符来组合数条SQL查询。利用UNION,可给出多条SELECT语句,将它们的结果组合成单个结果集。
 **例子:**假如需要价格小于等于5的所有物品的一个列表,而且还想包括供应商1001和1002生产的所有物品(不考虑价格)。
 
UNION规则
UNION必须由两条或两条以上的SELECT语句组成
 UNION中的每个查询必须包含相同的列、表达式或聚集函数
 列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含地转换的类型
 UNION 默认消除重复行 如果需要重复行 则使用UNION ALL
 在用UNION组合查询时,只能使用一条ORDER BY子句
第18章 全文本搜索
LIKE关键字和正则表达式的缺陷
 通配符和正则表达式匹配通常要求MySQL尝试匹配表中所有行(而且这些搜索极少使用表索引)。因此,由于被搜索行
 数不断增加,这些搜索可能非常耗时。
 虽然基于通配符和正则表达式的搜索提供了非
 常灵活的搜索,但它们都不能提供一种智能化的选择结果的方法。例如,一个特殊词的搜索将会返回包含该词的所有行,而不区分包含单个匹配的行和包含多个匹配的行(按照可能是更好的匹配来排列它们)。类似,一个特殊词的搜索将不会找出不包含该词但包含其他相关词的行。(不智能)
 如何使用全文本搜索
 在索引之后,SELECT可与Match()和Against()一起使用以实际执行搜索
 一般在创建表时启用全文本搜索。CREATE TABLE语句(第21章中介绍)接受FULLTEXT子句,它给出被索引列的一个逗号分隔的列表
 
 
 使用全文本搜索返回以文本匹配的良好程度排序的数据。两个行都包含词rabbit,但包含词rabbit作为第3个词的行的等级比作为第20个词的行高。而使用like关键字的不是。由于数据是索引的,全文本搜索还相当快
 使用查询扩展
 在使用查询扩展时,MySQL对数据和
 索引进行两遍扫描来完成搜索:
  首先,进行一个基本的全文本搜索,找出与搜索条件匹配的所有行;
  其次,MySQL检查这些匹配行并选择所有有用的词(搜索结果中出现的词)。
  再其次,MySQL再次进行全文本搜索,这次不仅使用原来的条件,而且还使用所有有用的词
 示例:
 
 布尔文本搜索
 以布尔方式,可以提供关于如下内容的细节
  要匹配的词;
  要排斥的词(如果某行包含这个词,则不返回该行,即使它包含
 其他指定的词也是如此);
  排列提示(指定某些词比其他词更重要,更重要的词等级更高);
  表达式分组;
  另外一些内容。
 示例
 
 
 示例
 注:MySQL支持几种基本的数据库引擎。并非所有的引擎都支持本书所描述的全文本搜索。两个最常使用的引擎为MyISAM和InnoDB,前者支持全文本搜索,而后者不支持(什么是数据库引擎 数据库引擎(Database Engine)是数据库管理系统(DBMS)的核心部分,负责存储、处理和保护数据。它处理所有数据管理任务,并允许用户和其他应用程序与数据库进行交互。)
第19章 插 入 数 据 && 第20章 更新和删除数据
插入使用INSERT
 更新使用UPDATE语句
 更新使用DELETE语句
第21章 创建和操纵表
利用CREATE TABLE创建表
 1.给出新表的名字,在关键字CREATE TABLE之后给出;
 2.给出表列的名字和定义,用逗号分隔。
 使用NULL值
 给列属性加上NOT NULL
 
主键
 使用 PRIMART KEY定义主键
 使用AUTO_INCREMENT
 使用AUTO_INCREMENT定义自增
 每个表只允许一个AUTO_INCREMENT列,而且它必须被索引
 引擎类型
 如果省略ENGINE=语句,则使用默认引擎(很可能是MyISAM),多数SQL语句都会默认使用它。
 InnoDB是一个可靠的事务处理引擎(参见第26章),它不支持全文
 本搜索;
 MEMORY在功能等同于MyISAM,但由于数据存储在内存(不是磁盘)
 中,速度很快(特别适合于临时表);
 MyISAM是一个性能极高的引擎,它支持全文本搜索(参见第18章),
 但不支持事务处理。
