# MySQL-常用语句
# 1. 递归查询 - WITH RECURSIVE
参考:
# 2. 函数和存储过程
DROP FUNCTION IF EXISTS `GetSecurityV`;
DELIMITER ;;
CREATE FUNCTION `GetSecurityV`(`pObjectId` bigint,`pUserId` bigint)
RETURNS bigint
-- 指定函数特性,指明使用SQL语句的限制
-- CONTAINS SQL: 表明子程序包含SQL语句,但是不包含读写数据的语句;
-- NO SQL: 表明子程序不包含SQL语句;
-- READS SQL DATA: 说明子程序包含读数据的语句;
-- MODIFIES SQL DATA: 表明子程序包含写数据的语句。
READS SQL DATA
-- SQL SECURITY { DEFINER | INVOKER }
-- 指明谁有权限来执行。
-- DEFINER 表示只有定义者才能执行【默认值】
-- INVOKER 表示拥有权限的调用者可以执行
SQL SECURITY INVOKER
BEGIN
-- ...
END ;;
DELIMITER ;
# 3. 全文搜索
# 3.1. 创建
创建表时创建全文索引:
CREATE TABLE `table_name` (
-- ...
FULLTEXT full_index_name (col_name)
);
在已创建的表上创建全文索:
CREATE FULLTEXT INDEX full_index_name ON table_name(col_name);
# 3.2. 自然语言搜索
说明:
- 默认模式
- 按 单词、短语 搜索,需要开启中文分词器
- 需要考虑 单词长度
示例:
SELECT
*
FROM
`tb_article`
WHERE
MATCH ( title, content ) AGAINST ( 'MySQL' );
-- 查看最小单词长度
SHOW VARIABLES LIKE '%ft_min_word_len%';
-- 全局设置
SET GLOBAL ft_min_word_len = 2;
# 3.3. 布尔搜索
模糊匹配:
SELECT
*
FROM
`tb_article`
WHERE
-- 跟 LIKE 操作符行为一致
MATCH ( title, content ) AGAINST ( '*test*' IN BOOLEAN MODE );
# 3.4. 参考
上一篇: 下一篇:
本章目录