SQL注入
SQL注入(),也稱SQL隱碼或SQL注碼,是發生於應用程式與資料庫層的安全漏洞。簡而言之,是在輸入的字串之中夾帶SQL指令,在設計不良的程式當中忽略了字元檢查,那麼這些夾帶進去的惡意指令就會被資料庫伺服器誤認為是正常的SQL指令而執行,因此遭到破壞或是入侵。 原因 上的一幅漫画。该学生的姓名为“”,导致students表被删除。]] 在應用程式中若有下列狀況,則可能應用程式正暴露在SQL Injection的高風險情況下: 在應用程式…
共 27 篇文章
SQL注入(),也稱SQL隱碼或SQL注碼,是發生於應用程式與資料庫層的安全漏洞。簡而言之,是在輸入的字串之中夾帶SQL指令,在設計不良的程式當中忽略了字元檢查,那麼這些夾帶進去的惡意指令就會被資料庫伺服器誤認為是正常的SQL指令而執行,因此遭到破壞或是入侵。 原因 上的一幅漫画。该学生的姓名为“”,导致students表被删除。]] 在應用程式中若有下列狀況,則可能應用程式正暴露在SQL Injection的高風險情況下: 在應用程式…
查询语言或数据查询语言(Data Query Language, DQL)是用于从数据库或信息系统中查询数据的计算机语言。例如SQL语言是查询语言里比较知名的一种。 查詢語言範例 DMX(),在用於数据挖掘 LDAP LINQ MQL OQL() SPARQL SMARTS SQL DDL(資料定義語言) DML(資料操作语言) DCL(資料控制语言) XPath為XML路徑語言 *YQL 数据查询语言 數據查詢語言泛指向資料庫或信息系…
在SQL数据库中,处理组织架构、家族树、文件系统等层次模型数据的主要手段有两种:递归公用表表达式(Recursive CTE)与 CONNECT BY子语句。 层级查询(Hierarchical Query)是一种处理层次模型数据的SQL查询,本质上是更通用的“递归不动点查询(Recursive Fixpoint Queries)”的特殊形式,主要用于计算数据的传递闭包(Transitive Closures)。 自标准发布以来,层级查…
參數化查詢(parameterized query 或 parameterized statement)是指透過程式設計與資料庫進行查詢資料的時候,如果要查詢的特定欄位數值有變化,應該透過參數(parameter)的方式賦值,這個方法目前已被視為可有效預防SQL注入攻擊手法的防禦方式之一,另外除了安全因素外參數化查詢往往也較有資源、效能優勢。 安全原理 在使用參數化查詢的情況下,資料庫伺服器不會將參數的內容視為SQL指令的一部份來處理,…
在数据库管理系统(DBMS)中,预处理语句(Prepared Statement,又称参数化语句)是一种将SQL代码预先编译并存储,从而实现代码与数据分离的特性。其主要优势包括: 效率:由于无需重复编译,可以多次重复使用。 安全:通过减少或消除SQL注入攻击来提高安全性。 预处理语句采取预编译模板的形式,在每次执行时替换其中的常量值。它通常用于INSERT、SELECT或 UPDATE等DML语句。 预处理语句常见工作流: 准备 (Pr…
SQL中的集合操作(set operations)是一类允许将多个查询的结果合并为单个结果集的操作。SQL集合运算符包括 UNION(并集)、INTERSECT(交集)和 EXCEPT(差集),它们在数学集合论上对应于并集、交集、差集概念。 UNION运算符 在SQL中,UNION子句将两个SQL查询的结果合并为一个包含所有匹配行的单表。为了进行合并,两个查询必须产生相同数量的列,且对应列的数据类型必须兼容。除非使用UNION ALL,…
SQL中的ORDER BY子句用于指定SELECT语句返回的按一个或多个列的值进行排序。用于排序的标准(即排序列)并不一定要包含在最终的结果集中(但在SELECT DISTINCT, GROUP BY, UNION [DISTINCT], EXCEPT [DISTINCT]、INTERSECT [DISTINCT]等操作中存在某些限制)。排序标准可以是表达式,包括列名、用户自定义函数、算术运算或CASE表达式。系统会计算这些表达式的值,…
用户自定义函数(User-Defined Function,UDF)是由程序或环境的用户所提供的函数。通常在这种语境下,系统默认函数是程序或环境原生内置的。UDF通常是根据创建者的特定需求而编写的。 数据库 在关系数据库管理系统中,用户自定义函数(UDF)提供了一种扩展数据库服务器机制的方式。通过添加函数,用户可以在标准查询语言(通常是SQL)语句中对其进行调用。SQL标准将函数分为标量函数(Scalar Functions)和表函数(…
SQL中的HAVING子句规定:SELECT语句仅返回聚合值(aggregate values)满足指定条件的行。 外部链接 [http://www.databasejournal.com/features/mysql/article.php/3469351 The HAVING and GROUP BY SQL clauses] [https://www.w3schools.com/sql/sql_functions.asp SQL …
关系数据库管理系统使用SQL'语句(也被称为upsert*)来处理数据:它根据特定的匹配条件,决定是插入(INSERT)新记录,还是更新(UPDATE)或删除(DELETE)现有记录。该语句在标准中被正式引入,并在标准中得到了进一步扩展。 用法 MERGE INTO tablename USING table_reference ON (condition) WHEN MATCHED THEN UPDATE SET column1 = …
HSQLDB (Hyper SQL Database)是一个用Java编写的关系数据库管理系统。它有一个JDBC驱动程序并且支持一个SQL-92和SQL:2008标准的较大子集。它提供了一个快速轻量级的数据库引擎,该数据库引擎提供基于磁盘和内存的表。有两种模式:嵌入式和服务器模式可供使用。 此外,它包括一些工具,如轻量级web服务器、命令行、GUI管理工具(可以作为应用程序单独运行)和一些演示实例。可以在1.1版本以上的JRE上运行,包…
在SQL中,窗函数(window function)或分析函数(analytic function)是一个函数,它使用来自一行或多行的值来为每一行返回一个值。 与之形成对比,为多行返回单个值。窗口函数有一个OVER子句;任何没有OVER子句的函数都不是窗口函数,而是聚合函数或单行(标量)函数。 例子1 例如,这里有一个查询,它使用一个窗口函数来比较每个员工的工资与其部门的平均工资(来自PostgreSQL文档的示例): SELECT d…
SQL编程语言的语法是由ISO/IEC 9075标准中的ISO/IEC SC 32委员会所定义和维护的。尽管存在标准,不过SQL代码仍然无法在不进行修改的前提下在不同的数据库系统中直接移植。 语言元素 SQL语言分成了几种要素,包括: 子句,是语句和查询的组成成分。(在某些情况下,这些都是可选的。) 表达式,可以产生任何标量值,或由列和行的数据库表 谓词,给需要评估的SQL三值逻辑(3VL)(true/false/unknown)或布尔…
資料定義語言(data definition language,DDL)屬於DBMS語言的一種,用於明確定義概念綱要(conceptual schemas)及內部綱要(internal schemas),DBMS內的DDL編譯器(compiler)能夠處理DDL,識別綱要建構物(schema constructs)的描述(description)並加以存入DBMS目錄中的綱要描述(schema description)。 為SQL語言集…
天际线运算()属于最佳化问题的范畴。用来查询数据库中的结果,并保证返回的每一个结果至少在某一方面不劣于其他结果。 这个运算符是SQL的一个扩充,由德国的Börzsönyi等人于2001年提出。 论文中所用的酒店示例是天际线运算的一个经典示例。当用户希望酒店是既便宜又靠近海滩,但是靠近海滩的酒店通常又比较昂贵时,天際線運算符可以保证其查询结果中,对于任意两个酒店,每一个酒店都至少在与海滩的距离或者价格中,不比另一个劣。 天际线运算返回的结…
Trino 是一个 开源 的分布式 SQL 查询引擎。目的是能够快速方便地对分布存储在一个或多个异构数据源的大型数据集进行查询. Trino 不仅能够查询储存在不同的存储系统(如 HDFS、Amazon S3、谷歌云存储 或Microsoft Azure Blob 存储 或 格式存储的开源列式存储数据文件格式(如 或 )的数据湖。Trino 还能进行联邦查询,查询不同数据源(如 MySQL、PostgreSQL、Cassandra、Ka…
PL/SQL(Procedural Language/SQL)是甲骨文公司專有的SQL擴展語言,應用在甲骨文公司的Oracle数据库系統。一些的SQL数据库管理系統也提供了類似的擴展SQL語言。PL/SQL的語法非常類似於Ada,而且像1980年代的Ada編譯器一樣,PL/SQL的運作系統使用Diana作為中介語言。 重要的是PL/SQL緊密的結合在Oracle数据库裡面。 PL/SQL是Oracle數據庫使用的三種語言的其中之一,另外…
SQL(或,Structured Query Language,结构化查询语言)是一种特定目的程式语言,用于管理关系数据库管理系统(RDBMS),或在关系流数据管理系统(RDSMS)中进行流处理。 20 世纪 70 年代推出的 SQL 相比早期的读写 API(如 ISAM 或 VSAM)具有两大优势:首先,引入了用一条命令访问多条记录的概念;其次,也消除了指定如何访问记录的需求(即无论是否使用索引)。 SQL最初基于关系代数和元组关系演…
PL/pgSQL(全名:Procedural Language / PostGres Structured Query Language)是一個可載入的程式語言。為PostgreSQL的ORDBMS所支援的程序式編程語言。它非常類似於Oracle的 PL/ SQL語言。隨著PostgreSQL v9.x的發佈,開始支持一些ISO 的功能,例如可支持過載SQL調用函數與過程。 PL/pgSQL猶如一個多功能的編程語言,比SQL支援更多的程…
CLSQL是一个Common Lisp语言的SQL数据库接口,用于让Common Lisp和数据库进行通信。这个项目由Kevin M. Rosenberg在2001年发起,以支持在多个Common Lisp的实现上通过使用UFFI这个库,进行SQL数据库的存取操作。CLSQL最初的代码大部分来自于Pierre R. Mai所开发的MaiSQL库。在2003年的时候,onShore Development公司抛弃了UncommonSQL这…