SQL

✍ dations ◷ 2025-08-11 02:10:11 #SQL
SQL(i/ˈɛs kjuː ˈɛl/或i/ˈsiːkwəl/,Structured Query Language:结构化查询语言)是一种特定目的编程语言,用于管理关系数据库管理系统(RDBMS),或在关系流数据管理系统(RDSMS)中进行流处理。SQL基于关系代数和元组关系演算,包括一个数据定义语言和数据操纵语言。SQL的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。尽管SQL经常被描述为,而且很大程度上是一种声明式编程(4GL),但是其也含有过程式编程的元素。SQL是对埃德加·科德的关系模型的第一个商业化语言实现,这一模型在其1970年的一篇具有影响力的论文《一个对于大型共享型数据库的关系模型》中被描述。尽管SQL并非完全按照科德的关系模型设计,但其依然成为最为广泛运用的数据库语言。SQL在1986年成为美国国家标准学会(ANSI)的一项标准,在1987年成为国际标准化组织(ISO)标准。此后,这一标准经过了一系列的增订,加入了大量新特性。虽然有这一标准的存在,但大部分的SQL代码在不同的数据库系统中并不具有完全的跨平台性。在1970年代初,由IBM公司San Jose,California研究实验室的埃德加·科德发表将数据组成表格的应用原则(Codd's Relational Algebra)。1974年,同一实验室的D.D.Chamberlin和R.F. Boyce对Codd's Relational Algebra在研制关系数据库管理系统System R中,研制出一套规范语言-SEQUEL(Structured English Query Language),并在1976年11月的IBM Journal of R&D上公布新版本的SQL(叫SEQUEL/2)。1980年改名为SQL。1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2和SQL/DS数据库系统中也实现了SQL。1986年10月,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3. 135-1986),后为国际标准化组织(ISO)采纳为国际标准。1989年,美国ANSI采纳在ANSI X3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSI SQL 89,该标准替代ANSI X3.135-1986版本。该标准为下列组织所采纳:当前,所有主要的关系数据库管理系统支持某些形式的SQL,大部分数据库至少遵守ANSI SQL89标准。ANSI SQL92标准在交叉连接(cross join)和内部连接之上,新增加了外部连接,并支持在FROM子句中写连接表达式。支持集合的并运算、交运算。支持Case (SQL)表达式。支持CHECK约束。创建临时表。支持cursor。支持事务隔离。SQL语言分成了几种要素,包括:SQL是高级的非过程化编程语言,它允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解其具体的数据存放方式。而它的界面,能使具有底层结构完全不同的数据库系统和不同数据库之间,使用相同的SQL作为数据的输入与管理。它以记录项目〔records〕的合集(set)〔项集,record set〕作为操纵对象,所有SQL语句接受项集作为输入,回提交的项集作为输出,这种项集特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使它拥有极大的灵活性和强大的功能。在多数情况下,在其他编程语言中需要用一大段程序才可实践的一个单独事件,而其在SQL上只需要一个语句就可以被表达出来。这也意味着用SQL可以写出非常复杂的语句,在不特别考虑性能下。SQL同时也是数据库文件格式的扩展名。SQL包含四个部分:各种数据库的SQL方言通常不可移植,特别是在日期时间语法、字符串连接、NULL、比较的大小写敏感方面。只有PostgreSQL与Mimer SQL努力遵从标准。Oracle数据库的DATE行为如同DATETIME,缺少TIME type)。SQL在1986年被ANSI标准化,1987年被ISO标准化。由ISO/IEC JTC 1, Information technology, Subcommittee SC 32, Data management and interchange(英语:ISO/IEC JTC 1/SC 32)维护。标准名称通常为如下模式: ISO/IEC 9075-n:yyyy Part n: title。SQL标准包含9部分:ISO/IEC 9075被ISO/IEC 13249: SQL Multimedia and Application Packages (SQL/MM)补充。后者定义了基于SQL的音视频、空间数据的界面与包。包括:由于SQL指令在部分高级使用时,语法会依照特定条件来变换,而且若是表格中的字段过多时,许多开发人员都会习惯以字符串组立的方式创建SQL指令,而且又使用系统管理员级的账户连到数据库,因此让黑客有机会利用SQL的组立方式进行攻击,像是在指令中添加部分刺探性或破坏性的指令(例如DROP TABLE、DROP DATABASE或是DELETE * FROM myTable等具破坏性的指令),让数据库的数据或实体服务器被破坏,导致服务中断或是系统瘫痪等后果,或是以逻辑的漏洞,在密码栏写入特殊字符串(例如' or '1'='1),让该字符串形成的逻辑判断永远为真,或直接获取非查询条件的数据,而不需要知道密码,以达成非法登录系统的目的,此种攻击手法称为SQL注入(SQL injection)。当前实务上较有效的防御方法,就是全面改用参数化查询。

相关

  • 验尸验尸亦称尸体解剖、尸体检验、尸检,是一个彻底检查尸体的医疗程序,以确定死亡的原因和方式并评估任何可能存在的疾病或损伤。通常由病理学家、法医或验尸官等专门人员行验尸工
  • 硫血红蛋白血症硫血红蛋白为一种血红蛋白的变体,本身呈绿色,当它形成后便不能转回正常的血红蛋白。即使很少分量的硫血红蛋白在血液中存在,亦会造成发绀。其出现是罕见的现象,硫化氢(或硫离子)和
  • 分离性障碍分离性障碍(英文:dissociative disorder),是一种身份、记忆或意识的整体性扰乱。患有解离性障碍的患者缺乏对自我感(selfhood)的辨别和控制,其在时间和地点上缺乏自我在各个方面的
  • 安德鲁·泰勒·斯提耳安德鲁·泰勒·斯提耳(英语:Andrew Taylor Still,1828年8月6日-1917年12月12日),生于美国维吉尼亚州李县,为一名外科医生,被认为是整骨疗法之父。他建立了世界第一间整骨疗法的学校,A
  • 伊香保温泉伊香保温泉(いかほおんせん)是群马县渋川市伊香保町的温泉。和草津温泉并称群马代表的名汤,若加上四万温泉被称作“上毛三名汤”。在急倾斜地的石段两侧,温泉旅馆、土产店、游技
  • 中华民国国家航天中心name = 'Aero', description = '航空太空科技(航空航天科技)', content = {{ type = 'text', text = [=[本页面没有类似于NoteTA的数量限制。 请自行修改分类名。在NoteTA样板
  • 罗伯特·威廉·霍利罗伯特·威廉·霍利(英语:Dr Robert William Holley,1922年1月28日-1993年2月11日),美国生物化学家,出生于伊利诺伊州厄巴纳。曾获得1968年诺贝尔生理学或医学奖,原因是阐明了连结丙
  • 创业公司初创企业(英语:Startup Company)或者创业(英语:Startup)是勇于探索可重复和可扩展性商业模式的一家公司,一个合作伙伴或者暂时成立的组织。这些公司,一般新建的,是处于商业发展和市场
  • 脂肪醇脂肪醇为具有8至22碳原子链的脂肪族的醇类。脂肪醇通常具有偶数的碳原子和一个连接于碳链末端的羟基。一些脂肪醇为不饱和醇,而一些为支链醇。这些醇类都广泛应用于化学工业
  • 瞪羚瞪羚属(Gazella)是羚羊亚科的一属。瞪羚是非常敏捷的动物;以80公里/时的速度跑下来,1小时都不觉得累。大多数瞪羚生活在非洲大草原,但是也有少数生活在亚洲(例如鹅喉羚)。大多数瞪