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

做到哪一步才算精通SQL

做到哪一步才算精通SQL-Structured Query Language

  • 数据定义语言 DDL for Struct
    • CREATE:用来创建数据库、表、索引等对象
    • ALTER:用来修改已存在的数据库对象
    • DROP:用来删除整个数据库或者数据库中的表
    • TRUNCATE:用来删除表中所有的行,但不删除表本身
    • RENAME:用来重命名数据库或者表
    • COMMENT:用来为数据库对象如表、列添加注释
  • 数据操作语言 DML for Data
    • MERGE:合并两张表或更改其中一张表的数据
    • CALL:调用一个存储过程
    • EXPLAIN PLAN:提供一条查询语句的执行计划 - 工作中未用到,待学习中
    • LOCK TABLE:对数据库表进行锁定,以控制并发读写 - 工作中未用到,待学习中
  • 数据控制语言 DCL for permission
    • GRANT:该命令用于授予用户对数据库对象(例如表格)的访问权限
    • REVOKE:该命令用于撤回已经授予用户的某些权限
  • 数据查询语言 DQL
  • 事务控制语言 TCL
    • COMMIT:用于提交事务,将所有数据库修改保存到数据库中
    • ROLLBACK:用于回滚事务,撤销所有未经提交的数据库修改
    • AVEPOINT:为事务中的一系列操作设定保存点

ref [基础语法与操作](https://blog.csdn.net/pantouyuchiyu/article/details/135937701)

数据定义语言 DDL for Struct

  • DDL(Data Definition Language)数据库定义语言,
  • 用于定义或改变数据表结构、数据类型、
  • 表之间的关系、库的索引、约束、视图、存储过程、触发器等。
  • CREATEALTERDROPTRUNCATERENAMECOMMENT等命令一旦执行,就无法被撤销,因为它们改变了数据库的结构。

CREATE:用来创建数据库、表、索引等对象

CREATE DATABASE testDB;                          -- 创建一个名为testDB的数据库
CREATE TABLE Students (ID INT, Name TEXT);       -- 创建一个名为Students的表,包含ID和Name两个字段
CREATE INDEX index_name ON Students (Name desc); -- 常见简单索引 name 逆序
CREATE UNIQUE INDEX index_id on Students (ID);   -- 常见唯一索引 id

ALTER:用来修改已存在的数据库对象

ALTER TABLE Students ADD Grade INT;        --在Students表中添加一个名为Grade的字段
ALTER TABLE Students DROP COLUMN Grade;    --在Students表中删除名为Grade的字段

DROP:用来删除整个数据库或者数据库中的表

DROP DATABASE testDB;                     --删除名为testDB的数据库
DROP TABLE Students;                      --删除Students表

TRUNCATE:用来删除表中所有的行,但不删除表本身

TRUNCATE TABLE Students;                 --删除Students表中的所有数据,但不删除表本身

RENAME:用来重命名数据库或者表

ALTER TABLE Students RENAME TO Pupils;  --将Students表重命名为Pupils

COMMENT:用来为数据库对象如表、列添加注释

COMMENT ON COLUMN Students.Name IS 'Student Name';  --在Students表的Name列上添加注释'Student Name'

数据操作语言 DML for Data

  • DML(Data Manipulation Language)是数据操作语言,用于管理和检索数据库中的数据。
    适用于对数据库中的数据进行一些简单操作,比如增删改查表中的数据。
  • 常用的语句关键字有:SELECTINSERTUPDATEDELETEMERGECALLEXPLAIN PLANLOCK TABLE
  • 作用于数据本身,如果执行了错误的操作,可以通过回滚机制来取消这些操作。
SELECT * FROM Students;                    --选择Students表中的所有数据
SELECT Name, Grade FROM Students;          --选择Students表中的Name和Grade数据# 在Students表中插入一条新的数据
INSERT INTO Students (ID, Name, Age) VALUES (1, 'Tom', 18); # 将Students表中ID为1的记录的Age设置为19
UPDATE Students SET Age = 19 WHERE ID = 1;# 删除Students表中ID为1的数据
DELETE FROM Students WHERE ID = 1;

MERGE:合并两张表或更改其中一张表的数据

# 根据ID进行匹配,向Students中更新或插入来自Enrolled_Students中的数据
MERGE INTO Students AS Target
USING (SELECT ID, Name FROM Enrolled_Students) AS Source
ON Target.ID = Source.ID
WHEN MATCHED THEN UPDATE SET Name = Source.Name 
WHEN NOT MATCHED THEN INSERT (ID, Name) VALUES (Source.ID, Source.Name); # MySQL 在 8.0 之前不支持 MERGE 语句,
# 需要使用 INSERT ... ON DUPLICATE KEY UPDATE 来实现类似的功能

CALL:调用一个存储过程

CALL Update_Students_Age(18); -- 调用名为“Update_Students_Age”的存储过程

EXPLAIN PLAN:提供一条查询语句的执行计划 - 工作中未用到,待学习中

EXPLAIN PLAN FOR SELECT * FROM Students; -- 显示查询所有学生数据的执行计划

LOCK TABLE:对数据库表进行锁定,以控制并发读写 - 工作中未用到,待学习中

LOCK TABLE Students IN EXCLUSIVE MODE;  -- 对Students表施加独占锁

数据控制语言 DCL for permission

  • DCL(Data Control Language)数据控制语言:主要用于控制用户对数据库的访问权限以及对数据的执行权限。
  • 使用DCL,数据库管理员可以精细化管理数据库的访问权限,保护数据的安全性。
  • 常见的DCL语句包括GRANT、REVOKE等。

GRANT:该命令用于授予用户对数据库对象(例如表格)的访问权限

GRANT SELECT, INSERT, UPDATE ON Students TO hugh;
# 给 "hugh" 授予了对 "Students" 表进行 SELECT、INSERT 和 UPDATE 的权限

REVOKE:该命令用于撤回已经授予用户的某些权限

REVOKE UPDATE ON Students FROM hugh;
撤回了 "hugh""Students" 表的 UPDATE 权限。

数据查询语言 DQL

DQL(Data Query Language)数据查询语言:主要用来查询数据。
实际上,DQL在操作中主要体现为SQL的SELECT语句。

事务控制语言 TCL

  • TCL (Transaction Control Language) 是事务控制语言,
  • 主要用来管理和控制数据库中的事务(Transaction),以保证数据库操作的完整性和一致性。
  • TCL命令往往和DML(数据操作语言)命令一起使用,以确保一系列的数据库操作要么全部成功,要么全部不成功(可回滚至操作前的状态)。

COMMIT:用于提交事务,将所有数据库修改保存到数据库中

INSERT INTO Students (ID, Name, Age) VALUES (1, 'Tom', 18);
COMMIT;  -- 提交事务,将插入的数据保存到数据库中

ROLLBACK:用于回滚事务,撤销所有未经提交的数据库修改

INSERT INTO Students (ID, Name, Age) VALUES (1, 'Tom', 18);
COMMIT;  -- 提交事务,将插入的数据保存到数据库中

AVEPOINT:为事务中的一系列操作设定保存点

设立保存点后,可以选择只回滚到保存点的部分,而不需要全部回滚

SAVEPOINT SP1;  -- 创建保存点 SP1
INSERT INTO Students (ID, Name, Age) VALUES (1, 'Tom', 18);
ROLLBACK TO SP1;  -- 回滚至保存点 SP1,不会撤销保存点后的操作

相关文章:

做到哪一步才算精通SQL

做到哪一步才算精通SQL-Structured Query Language 数据定义语言 DDL for StructCREATE:用来创建数据库、表、索引等对象ALTER:用来修改已存在的数据库对象DROP:用来删除整个数据库或者数据库中的表TRUNCATE:用来删除表中所有的行…...

Manus演示案例: 英伟达财务估值建模 解锁投资洞察的深度剖析

在当今瞬息万变的金融投资领域,精准剖析企业价值是投资者决胜市场的关键。英伟达(NVIDIA),作为科技行业的耀眼明星,其在人工智能和半导体领域的卓越表现备受瞩目。Manus 凭借专业的财务估值建模能力,深入挖…...

postman接口请求中的 Raw是什么

前言 在现代的网络开发中,API 的使用已经成为数据交换的核心方式之一。然而,在与 API 打交道时,关于如何发送请求体(body)内容类型的问题常常困扰着开发者们,尤其是“raw”和“json”这两个术语之间的区别…...

DeepSeek大语言模型下几个常用术语

昨天刷B站看到复旦赵斌老师说的一句话“科幻电影里在人脑中植入芯片或许在当下无法实现,但当下可以借助AI人工智能实现人类第二脑”(大概是这个意思) 💞更多内容,可关注公众号“ 一名程序媛 ”,我们一起从 …...

ctf-WEB: 关于 GHCTF Message in a Bottle plus 与 Message in a Bottle 的非官方wp解法

Message in a Bottle from bottle import Bottle, request, template, runapp Bottle()# 存储留言的列表 messages [] def handle_message(message):message_items "".join([f"""<div class"message-card"><div class"me…...

测试用例详解

一、通用测试用例八要素   1、用例编号&#xff1b;    2、测试项目&#xff1b;   3、测试标题&#xff1b; 4、重要级别&#xff1b;    5、预置条件&#xff1b;    6、测试输入&#xff1b;    7、操作步骤&#xff1b;    8、预期输出 二、具体分析通…...

c#面试题整理7

1.UDP和TCP的区别 UDP是只要能连上终端就发送&#xff0c;至于终端是否收到&#xff0c;不管。 TCP则是会存在交换&#xff0c;即发送失败或成功&#xff0c;是可知的。 2.进程和线程的区别 双击一个程序的exe文件&#xff0c;程序执行了&#xff0c;这就是一个进程。 这个…...

OpenManus-通过源码方式本地运行OpenManus,含踩坑及处理方案,chrome.exe位置修改

前言&#xff1a;最近 Manus 火得一塌糊涂啊&#xff0c;OpenManus 也一夜之间爆火&#xff0c;那么作为程序员应该来尝尝鲜 1、前期准备 FastGithub&#xff1a;如果有科学上网且能正常访问 github 则不需要下载此软件&#xff0c;此软件是提供国内直接访问 githubGit&#…...

【性能测试】Jmeter下载安装、环境配置-小白使用手册(1)

本篇文章主要包含Jmeter的下载安装、环境配置 添加线程组、结果树、HTTP请求、请求头设置。JSON提取器的使用&#xff0c;用户自定义变量 目录 一&#xff1a;引入 1&#xff1a;软件介绍 2&#xff1a;工作原理 3&#xff1a;安装Jmeter 4&#xff1a;启动方式 &#xf…...

HTML星球大冒险之路线图

第一章&#xff1a;欢迎来到 HTML 星球&#xff01; 1.1 宇宙的基石&#xff1a;HTML 是什么&#xff1f; &#x1f30d; 比喻&#xff1a;HTML 是网页世界的「乐高积木」&#xff0c;用标签搭建一切可见内容&#x1f3af; 目标&#xff1a;理解 HTML 的作用&#xff0c;掌握…...

初识大模型——大语言模型 LLMBook 学习(一)

1. 大模型发展历程 &#x1f539; 1. 早期阶段&#xff08;1950s - 1990s&#xff09;&#xff1a;基于规则和统计的方法 代表技术&#xff1a; 1950s-1960s&#xff1a;规则驱动的语言处理 早期的 NLP 主要依赖 基于规则的系统&#xff0c;如 Noam Chomsky 提出的 生成语法&…...

LabVIEW伺服阀高频振动测试

在伺服阀高频振动测试中&#xff0c;闭环控制系统的实时性与稳定性至关重要。针对用户提出的1kHz控制频率需求及Windows平台兼容性问题&#xff0c;本文重点分析NI PCIe-7842R实时扩展卡的功能与局限性&#xff0c;并提供其他替代方案的综合对比&#xff0c;以帮助用户选择适合…...

AI编程工具-(七)

250309,10这几天都在用通义灵码搞做建模分析。 感想&#xff0c;指令越具体&#xff0c;实现效果越好。 依然是之前的时许数据&#xff0c;这几天分析效果没有提升。 画的几个有意思的图表和效果 主要觉得这图好看&#xff0c;提示词不复杂。 预测效果 预测准确性提升不大聊…...

什么是一致性模型,在实践中如何选择?

一、一致性模型 1、强一致性(Strong Consistency) ①定义:强一致性意味着在分布式系统中的每个读取操作,都能读取到最近写入的数据。也就是说,所有节点都始终保持相同的数据状态。 ②特点:写操作对所有节点立即可见,所有的读取操作在任何节点上都能看到最新的写入。 …...

Python项目-智能家居控制系统的设计与实现

1. 引言 随着物联网技术的快速发展&#xff0c;智能家居系统已经成为现代家庭生活的重要组成部分。本文将详细介绍一个基于Python的智能家居控制系统的设计与实现过程&#xff0c;该系统能够实现对家庭设备的集中管理和智能控制&#xff0c;提升家居生活的便捷性和舒适度。 2…...

RDP连接无法复制粘贴问题的排查与解决指南

RDP连接无法复制粘贴问题的排查与解决指南 问题描述注意事项排查原因检查RDP剪贴板进程是否正常检查组策略设置检查权限和安全设置检查网络连接 解决方式重启rdpclip.exe进程启用RDP剪贴板重定向调整组策略设置检查并调整安全设置更新驱动程序和系统检查网络连接使用其他远程连…...

IDEA与Maven使用-学习记录(持续补充...)

1. 下载与安装 以ideaIU-2021.3.1为例&#xff0c;安装步骤&#xff1a; 以管理员身份启动ideaIU-2021.3.1修改安装路径为&#xff1a;D:\Program Files\JetBrains\IntelliJ IDEA 2021.3.1勾选【创建桌面快捷方式】&#xff08;可选&#xff09;、【打开文件夹作为项目】&…...

Go 语言封装 HTTP 请求的 Curl 工具包

文章目录 Go 语言封装 HTTP 请求的 Curl 工具包&#x1f3d7;️ 工具包结构简介核心结构体定义初始化函数 &#x1f31f; 功能实现1. 设置请求头2. 构建请求3. 发送请求4. 发送 GET 请求5. 发送 POST 请求6. 发送 PUT 请求7. 发送 DELETE 请求8. 读取响应体 &#x1f4a1; 实现…...

RK3568 SD卡调试记录

文章目录 1、环境介绍2、概念理清3、原理图查看4、dts配置5、验证6、SD卡启动6.1、启动优先级6.2、启动流程6.2.1、Maskrom(Boot ROM)启动优先级6.2.2、Pre-loader(SPL)启动优先级 6.3、如何从sd卡启动&#xff1f;6.3.1、制作sd启动卡6.3.2、sd卡启动 7、总结 1、环境介绍 硬…...

高效获取历史行情数据:xtquant的实战应用

高效获取历史行情数据&#xff1a;xtquant的实战应用 &#x1f680;量化软件开通 &#x1f680;量化实战教程 在量化交易领域&#xff0c;历史行情数据是构建和测试交易策略的基础。无论是回测策略的有效性&#xff0c;还是进行市场分析&#xff0c;高质量的历史数据都是不可…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...