MySQL命令学习笔记(四)

一、组合查询

有两种基本情况,其中需要使用组合查询:

  • 在单个查询中从不同的表返回类似结构的数据;
  • 对单个表执行多个查询,按单个查询返回数据

1 创建组合查询

可用UNION操作符来组合数条SQL查询。利用UNION可给出多条SELECT语句,将它们的结果组合成单个结果集。

1.1 使用UNION

创建UNION涉及编写多条SELECT语句。使用示例如下:

SELECT id,name FROM table1 WHERE price <= 9
UNION
SELECT id,name FROM table1 WHERE id IN (1,4);

结果如下:
UNION
这条语句由前面的两条SELECT语句组成,语句中用UNION关键字分隔。UNION指示mysql执行两条SELECT语句,并把输出组合成单个查询结果集。

1.2 UNION规则

在使用时需要注意以下规则:

  • UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔(因此,如果组合4条SELECT语句,将要使用3个UNION关键字)。
  • UNION中的每个查询必须包含相同的列、表达式或聚集函数(不过各个列不需要以相同的次序列出)。
  • 列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含地转换的类型(例如,不同的数值类型或不同的日期类型)。
1.3 包含或取消重复的行

UNION从查询结果集中自动去除了重复的行(即其行为与单条SELECT语句中使用多个WHERE子句条件一样)。若想返回所有匹配行,可使用UNION ALL而不是UNION

1.4 包含或取消重复的行

SELECT语句的输出用ORDER BY子句排序。在用UNION组合查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT语句之后。对于结果集,不存在用一种方式排序一部分,而又用另一种方式排序另一部分的情况,因此不允许使用多条ORDER BY子句。

二、全文本搜索

2 使用全文本搜索

为了进行全文本搜索,必须索引被搜索的列,而且要随着数据的改变不断地重新索引。在对表列进行适当设计后, MySQL会自动进行所有的索引和重新索引。在索引之后,SELECT可与Match()Against()一起使用以实际执行搜索。

2.1 启用全文本搜索支持

一般在创建表时启用全文本搜索。CREATE TABLE语句接受FULLTEXT子句,它给出被索引列的一个逗号分隔的列表。在定义之后,MySQL自动维护该索引。在增加、更新或删除行时,索引随之自动更新。下面的CREATE语句演示了FULLTEXT子句的使用:

CREATE TABLE productnotes
(
	nots_id        int        NOT NULL AUTO_INCREMENT
	prod_id        char(10)   NOT NULL,
	note_date      datetime   NOT NULL,
	note_text      text       NULL,
	PRIMARY    KEY(note_id),
	FULLTEXT(note_tetx)
)ENGINE=MyISAM;

分析: 其中名为note_text的列,为了进行全文本搜索,MySQL根据子句FULLTEXT(note_text)的指示对它进行索引。

2.2 进行全文本搜索

在索引之后,使用两个函数Match()Against()执行全文本搜索,其中Match()指定被搜索的列,Against()指定要使用的搜索表达式。

SELECT note_text FROM table1 WHERE Match(note_text) Against('rabbit');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值