MySQL 第六天学习笔记
第十七章 组合查询
创建组合查询(UNION)
需要价格小于等于5的所有物品的一个列表,而且还想包括供应商1001和1002生产的所有物品(不考虑价格)
同样的,用WHERE也可实现
union在实现的过程中,会自动取消重复的行,如果想要改变,可以用union all
第十八章 全文本搜索
首先,并非所有的引擎都支持全文本搜索。MySQL最常用的两个引擎是MyISAM和InnDB
其中,MyISAM支持全文本搜索,而InnDB不支持
如果应用中需要全文本搜索功能,在建立表时,应该用MyISAM
启用全文本搜索支持
一般在创建表时,启用全文本搜索支持
FULLTEXT( ) 用这个指示表示可以进行索引
定义之后,MySQL会自动维护该索引,在增加、更新、删除行时,索引会随之自动更新
进行全文本搜索
Match( ):指定被搜索的列
Against( ):指定要使用的搜索表达式
检索单个列note_text,指定词rabbit作为搜索文本
如果不用WHERE
第一行的逗号不能忘
结果是:每一句都被搜索出来,如果包含rabbit,则rank不为0,排在越前的等级越高
使用查询扩展 with query expansion
比如我想找出所有提到anvils的注释
首先,通过全文搜索,找到anvils所在的行
其次,检查这些行里有用的词
最后,根据检索到的那些词再进行全文搜索,把包含有用词的行也返回出来
布尔文本搜索 in boolean mode
匹配包含heavy,但不包含任意以rope开始的词的行:
第十九章 插入数据 insert
插入完整的行
一般不要使用上图方法,最好使用下图 使用列的列表,即使表的结构发生了变化,也继续发挥作用
插入多个行
INSERT INTO ...
VALUES( ....),
( ...... )
插入检索出的数据
把名为custnew的表中的数据导入customers表中
第二十章 更新和删除数据
更新数据 update
客户10005现在有了新的电子邮件,需要更新
删除数据 delete 删除行
如果要删除整列,可以用update 和 NULL
DELETE 按行删除数据,不删除表
truncate table(截断) 删除表
第二十一章 创建和操纵表
创建customers表
使用NULL值
定义主键
PRIMARY KEY(order_num,order_item)
自动增量 AUTO_INCREMENT
注意:每个表只允许一个自动增量的列,而且它必须被索引(比如让它成为主键)
那么,如何知道插入一行后,自动生成的编号是什么?
SELECT last_insert_id( )
指定默认值 default
引擎类型
更新表 alter table (包括添加ADD和删除DROP)
给表添加一个列
删除添加的列
定义外键
删除表 DROP TABLE customers
重命名表 RENAME TABLE customers TO customers1
下次看 第二十二章 使用视图