数据库:SQL——数据库操作的核心语言
数据库:SQL——数据库操作的核心语言
SQL(结构化查询语言)是关系型数据库管理系统中的标准语言,广泛用于数据的定义、操作、控制和查询。SQL 包含多个子语言,分别用于不同的数据库操作任务,包括数据定义(DDL)、数据操纵(DML)、数据控制(DCL)、数据查询(DQL)和事务控制(TCL)。本文将详细介绍这些子语言的作用、常用命令,并通过示例代码展示它们的实际应用。
文章目录
- 数据库:SQL——数据库操作的核心语言
- 一、概述
- 二、SQL 子语言详解
- 1. DDL(数据定义语言,Data Definition Language)
- 2. DML(数据操纵语言,Data Manipulation Language)
- 3. DCL(数据控制语言,Data Control Language)
- 4. DQL(数据查询语言,Data Query Language)
- 5. TCL(事务控制语言,Transaction Control Language)
- 三、SQL 各子语言对比总结
一、概述
SQL(结构化查询语言,Structured Query Language)是关系型数据库管理系统(RDBMS)中用于管理和操作数据的标准语言。SQL 语言可以分为不同的子语言,每一种子语言都有其特定的用途和功能。理解这些子语言及其命令,是掌握数据库操作的基础。
二、SQL 子语言详解
1. DDL(数据定义语言,Data Definition Language)
作用:DDL 用于定义和管理数据库结构和对象,例如表、索引、视图和约束。通过 DDL,我们可以创建、修改或删除数据库对象。
常用命令:
CREATE:用于创建新的数据库对象,例如表或视图。ALTER:用于修改现有的数据库对象。DROP:用于删除数据库对象。
示例:
-- 创建一个新的表 Customers
CREATE TABLE Customers (ID INT PRIMARY KEY,Name VARCHAR(100),Email VARCHAR(100)
);-- 修改表,添加一个新的列 PhoneNumber
ALTER TABLE Customers ADD PhoneNumber VARCHAR(15);-- 删除表 Customers
DROP TABLE Customers;
解释:
在上述示例中,CREATE TABLE 命令用于定义一个新的表 Customers,包含三个列:ID、Name 和 Email。ALTER TABLE 命令则用于修改现有的表结构,向表中添加新的列 PhoneNumber。最后,DROP TABLE 命令用于删除 Customers 表。
2. DML(数据操纵语言,Data Manipulation Language)
作用:DML 用于对数据库中的数据进行操作,包括查询、插入、更新和删除数据。它是我们与数据库中实际数据交互的主要方式。
常用命令:
SELECT:用于查询数据。INSERT:用于插入新数据。UPDATE:用于更新现有数据。DELETE:用于删除数据。
示例:
-- 查询所有客户信息
SELECT * FROM Customers;-- 向表中插入一条新记录
INSERT INTO Customers (Name, Email) VALUES ('Alice', 'alice@example.com');-- 更新客户信息
UPDATE Customers SET Email = 'alice123@example.com' WHERE Name = 'Alice';-- 删除一条记录
DELETE FROM Customers WHERE Name = 'Alice';
解释:
SELECT 命令用于从 Customers 表中检索所有数据。INSERT 命令将新的客户信息插入表中。UPDATE 命令修改了 Alice 的邮箱地址,而 DELETE 命令则删除了表中 Alice 的记录。
3. DCL(数据控制语言,Data Control Language)
作用:DCL 用于控制数据库用户的权限管理,主要用于授予或撤销用户对数据库的访问权限。
常用命令:
GRANT:授予用户特定权限。REVOKE:撤销用户的特定权限。
示例:
-- 授予用户 user1 对 Customers 表的 SELECT 权限
GRANT SELECT ON Customers TO 'user1';-- 撤销用户 user1 对 Customers 表的 SELECT 权限
REVOKE SELECT ON Customers FROM 'user1';
解释:
在这个示例中,GRANT 命令用于赋予用户 user1 对 Customers 表的查询权限,而 REVOKE 命令则撤销了这个权限。通过 DCL,数据库管理员可以有效地管理数据库安全。
4. DQL(数据查询语言,Data Query Language)
作用:DQL 主要用于从数据库中查询数据,尽管 DQL 通常被包含在 DML 中,但有时也会被单独列出。SELECT 是 DQL 中的核心命令。
常用命令:
SELECT:用于从数据库中检索数据。
示例:
-- 查询来自美国的客户信息
SELECT Name, Email FROM Customers WHERE Country = 'USA';
解释:
SELECT 命令用于从 Customers 表中查询所有来自美国的客户的姓名和邮箱信息。这是数据库操作中最常用的命令之一。
5. TCL(事务控制语言,Transaction Control Language)
作用:TCL 用于管理数据库中的事务,确保数据的一致性和完整性。事务是指一组操作,要么全部成功,要么全部失败。
常用命令:
COMMIT:提交事务,将事务中的所有操作永久保存。ROLLBACK:回滚事务,撤销事务中的所有操作。SAVEPOINT:在事务中设置保存点,以便部分回滚。
示例:
-- 开始事务
BEGIN;-- 向 Orders 表中插入数据
INSERT INTO Orders (OrderID, ProductID) VALUES (1, 1001);-- 提交事务
COMMIT;-- 或者可以回滚事务
ROLLBACK;
解释:
BEGIN 命令开始一个事务。INSERT 命令向 Orders 表中插入一条记录。如果操作成功且无错误发生,COMMIT 命令会提交事务,将操作永久保存。如果出现错误或想要撤销操作,ROLLBACK 命令则会回滚事务。
三、SQL 各子语言对比总结
| 子语言 | 全称 | 主要作用 | 常用命令 | 示例操作 |
|---|---|---|---|---|
| DDL | 数据定义语言(Data Definition Language) | 定义和管理数据库结构和对象 | CREATE、ALTER、DROP | 创建表、修改表结构、删除表 |
| DML | 数据操纵语言(Data Manipulation Language) | 操作数据库中的数据 | SELECT、INSERT、UPDATE、DELETE | 查询数据、插入数据、更新数据、删除数据 |
| DCL | 数据控制语言(Data Control Language) | 管理数据库用户权限 | GRANT、REVOKE | 授予权限、撤销权限 |
| DQL | 数据查询语言(Data Query Language) | 查询数据库中的数据(通常包含在 DML 中) | SELECT | 从数据库中检索特定数据 |
| TCL | 事务控制语言(Transaction Control Language) | 管理数据库事务,确保数据一致性 | COMMIT、ROLLBACK、SAVEPOINT | 提交事务、回滚事务、设置事务保存点 |
这个表格简洁地对比了 SQL 的不同子语言,涵盖了它们的全称、主要作用、常用命令以及典型的示例操作。这有助于快速理解每种子语言的用途和功能。
相关文章:
数据库:SQL——数据库操作的核心语言
数据库:SQL——数据库操作的核心语言 SQL(结构化查询语言)是关系型数据库管理系统中的标准语言,广泛用于数据的定义、操作、控制和查询。SQL 包含多个子语言,分别用于不同的数据库操作任务,包括数据定义&a…...
Unity + HybridCLR 从零开始
官方文档开始学习,快速上手 | HybridCLR (code-philosophy.com)是官方文档链接 1.建议使用2019.4.40、2020.3.26、 2021.3.0、2022.3.0 中任一版本至于其他2019-2022LTS版本可能出现打包失败情况 2. Windows Win下需要安装visual studio 2019或更高版本。安装时至少要包含 使…...
C++小总结
C小总结 接口 对外暴露头文件中,只需要声明接口函数即可,其他不暴露的函数不需要进行声明。接口的参数使用指针形式比较好,因为外部使用时可以对实参进行创建和析构,如果非接口函数使用new开辟,不太好进行析构。在使…...
从快到慢学习Git指令
Git是现在最流行的版本控制工具之一。无论是在开源社区还是企业软件开发中,Git都扮演着至关重要的角色。本文将根据不同的需求,分别提供快速上手和深入学习Git的指南。 如果你只想下载代码 如果你只是想下载GitHub或其他代码仓库的代码,那你只需要了解以下两个命令: git clo…...
传奇游戏发布渠道
传奇游戏发布渠道 回答:游戏发布平台|手机游戏发布平台 传奇游戏发布渠道作为游戏开发商直接控制的信息传播途径,其安全性自然有着较高的保障。首先,渠道通常会采用先进的加密技术和安全协议来保护数据传输过程中的安全,防止信息…...
如何有效阅读科研论文【方法论】
如何读论文【论文精读1】_哔哩哔哩_bilibili 如何有效阅读科研论文 科研论文是了解学术领域最新研究成果和技术发展的重要途径。有效地阅读论文不仅能够帮助我们掌握前沿知识,还能提升自己的研究能力。本文将介绍一种系统的论文阅读方法,并通过具体的步…...
【揭秘】层层加码,竟能加速渠道营销数字化?-eBest
国潮饮料品牌在eBest RTM系统的支持下,已经将数字化贯彻到每一个销售环节,且看eBest如何通过“层层加码”,进一步加速该饮料品牌渠道数字化进程,实现弯道超车? “一箱四码”垛码 五码实现渠道数字化 为提高营销和数字…...
基于WAMP环境的简单用户登录系统实现(v3版)(持续迭代)
目录 版本说明 实现环境: 流程逻辑框图: 数据库连接 登录页面:login.html 登录处理实现:doLogin.php 用户欢迎页面:welcome.php 密码修改页面:change_password.html 修改处理:doChangePa…...
大语言模型与多模态大模型loss计算
文章目录 前言一、大语言模型loss计算1、loss计算代码解读2、构建模型输入内容与label标签3、input_ids与labels格式 二、多模态大模型loss计算方法1、多模态loss计算代码解读2、多模态输入内容2、大语言模型输入内容3、图像embending如何嵌入文本embeding 前言 如果看了我前面…...
线上研讨会 | CATIA助力AI提升汽车造型设计
报名链接: 2024探索之旅第二季...
Unity新输入系统 之 InputAction(输入配置文件最基本的单位)
本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 首先你应该了解新输入系统的构成结构:Unity新输入系统结构概览-CSDN博客 Input System - Unity 手册 1.In…...
【3】MySQL的安装即启动
目录 一.下载 二.安装 三.启动 一.下载 二.安装 安装MySQL时遇到的Initializing database错误:推荐下面的博客(简单就是电脑名不要出现中文) https://blog.csdn.net/m0_52775858/article/details/123705566 三.启动 PS:cmd要…...
变“金点子”为“好应用”,合合信息智能文档处理技术助力大学生探索AI创新边界
谈“糖”色变、追求养生、低卡生活……这些热门词汇频频在社交媒体上掀起讨论热潮。有这样一批年轻人不但捕捉到了这些词汇背后真实的用户需求,并且正在利用AI技术寻找解决之道。 近日,“中国大学生服务外包创新创业大赛”(以下简称“服创大…...
央行重提P2P存量业务化解,非吸案开始翻旧账?
沉寂已久的P2P,又突然以另一种意想不到的形式回到公众视野了。2018年全国P2P坍塌式暴雷,平台老板“跑路”“判刑”的消息一时间你方唱罢我登场。当年的某凰金融、某租宝、某信贷等赫赫有名的网贷平台传出的消息无非两类——查封或跑路,这几年…...
8B 端侧小模型 | 能力全面对标GPT-4V!单图、多图、视频理解端侧三冠王,这个国产AI开源项目火爆全网
这两天, Github上一个 国产开源AI 项目杀疯了!一开源就登上了 Github Trending 榜前列,一天就获得将近600 star。 这个项目就是国内大模型四小龙之一面壁智能最新大打造的面壁「小钢炮」 MiniCPM-V 2.6 。它再次刷新端侧多模态天花板…...
汽车免拆诊断案例 | DAF(达富)汽油尾气处理液故障警示
故障现象 距离我上次在货卡上工作已经有一段时间了,让它们在道路上保持安全行驶是非常重要的。因此,当故障警示灯亮起时,我们需要迅速找到问题方向以及排除故障。 车辆的仪表板亮起多个故障灯以及警示灯,我们需要用解码器查找触…...
图论算法
目录 1.引言 2.图论基础 3.Dijkstra算法 3.1 算法背景与概述 3.2 算法原理 3.3 算法步骤 3.4 示例说明 3.5 复杂度分析 3.6 优缺点及应用场景 4.Floyd-Warshall算法 4.1 算法背景与概述 4.2 算法原理 4.3 算法步骤 4.4 示例说明 4.5 复杂度分析 4.6 优缺点及应用…...
手抖跟饮食有关系吗?
手抖,医学上称为震颤(tremor),是指手部或其他身体部位的不自主抖动。饮食在某种程度上与手抖相关,但并非唯一的因素。以下是饮食与手抖之间可能存在的关系: 1. 咖啡因摄入:咖啡因是一种刺激神经…...
59. 螺旋矩阵 II
59. 螺旋矩阵 II 题目链接:59. 螺旋矩阵 II 代码如下: class Solution { public:vector<vector<int>> generateMatrix(int n) {if(n1){return {{1}};}vector<vector<int>> res(n,vector<int>(n));int num1;int left0,r…...
shiro注解不起作用:shiro进行权限校验时,@RequireRoles(“admin“)注解不起作用的解决方法
今天在写前后端分离项目时,用jwt加shiro进行登录权限校验时,RequireRoles("admin")注解不起作用,记录一下。 前提:数据库里面的user_type代表用户类型 :0普通用户 ;1:专家࿱…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
