做到哪一步才算精通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)数据库定义语言,
- 用于定义或改变数据表结构、数据类型、
- 表之间的关系、库的索引、约束、视图、存储过程、触发器等。
CREATE、ALTER、DROP、TRUNCATE、RENAME、COMMENT等命令一旦执行,就无法被撤销,因为它们改变了数据库的结构。
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)是数据操作语言,用于管理和检索数据库中的数据。
适用于对数据库中的数据进行一些简单操作,比如增删改查表中的数据。 - 常用的语句关键字有:
SELECT、INSERT、UPDATE、DELETE、MERGE、CALL、EXPLAIN PLAN、LOCK 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、用例编号; 2、测试项目; 3、测试标题; 4、重要级别; 5、预置条件; 6、测试输入; 7、操作步骤; 8、预期输出 二、具体分析通…...
c#面试题整理7
1.UDP和TCP的区别 UDP是只要能连上终端就发送,至于终端是否收到,不管。 TCP则是会存在交换,即发送失败或成功,是可知的。 2.进程和线程的区别 双击一个程序的exe文件,程序执行了,这就是一个进程。 这个…...
OpenManus-通过源码方式本地运行OpenManus,含踩坑及处理方案,chrome.exe位置修改
前言:最近 Manus 火得一塌糊涂啊,OpenManus 也一夜之间爆火,那么作为程序员应该来尝尝鲜 1、前期准备 FastGithub:如果有科学上网且能正常访问 github 则不需要下载此软件,此软件是提供国内直接访问 githubGit&#…...
【性能测试】Jmeter下载安装、环境配置-小白使用手册(1)
本篇文章主要包含Jmeter的下载安装、环境配置 添加线程组、结果树、HTTP请求、请求头设置。JSON提取器的使用,用户自定义变量 目录 一:引入 1:软件介绍 2:工作原理 3:安装Jmeter 4:启动方式 …...
HTML星球大冒险之路线图
第一章:欢迎来到 HTML 星球! 1.1 宇宙的基石:HTML 是什么? 🌍 比喻:HTML 是网页世界的「乐高积木」,用标签搭建一切可见内容🎯 目标:理解 HTML 的作用,掌握…...
初识大模型——大语言模型 LLMBook 学习(一)
1. 大模型发展历程 🔹 1. 早期阶段(1950s - 1990s):基于规则和统计的方法 代表技术: 1950s-1960s:规则驱动的语言处理 早期的 NLP 主要依赖 基于规则的系统,如 Noam Chomsky 提出的 生成语法&…...
LabVIEW伺服阀高频振动测试
在伺服阀高频振动测试中,闭环控制系统的实时性与稳定性至关重要。针对用户提出的1kHz控制频率需求及Windows平台兼容性问题,本文重点分析NI PCIe-7842R实时扩展卡的功能与局限性,并提供其他替代方案的综合对比,以帮助用户选择适合…...
AI编程工具-(七)
250309,10这几天都在用通义灵码搞做建模分析。 感想,指令越具体,实现效果越好。 依然是之前的时许数据,这几天分析效果没有提升。 画的几个有意思的图表和效果 主要觉得这图好看,提示词不复杂。 预测效果 预测准确性提升不大聊…...
什么是一致性模型,在实践中如何选择?
一、一致性模型 1、强一致性(Strong Consistency) ①定义:强一致性意味着在分布式系统中的每个读取操作,都能读取到最近写入的数据。也就是说,所有节点都始终保持相同的数据状态。 ②特点:写操作对所有节点立即可见,所有的读取操作在任何节点上都能看到最新的写入。 …...
Python项目-智能家居控制系统的设计与实现
1. 引言 随着物联网技术的快速发展,智能家居系统已经成为现代家庭生活的重要组成部分。本文将详细介绍一个基于Python的智能家居控制系统的设计与实现过程,该系统能够实现对家庭设备的集中管理和智能控制,提升家居生活的便捷性和舒适度。 2…...
RDP连接无法复制粘贴问题的排查与解决指南
RDP连接无法复制粘贴问题的排查与解决指南 问题描述注意事项排查原因检查RDP剪贴板进程是否正常检查组策略设置检查权限和安全设置检查网络连接 解决方式重启rdpclip.exe进程启用RDP剪贴板重定向调整组策略设置检查并调整安全设置更新驱动程序和系统检查网络连接使用其他远程连…...
IDEA与Maven使用-学习记录(持续补充...)
1. 下载与安装 以ideaIU-2021.3.1为例,安装步骤: 以管理员身份启动ideaIU-2021.3.1修改安装路径为:D:\Program Files\JetBrains\IntelliJ IDEA 2021.3.1勾选【创建桌面快捷方式】(可选)、【打开文件夹作为项目】&…...
Go 语言封装 HTTP 请求的 Curl 工具包
文章目录 Go 语言封装 HTTP 请求的 Curl 工具包🏗️ 工具包结构简介核心结构体定义初始化函数 🌟 功能实现1. 设置请求头2. 构建请求3. 发送请求4. 发送 GET 请求5. 发送 POST 请求6. 发送 PUT 请求7. 发送 DELETE 请求8. 读取响应体 💡 实现…...
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卡启动?6.3.1、制作sd启动卡6.3.2、sd卡启动 7、总结 1、环境介绍 硬…...
高效获取历史行情数据:xtquant的实战应用
高效获取历史行情数据:xtquant的实战应用 🚀量化软件开通 🚀量化实战教程 在量化交易领域,历史行情数据是构建和测试交易策略的基础。无论是回测策略的有效性,还是进行市场分析,高质量的历史数据都是不可…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
