以mysql 为例,增删改查语法及其他高级特性

以下是 MySQL增删改查语法高级特性的详细整理,结合示例说明:


1. 基础操作(CRUD)

(1) 创建数据(INSERT)

-- 单条插入
INSERT INTO users (id, name, email) 
VALUES (1, 'Alice', 'alice@example.com');-- 多条插入
INSERT INTO users (id, name, email) 
VALUES (2, 'Bob', 'bob@example.com'),(3, 'Charlie', 'charlie@example.com');

(2) 查询数据(SELECT)

-- 基础查询
SELECT name, email FROM users 
WHERE age > 25 
ORDER BY created_at DESC 
LIMIT 10;-- 连接查询(JOIN)
SELECT o.order_id, u.name, o.total 
FROM orders o 
JOIN users u ON o.user_id = u.id 
WHERE o.status = 'completed';

(3) 更新数据(UPDATE)

UPDATE users 
SET email = 'new_email@example.com', updated_at = NOW() 
WHERE id = 1;

(4) 删除数据(DELETE)

DELETE FROM orders 
WHERE order_date < '2023-01-01';

2. 高级特性

(1) 事务(Transaction)

-- 显式事务控制
START TRANSACTION;
INSERT INTO users (name, email) VALUES ('Dave', 'dave@example.com');
UPDATE accounts SET balance = balance - 100 WHERE user_id = 4;
COMMIT; -- 提交或 ROLLBACK 回滚-- 自动提交设置(默认开启)
SET autocommit = 0; -- 需手动提交

(2) 索引(Index)

-- 创建索引
CREATE INDEX idx_email ON users(email);-- 复合索引
CREATE INDEX idx_name_age ON users(name, age);-- 查看索引
SHOW INDEX FROM users;

(3) 存储过程(Stored Procedure)

DELIMITER $$
CREATE PROCEDURE GetUsersByAge(IN min_age INT)
BEGINSELECT * FROM users WHERE age >= min_age;
END $$
DELIMITER ;-- 调用存储过程
CALL GetUsersByAge(30);

(4) 触发器(Trigger)

CREATE TRIGGER before_user_update 
BEFORE UPDATE ON users 
FOR EACH ROW 
SET NEW.updated_at = NOW();

(5) 视图(View)

CREATE VIEW user_summary AS 
SELECT id, name, email, COUNT(order_id) AS total_orders 
FROM users 
LEFT JOIN orders ON users.id = orders.user_id 
GROUP BY users.id;

(6) 窗口函数(Window Functions)

-- MySQL 8.0+ 支持
SELECT id, name, salary,AVG(salary) OVER() AS avg_salary, -- 窗口内平均值ROW_NUMBER() OVER(ORDER BY salary DESC) AS rank -- 排名
FROM employees;

(7) 正则表达式(REGEXP)

SELECT * FROM users 
WHERE email REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}$';

(8) JSON 支持

-- 创建 JSON 字段
ALTER TABLE products ADD COLUMN metadata JSON;-- 查询 JSON 字段
SELECT * FROM products 
WHERE metadata->>'$.category' = 'electronics';

(9) 分区表(Partitioning)

-- 按范围分区
CREATE TABLE orders (order_id INT PRIMARY KEY,order_date DATE,amount DECIMAL(10,2)
) 
PARTITION BY RANGE (YEAR(order_date)) (PARTITION p0 VALUES LESS THAN (2020),PARTITION p1 VALUES LESS THAN (2023),PARTITION p2 VALUES LESS THAN MAXVALUE
);

(10) 事务隔离级别

-- 查看当前隔离级别
SELECT @@tx_isolation;-- 设置隔离级别(如可重复读)
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

3. 其他实用特性

(1) 子查询(Subquery)

SELECT name 
FROM users 
WHERE age > (SELECT AVG(age) FROM users);

(2) 联合查询(UNION)

SELECT 'active' AS status, COUNT(*) FROM users WHERE active = 1
UNION ALL
SELECT 'inactive', COUNT(*) FROM users WHERE active = 0;

(3) 日期函数

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS today, DATEDIFF(end_date, start_date) AS duration 
FROM events;

(4) 锁机制

-- 显式行级锁(InnoDB)
SELECT * FROM users WHERE id = 1 LOCK IN SHARE MODE;-- 排他锁
SELECT * FROM users WHERE id = 1 FOR UPDATE;

4. 注意事项

  1. 索引优化
    • 避免过度索引,影响写入性能。
    • 优先为 WHERE, JOIN, ORDER BY 字段创建索引。
  2. 事务设计
    • 短事务可减少锁冲突。
    • 根据业务选择隔离级别(如 READ COMMITTEDREPEATABLE READ)。
  3. JSON 字段
    • 使用 JSON_EXTRACT->> 简化查询。
  4. 分区表
    • 适用于大数据量表(如按日期分区)。
    • 需评估分区键的合理性。

5. 常见问题示例

(1) 复杂查询优化

-- 使用 EXPLAIN 分析执行计划
EXPLAIN SELECT * FROM orders 
WHERE user_id = 100 AND status = 'pending';

(2) 备份与恢复

-- 备份
mysqldump -u root -p mydatabase > backup.sql-- 恢复
mysql -u root -p mydatabase < backup.sql

如需更具体的场景(如高并发设计、主从复制),可进一步说明需求!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/39009.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Mac M1/M2芯片上完美安装DeepCTR库:避坑指南与实战验证

让推荐算法在Apple Silicon上全速运行 概述 作为推荐系统领域的最经常用的明星库&#xff0c;DeepCTR集成了CTR预估、多任务学习等前沿模型实现。但在Apple Silicon架构的Mac设备上&#xff0c;安装过程常因ARM架构适配、依赖库版本冲突等问题受阻。本文通过20次环境搭建实测…

c#知识点补充4

1.发布者订阅模式 发布者 订阅者 俩者直接的关联使用

3. 轴指令(omron 机器自动化控制器)——>MC_SetOverride

机器自动化控制器——第三章 轴指令 12 MC_SetOverride变量▶输入变量▶输出变量▶输入输出变量 功能说明▶时序图▶重启运动指令▶多重启动运动指令▶异常 MC_SetOverride 变更轴的目标速度。 指令名称FB/FUN图形表现ST表现MC_SetOverride超调值设定FBMC_SetOverride_instan…

Cocos Creator Shader入门实战(五):材质的了解、使用和动态构建

引擎&#xff1a;3.8.5 您好&#xff0c;我是鹤九日&#xff01; 回顾 前面的几篇文章&#xff0c;讲述的主要是Cocos引擎对Shader使用的一些固定规则&#xff0c;这里汇总下&#xff1a; 一、Shader实现基础是OpenGL ES可编程渲染管线&#xff0c;开发者只需关注顶点着色器和…

体育直播模板nba英超直播欧洲杯直播模板手机自适应

源码名称&#xff1a;体育直播模板nba英超直播欧洲杯直播模板手机自适应帝国cms 7.5模板 开发环境&#xff1a;帝国cms7.5 空间支持&#xff1a;phpmysql 带软件采集&#xff0c;可以挂着自动采集发布&#xff0c;无需人工操作&#xff01; 模板特点&#xff1a; 程序伪静态…

python基于spark的心脏病患分类及可视化(源码+lw+部署文档+讲解),源码可白嫖!

摘要 时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;汽车数据分析平台当然不能排除在外。本次我所开发的心脏病患分类及可视化系统是在实际应用和软件工程的开发原理之上&#xff0c;运用Pyth…

SAP 附件增删改查与文件服务器交互应用

【需求背景】 非SAP标准附件应用&#xff0c;自定义一套&#xff0c;跟公司内部文档服务器交互&#xff0c;支持各个应用场景的附件增删改查等。 每个附件在文件服务器上都有一个文件唯一ID作为关键字。 应用分两块&#xff1a;SAP GUI端&#xff0c;跟WDA Portal端应用 GU…

Linux__之__基于UDP的Socket编程网络通信

前言 本篇博客旨在使用Linux系统接口进行网络通信, 帮助我们更好的熟悉使用socket套接字网络通信, 学会了socket网络通信, 就能发现所谓网络, 不过都是套路而已, 话不多说, 让我们直接进入代码编写部分. 1. 事先准备 今天我们先来模拟实现一个echo demo, 也就是客户端向服务…

【Agent】Dify Docker 安装问题 INTERNAL SERVER ERROR

总结&#xff1a;建议大家选择稳定版本的分支&#xff0c;直接拉取 master 分支&#xff0c;可能出现一下后面更新代码导致缺失一些环境内容。 启动报错 一直停留在 INSTALL 界面 我是通过 Docker 进行安装的&#xff0c;由于项目开发者不严谨导致&#xff0c;遇到一个奇怪的…

unity开发效率提升笔记

本文将记录提升Unity开发效率的若干细节&#xff0c;持续更新 一.VSCode文件标签多行显示 1.File->Preference->Settings (快捷键Ctrl 逗号) 2.搜索workbench.editor.wrapTabs 3.勾选上这个单选开关 若依然不是多行 4.搜索workbench.editor.tabSizing,选择fi…

python每日十题(6)

列表操作函数有&#xff08;假设列表名为ls&#xff09;&#xff1a; len(ls)&#xff1a;返回列表ls的元素个数&#xff08;长度&#xff09;。min(ls)&#xff1a;返回列表ls的最小元素。max(ls)&#xff1a;返回列表ls的最大元素。list(x)&#xff1a;将x转变为列表类型。使…

【Java】TCP网络编程:从可靠传输到Socket实战

活动发起人小虚竹 想对你说&#xff1a; 这是一个以写作博客为目的的创作活动&#xff0c;旨在鼓励大学生博主们挖掘自己的创作潜能&#xff0c;展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴&#xff0c;那么&#xff0c;快来参加吧&#xff01…

使用HAI来打通DeepSeek的任督二脉

一、什么是HAI HAI是一款专注于AI与科学计算领域的云服务产品&#xff0c;旨在为开发者、企业及科研人员提供高效、易用的算力支持与全栈解决方案。主要使用场景为&#xff1a; AI作画&#xff0c;AI对话/写作、AI开发/测试。 二、开通HAI 选择CPU算力 16核32GB&#xff0c;这…

mysql——第二课

学生表 CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT,name varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,sex varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,age int(11) DEFAULT NULL,c_id int(10) DEFAULT NULL,PRIMARY KEY (id),KEY c_id (c_id),CONSTR…

单播、广播、组播和任播

文章目录 一、单播二、广播三、组播四、任播代码示例&#xff1a; 五、各种播的比较 一、单播 单播&#xff08;Unicast&#xff09;是一种网络通信方式&#xff0c;它指的是在网络中从一个源节点到一个单一目标节点对的传输模式。单播传输时&#xff0c;数据包从发送端直接发…

1-1 MATLAB深度极限学习机

本博客来源于CSDN机器鱼&#xff0c;未同意任何人转载。 更多内容&#xff0c;欢迎点击本专栏目录&#xff0c;查看更多内容。 参考[1]魏洁.深度极限学习机的研究与应用[D].太原理工大学[2023-10-14].DOI:CNKI:CDMD:2.1016.714596. 目录 0.引言 1.ELM-AE实现 2.DE…

头歌 数据采集概述答案

问题1&#xff1a;以下哪个不是Scrapy体系架构的组成部分&#xff1f; 正确答案&#xff1a;B. 支持者(Support) 解释&#xff1a;Scrapy的主要组成部分包括&#xff1a; 爬虫(Spiders)&#xff1a;定义如何爬取网站和提取数据 引擎(Engine)&#xff1a;负责控制数据流在系统中…

【uniapp】记录tabBar不显示踩坑记录

由于很久没有使用uniapp了&#xff0c;官方文档看着又杂乱&#xff0c;底部tab导航栏一直没显示&#xff0c;苦思许久&#xff0c;没有发现原因&#xff0c;最后网上搜到帖子&#xff0c;list里的第一个数据&#xff0c;pages 的第一个 path 必须与 tabBar 的第一个 pagePath 相…

JVM 知识点梳理

JDK 、JRE、JVM JDK&#xff08; Java Development Kit &#xff09; Java开发工具包 JRE 开发命令工具&#xff08;运行java.exe、编译javac.exe、javaw.exe&#xff09; JRE&#xff08; Java Runtime Environment &#xff09;Java运行环境 JVM Java核心类库&#xff08;l…

蓝桥杯 之 第27场月赛总结

文章目录 习题1.抓猪拿国一2.蓝桥字符3.蓝桥大使4.拳头对决5.未来竞赛6.备份比赛数据 习题 比赛地址 1.抓猪拿国一 十分简单的签到题 print(sum(list(range(17))))2.蓝桥字符 常见的字符匹配的问题&#xff0c;是一个二维dp的问题&#xff0c;转化为对应的动态规划求解 力扣…