当前位置: 首页 > 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…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

TJCTF 2025

还以为是天津的。这个比较容易&#xff0c;虽然绕了点弯&#xff0c;可还是把CP AK了&#xff0c;不过我会的别人也会&#xff0c;还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...

leetcode_69.x的平方根

题目如下 &#xff1a; 看到题 &#xff0c;我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历&#xff0c;我们是整数的平方根&#xff0c;所以我们分两…...