SQL注入常見函數
首先SQL語句對大小寫不敏感,這也導致了后台程序對大小寫的檢測失效。
SQL 注釋語句 ("--"與"/*...*/")
(1)--:表示單行注釋
(2)/*…*/:用於多行(塊)注釋
-
SELECT 查詢語句
SQL SELECT 語法
SELECT 列名稱 FROM 表名稱 SELECT * FROM 表名稱
-
UNION 操作符
UNION 操作符用於合並兩個或多個 SELECT 語句的結果集。
請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的列的順序必須相同。
SQL UNION 語法
SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2
注釋:默認地,UNION 操作符選取不同的值。如果允許重復的值,請使用 UNION ALL。
-
concat()
CONCAT 函數用於將兩個字符串連接為一個字符串 1、語法及使用特點: CONCAT(str1,str2,…) 返回結果為連接參數產生的字符串。如有任何一個參數為NULL ,則返回值為 NULL。可以有一個或多個參數。 2、使用示例: SELECT CONCAT(id, ‘,’, name) AS con FROM info LIMIT 1;
-
concat_ws()
使用函數CONCAT_WS()。 使用語法為:CONCAT_WS(separator,str1,str2,…) CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一個參數是其它參數的分隔符。分隔符的位置放在要連接的兩個字符串之間。分隔符可以是一個字符串,也可以是其它參數。如果分隔符為 NULL,則結果為 NULL。函數會忽略任何分隔符參數后的 NULL 值。但是CONCAT_WS()不會忽略任何空字符串。 (然而會忽略所有的 NULL)。 如SELECT CONCAT_WS('_',id,name) AS con_ws FROM info LIMIT 1;
-
group_concat()
GROUP_CONCAT函數返回一個字符串結果,該結果由分組中的值連接組合而成。 使用表info作為示例,其中語句SELECT locus,id,journal FROM info WHERE locus IN('AB086827','AF040764');的返回結果為
+----------+----+--------------------------+ | locus | id | journal | +----------+----+--------------------------+ | AB086827 | 1 | Unpublished | | AB086827 | 2 | Submitted (20-JUN-2002) | | AF040764 | 23 | Unpublished | | AF040764 | 24 | Submitted (31-DEC-1997) | +----------+----+--------------------------+
1、使用語法及特點:
GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]] [SEPARATOR str_val]) 在 MySQL 中,你可以得到表達式結合體的連結值。通過使用 DISTINCT 可以排除重復值。如果希望對結果中的值進行排序,可以使用 ORDER BY 子句。 SEPARATOR 是一個字符串值,它被用於插入到結果值中。缺省為一個逗號 (","),可以通過指定 SEPARATOR "" 完全地移除這個分隔符。 可以通過變量 group_concat_max_len 設置一個最大的長度。在運行時執行的句法如下: SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer; 如果最大長度被設置,結果值被剪切到這個最大長度。如果分組的字符過長,可以對系統參數進行設置:SET @@global.group_concat_max_len=40000;
2、使用示例:
語句 SELECT locus,GROUP_CONCAT(id) FROM info WHERE locus IN('AB086827','AF040764') GROUP BY locus;的返回結果為
+----------+------------------+ | locus | GROUP_CONCAT(id) | +----------+------------------+ | AB086827 | 1,2 | | AF040764 | 23,24 | +----------+------------------+
語句 SELECT locus,GROUP_CONCAT(distinct id ORDER BY id DESC SEPARATOR '_') FROM info WHERE locus IN('AB086827','AF040764') GROUP BY locus;的返回結果為
+----------+----------------------------------------------------------+ | locus | GROUP_CONCAT(distinct id ORDER BY id DESC SEPARATOR '_') | +----------+----------------------------------------------------------+ | AB086827 | 2_1 | | AF040764 | 24_23 | +----------+----------------------------------------------------------+
-
order by
ORDER BY 語句用於根據指定的列對結果集進行排序。
ORDER BY 語句默認按照升序對記錄進行排序。
如果您希望按照降序對記錄進行排序,可以使用 DESC 關鍵字。
實例:以(逆)字母順序顯示公司名稱
SELECT Company, OrderNumber FROM Orders ORDER BY Company (DESC)
-
group by
GROUP BY 語句用於結合合計函數,根據一個或多個列對結果集進行分組。
SQL GROUP BY 語法
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name
- 對XML文檔進行查詢和修改的函數extractvalue() 和 updatexml()
EXTRACTVALUE(XML_document, XPath_string);
UPDATEXML(XML_document, XPath_string, new_value);
-
if()
語法:IF(expr1,expr2,expr3)
其中,expr1是判斷條件,expr2和expr3是符合expr1的自定義的返回結果。
例如:
select if(il.status_id = 'INV_STTS_AVAILABLE','全新','二手') as status_id from inventory_location as il;
-
sleep()
執行select sleep(N)可以讓此語句運行N秒鍾
-
left()
LEFT(str,len)
返回最左邊的n個字符的字符串str,或NULL如果任何參數是NULL。
SELECT LEFT('foobarbar', 5);
-
count()
COUNT(column_name) 語法
COUNT(column_name) 函數返回指定列的值的數目(NULL 不計入):
SELECT COUNT(column_name) FROM table_name
SQL COUNT(*) 語法 COUNT(*) 函數返回表中的記錄數:
SELECT COUNT(*) FROM table_name
SQL COUNT(DISTINCT column_name) 語法 COUNT(DISTINCT column_name) 函數返回指定列的不同值的數目:
SELECT COUNT(DISTINCT column_name) FROM table_name
注釋:COUNT(DISTINCT) 適用於 ORACLE 和 Microsoft SQL Server,但是無法用於 Microsoft Access。
-
floor()
FLOOR() - 返回最大整數,使這個整數小於或等於指定數的數值運算。
-
round()
ROUND() – 四舍五入一個正數或者負數,結果為一定長度的值。
-
rand()
SQL 有一個 RAND 函數,用於產生 0 至 1 之間的隨機數
-
length()
返回字符串的長度,以字節為單位
語法:
LENGTH(string)
-
extract()
EXTRACT() 函數用於返回日期/時間的單獨部分,比如年、月、日、小時、分鍾等等。
EXTRACT(unit FROM date)
date 參數是合法的日期表達式。unit 參數可以是下列的值:
Unit 值 MICROSECOND SECOND MINUTE HOUR DAY WEEK MONTH QUARTER YEAR SECOND_MICROSECOND MINUTE_MICROSECOND MINUTE_SECOND HOUR_MICROSECOND HOUR_SECOND HOUR_MINUTE DAY_MICROSECOND DAY_SECOND DAY_MINUTE DAY_HOUR YEAR_MONTH