做到哪一步才算精通SQL

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

数据定义语言 DDL for Struct

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

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)是数据操作语言,用于管理和检索数据库中的数据。
    适用于对数据库中的数据进行一些简单操作,比如增删改查表中的数据。
  • 常用的语句关键字有:SELECT、INSERT、UPDATE、DELETE、MERGE、CALL、EXPLAIN PLAN、LOCK 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,不会撤销保存点后的操作
相关推荐
AC赳赳老秦16 分钟前
OpenClaw 数据引用规范自动生成:为公开数据构建可信来源标注与标准引用体系
大数据·开发语言·汇编·数据库·人工智能·deepseek·openclaw
小蒜学长1 小时前
校园社团招新网站的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·校园社团招新网站
布莱克6052 小时前
MySQL 增删改查(CRUD)语法详解
数据库·mysql·增删改查
Dovis(誓平步青云)2 小时前
几个方案来回选不定?做一个随时切换的候选推荐页
android·java·服务器·开发语言·javascript·数据库·智能化
2501_933670793 小时前
2027届大数据管理与应用求职数字化转型顾问:项目、SQL、业务理解怎么排优先级
数据库·sql
东方护航数据恢复(深圳)4 小时前
物流案例:勒索病毒 Mallox 加密 ERP 数据库,旧备份 + 残留页重组实录【东方护航数据恢复深圳店】
数据库·数据恢复·勒索病毒·二次开盘·开盘·数据镜像
.Hypocritical.4 小时前
Redis从入门到实战:核心原理、场景落地与避坑指南
数据库·redis·缓存
梦想画家4 小时前
SQLMesh Python 模型入门(二):依赖管理、引擎实战与内存优化
数据库·python·sqlmesh
Omics Pro4 小时前
经典多组学整合算法→商用云平台
数据库·人工智能·算法·机器学习·自然语言处理
xcLeigh4 小时前
【KingbaseES数据库教程】国产化信创背景下的数据库选型与初识
linux·数据库·windows·kes·数据选型