做到哪一步才算精通SQL

server/2025/3/26 1:39:25/

做到哪一步才算精通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:用来创建数据库、表、索引等对象

sql">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:用来修改已存在的数据库对象

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

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

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

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

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

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

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

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

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

数据操作语言 DML for Data

  • DML(Data Manipulation Language)是数据操作语言,用于管理和检索数据库中的数据。
    适用于对数据库中的数据进行一些简单操作,比如增删改查表中的数据。
  • 常用的语句关键字有:SELECTINSERTUPDATEDELETEMERGECALLEXPLAIN PLANLOCK TABLE
  • 作用于数据本身,如果执行了错误的操作,可以通过回滚机制来取消这些操作。
sql">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:合并两张表或更改其中一张表的数据

sql"># 根据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:调用一个存储过程

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

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

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

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

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

数据控制语言 DCL for permission

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

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

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

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

sql">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:用于提交事务,将所有数据库修改保存到数据库

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

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

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

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

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

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

http://www.ppmy.cn/server/177229.html

相关文章

Unity 从零开始的框架搭建1-7 FSM有限状态机与其应用示例

本文小白可能看不懂,所以引路:​​​​​​【最用心 の Unity百宝箱】4. 有限状态机_哔哩哔哩_bilibili 当然,我不是按照小棋这么写的,但是思想都是一样的 另外说句题外话,配合动画状态机的函数用代码去控制逻辑才是真理,大量连线会导致项目无法维护,比如unity商店某Poly FPS P…

搭建刷题专业版小程序系统

在这个知识竞争激烈的时代,无论是准备职业资格考试,还是为了学业提升,刷题都是必不可少的学习环节。然而,面对市面上五花八门的刷题小程序,盗版多、功能不完善、二次开发困难等问题层出不穷。今天,就给大家…

Cursor IDE 入门指南

什么是 Cursor? Cursor 是一款集成了 AI 功能的现代代码编辑器,基于 VSCode 开发,专为提高开发效率而设计。它内置强大的 AI 助手功能,能够理解代码、生成代码、解决问题,帮助开发者更快、更智能地完成编程任务。 基础功能 1.…

基于Neo4j的文物推荐系统

发现历史的瑰宝:基于Neo4j的文物推荐系统 在这个信息爆炸的时代,如何快速找到自己喜爱的文化艺术品?我们的基于Neo4j的文物推荐系统,将为你打开文物世界的大门,让你在海量数据中轻松找到心仪的文物。 用户端&#xf…

flask gunicorn 日志部署

在使用 Gunicorn 运行 Flask 应用时,可以通过配置 Gunicorn 的日志功能来保存访问信息。Gunicorn 默认会将日志输出到标准输出(stdout)和标准错误(stderr),但你可以通过配置文件或命令行参数将日志保存到文…

VSCode - 查看 PDF 文件

VSCode 原生并不支持 查看 PDF 文件,需要额外安装插件。 这里我使用 vscode-pdf,效果还不错,有需要的可以搜索安装。 效果: 2025-03-18(二)

从零实现B站视频下载器:Python自动化实战教程

一、项目背景与实现原理 1.1 B站视频分发机制 Bilibili的视频采用 音视频分离技术,通过以下方式提升用户体验: 动态码率适配(1080P/4K/HDR) 分段加载技术(基于M4S格式) 内容保护机制(防盗链/签名验证) 1.2 技术实现路线 graph TDA[模拟浏览器请求] --> B[获取加密…

【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的 RESTful API 设计:从上手到骨折

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、开篇整活…