sql函数

SQL注入汇总(手注,盲注,报错注入,宽字节,二次编码,http头部){10.22、23 第二十四 二十五天}

Deadly 提交于 2019-12-02 06:46:11
首先什么是SQL注入:   所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 SQL注入有什么危害?   危害:数据泄露、脱库、篡改网站、破坏数据库、植入后门、getshell(获取网站权限) 为什么会有SQL注入漏洞?   后端代码在执行的过程将用户输入的数据也当做代码来执行,违背一个原则:代码和数据相分离(本质问题)   前段传递的数据可以随意控制,参数可控;后端对前段传递过来的数据没有过滤或者过滤不严谨,最终导致SQL注入(注入的原因) 首先本人现在只学了四五种SQL注入方式,仅作为学习参看,如有错误多多见谅=。= SQL注入本人认为只要能找到注入点就简单了,大不了各种方式往上面试喽,虽然时间成本很大。 所以所只要在有跟数据库进行交互的地方就有可能出现SQL漏洞,在这些地方找注入点就很重要啦。 SQL注入常用的数据库函数及常量 常用的数据库函数以及常量 @@tmpdir 临时目录 @@datadir @@basedir 数据库所在的位置 @@version 版本 @@hostname 当前数据库名字 user() version() 版本 database() 获取数据库 concat() group_concat() concat_wa() substr():oracle,mysql,mssq

关于Oracle和PL/SQL的学习记录4

我只是一个虾纸丫 提交于 2019-12-02 05:26:22
------数据查询中函数的使用------ 1.count函数-聚合函数 select count(sdept) from stu where sdept like '12计算机'; select count(*) from stu where sdept = '12计算机'; count函数通常与关键字distinct一起使用,关键字distinct用于消除重复记录,与关键字dsitinct一起使用可以统计表中不重复的记录个数 关键字distinct应该写在count()函数里面,并就其中不重复的列进行统计,不能使用*,否则会报错 2.sum函数-聚合函数 select sum(salary) from Salary; sum函数只能对数值数据类型的列求和; sum函数也支持distinct关键字,如果使用distinct关键字,则统计汇总的总工资是消除了重复记录的数目; 3.avg函数-聚合函数 select avg(salary) from Salary; avg函数只允许对数值型数据进行操作 4.max函数-聚合函数 select max(sage) 男生最大年龄 from stu where sgender = '男'; max函数可以用于非数值的数据中: select max(sname) from stu; 系统返回的是姓名sname字段的字符串最大值

sql的一些函数总结

独自空忆成欢 提交于 2019-12-02 03:01:07
参考:https://blog.csdn.net/Mary19920410 1.group_concat() 功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。 语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] ) 说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。 例子:使用group_concat()和group by显示相同名字的人的id号: 2.concat_ws()函数: 功能:和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符~(concat_ws就是concat with separator) 语法:concat_ws(separator, str1, str2, ...) 说明:第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。 3.concat()函数 功能:将多个字符串连接成一个字符串。 语法:concat(str1, str2,...) 返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。 来源: https://www

SQL语句——05、类型转换函数

烂漫一生 提交于 2019-12-01 20:35:48
类型转换概述 在赋值语句中数据类型会隐式转换,隐式转换应当尽量避免,因为写出来的SQL难理解,随着时间流逝自己都很难理解。特别是嵌入到大型程序中时,另外,oracle升级会修改隐式转换的规则,这会使程序移植遇到问题。 尤其是索引列不能使用隐式转换,这样就不走索引 。 赋值语句中oracle的自动转换规则: 将变长字符型(varchar2)或定长字符型(char)转换成数值型(number) 将变长字符型(varchar2)或定长字符型(char)转换成日期型(date) 将数值型(number)转换成变长字符型(varchar2) 将日期型(date)转换成变长字符型(varchar2) 表达式中oracle的自动转换规则: 将变长字符型(varchar2)或定长字符型(char)转换成数值型(number) 将变长字符型(varchar2)或定长字符型(char)转换成日期型(date) 转换成功的条件: 在将字符型数据转换成数字型时,要保证字符型数据为有效的数。 在将字符型数据转换成日期型时,要保证字符型数据位有效的日期。 ----拿字符和数字比较 oracle自动将字符串转成了数字 SQL> select ename,sal from emp where sal > '4000'; ENAME SAL ---------- ---------- KING 5000 ---

SQL 窗口函数 滚动累加

二次信任 提交于 2019-12-01 13:57:39
滚动累加有两种方式: 1.第一种方式,抱歉我贴了一段自己写的SQL,大家只看蓝色标记的即可 DROP TABLE IF EXISTS tmp.tmp_group_bg_sales_budget_mth_2; create table tmp.tmp_group_bg_sales_budget_mth_2 STORED AS ORC AS select bg_wid ,substr(sales_dt_wid,1,6) AS month_id ,substr(sales_dt_wid,1,4) AS year_id ,sum(coalesce(amt_bf_without_tax,0)) AS amt_bf_without_tax ,sum(coalesce(amt_af_without_tax,0)) AS amt_af_without_tax ,sum(sum(coalesce(amt_bf_without_tax,0))) OVER (PARTITION BY bg_wid,substr(sales_dt_wid,1,4) ORDER BY substr(sales_dt_wid,1,6)) AS amt_bf_without_tax_yth_ytd ,sum(sum(coalesce(amt_af_without_tax,0))) OVER (PARTITION BY bg

SQL窗口函数

大城市里の小女人 提交于 2019-12-01 13:55:21
在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成。为了解决这些问题,在2003年ISO SQL标准加入了开窗函数,开窗函数的使用使得这些经典的难题可以被轻松的解决。目前在 MSSQLServer、Oracle、DB2 等主流数据库中都提供了对开窗函数的支持,不过非常遗憾的是 MYSQL 暂时还未对开窗函数给予支持。 为了更加清楚地理解,我们来建表并进行相关的查询(截图为MSSQLServer中的结果) MYSQL,MSSQLServer,DB2: CREATE TABLE T_Person ( FName VARCHAR ( 20 ), FCity VARCHAR ( 20 ), FAge INT , FSalary INT ) Oracle: CREATE TABLE T_Person ( FName VARCHAR2( 20 ), FCity VARCHAR2( 20 ), FAge INT , FSalary INT ) 注:以下结果只在MSSQLServer中演示。 T_Person 表保存了人员信息,FName 字段为人员姓名,FCity 字段为人员所在的城市名,FAge 字段为人员年龄,FSalary 字段为人员工资。然后执行下面的SQL语句向 T_Person表中插入一些演示数据: INSERT INTO T

sql中的窗口函数、用户变量和存储过程

我怕爱的太早我们不能终老 提交于 2019-12-01 13:55:04
窗口函数 工作中经常用到mysql,竟然没听过窗口函数,说明我的基础还不够,随时保持学习的态度。 窗口函数 ,也可以被称为OLAP函数或分析函数。mysql之前并不支持窗口函数,但也可以用其他方法实现,但mysql8.0是有窗口函数的,可以看看 这篇文档 。 先看看别人的笔记,学习一下: SQL Server中的窗口函数 oracle:分析函数(评级函数、窗口函数等) 使用变量解决问题 问题: 编一个问题如下:一个人玩了20次掷骰子的游戏,记录每次骰子的点数,得到如下数据表 game_table 。 id (次数) p (点数) 1 3 2 5 3 2 4 1 5 3 6 4 7 6 8 6 9 5 10 1 11 1 12 1 13 3 14 6 15 5 16 2 17 4 18 4 19 5 20 3 现在他想知道, 至少连续两次 出现了 相同的点数 的记录有哪些,怎样用 mysql 实现? 先给出 结果 如下: id (次数) p (点数) 7 6 8 6 10 1 11 1 12 1 17 4 18 4 select id, p , @p_2 , if ( p= @p_2 , @rank , @rank + 1 ) as y, ( @p_2 = p) as p from game_table, ( select @p_2 := 0 ) as a , ( select

SQL Server常用函数汇总

只愿长相守 提交于 2019-12-01 11:55:36
聚合函数 若要汇总一定范围的数值,请使用以下函数: SUM 返回表达式中所有值的总和。 语法 SUM(aggregate) SUM 只能与包含数值的字段一起使用。将忽略空值。 AVERAGE 返回表达式中所有非空值的平均值(算术平均值)。 语法 AVERAGE(aggregate) AVERAGE 只能与包含数值的字段一起使用。将忽略空值。 MAX 返回表达式中的最大值。 语法 MAX(aggregate) 对于字符列,MAX 将按排序顺序来查找最大值。将忽略空值。 MIN 返回表达式中的最小值。 语法 MIN(aggregate) 对于字符列,MIN 将按排序顺序来查找最小值。将忽略空值。 COUNT 返回组中非空项的数目。 语法 COUNT(aggregate) COUNT 始终返回 Int 数据类型值。 COUNTDISTINCT 返回组中某项的非空非重复实例数。 语法 COUNTDISTINCT(aggregate) STDev 返回某项的非空值的标准偏差。 语法 STDEV(aggregate) STDevP 返回某项的非空值的总体标准偏差。 语法 STDEVP(aggregate) VAR 返回某项的非空值的方差。 语法 VAR(aggregate) VARP 返回某项的非空值的总体方差。 语法 VARP(aggregate) 条件函数 若要测试条件,请使用以下函数:

SQL --------------- count() 函数

孤街浪徒 提交于 2019-12-01 07:52:44
COUNT() 函数返回符合指定条件的行数。 SQL COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入),但是为空会记录 语法: select count(表中字段) from 表名 建一个表弄点数据,注意 rem 字段 查找 字段有多少行 与as 一快使用,为null 不记录,但是为空记录 与where 字句一块使用 COUNT(*) COUNT(*) 函数返回表中的记录数,无需再指定字段 语法: select count(*) as 记录数 from 表名 COUNT(DISTINCT 字段) 返回指定列的不同值的数目 注意:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。 语法: select COUNT(DISTINCT 字段名)as 工资行数 from 表名 代码 -- sql count 函数 -- 语法: count(字段名) from 表名 select COUNT(Bank) from obgetest -- 当有的字段中数据为null时,不计为null的那一行,但是为空也记录 select COUNT(rem) as 备注行数 from obgetest -- 与where字句一快进行使用 select COUNT(Bank)

12. oracle 常用函数

最后都变了- 提交于 2019-12-01 05:33:57
一、字符函数 字符函数是oracle中最常用的函数,我们来看看有哪些字符函数: lower(char):将字符串转化为小写的格式。 upper(char):将字符串转化为大写的格式。 length(char):返回字符串的长度。 substr(char, m, n):截取字符串的子串,n代表取n个字符的意思,不是代表取到第n个 replace(char1, search_string, replace_string) instr(C1,C2,I,J) -->判断某字符或字符串是否存在,存在返回出现的位置的索引,否则返回小于1;在一个字符串中搜索指定的字符,返回发现指定的字符的位置; C1 被搜索的字符串 C2 希望搜索的字符串 I 搜索的开始位置,默认为1 J 出现的位置,默认为1 问题:将所有员工的名字按小写的方式显示 SQL> select lower(ename) from emp; 问题:将所有员工的名字按大写的方式显示。 SQL> select upper(ename) from emp; 问题:显示正好为5个字符的员工的姓名。 SQL> select * from emp where length(ename)=5; 问题:显示所有员工姓名的前三个字符。 SQL> select substr(ename, 1, 3) from emp; 问题:以首字母大写