认识 SQL

文章目录

  • 1.简介
  • 2.SQL 的组成
  • 3.SQL 是如何工作的?
  • 4.五种子语言
  • 5.SQL 注释
  • 参考文献

1.简介

SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系型数据库的标准化查询语言。它是一种特定域语言(DSL),用于定义数据库结构、插入、更新、删除数据以及查询数据等操作,并不局限于数据查询。

SQL 最初由 IBM 的 Donald D. Chamberlin 和 Raymond F. Boyce 在 1970 年代初开发,作为关系数据库管理系统(RDBMS)的查询语言。随后,SQL 在 1986 年成为了 ANSI(美国国家标准学会)和 ISO(国际标准化组织)的标准,并在数据库管理领域得到广泛应用。

SQL 被标准化后,仍在不断的发展和完善,至今 SQL 标准经过了一系列的增订,加入了大量新特性。虽然有这一标准的存在,但大部分的 SQL 代码在不同的数据库系统中并不具有完全的跨平台性。

2.SQL 的组成

关系数据库管理系统使用结构化查询语言(SQL)来存储和管理数据。 系统存储多个相互关联的数据库表。 MS SQL Server、MySQL 或 MS Access 是关系数据库管理系统的示例。 以下是此类系统的组件。

  • SQL 表

SQL 表是关系数据库的基本元素。 SQL 数据库表由行和列组成。 数据库工程师在多个数据库表之间创建关系以优化数据存储空间。

例如,数据库工程师为商店中的产品创建一个 SQL 表:

Product ID	Product Name	Color ID
0001		Mattress		Color 1
0002		Pillow			Color 2

然后数据库工程师将产品表链接到带有颜色 ID 的颜色表:

Color ID	Color Name
Color 1		Blue
Color 2		Red
  • SQL 语句

SQL 语句或 SQL 查询是关系数据库管理系统可以理解的有效指令。 软件开发人员使用不同的 SQL 语言元素构建 SQL 语句。 SQL语言元素是构成正确SQL语句的标识符、变量和搜索条件等组件。

例如,以下 SQL 语句使用 SQL INSERT 命令将价格为 499 美元的床垫品牌 A 存储到名为 mattress_table 的表中,其中列名称为brand_name 和 cost:

INSERT INTO mattress_table (brand_name, cost)
VALUES(‘A’,499);
  • 存储过程

存储过程是存储在关系数据库中的一个或多个 SQL 语句的集合。 软件开发人员使用存储过程来提高效率和性能。 例如,他们可以创建一个存储过程来更新销售表,而不是在不同的应用程序中编写相同的 SQL 语句。

3.SQL 是如何工作的?

结构化查询语言 (SQL) 的志聪过程需要经过几个软件组件,包括以下组件。

  • 解析器

解析器首先将 SQL 语句中的一些单词单词化,或用特殊符号替换。然后,解析器会检查语句是否存在以下情况:

  1. 正确性

解析器会验证 SQL 语句是否符合 SQL 语义或规则,以确保查询语句正确性。例如,解析器会检查 SQL 命令是否以分号结尾。如果缺少分号,解析器将返回错误。

  1. 授权

解析器还会验证运行查询的用户是否具有操作相应数据的必要授权。例如,只有管理员用户才有权删除数据。

  • 关系引擎

关系引擎或查询处理器会创建一个计划,以最有效的方式检索、写入或更新相应数据。例如,关系引擎会检查类似的查询,重用以前的数据操作方法,或创建新的方法。关系引擎以 SQL 语句的中间级表示形式(称为字节码)编写计划。关系数据库使用字节码高效地执行数据库搜索和修改。

  • 存储引擎

存储引擎或数据库引擎是指处理字节码并运行预期 SQL 语句的软件组件。存储引擎会读取并存储物理磁盘存储上的数据库文件中的数据。完成后,存储引擎会将结果返回给请求应用程序。

4.五种子语言

SQL 由多种类型的语句组成,这些语句可以被非正式地归类为子语言,主要分为 5 类。

  • DCL(Data Control Language)

DCL 数据控制语言,用于对数据库,数据表的访问角色和权限的控制等。

GRANT - 授权 
REVOKE - 撤销授权 
DENY - 拒绝授权
  • DDL(Data Definition Language)

DDL 数据定义语言用于定义数据库结构,用于定义数据库的结构和模式。DDL 包括创建、修改和删除数据库对象的命令,例如表、索引、视图等。

CREATE - 创建
ALTER - 修改
DROP - 删除
TRUNCATE - 截断
RENAME - 重命名
COMMENT - 注释
  • DML(Data Manipulation Language)

DML 数据操纵语言供用户对数据库中数据的操作,包括数据的增加、删除、更新,载入等操作。

UPDATE - 更新数据库表中的数据 
DELETE - 从数据库表中删除数据 
INSERT INTO - 向数据库表中插入数据
REPLACE INTO - 向数据库表中插入数据,如果存在先删除
LOAD - 从文件中导入数据到数据库表
  • DQL(Data Query Language)

DQL 数据查询语言用以从表中获得数据,确定数据怎样在应用程序给出。 SELECT 是 DQL(也是所有 SQL)用得最多的动词。常用的关键字有:

SELECT-从数据库表中获取数据 

SELECT 语句中常用关键字有:

FROM - 指定从哪个数据表或子查询中查询
WHERE - 指定查询条件
GROUP BY - 结合合计函数,根据一个或多个列对结果集进行分组
HAVING - 对分组后的结果集进行筛选
ORDER BY - 对结果集进行排序
LIMIT - 对结果集进行top限制输出
UNION - 结果集纵向联合
JOIN - 结果集横向拼接
  • TCL(Transaction Control Language)

TCL 事务控制语言用于控制事务的执行。

SQL事务是数据库管理系统中的一个重要概念,它是一系列数据库操作(如插入、更新、删除等)的逻辑单元,要么全部执行成功并永久保存,要么全部失败并回滚到操作前的状态,保证数据库的数据一致性和可靠性。

TCL 命令只能与 DML 命令一起使用,例如 INSERT、DELETE 和 UPDATE 等。

BEGIN TRANSACTION 或 START- 开始事务
SAVEPOINT - 在事务中设置保存点,可以回滚到此处
ROLLBACK - 回滚 
COMMIT - 提交
SET TRANSACTION – 改变事务选项
SET CONSTRAINT - 启用或禁用外键约束

5.SQL 注释

SQL 注释是用来在 SQL 语句中添加对代码的解释说明。SQL 支持两种类型的注释符号。

单行注释:使用两个连续的减号(–)表示。减号后面的内容将被视为注释,直到该行结束。

SELECT column1, column2
FROM table
-- This is a single-line comment
WHERE condition;

注意,MySQL 也支持使用 # 符号进行单行注释。不过 # 并不是 SQL 标准规定的注释方式,并不是所有数据库都支持。

多行注释:使用/* 注释内容*/的格式表示。注释内容位于 /* 和 */ 之间,可以跨越多行。

SELECT column1, column2
FROM table
/* This is amulti-line comment */
WHERE condition;

参考文献

SQL - Wikipedia
What Is SQL (Structured Query Language)? - Amazon AWS

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

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

相关文章

Python web实战之 Django 的 MVC 设计模式详解

技术栈:Python、Django、HTML、CSS、JavaScript。 概要 在 Web 开发中,MVC(Model-View-Controller)模式是一种非常常见的设计模式,它可以帮助我们更好地管理代码,提高代码的可维护性。今天就介绍如何使用 …

前端性能优化的利器 ——— 浅谈JavaScript中的防抖和节流

防抖和节流函数是工作中两种常用的前端性能优化函数,今天我就来总结一下什么是防抖和节流,并详细说明一下如何在工作中应用防抖和节流函数 什么是防抖和节流? 在 JavaScript 中,防抖(debounce)和节流(thr…

RTT(RT-Thread)线程管理(1.2W字详细讲解)

目录 RTT线程管理 线程管理特点 线程工作机制 线程控制块 线程属性 线程状态之间切换 线程相关操作 创建和删除线程 创建线程 删除线程 动态创建线程实例 启动线程 初始化和脱离线程 初始化线程 脱离线程 静态创建线程实例 线程辅助函数 获得当前线程 让出处…

数组中的第K个最大元 O(N)

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1,5,6,4], k 2…

[腾讯云Cloud Studio实战训练营]无门槛使用GPT+Cloud Studio辅助编程完成Excel自动工资结算

目录 前言一、Cloud Studio产品介绍1.1 注册Cloud Studio 二、项目实验2.1 选择合适的开发环境2.2 实验项目介绍2.3 实验步骤三、总结 前言 chatgpt简单介绍: ChatGPT是一种基于GPT的自然语言处理模型,专门用于生成对话式文本。它是OpenAI于2021年发布的&#xff0…

突破传统监测模式:业务状态监控HM的新思路 | 京东云技术团队

一、传统监控系统的盲区,如何打造业务状态监控。 在系统架构设计中非常重要的一环是要做数据监控和数据最终一致性,关于一致性的补偿,已经由算法部的大佬总结过就不再赘述。这里主要讲如何去补偿?补偿的方案哪些?这就…

TCP/IP协议

TCP/IP 是一类协议系统,它是用于网络通信的一套协议集合 物理层 所谓的物理层,是指光纤、电缆或者电磁波等真实存在的物理媒介。这些媒介可以传送物理信号,比如亮度、电压或者振幅。对于数字应用来说,我们只需要两种物理信号来分别…

加强 Kubernetes 能力:利用 CRD 定义多版本资源的实现方式

姚灿武,Rancher 中国研发工程师,拥有 7 年云计算领域经验,热衷开源技术,在云原生相关技术领域拥有丰富的开发和实践经验。 CRD,即自定义资源定义(Custom Resource Definition),是 Ku…

leetcode 435. 无重叠区间

2023.8.3 本题和引爆气球 这题非常类似&#xff0c;利用同样的思路可以解决&#xff0c;代码如下&#xff1a; class Solution { public:static bool cmp(vector<int>& a , vector<int>& b){if(a[0] b[0]) return a[1] < b[1];return a[0] < b[0];…

SpringBoot复习:(16)TomcatStarter

直接在idea里运行SpringBoot程序时&#xff0c;内嵌的tomcat容器会调用TomcatStarter这个类的onStartup方法。TomcatStarter继承自ServletContainerInitializer 其onStartup方法会调用ServletContextInitializer&#xff08;不是ServletContainerInitializer)的onStartup方法.…

Unity 引擎做残影效果——3、顶点偏移方式

Unity实现残影效果 大家好&#xff0c;我是阿赵。 继续讲Unity引擎的残影做法。这次的残影效果和之前两种不太一样&#xff0c;是通过顶点偏移来实现的。 具体的效果是这样&#xff1a; 与其说是残影&#xff0c;这种效果更像是移动速度很快时造成的速度线&#xff0c;所以在移…

C# 开发规范

控件命名规则 控件名简写 控件名简写LabellblTextBoxtxtButtonbtnLinkButtonlnkbtnImageButtonimgbtnDropDownListddlListBoxlstDataGriddgDataListdlCheckBoxchkCheckBoxListchklsRadioButtonrdoRadioButtonListrdoltImageimgPanelpnlCalendecldAdRotatorarTabletblRequiredF…

Flink On Yarn模式部署与验证

session运行模式 该模式下分为2步&#xff0c;即使用yarn-session.sh申请资源&#xff0c;然后 flink run提交任务。 1、申请资源yarn-session.sh #在server1执行命令 /usr/local/flink-1.13.5/bin/yarn-session.sh -tm 1024 -n 2 -s 1 -d #申请2个CPU、2g内存 # -tm 表示每个…

关于前后端分离

关于前后端分离 接下来&#xff0c;你将进入 前后端分离项目开发 模块。 这也是企业中比较常见的开发模式。 疑问&#xff1a; 什么是前后端分离&#xff1f;与之前的开发模式有什么区别&#xff1f;企业为什么要用前后端分离&#xff1f; 1. 什么是前后端分离&#xff1f;…

LeetCode|DP|70. 118. 119.

70. Climbing Stairs memorization。 118. Pascals Triangle 2d array的熟练程度。 ​​​​​​119. Pascals Triangle II 节省空间版的118.只需要两个vec&#xff0c;一个是老的&#xff0c;把老的后面push一个1&#xff0c;然后用新的算。然后老新就行。

基于人工智能的状态监测帮助结束冷却塔的维护“噩梦”

冷却塔是将水蒸气冷却成较低温的水、将系统的废热排到大气层的排热装置&#xff0c;在工业生产中扮演着不可或缺的关键角色。大型工业冷却塔的主要用途是用来冷却在水冷系统中的循环水。这些水冷系统广泛应用于发电厂、炼油厂、石化厂、天然气制造厂、食品加工厂、半导体厂等工…

2308C++基本宏

学习宏编程 这里细节 #define 宏删括(T) 宏删括_ T //如果T有括号,自动就删除了. #define 宏删括_(...) __VA_ARGS__延时拼接: #define 宏连(A,B) 宏连_(A,B) //先展开 #define 宏连_(A,B) A##B //再拼接.这样: #define FOO(N) 宏连(foo_, N) FOO(bar) // -> foo_bar …

ARP断网攻击及防御

ARP断网攻击及防御 攻击防御 攻击 PC1的IP地址 10.9.136.222 PC2的IP地址 10.9.136.55在局域网里通信 需要有IP地址和MAC地址 两台电脑PC1和PC2要想相互通信&#xff0c;PC1在连接PC2的时候&#xff0c;PC1会先查看自己的ARP缓存表&#xff08;命令&#xff1a;arp -a &#xf…

校园跑腿小程序运营攻略

作为一名校园跑腿小程序的运营者&#xff0c;你可能会面临诸如用户获取、平台推广、服务质量保证等挑战。在本篇推文中&#xff0c;我将为你提供一些关键的运营策略&#xff0c;帮助你成功运营校园跑腿小程序。 1. 用户获取和留存 用户是校园跑腿小程序成功的关键。以下是一些…

C++如何用OpenCV中实现图像的边缘检测和轮廓提取?

最近有个项目需要做细孔定位和孔距测量&#xff0c;需要做边缘检测和轮廓提取&#xff0c;先看初步效果图&#xff1a; 主要实现代码&#xff1a; int MainWindow::Test() {// 2.9 单个像素长度um 5倍double dbUnit 2.9/(1000*5);// 定义显示窗口namedWindow("src"…