感觉这本书吧,就像带着过了一遍MySQL的语法一样,并没有太多理论知识,好几章的内容没有深入浅出的一章多,不过这种看下来倍有成就感,一会就看特别多hhhh。
前几周把这书看完了,还是总结一下,上篇文章里没有的内容总结一波,虽然没啥有意思的东西,但是有些面试官就喜欢问这种怎么用的问题...烦。通配符过滤:
通配符(%和_):代替一些内容的特殊字符
LIKE操作符:若想使用通配符必须使用LIKE,LIKE其实是一个谓词,严格意义上不是一个操作符。
%:任意字符串出现任意次数。
_:匹配单个任意字符。
注意:1.若有其他替代方式不要使用通配符;2.若非必要不要将通配符置于搜索模式(LIKE语句)的开始处;注意搜索部分是一个字符串
2.正则表达式
REGEXP:表示使用正则的操作符。与LIKE的区别在于,LIKE是“是”才返回,正则是“有”则返回。若想匹配整行可以使用^和$.
BINARY:加于匹配串的前面可以匹配时区分大小写
*:通配符
.:匹配任意字符
|:or
[]:某范围内取其一
\\:转义符
注意:MySQL中的正则只是一个正则表达式的一个子集。
3.拼接字段
Concat():把不同的列以某种方式拼接到一起
4.数据处理函数
Soundex返回发音或者类似发音的意思
日期格式必须是yyyy-mm-dd,如果要的是日期,使用Date()
5.聚集函数:
运行在行组上,计算和返回单个值的函数。
DISTINCT可置于参数前面,去重
6.分组函数
GROUP BY:按照某一列分组,分组的标准必须出现按名字分组
HAVING:GROUP BY中的WHERE
7.全文搜索
MyISAM引擎支持全文搜索,全文搜索相对于正则表达式或者LIKE语句性能更好、控制明确、结果智能。
创建表时,用FULLTEXT指定某列就可以了,该列就能使用全文搜索了。(注意不要在导入数据时使用FULLTEXT,会很耗时)
Match():传递给Match()的值必须与 FULLTEXT()定义中的相同。如果指定多个列,则必须列出它 们(而且次序正确)。
Against():输入搜索的限定词。第二列为出现的等级
还会检索出相关行
布尔模式,无需有FULLTEXT,较为缓慢,性能与数据量成正相关
8.视图
使用视图来重用SQL语句,来简化语句。
用法和一般的表一致,不过下列情况无法更新视图
9.存储过程在CMD中,因为默认;为结束语句,所以重定义//为结束符
变量前用@
调用存储过程用CALL
支持IF-THEN-END语句,WHILE条件DO -END、REPEAT-UNTILi > 10 END REPEAT;
10.游标
有点指针的意思,把检索出来的内容当成一个数组,游标就是下标。且只能用于存储过程。
FETCH调用游标当前指向的一条记录。创建游标
使用游标指向的数据,向iordertotals表中插入数据
关闭游标(若未显式的关闭会在END时关闭)
11.触发器
使用某个语句时,随即产生作用。
只有DELETE、INSERT、UPDATE 语句支持该语法。触发器名唯一(newproduct),作用的时机和条件(AFTER INSERT),作用于哪个表(products),执行操作(现在需要赋值于某变量,不能直接显示出来)
BEFOR>语句>AFTER(执行顺序,前面的失败了后面就不执行了)
注意:只有表支持触发器,视图、临时表不支持。也可创建多语句触发器
12.事务处理标识事务开始
标记事务开始后,可以用ROLLBACK语句回退。
COMMIT提交,也就是建立原子性,操作要么全能完成,要么都不完成。
注意:ROLLBACK或者COMMIT执行后,事物便会被关闭。保留点("定制的事务"),回退到标记位置
与事务一样,COMMIT或者ROLLBACK执行后便会自动释放,RELEASE SAVEPOINT可以显示的释放保留点。设置该数为0便不会自动提交,它针对
针对每个连接而不是服 务器的。
剩下四章(字符集与本地化、权限管理、数据库维护、性能)懒得写(抄)了...