SQL基础理论篇(一):什么是SQL

文章目录

  • 什么是SQL
  • SQL的四大部分
  • 常用的SQL标准
  • 参考文献

什么是SQL

SQL的全称是Structured Query Language,即结构化查询语句。

其最早诞生于1974年,IBM研究员发布的一篇论文"SEQUEL:一门结构化的英语查询语言"。这几十年里,太多的语言诞生,太多的语言消失,但是SQL的发展却愈久弥坚,甚至都没有发生过太大的变化,可以说,它的半衰期是很长的。

SQL作为与数据直接打交道的语言,是与各种前端后端语言进行交互的"中台"语言。

技术人员或多或少都会使用SQL,但是不同的人编写的SQL效率是不一样的,比如说一份好的SQL执行计划就会尽量减少IO操作,因为IO是DBMS最容易出现瓶颈的地方,可以说数据库操作中大量的时间都花在了IO上。

相比其他编程语言,SQL语言是非常直观的,即使没有SQL基础,也能凭借英语基础猜出大致意思。

SQL的四大部分

按照功能的不同,我们可以把SQL语言划分成4部分:

  • DDL,即Data Definition Language,数据定义语言。通过DDL,我们可以创建、删除和修改数据库和表结构;
  • DML,即Data Manipulation Language,数据操作语言。通过DML,我们可以增加、删除和修改数据表中的记录;
  • DCL,即Data Control Language,数据控制语言。通过DCL,我们可以来定义访问权限和安全级别;
  • DQL,即Data Query Language,数据查询语言。通过DQL,我们可以查询我们需要的数据记录。

SQL是我们与DBMS交流的语言,我们在创建DBMS之前,还需要对它进行设计,对于RDBMS(对象关系型数据库管理系统)来说,是采用ER图(Entity Relationship Diagram),即实体 - 关系图的方式进行设计。

ER图评审通过后,我们再使用SQL或者其他可视化管理工具,来创建数据表。

实体 - 关系图是我们用来描述现实世界的概念模型,在这个模型里有3个要素:实体,属性和关系。

实体就是我们要管理的对象,属性是标识每个实体的属性,关系则是指实体对象之间的关系。比如客户这个实体,有姓名、性别和证件号等属性。

关系型数据库中最重要的一种数据结构就是数据表,这些数据表的组成都是结构化的。你可以把关系模型理解成一个二维表格模型。

常用的SQL标准

SQL自诞生后已经发行了很多版本的标准规范,不同规范下的SQL操作是有区别的。

SQL有两个主要的标准,分别是SQL92SQL99。数字代表了它们提出的年份。除了这两种标准以外,还存在SQL-86、SQL-89、SQL:2003、SQL:2008、SQL:2011和SQL:2016等其他的标准,但最重要且应用最广泛的还是SQL92和SQL99。

SQL92和SQL99各有各自的特点。SQL92标准更简单,但是写出的SQL可读性差,可能会比较长。而SQL99语法稍微复杂,但是可读性更强。从这两个标准发布的页数中也可窥一斑,92版本有500页,但是99标准超过了1000页。(这两个标准我们日常其实都在使用)

SQL92和SQL99是最经典的SQL标准,也被称为是SQL-2、SQL-3标准。从这两个标准发布后,SQL的影响力越来越大,逐渐超脱了数据库领域,在信息处理等方面崭露头角。

此外,我们所使用的DBMS,即MySQL、DB2等,都支持SQL语言,但是它们只符合大部分的SQL标准,因为它们大都在常用SQL标准的基础上,根据自身产品的特点做出了拓展(方言化)。

目前oracle仍然支持92标准,但是MySQL已经不支持92标准的连接语句了。

SQL语言跟其他语言不同,它的半衰期是很长的。SQL92标准发布于1992年,同期也发布了Windows3.1,但是现在我们早已经不适用windows3.1了,而92标准却持续使用至今。

参考文献

  1. 01丨了解SQL:一门半衰期很长的语言

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/142620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

旺店通·企业版对接打通金蝶云星空查询调拨单接口与分布式调入单新增接口

旺店通企业版对接打通金蝶云星空查询调拨单接口与分布式调入单新增接口 源系统:旺店通企业版 旺店通是北京掌上先机网络科技有限公司旗下品牌,国内的零售云服务提供商,基于云计算SaaS服务模式,以体系化解决方案,助力零售企业数字化…

Android framework添加自定义的Product项目,lunch目标项目

文章目录 Android framework添加自定义的Product项目1.什么是Product?2.定义自己的Product玩一玩 Android framework添加自定义的Product项目 1.什么是Product? 源码目录下输入lunch命令之后,简单理解下面这些列表就是product。用于把系统编…

OpenCV+特征检测

检测 函数cv.cornerHarris()。其参数为: img 输入图像,应为灰度和float32类型blockSize是拐角检测考虑的邻域大小ksize 使用的Sobel导数的光圈参数k 等式中的哈里斯检测器自由参数 import numpy as np import cv2 as cv filename chessboard.png img…

如何显示标注的纯黑mask图

文章目录 前言一、二分类mask显示二、多分类mask显示 前言 通常情况下,使用标注软件标注的标签图看起来都是纯黑的,因为mask图为单通道的灰度图,而灰度图一般要像素值大于128后,才会逐渐显白,255为白色。而标注的时候…

sass 生成辅助色

背景 一个按钮往往有 4 个状态。 默认状态hover鼠标按下禁用状态 为了表示这 4 个状态&#xff0c;需要设置 4 个颜色来提示用户。 按钮类型一般有 5 个&#xff1a; 以 primary 类型按钮为例&#xff0c;设置它不同状态下的颜色&#xff1a; <button class"btn…

IP-guard Webserver view 远程命令执行漏洞【2023最新漏洞】

IP-guard Webserver view 远程命令执行漏洞【2023最新漏洞】 一、漏洞描述二、漏洞影响三、漏洞危害四、FOFA语句五、漏洞复现1、手动复现yaml pocburp发包 2、自动化复现小龙POC检测工具下载地址 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传…

R程序 示例4.3.2版本包 在centos进行编译部署

为了在CentOS上下载和编译R语言4.3.2包&#xff0c;可以按照以下步骤进行操作&#xff1a; 1.首先&#xff0c;需要安装一些必要的依赖项。可以使用以下命令安装它们&#xff1a; sudo yum install -y epel-release sudo yum install -y gcc gcc-c gcc-gfortran readline-dev…

Linux 使用随记

Linux 使用随记 shell 命令行模式登录后所取得的程序被成为shell&#xff0c;这是因为这个程序负责最外层的跟用户&#xff08;我们&#xff09;通信工作&#xff0c;所以才被戏称为shell。 命令 1、命令格式 command [-options] parameter1 parameter2 … 1、一行命令中第…

UML建模语言

UML建模语言 类的关系 依赖关系 类的方法中使用形参、局部变量或者静态方法的方式调用其他类&#xff0c;表示当前类依赖其他类。 public class Main {public void eat(Person person) {person.play();// 方法参数Student student new Student();student.study();// 局部变…

4 条件判断和循环

文章目录 一、条件判断和循环1.1 if语句1.2 if-else1.3 if-elif-else1.4 for循环1.5 while循环1.6 break退出循环1.7 continue继续循环1.8 多重循环 二、练习题小结 一、条件判断和循环 1.1 if语句 输入用户年龄&#xff0c;根据年龄打印不同的内容&#xff0c;在Python程序中…

C#几种截取字符串的方法

在C#编程中&#xff0c;经常需要对字符串进行截取操作&#xff0c;即从一个长字符串中获取所需的部分信息。本文将介绍几种常用的C#字符串截取方法&#xff0c;并提供相应的示例代码。 目录 1. 使用Substring方法2. 使用Split方法3. 使用Substring和IndexOf方法4. 使用Regex类…

JVM之垃圾回收

1. 如何判断对象可以回收 1.1 引用计数法 引用计数法是一种内存管理技术&#xff0c;其中每个对象都有一个与之关联的引用计数。引用计数表示当前有多少个指针引用了该对象。当引用计数变为零时&#xff0c;表示没有指针再指向该对象&#xff0c;该对象可以被释放&#xff0c…

HBase学习笔记(3)—— HBase整合Phoenix

目录 Phoenix Shell 操作 Phoenix JDBC 操作 Phoenix 二级索引 HBase整合Phoenix Phoenix 简介 Phoenix 是 HBase 的开源 SQL 皮肤。可以使用标准 JDBC API 代替 HBase 客户端 API来创建表&#xff0c;插入数据和查询 HBase 数据 使用Phoenix的优点 在 Client 和 HBase …

C++虚基类详解

多继承&#xff08;Multiple Inheritance&#xff09; 是指从多个直接基类中产生派生类的能力&#xff0c;多继承的派生类继承了所有父类的成员。尽管概念上非常简单&#xff0c;但是多个基类的相互交织可能会带来错综复杂的设计问题&#xff0c;命名冲突就是不可回避的一个。…

云原生Kubernetes系列 | 通过容器互联搭建wordpress博客系统

云原生Kubernetes系列 | 通过容器互联搭建wordpress博客系统 通过容器互联搭建一个wordpress博客系统。wordpress系统是需要连接到数据库上的,所以wordpress和mysql的镜像都是需要的。wordpress在创建过程中需要指定一些参数。创建mysql容器时需要把mysql的数据保存在宿主机本…

uni-app报错“本应用使用HBuilderX x.x.x 或对应的cli版本编译,而手机端SDK版本是x.x.x不匹配的版本可能造成应用异常”

uniapp开发的一个跨平台软件&#xff0c;在安卓模拟器上启动的时候报警告&#xff1a; 官方给的解释&#xff1a;uni-app运行环境版本和编译器版本不一致的问题 - DCloud问答 解决办法有两个 方法一&#xff1a;添加忽略警告的配置 项目根目录下找到 manifest.json&#xf…

C现代方法(第20章)笔记——底层程序设计

文章目录 第20章 底层程序设计20.1 位运算符20.1.1 移位运算符20.1.2 按位取反运算符、按位与运算符、按位异或运算符和按位或运算符20.1.3 用位运算符访问位20.1.4 用位运算符访问位域20.1.5 程序——XOR加密 20.2 结构中的位域20.2.1 位域是如何存储的 20.3 其他底层技术20.3…

计算机毕业设计 基于SpringBoot的销售项目流程化管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

k8s备份

cpu 磁盘io 往主的写&#xff0c;同步给备 rootk8s-etcd02:~# cat /etc/systemd/system/etcd.service [Unit] DescriptionEtcd Server Afternetwork.target Afternetwork-online.target Wantsnetwork-online.target Documentationhttps://github.com/coreos[Service] Typen…