sql注入之sql基本语法
(持续更新)学习网站推荐www.w3school.com.cnsqlzoo.net一、SELECT查询语句SELECT 列 FROM 表 WHERE 条件;SQL SELECT 语法SELECT 列名称 FROM 表名称以及SELECT * FROM 表名称1.SELECT population FROM world WHERE name Germany主要目的是输出人口后面的都是约束条件约束条件输出在表world中germany在name列对应的人口是多少最终输出Germany的人口2.当需要输出多个国家的人口时语句如下SELECT population FROM world WHERE name IN (Sweden, norway, Denmark);a.只能匹配单个值b.IN可以匹配列表中的任意一个值c.等价于WHERE name SwedenOR name NorwayOR name Denmark3.SELECT name, area FROM world WHERE area BETWEEN 200000 AND 250000这个是输出区域大小在200000与250000之间的name和area4.SELECT name, continent, population FROM world查询表中这三列的全部信息没有条件过滤SELECT * FROM语句使用符号 * 取代列的名称就像这样SELECT * FROM Persons查询出来persons表中的全部列。二、WHERE条件过滤(注入高亮)语法SELECT 列名称 FROM 表名称 WHERE 列 运算符 值1.SELECT name FROM world WHERE population 200000000后面加了一个WHERE就是条件过滤输出的是人口至少为200000000的国家name如果没有加WHERE输出的是表中全部的name2.SELECT name,GDP/population FROM world WHERE population200000000给出那些人口至少2亿的国家的人均GDP三、INSERT INTO语句INSERT INTO 语句用于向表格中插入新的行。1.语法INSERT INTO 表名称 VALUES (值1, 值2,....)没有指定的列的话是全部插入2.我们也可以指定所要插入数据的列INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)3. 插入的值是字符串时用单引号四、Update 语句Update 语句用于修改表中的数据。1.语法UPDATE 表名称 SET 列名称 新值 WHERE 列名称 某值2.更新某一行的一个列的信息UPDATE user SET Password123 WHERE id 123.更新某一行的多个列UPDATE user SET Password123,Email234112qq.com WHERE id 12五、DELETE 语句DELETE 语句用于删除表中的行。语法DELETE FROM 表名称 WHERE 列名称 对应要删除的值六、AND OR 运算符注入高亮AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤。1.AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。2.如果第一个条件和第二个条件都成立则 AND 运算符显示一条记录。3.如果第一个条件和第二个条件中只要有一个成立则 OR 运算符显示一条记录。4.使用 AND 来显示所有姓为 Carter 列名并且名为 Thomas列名 的人SELECT * FROM Persons WHERE FirstNameThomas AND LastNameCarter注入where与or结合如id1 or 11 可以查询所有记录七、ORDER BY 语句OEDER BY 语句用于对结果集进行排序。1.ORDER BY 语句用于根据指定的列对结果集进行排序。2.ORDER BY 语句默认按照升序对记录进行排序。SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber列出了Company, OrderNumber这两列且主排序是Company排完之后再按照OrderNumber再进行次排序3.按照降序对记录进行排序可以使用 DESC 关键字。ELECT Company, OrderNumber FROM Orders ORDER BY Company DESCSELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASCcompany是降序ordernumber是升序4.【注入高亮】order by 后面加数字表示按第几列排序常用来判断查询结果的字段数联合注入的第一步SELECT *FROM user ORDER BY 1表示表user的所有行列按照第一列进行升序排序八、LIMIT语句限制结果1.-- 返回前5条记录SELECT * FROM users LIMIT 5;-- 从第3条开始返回5条记录SELECT * FROM users LIMIT 2, 5;-- 或SELECT * FROM users LIMIT 5 OFFSET 2;2.【注入高亮】在盲注中用于逐条提取数据九、LENGTH()函数返回长度-- 基本用法SELECT LENGTH(Hello); -- 返回 5-- 计算字段值的长度SELECT name, LENGTH(name) AS name_length FROM users;九、DISTINCT语句结果去重在表中可能会包含重复值。这并不成问题不过有时希望仅仅列出不同distinct的值。关键词 DISTINCT 用于返回唯一不同的值。1.SELECT Company FROM Orders输出结果是company列的所有值SELECT DISTINCT Company FROM Orders输出结果是company去重之后的值十、注释符--空格#/*注释内容*/【注入高亮】用于闭合原sql语句后注释掉后面原有的部分十一、常用函数1.count函数a.SQL COUNT(column_name) 语法COUNT(column_name) 函数返回指定列的值的数目NULL 不计入SELECT COUNT(column_name) FROMtable_nameb.SQL COUNT(*) 语法COUNT(*) 函数返回表中的记录数总行数包括nullSELECT COUNT(*) FROMtable_namec.SQL COUNT(DISTINCTcolumn_name) 语法COUNT(DISTINCTcolumn_name) 函数返回指定列的不同值的数目SELECT COUNT(DISTINCTcolumn_name) FROMtable_named.SELECT COUNT(Customer) AS CustomerNilsen FROM Orders WHERE CustomerCarterAS CustomerNilsen是一个 列别名上面语句执行流程首先SQL 会执行WHERE CustomerCarter条件筛选出客户是 “Carter” 的所有订单记录。从您的数据看是 O_Id 为 2 和 6 的两行。然后对筛选出的这两行数据计算COUNT(Customer)即统计Customer列的非空值数量结果为 2。最后将这个结果值2放入查询结果集中并将这个结果列的名称显示为CustomerNilsen而不是默认的COUNT(Customer)或一个空名。2.sum()函数SUM 函数返回数值列的总数总额。SQL SUM() 语法SELECT SUM(column_name) FROMtable_name3.AVG函数AVG 函数返回数值列的平均值。NULL 值不包括在计算中。SQL AVG() 语法SELECT AVG(column_name) FROMtable_name4.CONCAT函数功能CONCAT() 函数用于连接两个或多个字符串返回拼接后的字符串。语法CONCAT(string1, string2, ..., stringN)示例-- 连接两个字符串 SELECT CONCAT(Hello, World); -- 返回 Hello World -- 连接多个字符串 SELECT CONCAT(Hello, , SQL, !); -- 返回 Hello SQL! -- 连接表中的字段 SELECT CONCAT(first_name, , last_name) AS full_name FROM users; -- 包含数字或NULL SELECT CONCAT(ID: , user_id, , Name: , username) AS info FROM users; -- NULL与字符串连接时结果为NULL注意如果有任一参数为NULLMySQL的CONCAT()会返回NULL5.SUBSTR()函数a.SUBSTR()函数是 SQL 中用于提取字符串子串的函数。它的基本语法如下b.SUBSTR(string, start_position, [length])-- 在某些数据库如 MySQL、SQL Server中也可能写作 SUBSTRING()c.参数说明string要处理的原始字符串。start_position子串开始的位置整数。在大多数数据库中位置从 1 开始计数不是 0。length可选要提取的字符长度。如果省略则提取从起始位置到字符串末尾的所有字符。示例SELECT SUBSTR(Hello World, 7, 5); -- 返回 WorldSELECT SUBSTR(Hello World, 7); -- 返回 WorldSELECT SUBSTR(ABCDE, 2, 3); -- 返回 BCD【注入高亮】在SQL 注入攻击中SUBSTR()通常被攻击者用于盲注Blind SQL Injection 场景目的是逐字符提取数据库中的敏感信息如管理员密码、用户数据等。十二、UNION操作符UNION 操作符用于合并两个或多个 SELECT 语句的结果集。1.请注意UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时每条 SELECT 语句中的列的顺序必须相同。2.默认地UNION 操作符选取不同的值。如果允许重复的值请使用 UNION ALL。3.UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名4.SQL UNION 语法SELECTcolumn_name(s)FROMtable_name1UNION SELECTcolumn_name(s)FROMtable_name2SQL UNION ALL 语法SELECTcolumn_name(s)FROMtable_name1UNION ALL SELECTcolumn_name(s)FROMtable_name2
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2415774.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!