首页 > 数据库 >2. SQL--定义

2. SQL--定义

时间:2022-08-26 14:48:38浏览次数:72  
标签:定义 记录 -- 数据库 用户 查询 ANSI SQL

1. 前言

SQL 是一种操作数据库的语言,包括创建数据库、删除数据库、查询记录、修改记录、添加字段等。SQL 虽然是一种被 ANSI 标准化的语言,但是它有很多不同的实现版本。

ANSI 是 American National Standards Institute 的缩写,中文译为“美国国家标准协会”。

SQL 是 Structured Query Language 的缩写,中文译为“结构化查询语言”。SQL 是一种计算机语言,用来存储、检索和修改关系型数据库中存储的数据。

SQL 是关系型数据库的标准语言,所有的关系型数据库管理系统(RDBMS),比如 MySQL、Oracle、SQL Server、MS Access、Sybase、Informix、Postgres 等,都将 SQL 作为其标准处理语言。

此外,SQL 也有一些变种,就像中文有很多方言,比如:

  • 微软的 SQL Server 使用 T-SQL;
  • Oracle 使用 PL/SQL;
  • 微软 Access 版本的 SQL 被称为 JET SQL(本地格式)。

2. SQL 的用途

SQL 之所以广受欢迎,是因为它具有以下用途:

  • 允许用户访问关系型数据库系统中的数据;
  • 允许用户描述数据;
  • 允许用户定义数据库中的数据,并处理该数据;
  • 允许将 SQL 模块、库或者预处理器嵌入到其它编程语言中;
  • 允许用户创建和删除数据库、表、数据项(记录);
  • 允许用户在数据库中创建视图、存储过程、函数;
  • 允许用户设置对表、存储过程和视图的权限。

3. SQL 简史

1970 年,IBM 的 Edgar Frank "Ted" Codd(埃德加·弗兰克·科德)博士描述了关系型数据库的模型,他因此被称为“关系型数据库之父”。

1974 年,IBM 希望把 Codd 的想法变成现实,着手开发一款名为 System R 的数据库,并研发出一套结构化查询语句 SEQUEL,这就是 SQL 的雏形。System R 数据库于 1978 年第一次发布,用于科研和实验。

1979 年,Oracle 公司首先提供商用的 SQL,随后 IBM 公司也在 DB2 数据库中实现了 SQL。

1986 年 10 月,美国 ANSI 采用 SQL 作为关系型数据库管理系统的标准语言,紧接着国际标准组织(ISO)也将 SQL 采纳为国际标准。

1989 年,ANSI 发布了 SQL 标准的重大更新版本,以弥补旧版的不足,称为 ANSI SQL 89,该版本也被 ISO 采纳。

目前,市场上主要的关系型数据库都有自己的 SQL 变种, 但是它们都遵守 ANSI SQL 89 标准。

4. SQL 执行过程

当你在任何一款 RDBMS 中执行 SQL 命令时,系统首先确定执行请求的最佳方式,然后 SQL 引擎将会翻译 SQL 语句,并处理请求任务。

整个执行过程包含了多种组件,比如:

  • 查询调度程序;
  • 优化引擎;
  • 传统的查询引擎;
  • SQL 查询引擎。


传统查询引擎能够处理所有的非 SQL 命令,但是 SQL 引擎并不能处理逻辑文件。

下图展示了 SQL 的体系结构:

SQL体系结构

5. SQL 命令

与关系型数据库有关的 SQL 命令包括 CREATE、SELECT、INSERT、UPDATE、DELETE、DROP 等,根据其特性,可以将它们分为以下几个类别。

1) DDL - Data Definition Language,数据定义语言

对数据的结构和形式进行定义,一般用于数据库和表的创建、删除、修改等。

命令说明
CREATE 用于在数据库中创建一个新表、一个视图或者其它对象。
ALTER 用于修改现有的数据库,比如表、记录。
DROP 用于删除整个表、视图或者数据库中的其它对象

2) DML - Data Manipulation Language,数据处理语言

对数据库中的数据进行处理,一般用于数据项(记录)的插入、删除、修改和查询。

命令说明
SELECT 用于从一个或者多个表中检索某些记录。
INSERT 插入一条记录。
UPDATE 修改记录。
DELETE 删除记录。

3) DCL - Data Control Language,数据控制语言

控制数据的访问权限,只有被授权的用户才能进行操作。

命令说明
GRANT 向用户分配权限。
REVOKE 收回用户权限。

标签:定义,记录,--,数据库,用户,查询,ANSI,SQL
From: https://www.cnblogs.com/jiajunling/p/16627493.html

相关文章

  • cento7.6下yum安装Jenkins
    注意:有些java版本跟Jenkins版本不匹配 下载Jenkins源sudowget-O/etc/yum.repos.d/jenkins.repo\https://pkg.jenkins.io/redhat/jenkins.reposudorpm--imp......
  • python基础——模块 包
    模块包Python模块(Module),是一个Python文件,以.py结尾,包含了Python对象定义和Python语句。模块能定义函数,类和变量,模块里也能包含可执行的代码。模块和包以及库,......
  • geopandas 把 shp 文件入库到 postgis 数据库
    lll={'database':"test",'user':'postgres','password':'postgis','host':'127.0.0.1','port':'5432'}engine=create_engine(f"......
  • MySql 建表语句
    CREATETABLEIFNOTEXISTSnsy_scm.`publish_store_product_spec`(`id`INT(11)NOTNULLAUTO_INCREMENT,`publish_store_product_id`INT(11)......
  • 路由器工作原理、路由表的形成、静态路由、缺省路由、单臂路由
    一、路由、路由器 路由:跨越从源主机到目标主机的一个互联网络来转发数据包的过程。在这个过程中负责转发或者负责路由的机器就叫做路由器。路由器:能够将数据包转发到正......
  • 40% 的云原生开发者专注于微服务领域
    年度开发者调查报告,可以帮助我们加深了解行业的发展趋势,对个人职业发展方向、企业技术选型都具有一定的参考作用。近日,CSDN 发布《2021-2022中国开发者调查报告》,我们......
  • SQL Server 表增加字段案例语句
    IFNOTEXISTS(SELECT1FROMsys.sysobjects(NOLOCK)soINNERJOINsys.syscolumns(NOLOCK)scONso.id=sc.idWHEREso.name='EgSys_ActualFrei......
  • Typora使用教程
    一、Markdown语法1.1标题使用#可以表示标题,一级标题对应一个#,二级标题对应两个#号,最多至六级标题。在Typora中,#后要紧接着一个空格才能表示标题,否则就是普通字符......
  • 登录功能、登录功能姓名提示
    登录功能_前台实现 <script>//登录按钮绑定单机事件$(function(){$("#btn_sub").click(function(){//发送ajax请求,提交表单数据$.......
  • APP抓包分析
    背景现有一需求,需要对APP进行抓包分析,记录抓包分析的过程工具夜神模拟器,charles,wireshark思路夜神模拟器上安装app应用,配置wifi代理连接charles,安装charles证书。char......