数据库学习(二)——MySQL语句
MySQL 语句分为:
语句类型 | 作用 | 关键字示例 |
---|---|---|
数据查询(DQL) | 查询数据 | SELECT |
数据操作(DML) | 插入、更新、删除数据 | INSERT , UPDATE , DELETE |
数据定义(DDL) | 定义或修改表结构 | CREATE , ALTER , DROP |
事务控制(TCL) | 控制事务执行 | BEGIN , COMMIT , ROLLBACK |
权限控制(DCL) | 管理权限 | GRANT , REVOKE |
一、查询语句(SELECT
)
用于从数据库中检索数据,是最常用的 SQL 语句。
语法结构:
SELECT column1, column2, ...
FROM table_name
WHERE condition
GROUP BY column
HAVING condition
ORDER BY column ASC|DESC
LIMIT offset, count;
关键部分解析:
SELECT
:指定查询哪些列,可以用*
表示全部列;FROM
:指定查询的数据表;WHERE
:筛选符合条件的记录(过滤行);GROUP BY
:将结果按某列分组;HAVING
:对分组后的结果进行条件过滤(区别于 WHERE,HAVING 针对聚合结果);ORDER BY
:对结果排序(升序 ASC,降序 DESC);LIMIT
:限制返回的记录数及偏移量。
示例:
SELECT name, COUNT(*) AS orders_count
FROM customers
JOIN orders ON customers.id = orders.customer_id
WHERE age > 18
GROUP BY name
HAVING orders_count > 5
ORDER BY orders_count DESC
LIMIT 10;
注意:
- 从
customers
表和orders
表连接数据(将每一个顾客(customers 表)与其在 orders 表中的订单匹配起来)。 - 筛选年龄大于 18 的顾客。
- 按顾客姓名分组,统计每个顾客的订单数量。
- 只返回订单数量超过 5 的顾客。
- 按订单数量降序排列。
- 只显示前 10 条结果。
二、数据插入语句(INSERT
)
用于添加新记录。
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
注意:
- 列出需要插入值的列名和对应的值。
- 也可以一次插入多条数据。
三、数据更新语句(UPDATE
)
用于修改已有数据。
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
注意:
WHERE
是关键,指定更新哪些行。若无WHERE
,所有行都会被更新!
四、数据删除语句(DELETE
)
用于删除表中的数据。
DELETE FROM table_name
WHERE condition;
注意:
- 需使用
WHERE
指定删除哪些行,没有WHERE
会删除所有数据,。
五、表结构操作(DDL)
1. 创建表:
CREATE TABLE table_name (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,age INT,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
注意:
字段名 | 类型 | 约束/说明 |
---|---|---|
id | INT | 主键,自动递增。用于唯一标识每一行记录。 |
name | VARCHAR(50) | 最多可存储 50 个字符,不能为空(NOT NULL )。 |
age | INT | 存储年龄,整数类型,可以为空(没有 NOT NULL 约束)。 |
created_at | TIMESTAMP | 时间戳字段,默认值为当前时间(CURRENT_TIMESTAMP )。自动记录创建时间。 |
2. 修改表:
ALTER TABLE table_name
ADD COLUMN email VARCHAR(100);
注意:
- 修改已有表
table_name
,新增一个名为email
的字段,数据类型为VARCHAR(100)
。
3. 删除表:
DROP TABLE table_name;
注意:
- 该代码会删除整个表
table_name
。
六、事务控制语句
用于保证数据操作的完整性。
语句 | 作用说明 |
---|---|
START TRANSACTION; | 显式开启一个事务 |
BEGIN; | 等价于 START TRANSACTION ,开启事务 |
COMMIT; | 提交事务,使所有操作永久生效 |
ROLLBACK; | 回滚事务,撤销事务内的所有操作 |
SAVEPOINT 名称; | 设置一个保存点,可用于局部回滚 |
ROLLBACK TO SAVEPOINT 名称; | 回滚到指定保存点 |
RELEASE SAVEPOINT 名称; | 删除保存点(不是必须的,但可清理命名空间) |
SET AUTOCOMMIT = 0; | 禁用自动提交(事务需手动提交) |
示例——基本事务控制:
START TRANSACTION;UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;COMMIT;
注意:
- 如果两个
UPDATE
都成功,就COMMIT
,资金划转完成。 - 如果任一失败,执行
ROLLBACK;
,保持原始状态。
七、索引相关语句
索引提升查询性能。
CREATE INDEX idx_name ON table_name(column_name);
DROP INDEX idx_name ON table_name;
注意:
- CREATE语句给
users
表的email
列建立一个索引,查询时WHERE email = 'xxx'
会更快。 DROP
语句删除名为idx_name
的索引。
八、权限控制语句
用于 授予、撤销和查看数据库用户对数据库对象(如数据库、表、列等)的访问权限。
语句 | 作用 |
---|---|
GRANT | 授权,赋予用户某些权限 |
REVOKE | 撤销,取消用户已有权限 |
SHOW GRANTS | 查看某用户的权限 |
CREATE USER | 创建新用户 |
DROP USER | 删除用户 |
SET PASSWORD | 修改用户密码 |
FLUSH PRIVILEGES | 刷新权限表(一般不再手动调用) |
示例——完整授权流程:
-- 创建用户(创建一个名为 dev 的新用户,密码为 devpass,允许从任意主机(%)连接)
CREATE USER 'dev'@'%' IDENTIFIED BY 'devpass';-- 授权开发者对 testdb 所有表有全部权限
GRANT ALL PRIVILEGES ON testdb.* TO 'dev'@'%';-- 查看权限
SHOW GRANTS FOR 'dev'@'%';-- 撤销 DELETE 权限
REVOKE DELETE ON testdb.* FROM 'dev'@'%';-- 删除用户
DROP USER 'dev'@'%';
相关文章:
数据库学习(二)——MySQL语句
MySQL 语句分为: 语句类型作用关键字示例数据查询(DQL)查询数据SELECT数据操作(DML)插入、更新、删除数据INSERT, UPDATE, DELETE数据定义(DDL)定义或修改表结构CREATE, ALTER, DROP事务控制&a…...
AI Agent 架构设计:ReAct 与 Self-Ask 模式对比与分析
一、引言 (一) AI Agent 技术发展背景 🚀 AI Agent 的演进是一场从“遵循指令”到“自主决策”的深刻变革。早期,以规则引擎为核心的系统(如关键词匹配的客服机器人)只能在预设的流程上运行。然而,大语言模型的崛起为…...

sql入门语句-案例
Sql入门 数据库、数据表、数据的关系介绍 数据库 用于存储和管理数据的仓库 一个库中可以包含多个数据表 数据表 数据库最重要的组成部分之一 它由纵向的列和横向的行组成(类似excel表格) 可以指定列名、数据类型、约束等 一个表中可以存储多条数据 数据 想要永久化存储…...

A Survey on the Memory Mechanism of Large Language Model based Agents
目录 摘要Abstract1. LLM-Based Agent的Memory1.1 基础概念1.2 用于解释Memory的例子1.3 智能体记忆的定义1.3.1 狭义定义(肯定不用这个定义)1.3.2 广义定义 1.4 记忆协助下智能体与环境的交互过程1.4.1 记忆写入1.4.2 记忆管理1.4.3 记忆读取1.4.4 总过程 2. 如何实现智能体记…...

华为OD机试 - 猴子吃桃 - 二分查找(Java 2025 B卷 200分)
public class Test14 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {String[] s = sc.nextLine().split(" ");int[] arr = new int[s.length-1];int count = Integer.parseInt(s[s...
提取数据区域中表格
查看本示例演示效果本示例关键代码的编写位置,请参考“开始 - 快速上手”里您所使用的开发语言框架的最简集成代码 在实际的开发过程中,有时会遇到希望提取Word文档中表格数据保存到服务器的需求,此时可以使用PageOffice提取Word文档数据区域…...

【设计模式-5】设计模式的总结
说明:介绍完所有的设计模式,本文做一下总结 设计模式介绍 博主写的设计模式博客如下: 【设计模式-1】UML和设计原则 【设计模式-2.1】创建型——单例模式 【设计模式-2.2】创建型——简单工厂和工厂模式 【设计模式-2.3】创建型——原型…...

【无人机】无人机UAV、穿越机FPV的概念介绍,机型与工具,证书与规定
【无人机】无人机UAV、穿越机FPV的概念介绍,机型与工具,证书与规定 文章目录 1、无人机的定义、概念、技术栈1.1 无人机的概念1.2 无人机技术(飞控,动力,通信) 2、无人机机型2.1 DJI无人机 (航拍…...

链表好题-多种实现
143. 重排链表 - 力扣(LeetCode) 这道题非常经典,很多大厂都作为面试题。 方法一:寻找中点翻转链表合并链表 class Solution { public:void reorderList(ListNode* head) {if (head nullptr) {return;}ListNode* mid middleNo…...

oracle数据恢复—oracle数据库执行truncate命令后的怎么恢复数据?
oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致…...

OneNet + openssl + MTLL
1.OneNet 使用的教程 1.在网络上搜索onenet,注册并且登录账号。 2.产品服务-----物联网服务平台立即体验 3.在底下找到立即体验进去 4.产品开发------创建产品 5.关键是选择MQTT,其他的内容自己填写 6.这里产品以及开发完成,接下来就是添加设…...

分享两个日常办公软件:uTools、PixPin
1. uTools 网址:https://u.tools/ 这是一个高效智能的在线工具平台。 特点: 专为提升用户的工作效率跟生活便利性设计。 优点: 1:由国内团队开发。 2:通过插件化的方式为用户提供多样化的功能支持。 3…...

Golang基础学习
初见golang语法 go项目路径 cd $GOPATH //ls可以看到有bin,pkg,src三个文件 cd src/ mkdir GolangStudy cd GolangStudy mkdir firstGolanggo程序执行: go run hello.go//如果想分两步执行: go build hello.go ./hello导入包的方式 import "f…...
[学习] GNSS信号跟踪环路原理、设计与仿真(仿真代码)
GNSS信号跟踪环路原理、设计与仿真 文章目录 GNSS信号跟踪环路原理、设计与仿真一、GNSS信号跟踪环路概述二、跟踪环路基本原理1. 信号跟踪的概念与目标2. 锁相环(PLL)原理3. 锁频环(FLL)原理4. 延迟锁定环(DLL&#x…...
Python实例题:Python计算微积分
目录 Python实例题 题目 代码实现 实现原理 符号计算: 数值计算: 可视化功能: 关键代码解析 1. 导数计算 2. 积分计算 3. 微分方程求解 4. 函数图像绘制 使用说明 安装依赖: 基本用法: 示例输出&#…...
如何判断指针是否需要释放?
在 C 中判断一个指针是否需要释放可以考虑以下几个方面: 一、确定指针的来源 1. 动态分配的内存: 如果指针是通过new、new[]、malloc、calloc等动态内存分配函数获取的,那么在不再需要该内存时,必须手动释放。 例如:…...
Spark 之 AQE
个人其他链接 AQE 执行顺序https://blog.csdn.net/zhixingheyi_tian/article/details/125112793 AQE 产生 AQE 的 循环触发点 src/main/scala/org/apache/spark/sql/execution/adaptive/AdaptiveSparkPlanExec.scala override def doExecute(): RDD[InternalRow] = {withFin…...
随访系统安装的记录
安装PG17.5 安装https://www.cnblogs.com/nulixuexipython/p/18040243 1、遇到navicat链接不了PG https://blog.csdn.net/sarsscofy/article/details/84985933 2、查看有无安装mysqlhttps://blog.51cto.com/u_16175430/7261412 3、 方案一:oracle不开日志 data…...
NLP学习路线图(二十四):门控循环单元(GRU)
一、背景:RNN的困境与门控机制的曙光 RNN的基本原理: RNN的核心思想是引入循环连接,使网络具有“记忆”功能。 在时刻 t,RNN接收当前输入 x_t 和前一个时刻的隐藏状态 h_{t-1}。 通过一个共享的权重参数(W, U, b)计算当前时刻的隐藏状态 h_t: h_t = tanh(W * x_t + U * …...
Doris查询Hive数据:实现高效跨数据源分析的实践指南
#### 1. Doris与Hive的集成背景 在大数据生态中,Hive作为基于Hadoop的数据仓库工具,广泛用于海量数据的批处理分析。而Apache Doris(原百度 Palo)是一种高性能、实时分析的MPP(大规模并行处理)数据库&…...
vsCode使用本地低版本node启动配置文件
npm run dev的配置文件 {"configurations": [{"type": "node-terminal","name": "项目运行: dev","request": "launch",//重点在这里 这行注释到时候删掉"command": "E:\\node-v14.21.…...
在Ubuntu上使用 dd 工具制作U盘启动盘
在Ubuntu上使用 dd 工具制作U盘启动盘 在Linux系统中,dd 是一个功能强大且原生支持的命令行工具,常用于复制文件和转换数据。它也可以用来将ISO镜像写入U盘,从而创建一个可启动的操作系统安装盘。虽然图形化工具(如 Startup Disk…...
el-table表格增加序号列index vue2和vue3的写法
<el-table><!--每页从1开始的序号--><el-table-column label"序号" width"60" align"center" type"index" /><!--一直递增的序号 vue2写法--><el-table-column label"序号" width"60"…...
【学习记录】如何使用 Python 提取 PDF 文件中的内容
如何使用 Python 提取 PDF 文件中的内容 在文档自动化处理、数据提取和信息分析等任务中,从 PDF 文件中提取文本是一项常见需求。PDF 文件通常分为两种类型:基于文本的 PDF 和 包含扫描图像的 PDF。 本文将介绍如何使用 Python 分别提取这两种类型的 P…...

Spark 之 DataFrame 开发
foreachPartition val data = spark.sparkContext.parallelize(1 to 100)// 使用 foreachPartition 批量处理分区 data.foreachPartition {partitionIterator =...

嵌入式学习笔记 - freeRTOS xTaskResumeAll( )函数解析
第一部分 移除挂起等待列表中的任务 while( listLIST_IS_EMPTY( &xPendingReadyList ) pdFALSE )//循环寻找直到为空,把全部任务扫描一遍 { pxTCB ( TCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingR…...

机器学习KNN算法全解析:从原理到实战
大家好!今天我们来聊聊机器学习中的"懒人算法"——KNN(K-Nearest Neighbors,K近邻)算法。这个算法就像个"墙头草",它不学习模型参数,而是直接根据邻居的"投票"来做决策&…...

【QT】自定义QWidget标题栏,可拖拽(拖拽时窗体变为normal大小),可最小/大化、关闭(图文详情)
目录 0.背景 1.详细实现 思路简介 .h文件 .cpp文件 0.背景 Qt Linux;项目遇到问题,解决后特此记录 项目需要,个性化的标题栏(是个widget),在传统的三个按钮(最大化、最小化、关闭…...

FPGA定点和浮点数学运算-实例对比
在创建 RTL 示例时,经常使用 VHDL 2008 附带的 VHDL 包。它提供了出色的功能,可以高效地处理定点数,当然,它们也是可综合的。该包的一些优点包括: 有符号和无符号(后缀和后缀)定点向量。轻松将定…...
MySQL Binlog 数据恢复全指南
MySQL Binlog 数据恢复全指南 一、Binlog 核心概念 1. 什么是 Binlog? Binlog(二进制日志)是 MySQL 记录所有修改数据的 SQL 语句的日志文件,采用二进制格式存储。它是 MySQL 最重要的日志之一,具有三大核心功能&am…...