mysql函数

Mysql调试技巧

让人想犯罪 __ 提交于 2019-12-19 19:17:14
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Mysql调试技巧 转至元数据结尾 附件: 转至元数据起始 Mysql存储过程&函数调试技巧 1、在存储过程中添加SELECT 变量1,变量2;在命令行调用存储过程后会输出对应变量。 2、使用调试工具:dbForge Studio for MySQL 2.1. 生成调试信息:右击要调试的过程--"Debug"--"Compile for Debugging' 2.2. 设置断点 2.3. 单步调试 2.3. 查看变量数值 鼠标移到变量上方或者选中变量点右键选择"Add Wath" 来源: oschina 链接: https://my.oschina.net/u/2363367/blog/630718

MySQL的注入总结

故事扮演 提交于 2019-12-19 18:44:25
0x01 MySQL 5.0以上和MySQL 5.0以下版本的区别 MySQL5.0以上版本存在一个叫 information_schema 的数据库,它存储着数据库的所有信息,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型和访问权限等。 而5.0以下没有。 information_schema 系统数据库,记录当前数据库的数据库,表,列,用户权限信息 SCHEMATA 存储mysql所有数据库的基本信息,包括数据库名,编码类型路径等。 查询数据库: http://localhost/sqli-labs/Less-2/index.php?id=-1 union select 1,2,group_concat(schema_name) from information_schema.schemata # TABLES 存储mysql中的表信息,包括这个表是基本表还是系统表,数据库的引擎是什么,表有多少行,创建时间,最后更新时间等。 查询security库的表: http://localhost/sqli-labs/Less-2/index.php?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table

23个MySQL常用查询语句

巧了我就是萌 提交于 2019-12-19 13:13:05
一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,=< 二查询字符串 SELECT * FROM tb_stu WHERE sname = '小刘' SELECT * FROM tb_stu WHERE sname like '刘%' SELECT * FROM tb_stu WHERE sname like '%程序员' SELECT * FROM tb_stu WHERE sname like '%PHP%' 三查询日期型数据 SELECT * FROM tb_stu WHERE date = '2011-04-08' 注:不同数据库对日期型数据存在差异: : (1)MySQL:SELECT * from tb_name WHERE birthday = '2011-04-08' (2)SQL Server:SELECT * from tb_name WHERE birthday = '2011-04-08' (3)Access:SELECT * from tb_name WHERE birthday = #2011-04-08# 四查询逻辑型数据 SELECT * FROM tb_name WHERE type = 'T' SELECT * FROM tb_name WHERE

Socket网络编程--小小网盘程序(5)

核能气质少年 提交于 2019-12-19 08:59:46
  各位好呀!这一小节应该就是这个小小网盘程序的最后一小节了,这一节将实现最后的三个功能,即列出用户在服务器中的文件列表,还有删除用户在服务器中的文件,最后的可以共享文件给好友。   列出用户在服务器中的文件列表   增加一个结构体 1 struct FileList 2 { 3 int cnt; 4 char list[16][128]; 5 };   为了方便我就假设服务器最多可以存16个单个用户的文件。如果想要支持更多的文件,这里可以增加一个int pages;用于分页作用,我们在服务器中获取文件时,可以根据分页进行发送。这样既方便又能支持多文件。   client.cpp这个客户端文件增加一个函数 1 int file_list(struct Addr addr,struct User user) 2 { 3 struct sockaddr_in servAddr; 4 struct hostent *host; 5 struct Control control; 6 struct FileList filelist; 7 int sockfd; 8 9 host=gethostbyname(addr.host); 10 servAddr.sin_family=AF_INET; 11 servAddr.sin_addr=*((struct in_addr *)host->h

mysql存储过程详解

限于喜欢 提交于 2019-12-19 05:43:22
mysql存储过程详解 1. 存储过程简介   我们常用的操作数据库语言 SQL 语句在执行的时候需要要先编译,然后执行,而存储过程( Stored Procedure )是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。   一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有 SQL 语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。 存储过程通常有以下优点: (1). 存储过程增强了 SQL 语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2). 存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的 SQL 语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3). 存储过程能实现较快的执行速度。如果某一操作包含大量的 Transaction-SQL 代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化

MySQL高级操作(一)

妖精的绣舞 提交于 2019-12-19 04:03:22
新增操作 基本语法: insert into 表名 [(字段名字)] values (值列表); 主键冲突 在数据插入的时候,假设主键对应的值已经存在,插入一定会失败 分组操作 Group by: 基本语法:group by 字段名 select * from student group by gender; SQL提供一系列统计函数 Count() : 统计分组后的记录数:每一组有多少记录 Max() :统计每组中最大的值 Min() :统计最小值 Avg(): 统计平均值 Sum :统计和 select gender,count(*) ,max(age) , min(age), avg(age) ,sum(age) from student group by gender; Count函数:里面可以使用两种参数:*代表统计记录,字段名代表统计对应的字段(null,不统计) 多字段排序 select c_id , sex , count(*) from my_student group by c_id ,sex; group_concat(字段) :可以对分组中的某个字段进行字符串连接 select c_id , sex , count(*) ,group_contact(name) from my_student group by c_id ,sex; Having子句 --

MySQL最常用分组聚合函数

安稳与你 提交于 2019-12-19 03:57:20
一、聚合函数(aggregation function)---也就是组函数   在一个行的集合(一组行)上进行操作,对每个组给一个结果。 常用的组函数:   ②默认情况下,组函数忽略列值为null的行,不参与计算  ①每个组函数接收一个参数   ③有时,会使用关键字distinct剔除字段值重复的条数 注意:   1)当使用组函数的select语句中没有group by子句时,中间结果集中的所有行自动形成一组,然后计算组函数;   2)组函数不允许嵌套,例如:count(max(…));   3)组函数的参数可以是列或是函数表达式;   4)一个SELECT子句中可出现多个聚集函数。 实验演示用表: mysql> select * from salary_tab; +--------+---------+ | userid | salary | +--------+---------+ | 1 | 1000.00 | | 2 | 2000.00 | | 3 | 3000.00 | | 4 | NULL | | 5 | 1000.00 | +--------+---------+ 5 rows in set (0.00 sec) mysql> use TENNISmysql> show tables; +-------------------+ | Tables_in_TENNIS

mysql 注入基础知识

元气小坏坏 提交于 2019-12-19 03:36:08
(1)注入的分类 ---仁者见仁,智者见智 。 下面这个是阿德玛表哥的一段话,个人认为分类已经是够全面了。理解不了跳过,当你完全看完整个学习过程后再回头看这段。能完全理解下面的这些每个分类,对每个分类有属于你的认知和了解的时候,你就算是小有成就了,当然仅仅是 sql 注入上。 基于从服务器接收到的响应 ▲基于错误的 SQL 注入 ▲联合查询的类型 ▲堆查询注射 ▲SQL 盲注 •基于布尔 SQL 盲注 •基于时间的 SQL 盲注 •基于报错的 SQL 盲注 基于如何处理输入的 SQL 查询 (数据类型) •基于字符串 •数字或整数为基础的 基于程度和顺序的注入 (哪里发生了影响) ★一阶注射 ★二阶注射 一阶注射是指输入的注射语句对 WEB 直接产生了影响,出现了结果;二阶注入类似存储型 XSS,是指输入提交的语句,无法直接对 WEB 应用程序产生影响,通过其它的辅助间接的对 WEB 产生危害,这样的就被称为是二阶注入. 基于注入点的位置上的 ▲通过用户输入的表单域的注射。 ▲通过 cookie 注射。 ▲通过服务器变量注射。(基于头部信息的注射) (2)系统函数介绍 几个常用函数: 1. version()——MySQL 版本 2. user()——数据库用户名 3. database()——数据库名 4. @@datadir——数据库路径 5.@@version_compile

MySQL存储过程

允我心安 提交于 2019-12-18 20:15:51
存储过程简介 SQL语句需要先编译在执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经过编译后存储在数据库中,用户通过制定存储过程的名字以及参数(如果有入口参数的话)来执行它. 存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。 存储过程的优点: (1). 增强SQL语言的功能和灵活性 :存储过程可以用控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2). 标准组件式编程 :存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3). 较快的执行速度 :如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。 (4). 减少网络流量: 针对同一个数据库对象的操作

MySQL的FIND_IN_SET()函数

独自空忆成欢 提交于 2019-12-18 20:02:56
今天在做项目时,看到了一个从没见过的MySQL函数——FIND_IN_SET(),顿时就产生了浓郁的兴趣,然后就搜了搜,翻了翻。 语法: FIND_IN_SET(str,strlist) 定义 : 1. 假如 字符串 str 在由 N 子链组成的 字符串列表 strlist 中,则返回值的范围在1到 N 之间。 2. 一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。 3. 如果第一个参数是一个常数字符串,而第二个是typeSET列,则FIND_IN_SET()函数被优化,使用 比特 计算。 4. 如果 str 不在 strlist 或 strlist 为空字符串,则返回值为0。 5. 如任意一个参数为NULL,则返回值为NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。 strlist :一个由英文逗号“,”链接的字符串,例如:"a,b,c,d",该字符串形式上类似于SET类型的值被逗号给链接起来。 示例: SELECT FIND_IN_SET('b','a,b,c,d'); //返回值为2,即第2个值 一篇较详细的文章: http://blog.sina.com.cn/s/blog_5b5460eb0100e5r9.html mysql中的 IN和FIND_IN_SET的查询问题 原来以为mysql可以进行这样的查询 select id,