当前位置: 首页 > news >正文

3.1 SQL概述

思维导图:

 

前言:

前言笔记:第3章 关系数据库标准语言SQL

- **SQL的定义**:
  - 关系数据库的标准和通用语言。
  - 功能强大,不仅限于查询。
  - 功能覆盖:数据库模式创建、数据插入/修改、数据库安全性与完整性定义及控制等。
  
- **本章焦点**:
  - 详解SQL的核心功能。
  - 深入探讨关系数据库的基本概念。
  
- **SQL的普及与重要性**:
  - 成为国际标准后,广大数据库厂商推出与SQL相关的软件或接口。
  - SQL作为各大数据库的共通数据存取语言和标准接口,为不同数据库间的互操作提供了基础。
  - SQL被视为数据库领域的主导语言,有其重大意义。确立其为标准及其后续发展被称为一场“革命”。

 3.1.1 SQL的产生与发展

笔记:3.1.1 SQL的产生与发展

- **起源**:
  - 1974年,由Boyce和Chamberlin提出。
  - 初始名为Sequel。
  - 在IBM的System R上首次实现。

- **接受度与普及**:
  - 由于其简易性与功能丰富,受到广大用户与计算机行业的欢迎。
  - 数据库厂商广泛采纳。

- **标准化**:
  - 1986年10月,被ANSI的数据库委员会X3H2批准为美国关系数据库标准语言,简称SQL-86。
  - 1987年,ISO也认可了SQL作为标准。

- **SQL标准的进化**:
  - 自公布起,随技术发展而持续丰富。
  - 从SQL/86至SQL2011,内容逐渐增多,结构也日益复杂。
  - 如,SQL/92增加了调用接口与永久存储模块;SQL99进一步扩展,涵盖多个部分如框架、宿主语言绑定等。

- **数据库系统对SQL的支持**:
  - 无系统全面支持所有SQL标准。
  - 大多数支持SQL/92主要功能及SQL99、SQL2003的部分新概念。
  - 许多软件厂商对SQL命令集做了扩展与修改,增加了非标准功能。

【备注】:在使用特定数据库时,建议查阅其用户手册,了解其对SQL的具体支持。

3.1.2 SQL的特点 

笔记:3.1.2 SQL的特点

- **综合统一性**:
  - SQL整合了数据定义、操纵、控制的功能,拥有统一的语言风格。
  - 可独立完成数据库生命周期的所有活动:定义、查询、更新、重构、安全性、完整性、事务控制等。
  - 提供了便于数据库应用开发的环境,允许随时修改模式,而不影响数据库运行。
  - 关系模型中实体与实体间的联系都是通过关系表示,导致数据操作的统一性。

- **高度非过程化**:
  - SQL为非过程化语言,用户只需指明“做什么”而不是“怎么做”。
  - 无需了解存取路径,系统自动完成操作过程。

- **面向集合的操作方式**:
  - SQL采用集合操作方式,与非关系数据模型的面向记录方式对比,SQL允许一次性操作多个元组。

- **统一的语法结构**:
  - SQL既可以独立使用也可嵌入高级语言中,但在两种方式下,语法结构保持一致。
  - 这种统一性提供了灵活性和方便性。

- **简洁性与易用性**:
  - 虽然功能强大,但SQL设计简洁,核心功能仅需9个动词。
  - 接近英语,易于学习和使用。

【核心动词】:
- **数据查询**: SELECT
- **数据定义**: CREATE, DROP, ALTER
- **数据操纵**: INSERT, UPDATE, DELETE
- **数据控制**: GRANT, REVOKE

这些特点使SQL成为业界所接受的国际标准,并且得到了广泛的应用。

 3.1.3 SQL的基本概念

笔记:3.1.3 SQL的基本概念

- **关系数据库的三级模式结构**:
  - **外模式**:包含若干视图和部分基本表。
  - **模式**:由多个基本表组成。
  - **内模式**:由若干存储文件组成。

- **基本表**:
  - 独立存在的表,每个关系对应一个基本表。
  - 一个或多个基本表对应一个存储文件。
  - 表可能带有若干索引,存储在存储文件中。
  
- **存储文件**:
  - 组成关系数据库的内模式。
  - 物理结构对用户是隐蔽的。

- **视图(View)**:
  - 从一个或多个基本表导出的表。
  - 不独立存储,只存放定义,不存放对应数据。
  - 被视为虚表,因为实际数据仍存于基本表中。
  - 用户可在视图上再定义视图,视图与基本表在概念上等同。

- **关于SQL实现**:
  - 这里主要介绍SQL的核心概念和功能,许多语法细节被省略。
  - 各关系数据库管理系统的SQL实现有所不同,标准符合度通常在85%以上。
  - 使用特定的关系数据库管理系统时,应参考相关手册。

总结:本节概述了SQL在关系数据库中的基本概念,包括基本表、视图和存储文件的定义和功能,以及它们如何在三级模式结构中互相关联。

 总结:

**SQL概述总结**:

**重点**:
1. **定义**:SQL是关系数据库的标准语言,不仅用于查询,还包括数据库模式创建、数据插入/修改、安全性与完整性定义等功能。
2. **普及与重要性**:自成为国际标准后,SQL已成为各大数据库的共通数据存取语言和标准接口,促进了不同数据库间的互操作。
3. **发展**:从1974年的Sequel到现今的SQL标准,它经历了多次版本更新与功能扩展,如SQL/86、SQL/92、SQL99、SQL2003等。
4. **结构**:支持关系数据库的三级模式结构,包括外模式、模式和内模式。

**难点**:
1. **高度非过程化**:与传统的过程化编程语言不同,SQL用户只需要指明“做什么”而不是“怎么做”,这可能对初学者来说不太直观。
2. **视图的概念**:视图是从一个或几个基本表导出的表,是虚拟的,不直接存储数据,这与直观的数据存储概念有所不同。

**易错点**:
1. **误解SQL的功能**:很多初学者可能会认为SQL仅用于查询,而忽略了其其他强大功能。
2. **视图与基本表的混淆**:初学者可能会误以为视图和基本表是完全相同的,而不理解视图的虚拟性。

**使用技巧**:
1. **实践为主**:理解SQL的最佳方法是通过大量实践。创建自己的数据库,尝试不同的查询和命令。
2. **使用工具**:利用现有的SQL开发工具,如SQL Server Management Studio、MySQL Workbench等,这些工具通常提供语法高亮、错误提示等功能,帮助用户更高效地编写SQL。
3. **持续学习**:随着SQL标准的发展,新的功能和命令会被添加。定期查看更新和学习新的技巧是很重要的。
4. **查询手册**:当使用特定的数据库管理系统时,尤其是在考虑性能优化时,查阅相关的官方文档或手册是很有帮助的。

综上所述,SQL是一个功能强大且广泛应用的数据库语言。通过理解其核心概念、注意常见难点和易错点,并应用有效的使用技巧,可以更有效地利用SQL进行数据操作。

相关文章:

3.1 SQL概述

思维导图: 前言: 前言笔记:第3章 关系数据库标准语言SQL - **SQL的定义**: - 关系数据库的标准和通用语言。 - 功能强大,不仅限于查询。 - 功能覆盖:数据库模式创建、数据插入/修改、数据库安全性与…...

xray安装与bp组合使用-被动扫描

xray安装与bp组合使用-被动扫描 文章目录 xray安装与bp组合使用-被动扫描1 工具官方文档:2 xray官网3 工具使用4 使用指令说明5 此为设置被动扫描6 被动扫描-启动成功7 启动bp7.1 设置bp的上层代理7.2 添加上层代理7777 --》指向的是xray7.3 上层代理设置好后&#…...

Java 中Maven 和 ANT

Java 中Maven 和 ANT Maven 和 Ant 都是用于构建和管理Java项目的工具,但它们在设计和功能上有一些重要的区别。以下是关于 Maven 和 Ant 的区别、优缺点以及它们的作用,以及示例说明: Maven: 设计理念: Maven 是基于…...

Flutter通过Pigeon插件与Android同步异步交互

Flutter 调用原生(Android)方法以及数据传输_flutter调用原生sdk_TDSSS的博客-CSDN博客 https://www.cnblogs.com/baiqiantao/p/16340272.html 可以同时参考这两篇文章...

GTW验厂是什么?GTW验厂评级分类

【GTW验厂是什么?GTW验厂评级分类】 GTW验厂是什么? 全称叫GreenToWear。是为了集合所有环境和产品健康方面的要求,Inditex集团开发的可持续发展准则(简称GTW)此准则适用于Inditex集 及其供应链中所包含的湿加工厂&…...

CVE-2017-12615 Tomcat远程命令执行漏洞

漏洞简介 2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,其中 远程代码执行漏洞(CVE-2017-12615) 当 Tomcat 运行在 Windows 主机上,…...

灿芯股份将上会:计划募资6亿元,董事长、总经理均为外籍

10月11日,上海证券交易所披露的信息显示,灿芯半导体(上海)股份有限公司(下称“灿芯股份”)将于10月18日接受上市审核委员会审议会议的现场审议。目前,该公司已递交了招股书(上会稿&a…...

Spring Cloud Gateway 搭建网关

新建一个module添加依赖&#xff1a; <!--Spring Cloud Gateway依赖--> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId> </dependency><!-- nacos客户端依赖…...

ETL数据转换方式有哪些

ETL数据转换方式有哪些 ETL&#xff08;Extract&#xff0c; Transform&#xff0c; Load&#xff09;是一种常用的数据处理方式&#xff0c;用于从源系统中提取数据&#xff0c;进行转换&#xff0c;并加载到目标系统中。 数据清洗&#xff08;Data Cleaning&#xff09;&am…...

CVE-2017-15715 apache换行解析文件上传漏洞

影响范围 httpd 2.4.0~2.4.29 复现环境 vulhub/httpd/CVE-2017-15715 docker-compose 漏洞原理 在apache2的配置文件&#xff1a; /etc/apache2/conf-available/docker-php.conf 中&#xff0c;php的文件匹配以正则形式表达 ".php$"的正则匹配模式意味着以.ph…...

振弦采集仪应用水坝安全监测的方案

振弦采集仪应用水坝安全监测的方案 随着工业化和城市化的快速发展&#xff0c;水资源的开发和利用越来越广泛。由于水坝在水利工程中起着至关重要的作用&#xff0c;因此对水坝进行安全监测变得越来越必要。为了实现对水坝的安全监测&#xff0c;振弦采集仪可以作为一种有效的…...

【Java】查找jdk步骤

需求描述 解决方法 第一步 第二步 第三步 第四步 参考文章...

【mysql】Mysql自定义变量 @rownum使用

Mysql自定义变量 rownum 这个可以赋值&#xff1f;这是初始化&#xff1f; 先看表结构 有五条数据。执行前半段语句发现。rownum的起始值等于行数 这里from后面可以加person与 r这连个组成 如果这里的rownum打错了呢。发现这个变量就没有初始值。 可见&#xff0c;没有必要…...

命令行启动android模拟器

有时候不想打开android studio就能方便的启动模拟器&#xff0c;探索一番后发现可以通过命令行来启动&#xff0c;方便快捷。 环境准备 首先安装好android studio&#xff0c;android sdk&#xff0c;从android studio中安装好模拟器。 命令启动 如果直接在终端输入emulato…...

Three.js如何计算3DObject的2D包围框?

推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 在Three.js应用开发中&#xff0c;有时你可能需要为3D场景中的网格绘制2D的包围框&#xff0c;应该怎么做&#xff1f; 朴素的想法是把网格的3D包围框投影到屏幕空间&#xff0c;例如&#xff0c;下图中的绿色框 3D包围框…...

【LeetCode热题100】--347.前K个高频元素

347.前K个高频元素 方法&#xff1a;堆 首先遍历整个数组&#xff0c;并使用哈希表记录每个数字出现的次数&#xff0c;并形成一个「出现次数数组」。找出原数组的前 k 个高频元素&#xff0c;就相当于找出「出现次数数组」的前 k 大的值 利用堆的思想&#xff1a;建立一个小…...

解决服务器80端口无法连接的办法

云服务器是现代企业建立应用程序和存储数据的理想选择。但是在使用云服务器的过程中&#xff0c;会遇到80端口无法连接的问题。这个问题可能会导致网站无法正常运行&#xff0c;从而给企业带来负面影响。因此&#xff0c;在这篇文章中&#xff0c;我们将探讨如何解决云服务器80…...

040:mapboxGL鼠标hover更换选中feature颜色

第040个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中通过鼠标hover的方式来更换选中feature颜色。这里面利用了mousemove和mouseleave的方法,通过选中图层的feature,来设置hover的true或者false,从而通过opacity的case状态来判断透明度用哪一个值。 直接复…...

【C++心愿便利店】No.8---C++之重识类和对象

文章目录 前言一、再谈构造函数二、static成员三、友元四、内部类五、匿名对象六、再次理解类和对象 前言 &#x1f467;个人主页&#xff1a;小沈YO. &#x1f61a;小编介绍&#xff1a;欢迎来到我的乱七八糟小星球&#x1f31d; &#x1f4cb;专栏&#xff1a;C 心愿便利店 &…...

【AI视野·今日NLP 自然语言处理论文速览 第五十二期】Wed, 11 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 11 Oct 2023 Totally 81 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers LongLLMLingua: Accelerating and Enhancing LLMs in Long Context Scenarios via Prompt Compression Author…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

leetcode73-矩阵置零

leetcode 73 思路 记录 0 元素的位置&#xff1a;遍历整个矩阵&#xff0c;找出所有值为 0 的元素&#xff0c;并将它们的坐标记录在数组zeroPosition中置零操作&#xff1a;遍历记录的所有 0 元素位置&#xff0c;将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...

自定义线程池1.2

自定义线程池 1.2 1. 简介 上次我们实现了 1.1 版本&#xff0c;将线程池中的线程数量交给使用者决定&#xff0c;并且将线程的创建延迟到任务提交的时候&#xff0c;在本文中我们将对这个版本进行如下的优化&#xff1a; 在新建线程时交给线程一个任务。让线程在某种情况下…...

LeetCode 2894.分类求和并作差

目录 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 思路&#xff1a; 思路一详解&#xff08;遍历 判断&#xff09;&#xff1a; 思路二详解&#xff08;数学规律/公式&#xff09;&#xff1a; 代码&#xff1a; Java思路一&#xff08;遍历 判断&a…...

SeaweedFS S3 Spring Boot Starter

SeaweedFS S3 Spring Boot Starter 源码特性环境要求快速开始1. 添加依赖2. 配置文件3. 使用方式方式一&#xff1a;注入服务类方式二&#xff1a;使用工具类 API 文档SeaweedFsS3Service 主要方法SeaweedFsS3Util 工具类方法 配置参数运行测试构建项目注意事项集成应用更多项目…...

code-server安装使用,并配置frp反射域名访问

为什么使用 code-server是VSCode网页版开发软件&#xff0c;可以在浏览器访问编程&#xff0c;可以使用vscode中的插件。如果有自己的服务器&#xff0c;使用frp透传后&#xff0c;域名访问在线编程&#xff0c;使用方便&#xff0c;打开的服务端口不需要单独配置&#xff0c;可…...

ES海量数据更新及导入导出备份

一、根据查询条件更新字段 from elasticsearch import Elasticsearch import redis import json# 替换下面的用户名、密码和Elasticsearch服务器地址 username elastic password password es_host https://127.0.0.2:30674# 使用Elasticsearch实例化时传递用户名和密码 es…...