mysql自定义函数

对MYSQL注入相关内容及部分Trick的归类小结

一世执手 提交于 2020-02-21 09:16:48
前言 最近在给学校的社团成员进行web安全方面的培训,由于在mysql注入这一块知识点挺杂的,入门容易,精通较难,网上相对比较全的资料也比较少,大多都是一个比较散的知识点,所以我打算将我在学习过程中遇到的关于的mysql注入的内容给全部罗列出来,既方便个人之后的复习,也方便后人查找相关资料。 本文部分内容可能会直接截取其他大牛的文章,截取的内容我都会进行声明处理。如有侵权,请发email联系我(asp-php#foxmail.com)删除。 本文首发于先知社区,转载需注明来源+作者ID:Yunen。 Mysql简介 在正式讲解mysql注入的内容前,我认为还是有必要说明一下什么是mysql、mysql的特点是什么等内容,这些东西看起来可能对注入毫无帮助,开始却能很好的帮助我们学习,融会贯通。 MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种 关联数据库管理系统 ,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 MySQL是 开源 的,所以你不需要支付额外的费用。 MySQL使用 标准的 SQL 数据语言 形式。 MySQL可以运行于多个系统上,并且 支持多种语言 。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel

MySQL---二进制日志

泄露秘密 提交于 2020-02-18 06:42:37
mysql---二进制日志 记录了所有对MySQL数据库的修改事件,包括增删改查事件和对表结构的修改事件 二进制日志的开启 #是否启用了日志 mysql> show variables like 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | OFF | +---------------+-------+ [mysqld] log-bin [=DIR \ [filename]] log_bin=mysql-bin 名字可以随便起(mysql-bin) 格式 binlog_format={STATEMENT|ROW|MIXED} 语句(statement):默认的记录格式,基于段 行(row):定义的并非数据本身而是这一行的数据是什么 混合模式(mixed):交替使用行和语句、由mysql服务器自行判断 基于段的日志格式 优点 日志记录量相对较小,节约磁盘及网络IO 只对一条记录修改或者插入,row格式所产生的日志量小于段产生的日志量 缺点 必须要记录上下文信息,保证语句在从服务器上执行结果与主服务器相同 特定函数如UUID(),user()这样非确定性函数还是无法复制;可能造成MySQL复制的主备服务器数据不一致 操作 mysql

MySQL学习笔记——〇四

妖精的绣舞 提交于 2020-02-06 01:15:42
今天我们继续对MySQL内容进行一些补充,但是今天所讲的内容已经不是平时常用的了。 先穿插一条指令贯穿了今天所讲的所有知识点: MySQL结束符 结束符delimiter其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。 但是在今天的知识点中我们经常需要用到begin...end这种结构体,那么在结构体中的sql语句后的分号就不能作为结束符了,我们需要随便设置一个结束符,在结构体结束后再换回分号。 MySQL视图(View) 如果我们在日常进行数据库维护过程中需要一个重复的虚拟表,这个虚拟表的构建过程我们要敲很多次,MySQL给我们提供了一个对齐进行优化的方法_视图(View)。 视图的创建 比方我们今天需要对一个用户表中id>10的用户进行操作,这个操作要重复好多好多次,那么我们就要写好多次这样的代码 select *from (select * from table where id>10) as t; 这个时候,为了提高效率,我们就可以创建一个视图 create view v1 as select * from table where id>10; 这个时候我们只需要调用v1就可以了。 注意:视图是一个虚拟的表,是动态的

我的MYSQL学习心得(十) 自定义存储过程和函数

一曲冷凌霜 提交于 2020-02-01 20:20:30
自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有(内建)函数一样作用的新函数去扩展MySQL。 所以UDF是对MySQL功能的一个扩展 创建和删除自定义函数语法: 创建UDF:    CREATE [AGGREGATE] FUNCTION function_name(parameter_name type,[parameter_name type,...])    RETURNS {STRING|INTEGER|REAL}   runtime_body 简单来说就是:    CREATE FUNCTION 函数名称(参数列表)   RETURNS 返回值类型   函数体 删除UDF:    DROP FUNCTION function_name 调用自定义函数语法:    SELECT function_name(parameter_value,...) 语法示例: 创建简单的无参UDF CREATE FUNCTION simpleFun()RETURNS VARVHAR(20) RETURN "Hello World!"; 说明: UDF可以实现的功能不止于此,UDF有两个关键点,一个是参数,一个是返回值, UDF可以没有参数,但UDF必须有且只有一个返回值 在函数体重我们可以使用更为复杂的语法,比如

mysql学习笔记--- 字符串函数、日期时间函数

本秂侑毒 提交于 2020-02-01 17:07:59
一、常见字符串函数: 1、CHAR_LENGTH 获取长度(字符为单位) 2、FORMAT 格式化 3、INSERT 替换的方式插入 4、INSTR 获取位置 5、LEFT/RIGHT 取左、取右 6、LENGTH 获取长度(字节为单位) 7、LTRIM/RTRIM/TRIM 去空格(左/右/自定义) 8、STRCMP 字符串比较 9、CONCAT 字符串拼接 10、SUBSTRING 字符串截取 1、 CHAR_LENGTH:获取长度(字符为单位) CHAR_LENGTH() 解释:返回值为字符串str的长度,计算的单位为字符(一个中文也算一个字符) 举例: 如果是查询已知表格里的字段长度,可以这样写: 2、 FORMAT : FORMAT(X,D) 解释:将数字X的格式写为'#,###,###.##',以四舍五入的方式保留小数点后D位,并将结果以字符串的形式返回。若D为0, 则返回结果不带有小数点,或不含小数部分。 举例: 3、 INSERT:替换的方式插入 (,pos,,newstr) 解释:返回字符串str,从原str的pos位置开始,用字符串newstr来替换,替换的长度为len。 如果pos超过字符串长度,则返回值为原始字符串。假如len的长度超过后面字符串的长度,则从位置pos开始替换到字符串的结尾即可。 四个参数中若任何一个参数为的值为null

mysql 数据库学习笔记一

拥有回忆 提交于 2020-02-01 16:31:09
一、navicat的引入: (第三方可视化的客户端,方便MySQL数据库的管理和维护)安装网址:https://www.navicat.com.cn/ NavicatTM是一套快速、可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。 Navicat 是闻名世界、广受全球各大企业、政府机构、教育机构所信赖,更是各界从业员每天必备的工作伙伴,被公认为全球最受欢迎的MySQL前端用户介面工具。它可以用来对本机或远程的 MySQL、SQL Server、SQLite、Oracle 及 PostgreSQL 数据库进行管理及开发。 二、navicat工具的连接使用 1、选择需要连接的数据库类型 2、连接数据库:数据库地址,用户名称、用户密码 3、查询数据库 二、常见聚合函数:(组函数)在一个行的集合(一组行)上进行操作,对每个组给一个结果 常见聚合函数如下: 1、AVG:求平均值 2、COUNT:统计行 3、MIN / MAX:最小值、最大值 4 、SUM:求和 注意点: 1、每个组函数只接收一个参数 2、默认情况下,组函数忽略列值为null的行,不参与计算 3、可以用关键字distinc剔除字段值重复的条数 4

MySQL语法拾遗-存储程序

佐手、 提交于 2020-01-29 06:23:36
title: mysql语法拾遗-存储程序 date: 2019-11-11 12:23:49 categories: MySQL MySQL语法相关 tags: MySQL 语法指南 description: MySQL中的存储程序介绍(存储例程,触发器,事件) MySQL中的存储程序 自定义变量与语句结束符 自定义变量 set 使用 set 语句,自定义变量,变量名前要加’@'符号。可以将常量,某一搜索结果值,赋值给变量 -- 将1赋值给变量a set @a = 1 -- 将搜索结果赋值给多个变量 SELECT m1 , n1 FROM t1 LIMIT 1 INTO @a , @b -- 查看变量 select @a 语句结束符 delimiter delimiter 设置语句的语句结束分隔符,默认为’;’ delimiter $ SELECT * FROM t1 LIMIT 1 ; SELECT * FROM t2 LIMIT 1 ; SELECT * FROM t3 LIMIT 1 ; $ 存储函数与存储过程 存储函数 将MySQL语句封装到某一函数中。 创建存储函数 语句形式 : CREATE FUNCTION 函数名 ( ` [ 参数列表 ] ` ) RETURNS 返回值类型 BEGIN 函数体(以 ';' 分隔语句) END e.g. delimiter $

mysql---自定义函数

天涯浪子 提交于 2020-01-26 14:51:42
自定义函数 除了count()等内置函数外,可以创建一个适合自己需求的函数。 创建函数: delimiter // create function 函数名(参数名 类型) returns 返回值类型 begin 内部实现 end delimiter ; 例子:生成指定长度的内容随机的字符串 第一步:创建函数 delimiter // create function get_rand_str(length_str int) returns varchar(255) begin declare src_str varchar(128) default 'qazxswedcvfrtgbnhyujmkiolpQAZXSWEDCVFRTGBNHYUJMKIOLP'; declare rand_char varchar(1) default ''; declare i int default 0; declare res_str varchar(255) default ''; declare rand_index int default 0; while i < length_str do set rand_index = floor( RAND()*52 + 1); set rand_char = SUBSTR(src_str,rand_index,1); set res_str =

mysql存储过程

心不动则不痛 提交于 2020-01-22 13:47:52
什么是存储过程? 存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。 简化: 能完成一定操作的一组SQL语句。 存储过程的优点 存储过程 只在创造时进行编译 , 之后每次执行存储过程都不需要再重新编译, 而一般SQL语句每执行一次就编译一次, 所以使用存储过程可提高数据执行速度。 当对数据库进行复杂操作时, 可将此复杂操作存储过程封装起来与数据库提供的事务处理综合一起使用。 存储过程可以重复使用, 可减少数据库开发人员的工作量。 安全性高, 可设定只有某些用户才具有对指定存储过程的 使用权 。 存储过程的缺点 往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要 重写 原有的存储过程。 存储过程的性能调校与撰写,受限于各种数据库系统。 模板及关键语法 创建存储过程模板 CREATE [DEFINER = { user | CURRENT_USER }] -- 定义有权限调用此存储过程的用户, 只有super用户才能使用definer  PROCEDURE sp_name ([proc_parameter[,...]]) -- 存储过程名 [characteristic ...] routine_body -- 特征性的路由本体 proc_parameter: -- 存储过程参数 [ IN | OUT | INOUT ] param

问题の解决

折月煮酒 提交于 2020-01-22 01:27:30
接上篇( https://blog.csdn.net/qq_44868502/article/details/104043065 ) 任务已经完成了,明天回家没时间写博客了,先占坑,等初八回来再整理 关于解决问题的思路及方式 MySql自定义函数( https://www.cnblogs.com/w1995w/p/10606842.html ) MYSQL递归函数( https://blog.csdn.net/qq_44868502/article/details/104058503 ) JAVA遍历实现(目前是用的这种方式,效率不高) 最好的组合JAVA自定义树结构+MYSQL递归 来源: CSDN 作者: 一个谦虚的青年 链接: https://blog.csdn.net/qq_44868502/article/details/104056272