一文读懂数据库语言

article/2025/8/27 19:20:44

d052cbd18ebf3974392ac357cce88215.gif

数据库系统提供数据定义语言(Data-Definition Language,DDL)来定义数据库模式,并提供数据操纵语言(Data-Manipulation Language,DML)来表达数据库的查询和更新。而实际上,数据定义和数据操纵语言并不是两种互相分离的语言,相反地,它们仅仅是构成了单一的数据库语言(例如SQL语言)的不同部分。几乎所有的关系数据库系统都使用SQL语言。

01

数据定义语言

数据库模式是通过一系列定义来说明的,这些定义由一种称作数据定义语言的特定语言来表达。DDL也可用于定义数据的其他特征。

通过一系列特定的DDL语句来说明数据库系统所采用的存储结构和访问方式,这种特定的DDL称作数据存储和定义(datastorage and definition)语言。这些语句定义了数据库模式的实现细节,而这些细节对用户来说通常是不可见的。

存储在数据库中的数据值必须满足某些一致性约束。例如,假设大学要求一个系的账户余额必须不能为负值。DDL语言提供了指明这样的约束的工具。每当数据库被更新时,数据库系统都会检查这些约束。通常,约束可以是关于数据库的任意谓词。然而,如果要测试任意谓词,可能代价比较高。因此,数据库系统仅实现可以以最小代价测试的完整性约束。

  • 域约束(domain constraint)。每个属性都必须对应于一个所有可能的取值构成的域(例如,整数型、字符型、日期/时间型)。声明一个属性属于某个具体的域就相当于约束它可以取的值。域约束是完整性约束的最基本形式。每当有新数据项插入数据库中,系统就能方便地进行域约束检测。

  • 引用完整性(referential integrity)。常常有这样的情况,我们希望能确保一个关系中给定属性集上的取值也在另一关系的某一属性集的取值中出现(引用完整性)。例如,每门课程所列出的系必须是大学中实际存在的系。更准确地说,一个course记录中的dept_name值必须出现在department关系中的某个记录的dept_name属性中。数据库的修改有可能会导致引用完整性的破坏。当引用完整性约束被违反时,通常的处理是拒绝执行导致完整性被破坏的操作。

  • 授权(authorization)。我们也许想对用户加以区别,对于不同的用户在数据库中的不同数据值上允许不同的访问类型。这些区别以授权来表达,最常见的是:读权限(read authorization),允许读取数据,但不能修改数据;插入权限(insertauthorization),允许插入新数据,但不允许修改已有数据;更新权限(update authorization),允许修改,但不能删除数据;删除权限(deleteauthorization),允许删除数据。我们可以赋予用户所有或者部分这些权限,也可以不赋予用户任何这些权限。

正如任何其他程序设计语言一样,对DDL语句的处理会产生一些输出。DDL的输出放在数据字典(data dictionary)中,数据字典包含元数据(metadata),元数据是关于数据的数据。可以把数据字典看作一种特殊的表,这种表只能由数据库系统本身(不是常规的用户)来访问和修改。在读取和修改实际的数据前,数据库系统先要参考数据字典。

02

SQL数据定义语言

SQL提供了丰富的DDL语言,通过它,我们可以定义具有数据类型和完整性约束的表。

例如,以下的SQL DDL语句定义了department表:

22fde964b0421cfa729a7a8539d7418b.png

上面的DDL语句执行的结果就是创建了department表,该表有3个列:dept_name、building和budget,每个列有一个与之相关联的数据类型。在第3章中我们将更详细地讨论数据类型。

SQL DDL还支持若干种类型的完整性约束。例如,你可以指明dept_name属性是主码(primary key),以确保没有两个系会有相同的系名。另一个示例是,你可以指明在任何instructor记录中出现的dept_name属性值也必须在department表的某个记录中出现。(我们将在《数据库系统概念(原书第7版)》第3~4章中讨论SQL对完整性约束和授权的支持。)

03

数据操纵语言

数据操纵语言是这样一种语言,它使得用户可以访问或操纵那些按照某种适当的数据模型组织起来的数据。有以下访问类型:

  • 对存储在数据库中的信息进行检索;

  • 向数据库中插入新的信息;

  • 从数据库中删除信息;

  • 修改数据库中存储的信息。

基本上有两种类型的数据操纵语言:

  • 过程化的DML(proceduralDML)要求用户指定需要什么数据以及如何获得这些数据。

  • 声明式的DML(declarativeDML)(也称为非过程化的DML)只要求用户指定需要什么数据,而不必指明如何获得这些数据。

声明式的DML通常比过程化的DML易学易用。但是,由于用户不必指明如何获得数据,因此数据库系统必须找出一种访问数据的高效途径。

查询(query)是要求对信息进行检索的语句。DML中涉及信息检索的部分称作查询语言(query language)。实践中常把查询语言和数据操纵语言作为同义词使用,尽管从技术上来说这并不正确。

目前已有多个在使用的商业性的或者实验性的数据库查询语言。我们在《数据库系统概念(原书第7版)》第3~5章中将学习最广泛使用的查询语言SQL。

我们在1.3节中讨论的抽象层次不仅可以用于定义或构造数据,而且还可以用于操纵数据。在物理层,我们必须定义可高效访问数据的算法;在更高的抽象层,我们则强调易用性,目标是使人们能够更有效地和系统交互。数据库系统的查询处理器部件(我们将在第15和16章学习)将DML的查询语句翻译成数据库系统物理层的动作序列。在第22章中我们将研究在越来越普遍的并发和分布式环境中的查询处理过程。

04

SQL数据操纵语言

SQL查询语言是非过程化的。一个查询以几个表作为输入(也可能只有一个表),总是仅返回一个表。下面是一个SQL查询的示例,它找出历史系的所有教师的名字:

63c54919f94aca846a176e06b5b638b5.png

这个查询指定了要从instructor表中取回dept_name为History的那些行,并且这些行的name属性要显示出来。本查询的执行结果是一个表,它包含单个列name,有若干行,每一行都是dept_name为History的一个教师的名字。如果这个查询运行在图1-1的表上,那么结果将包括两行,一行的名字是El Said,另一行的名字是Califieri。

f8238582fb14ac57b3aeadc8173f1e05.png

查询可以涉及不止一个表的信息。例如,下面的查询将找出与经费预算超过95 000美元的系相关联的所有教师的ID和系名。

5422f8adb45a30d96faae82fd35f6952.png

如果上述查询运行在图1-1的表上,那么系统将会发现,有两个系的经费预算超过95 000美元—计算机科学系和金融系;这些系里有5位教师。于是,结果将由一个表组成,这个表有两列(ID,dept_name)和五行(12121, Finance)、(45565, Computer Science)、(10101, Computer Science)、(83821, Computer Science)、(76543, Finance)。

05

从应用程序访问数据库

像SQL这样的非过程化查询语言不像一个普适的图灵机那么强大:有一些计算可以用通用的程序设计语言来表达,但无法用SQL来表达。SQL也不支持诸如从用户那儿输入、输出到显示器或在网络上通信这样的动作。这样的计算和动作必须用一种宿主(host)语言来写,比如C/C++、Java或Python,在其中使用嵌入式的SQL查询来访问数据库中的数据。应用程序(applicationprogram)就是用来以这种方式与数据库进行交互的程序。在大学系统的示例中,就是那些使学生能够注册课程、产生课程花名册、计算学生的GPA、产生工资支票以及完成其他任务的程序。

为了访问数据库,需要将DML语句从宿主发送到执行这些语句的数据库。最通用的办法是使用应用程序接口(过程集合),它可以用来将DML和DDL的语句发送给数据库,再取回结果。开放数据库连接(ODBC)标准定义用于C语言和其他几种语言的应用程序接口。Java数据库连接(JDBC)标准为Java语言提供了相应的接口。

本文摘编自《数据库系统概念(原书第7版)》。

0d2ba3b3a9a4b247bb441a51c66b20bc.png

作者:[美] 亚伯拉罕·西尔伯沙茨

[美] 亨利·F. 科思、[印] S. 苏达尔尚

译者:杨冬青 李红燕 张金波 等

数据库领域的殿堂级作品,畅销经典全新升级

夯实数据库理论基础,修炼数据库技术内功的必备之选对深入理解数据库,深入研究数据库,深入操作数据库都具有极强的指导作用

本书是数据库系统方面的经典教材之一,其内容由浅入深,既包含了数据库系统基本概念,又反映了数据库技术的新进展。它被国际上许多著名大学所采用,包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学等。我国也有多所大学采用本书作为本科生和研究生数据库课程的教材和主要教学参考书,收到了良好的效果。
第7版保持了前6版的总体风格,同时对内容进行了扩充,对结构进行了调整,以更好地符合数据库教学的需求,反映数据库设计、管理与使用方式的发展和变化。

06

直播推荐

afcaec396fcb2cd948e7af3015f3e582.png

016a403e6415275fd9a5f23cb42ee957.gif

8e5e7754e3574bd0d5632e24cba6848e.png

扫码关注【华章计算机】视频号

每天来听华章哥讲书

158d0419b1c9ff4c3f0e8d367a1988bd.gif

更多精彩回顾

书讯 | 9月书讯 | 秋天的第一本书,来了

资讯 | DB-Engines 9月数据库排名:SnowFlake坐上了火箭

书单 | 送你一份入门前端学习路线图

干货 | 微服务设计:去中心化的技术治理与数据管理

收藏 | 5G时代音视频开发利器WebRTC究竟长啥样?

上新 | 【新书速递】你需要掌握的架构之道:系统设计+项目设计

赠书 | 【第73期】全面拥抱 Go 语言!

445be1bb47c15255a642458361e6c588.gif


http://chatgpt.dhexx.cn/article/KoJOsNlB.shtml

相关文章

数据库+SQL语言

文章目录 数据库相关概念MySQL数据模型关系型数据库 SQL通用语法 SQL语句全解DDLDMLDQL基础查询条件查询排序查询分组查询分页查询 约束外键约束 数据库设计软件研发步骤数据库设计理念和步骤表关系多表查询事务 数据库相关概念 数据库:存储和管理数据的仓库&#x…

又一门国产数据库语言诞生了,比SQL还好用

一、数据库语言的目标 1.1 数据库是做什么的 数据库这个软件,名字中有个“库”字,会让人觉得它主要是为了存储的。其实不然,数据库实现的重要功能有两条:计算、事务!也就是我们常说的OLAP和OLTP,数据库的…

数据库标准数据语言SQL——总结

数据库标准数据语言SQL SQL(Structured Query Language),结构化查询语言 1. 数据查询——select 2. 数据操纵——create,drop,alter 3. 数据定义——insert,update,delete 4. 数据控制——grant,revoke 1数据定义 1. 模式的定义删除 2. 基本表的定义、删除与修改 列级完整…

【数据库】SQL语言

目录 一、SQL语言概述 1、特点 2、SQL功能 3、SQL支持数据库系统三级模式 二、数据定义语言(DDL) 1、模式 2、基本表 3、视图 4、索引 三、数据查询语言(DQL) 1、单表查询 2、连接查询 3、嵌套查询 4、集合查询 5、…

数据库语言-SQL

数据库语言-SQL 一、概述二、利用SQL建立数据库1、创建Database2、创建Table3、追加元组 三、利用SQL进行简单查询1、单表查询2、检索条件之去重复记录3、检索结果之排序4、模糊查询 四、利用SQL语言进行多表联合查询1、θ-连接之等值连接2、表更名与表别名3、θ-连…

数据库SQL语言

SQL语言基础 大家好,我是大黄。这次我来简单带你们了解一下数据库技术中必不可少的一项——SQL语言。 SQL,英文是Structured Query Language,直面翻译就是结构化疑问语言。所以说明这个语言是有一定的结构的,所以基础阶段不会太困…

数据库语言

DDL语言 其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表(CREATE TABLE 或 DROP TABLE)为表加入索引等。 mysql是一个关系型数据库,库里面包含若干个表,而每一张表都是由行和列组成。 1.关于数据库操作的命…

数据库基础语言

目录 数据库与表的概念 如何操作数据库 数据库连接方式 SQL分类 DDL数据定义语言 DML 数据操作语言 数据库常用数据类型 约束条件 主键约束(PRIMARY KEY) 具有主键约束的字段同时可以使用自增来让DBMS自行对其值进行维护 非空约束(NOT NULL) 唯一性约束(UNIQUE) D…

MySQL-SQL语言

文章目录 SQL语法要求:1、DDL1.1、数据库操作(1) 查询当前数据库(2) 查询当前数据库(3) 创建数据库(4) 创建一个itheima数据库,并且指定字符集(5) 删除数据库(6) 切换数据库 1.2、表操作1.2.1、表的基本操作(1) 查询当前数据库所有表(2) 查看指定表结构(…

只知道SQL数据库?又一国产数据库语言诞生了

一、为什么学习数据库? 学习数据库,你肯定需要先了解它,这样你才知道你为什么要学习它,数据库除了SQL还有一些别的数据库,了解它们的作用,可以在不同的场景选择最符合的一个数据库。 1.1 什么是数据库&am…

比SQL还好用,又一门国产数据库语言诞生了

目录 一、数据库语言的目标1、要说清这个目标,先要理解数据库是做什么的。2、什么样的计算体系才算好呢? 二、SQL为什么不行1、先看写着简单的问题2、为什么 SQL 不行呢?3、再看跑不快的原因4、我们再做个类比: 三、SPL为什么能行…

MySQL数据库——SQL语言

文章目录 MySQL数据库——SQL语言前言一、数据定义语言(DDL)二、数据操纵语言(DML)三、事务控制语言(TCL)四、数据查询语言(DQL)1.select/for 基本查询语句2.给列起别名(…

写着简单跑得又快的数据库语言 SPL

数据库语言的目标 要说清这个目标,先要理解数据库是做什么的。 数据库这个软件,名字中有个“库”字,会让人觉得它主要是为了存储的。其实不然,数据库实现的重要功能有两条:计算、事务!也就是我们常说的 OLA…

大数据和云计算有什么关系?

前言 本文隶属于专栏《大数据从0到1》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和文献引用请见《大数据从0到1》 解答 云计算关注资源的分配和利用,侧重…

【云原生|云计算系列】云计算基础概念

欢迎来到云原生专题的云计算系列第一篇博客,我们将探索云计算的基础知识,以帮助您深入了解这个迅速发展的领域。在前一篇博客中,我们介绍了云原生的概念和重要性,强调了它作为云计算的核心理念和实践的关键角色。本篇博客将进一步…

云计算之概念——IaaS、SaaS、PaaS、Daas

云计算通俗来说就是输入/输出和计算不在一个主机上。计算要用到计算设备,计算设备一般是指CPU、内存和硬盘,输入/输出设备一般是指键盘、鼠标、显示器、耳机、音响、话筒等外设。而我们的个人计算机是使用主板将这些东西连接到一起来协调工作。 一个软件…

盘点云计算的概念,分类和特点

云计算主要分为 4 种类型:私有云、公共云、混合云和多云。同时,云计算服务主要有 3 种:基础架构即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。 怎么选择云类型或云…

云计算(详细解释)

云计算 云计算实现了通过网络提供可伸缩的,廉价的分布式计算能力,用户只需要在具备网络接入条件的地方,就可以随时随地获得所需的各种IT资源.云计算代表了以虚拟化技术为核心,以低成本为目标的,动态可拓展的网络应用基础设施.云计算包括3种典型的服务模式:laas(基础设施即服务…

云计算的概念、原理和关键技术

1 云计算的定义 NIST(美国国家标准及技术研究所)对云计算的定义: “ 云计算是一种模型,实现无处不在的、方便、通过网络按需访问的可配置的共享计算资源池(例如,网络、服务器、存储、应用程序、服务&…

云计算的概念与原理

接下来这几篇将给大家介绍KVM的相关知识,讲到KVM之前我们先了解一下云计算,这也是自己在网上找的一些知识总结。给大家参考一下。 一、云计算的概念 1.1、云是什么 我们可能使用过百度云是吧,就是将自己的文件放到那里去保存,要用…