SQL注入(数据库基础)

2024-05-07 18:12

本文主要是介绍SQL注入(数据库基础),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、数据库基础

1.1 数据库识别

数据库默认端口号
Oracle1521
MySQL3306
SQL Server1433
PostgreSQL(国内不常见)5432
mongoDB27017
Redis6379
MemcacheDB11211

1.2 数据库版本查询

数据库方法/语句
MSSQLselect @@version
MySQLselect version() / select @@version
Oracleselect banner from v$version
PostgresQLselect version()

1.3 数据库字符串处理

字符串中的字符索引是从 1 开始的

MS SQL:

1、长度
len('abc') #32、截取左右
left('abc',2) #'ab'
right('abc',2) #'bc'3、截取中间
substring('abc',2,1) #'b'4、字符串连接
" + "

MySQL:

1、长度
length('abc'); #32、截取左右
left('abc',2); #ab
right ('abc'.2); #bc3、截取中间
substring('abc',2,1); #b
mid('abc',2,1); #b4、字符串连接
concat(" "," ");

Oracle:

1、长度
length('abc'); #32、截取左右
substr('abc',1,1); #a
substr('abc',3,1); #c3、截取中间
substr('abc',2,1); #b4、字符串连接
' ' || ' '

1.4 数据库高级操作

SQL高级操作:排序、分组、限定条数

排序 order by

SELECT * FROM test_table ORDER BY userid asc;#从小到大排序(默认)
SELECT * FROM test_table ORDER BY userid desc;#从大到小排序
SELECT * FROM test_table ORDER BY 1;#通过第一列从小到大排序

排序还可通过数字1,2……来代表第一列,第二列……来进行排序

分组 group by

SELECT name,COUNT(*) FROM test_table GROUP BY name;

执行顺序是先查询后分组

限定条数 limit

SELECT * FROM test_table limit 0,10; #表示从索引0开始查询十条记录
SELECT * FROM test_table limit 1,5; #表示从索引1开始查询五条记录

在使用limit时,其数据的索引是从0开始的,而不是字符串处理中的索引从1开始

联合查询 union select

SELECT * FROM test_table1 UNION SELECT * FROM test_table2;
SELECT * FROM test_table1 UNION ALL SELECT * FROM test_table2;
SELECT * FROM test_table UNION SELECT 1,2,3;

使用联合查询时需注意,查询两张表的列数必须得一致,不然该命令会报错。

当查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序是:

  1. 执行where xx对全表数据做筛选,返回第一个结果集
  2. 针对第一个结果集使用group by分组,返回第二个结果集
  3. 针对第二个结果集中的每一组数据执行select xx,有几组就执行几次,返回第三个结果集
  4. 针对第三个结果集执行having xx进行筛选,返回第四个结果集
  5. 针对第四个结果集排序

1.5 杂项

1、查看数据库编码

show variables like “%character%”;

这篇关于SQL注入(数据库基础)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/968016

相关文章

STM32 ADC多通道规则采样和注入采样

layout: post tags: [STM32] comments: true 文章目录 layout: post tags: [STM32] comments: true什么是ADC?STM32 ADC的特性采样模式采样时间代码实现 什么是ADC? Analog to Digital Converter,将模拟信号转换成数字的模数转换器,后面可能还会接触到DAC,恰

mybaits基础增删改查-------mybatis(四)

Mybatis的增删改查 mybatis流程: 1 创建实体类及接口方法 2 创建全局配置文件 configuration.xml 3 创建 sql 映射文件 BlogMapper.xml 4 将全局文件中维护 sql映射文件配置 5 调用java API 执行相关sql操作 注意sqlSession是线程非安全的 实体java类: package model;public class Blo

IDEA +maven git tomcat database数据库 调试 插件 log4j Spring junit

前言 idea优化配置、常规配置、配置maven、git、tomcat、database数据库、调试配置、插件配置、log4j配置、Spring配置等等,稍后一一更新! 优化配置(#item1 “item1”) 打开文件 :“idea – > bin – >idea64.exe.vmoptions” -Xms: 初始内存;-Xmx : 最大内存;-ReservedCodeCache

sort常用排序模式---------shell基础篇(三)

sort 排序命令使用 表达式意义sort -c test测试文件“test”是否已经经过排序,一般用处不大sort -k1 test.txt按照第1域对文件test.txt进行排序,日常可以用来对合并的日志文件进行时间排序sort -k1 -m log1.txt log2.txt按照第一域进行排序后合并输出到控制台,建议使用“>>” 将合并内容输出到另一个文件中sort -t / -k3 te

SQL的插入语句insert

插入数据分为以下几种方式: 1. 插入完整的行; 2. 插入行的一部分 3. 插入某些查询的结果 4. 从一个表复制到另一个表 1. 插入完整的行,有两种方式:    INSERT  INTO  Customers  VALUES ();                                   // 缺点:高度依赖表中列的定义次序,不能保证各列在下一次表

SQL中的limit

1.  select  prod_name  from  products  limit  5;    指示Mysql等DBMS返回不超过5行的数据 2.  select  prod_name  from  products  limit  5  offset  5;指示 Mysql等DBMS返回从第5行起的5行数据。  第一个数字是 检索的行数,第二个数字是指从哪里开始。 3.

dpkg: status database area is locked by another process 解决方法

解决办法:sudo rm -rf /var/lib/dpkg/lock 或者:rm -rf /var/lib/dpkg/lock

SpringBoot 学习六:数据库的增删改查

1、新建一个Girl类,添加如下代码: package controlle;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;@Entitypublic class Girl {@Id@GeneratedValueprivate Integer

SpringBoot 学习五:连接数据库

1、在pom.xml需要添加与数据库相关的两个依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>my