当前位置: 首页 > news >正文

MariaDB基本知识汇总

/*

  MariaDB

  1、视图

  2、临时表

  3、自定义函数

  4、存储过程

  5、触发器

  6、游标

  7、变量声明与赋值

  8、常用函数(日期格式,Guid,判断,循环,XML格式操作)

  9、动态执行SQL 语句

  10、开启执行计划

  11、创建登录MariaDB账号赋予权限

  12、check audit 插件

  13、批量语句更新

  14、数据库版本检查

  15、虚拟列

*/

/*1、视图 (tempView 试图名,ttEvents 表名)*/

Create View tempViewasSelect * From ttEvents

/*2、临时表*/

select * from ttEvents/*创建临时表-1 把ttEvents中数据放入到临时表tempTemporary*/Create Temporary Table tempTemporaryasSelect * from ttEvents;/*创建临时表-2*/Create Temporary Table tempTemporary(EventId char(36) not null,Dept varchar(50),Title varchar(50))TYPE = HEAP;/*内存中直接创建临时表*//*查询临时表*/select * from tempTemporary/*删除临时表*/drop Temporary Table tempTemporary

/*3、自定义函数*/

Delimiter $$ Drop function If Exists FnReturnInt; $$create function FnReturnInt()returns intbegindeclare state int;set state=0;return state;end; $$ delimiter ;/*调用函数*/select FnReturnInt();/*带参数函数*/Delimiter $$ Drop function If Exists FnReturnInt; $$create function FnReturnInt(state int)returns varchar(20)begindeclare result varchar(20);if(state>100)thenset result='true';elseif (state50)thenset result='error';else set result='false';end if;return result;end; $$ Delimiter ;/*带参数函数调用*/select FnReturnInt(60);Delimiter $$ Drop function If Exists FnDutyLevel; $$create function FnDutyLevel(str varchar(100))returns varchar(500)beginDECLARE result VARCHAR(2000); SET result = ''; SELECT GROUP_CONCAT(A.Txt,'(',C.Txt,')') into result FROM FnDictionaryVals A INNER JOIN FNDICTIONARYKEYS B ON A.DictKeyId=B.DictKeyIdLEFT JOIN FnDictionaryVals C ON C.LnkDictValId=A.DictValIdWHERE B.KEYCODE='JobDegree'AND FIND_IN_SET(CONCAT_WS('|',A.Val,C.Val),str)>0ORDER BY A.DspOrder,C.DspOrder;return result;end; $$ Delimiter ;

/*4、存储过程*/

/*创建存储过程*/Delimiter $$Drop Procedure If Exists usp_TempProcedure; $$Create Procedure usp_TempProcedure(in pKey char(36))Label_Return:beginselect * from TtEvents where IsDeleted=1 and EventId=pKey;end; $$delimiter ; /*调用存储过程*/call usp_TempProcedure('0da453b2-c690-4234-ad5e-bd94c3d6ce58');

/*5、触发器*/

/*创建表*/create table t(s1 integer);Delimiter $$Drop Trigger If Exists trigger_Temp; $$Create Trigger trigger_Temp before insert on t for each rowbegin set @x='hello trigger';set New.s1=55;end; $$delimiter ; insert into t values(1);select @x,t.* from t;drop table t;drop trigger trigger_Temp;

/*6、游标(必须放在函数、存储过程等下面执行,单独不可以执行)*/

Delimiter $$Drop Procedure If Exists usp_TempProcedure; $$Create Procedure usp_TempProcedure()Label_Return:begin-- 需要定义接收游标数据的变量 DECLARE a CHAR(36);-- 遍历数据结束标志DECLARE done INT DEFAULT FALSE;-- 游标DECLARE cur CURSOR FOR SELECT eventid FROM ttEvents limit 10;-- 将结束标志绑定到游标DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;-- 打开游标OPEN cur;-- 开始循环read_loop: LOOP-- 提取游标里的数据,这里只有一个,多个的话也一样;FETCH cur INTO a;-- 声明结束的时候IF done THENLEAVE read_loop;END IF;-- 这里做你想做的循环的事件select a;#    INSERT INTO t VALUES (a);END LOOP;-- 关闭游标CLOSE cur;end; $$delimiter ;call usp_TempProcedure();

/*7、声明变量 与赋值*/

set @num='string';select @EventId :=eventid from ttevents;

/*8、判断表是否存在,如果存在则删除*/

Drop Table If Exists tempTemporary;

/*9、动态执行SQL 语句*/

set @ss='select * from ttevents limit 10;';PREPARE s1 FROM @ss;execute s1;set @col=concat('a','.','eventid');set @ss=concat('select ',@col,' from ttevents a limit 10;');PREPARE s1 FROM @ss;execute s1;

/*10、开启执行计划*/

 set global event_scheduler =1;

/*11、创建登录MariaDB账号赋予权限*/

select * from mysql.user# mariadb create account and password# method oneCREATE USER 'tom'@'%' IDENTIFIED BY '1';# delete accountDROP USER 'tom'@'%';# grant roles to account# 授权tom用户拥有smartevent数据库的所有权限。 grant all privileges on smartevent.* to 'tom'@'%' identified by '1'; # 权限回收revoke select,drop,update on smartevent.* from tom;grant select on smartevent.* to 'tom'@'%' identified by '1'; # 刷新特权flush privileges;

/*12、check audit 插件*/

show global variables like '%plugin_dir%';install plugin server_audit soname 'server_audit.dll';show global variables like '%server_audit%';set global server_audit_events='QUERY';set global server_audit_LOGGING='ON';

/*13、批量语句更新*/

UPDATE ToSchedules as xINNER JOIN TtEventSessions as s ON  s.TenantId = @TenantId AND s.SessionId = x.OriSessionId SET x.DtStart = s.DtStart,x.DtEnd = s.DtStart,x.TimeStart = s.TimeStart,x.TimeEnd = s.TimeEnd,x.Subject = s.Name,x.Descr = IFNULL(s.Intro,''),x.ModifiedOn = s.ModifiedOn,x.ModifiedBy = s.ModifiedByWHERE x.TenantId=@TenantId AND x.UserId = @UserId;

/*14、数据库版本检查*/

#检查版本SELECT @@VERSION;

/*15、虚拟列*/

#创建测试表create table smartx_temp.temp_user(uid int AUTO_INCREMENT primary key,jsondata json);#插入数据insert into smartx_temp.temp_user values (NULL,'{"name":"wang","address":"shenyang"}');insert into smartx_temp.temp_user values (NULL,'{"name":"zhao","address":"riben"}');#虚拟列前验证效果EXPLAINSELECT * FROM user WHERE user_name='zhao';#新建虚拟列alter table user add user_name varchar(20) generated always as (json_value(jsondata,'$.name'));#新建虚拟列索引alter table user add index idx_name(user_name);#验证效果EXPLAINSELECT * FROM user WHERE user_name='zhao';#删除虚拟列alter table user drop column user_name;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何使用智能合约铸造 NFT —— 以 NftMarket 合约为例
  • 部署自己的对话大模型,使用Ollama + Qwen2 +FastGPT 实现
  • 机器学习中的数据详解:数据类型、划分、属性等
  • 蚂蚁数科,独行的170天和未来新征程
  • Python 线程池:并发编程的高效工具
  • 跟《经济学人》学英文:2024年09月07日这期 How fashion conquered television
  • 一文300字从0到1使用Postman轻松搞定文件上传测试!
  • 传承中华文脉·弘扬北疆文化“四季内蒙古演出季”区内外文艺院团交流演出活动即将启动
  • 基于SpringBoot的在线购物平台
  • VS2022中文字符输出为乱码的解决
  • Linux中的scp 如何使用
  • Android自动化2️⃣元素定位工具
  • C++系列-STL中find相关的算法
  • 【Java】多态性【主线学习笔记】
  • qt QGraphicsScene场景坐标和场景内GraphicsItem局部坐标的相互转换
  • canvas 五子棋游戏
  • JDK9: 集成 Jshell 和 Maven 项目.
  • nodejs实现webservice问题总结
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • spring学习第二天
  • Terraform入门 - 3. 变更基础设施
  • Webpack 4x 之路 ( 四 )
  • Zepto.js源码学习之二
  • 服务器从安装到部署全过程(二)
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 设计模式走一遍---观察者模式
  • 试着探索高并发下的系统架构面貌
  • 算法-图和图算法
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 推荐一个React的管理后台框架
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 学习Vue.js的五个小例子
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​io --- 处理流的核心工具​
  • ​secrets --- 生成管理密码的安全随机数​
  • #define用法
  • #微信小程序:微信小程序常见的配置传值
  • (160)时序收敛--->(10)时序收敛十
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (回溯) LeetCode 78. 子集
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (转)Sql Server 保留几位小数的两种做法
  • ***原理与防范
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET CORE Aws S3 使用
  • .NET Core Web APi类库如何内嵌运行?
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET Framework .NET Core与 .NET 的区别
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .net生成的类,跨工程调用显示注释
  • [] 与 [[]], -gt 与 > 的比较
  • [52PJ] Java面向对象笔记(转自52 1510988116)
  • [acwing周赛复盘] 第 69 场周赛20220917
  • [C/C++] -- 二叉树
  • [CLickhouse] 学习小计