当前位置: 首页 > news >正文

MySQL 数据库经验总结

一、数据库操作

1. 创建数据库

CREATE DATABASE database_name;

例如,创建一个名为 my_database 的数据库:

CREATE DATABASE my_database;

2. 选择数据库

USE database_name;

要使用刚才创建的 my_database 数据库:

USE my_database;

3. 删除数据库

DROP DATABASE database_name;

请注意,删除数据库是不可逆的操作,需谨慎使用。

二、表操作

1. 创建表

CREATE TABLE table_name (column1 data_type,column2 data_type,...
);

例如,创建一个名为 students 的表,包含 id(整数,自增主键)、name(字符串,最大长度 50)和 age(整数)列:

CREATE TABLE students (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT
);

2. 查看表结构

DESCRIBE table_name;

SHOW CREATE TABLE table_name;

3. 删除表

DROP TABLE table_name;

三、数据插入

1. 插入单行数据

INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,...);

students 表插入一条学生数据:

INSERT INTO students (name, age) VALUES ('Alice', 20);

2. 插入多行数据

INSERT INTO table_name (column1, column2,...)
VALUES (value1, value2,...),(value3, value4,...),...;

例如:

INSERT INTO students (name, age)
VALUES ('Bob', 21),('Charlie', 19);

四、数据查询

1. 基本查询

SELECT column1, column2,... FROM table_name;

例如,从 students 表中选择所有学生的姓名和年龄:

SELECT name, age FROM students;

2. 条件查询

SELECT column1, column2,... FROM table_name WHERE condition;

查询年龄大于 18 岁的学生:

SELECT * FROM students WHERE age > 18;

3. 排序结果

SELECT column1, column2,... FROM table_name ORDER BY column_name ASC|DESC;

按年龄升序排列学生数据:

SELECT * FROM students ORDER BY age ASC;

按年龄降序排列:

SELECT * FROM students ORDER BY age DESC;

4. 限制结果行数

SELECT column1, column2,... FROM table_name LIMIT offset, row_count;

获取前 10 条学生记录:

SELECT * FROM students LIMIT 0, 10;

获取第 11 到 20 条记录:

SELECT * FROM students LIMIT 10, 10;

5. 聚合函数

SELECT COUNT(column_name), SUM(column_name), AVG(column_name), MIN(column_name), MAX(column_name) FROM table_name;

例如,计算学生的总数、年龄总和、平均年龄、最小年龄和最大年龄:

SELECT COUNT(*), SUM(age), AVG(age), MIN(age), MAX(age) FROM students;

6. 分组查询

SELECT column1, aggregate_function(column2) FROM table_name GROUP BY column1;

按照年龄分组,计算每个年龄组的学生数量:

SELECT age, COUNT(*) FROM students GROUP BY age;

7. 连接查询

-- 内连接(INNER JOIN)
SELECT column1, column2,... FROM table1 INNER JOIN table2 ON table1.column = table2.column;-- 左连接(LEFT JOIN)
SELECT column1, column2,... FROM table1 LEFT JOIN table2 ON table1.column = table2.column;-- 右连接(RIGHT JOIN)
SELECT column1, column2,... FROM table1 RIGHT JOIN table2 ON table1.column = table2.column;

假设有两个表 studentscourses ,通过 student_id 关联,获取学生及其选修课程的信息:

SELECT s.name, c.course_name 
FROM students s 
INNER JOIN courses c ON s.student_id = c.student_id;

五、数据更新

UPDATE table_name SET column1 = value1, column2 = value2,... WHERE condition;

将学生 Alice 的年龄更新为 21 岁:

UPDATE students SET age = 21 WHERE name = 'Alice';

六、数据删除

DELETE FROM table_name WHERE condition;

删除年龄小于 18 岁的学生记录:

DELETE FROM students WHERE age < 18;

七、索引

索引是提高数据库查询性能的重要手段。

1. 创建普通索引

CREATE INDEX index_name ON table_name (column_name);

例如,为 students 表的 name 列创建索引:

CREATE INDEX idx_name ON students (name);

2. 创建唯一索引

CREATE UNIQUE INDEX index_name ON table_name (column_name);

确保某列的值唯一。

3. 查看索引

SHOW INDEX FROM table_name;

4. 删除索引

DROP INDEX index_name ON table_name;

八、存储过程和函数

1. 创建存储过程

DELIMITER //
CREATE PROCEDURE procedure_name(parameter_list)
BEGIN-- 存储过程的逻辑
END //
DELIMITER ;

例如,创建一个计算两个数之和的存储过程:

DELIMITER //
CREATE PROCEDURE add_numbers(num1 INT, num2 INT)
BEGINSELECT num1 + num2 AS sum;
END //
DELIMITER ;

2. 调用存储过程

CALL procedure_name(parameter_values);

调用上述存储过程:

CALL add_numbers(5, 3);

3. 创建函数

DELIMITER //
CREATE FUNCTION function_name(parameter_list) RETURNS data_type
BEGIN-- 函数的逻辑RETURN result;
END //
DELIMITER ;

例如,创建一个返回字符串长度的函数:

DELIMITER //
CREATE FUNCTION str_length(str VARCHAR(255)) RETURNS INT
BEGINRETURN CHAR_LENGTH(str);
END //
DELIMITER ;

4. 调用函数

SELECT function_name(parameter_values);

调用上述函数:

SELECT str_length('Hello');

九、事务

事务用于保证数据的一致性和完整性。

START TRANSACTION;
-- 一系列操作
COMMIT;  -- 提交事务
ROLLBACK;  -- 回滚事务

例如,在转账操作中确保数据的一致性:

START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
COMMIT;

十、备份与恢复

1. 数据备份

可以使用 mysqldump 命令来备份数据库。

mysqldump -u username -p database_name > backup.sql

2. 数据恢复

使用以下命令从备份文件中恢复数据。

mysql -u username -p database_name < backup.sql

相关文章:

MySQL 数据库经验总结

一、数据库操作 1. 创建数据库 CREATE DATABASE database_name;例如&#xff0c;创建一个名为 my_database 的数据库&#xff1a; CREATE DATABASE my_database;2. 选择数据库 USE database_name;要使用刚才创建的 my_database 数据库&#xff1a; USE my_database;3. 删除…...

Python环境安装及PIP安装(Mac OS版)

官网 https://www.python.org/downloads/ 安装python python-3.12.1-macos11.pkg下载后&#xff0c;安装一直下一步即可 验证是否安装成功&#xff0c;执行python3命令和pip3命令 配置环境变量 获取python3安装位置并配置在.bash_profile #查看python路径 which python3#…...

2024自动驾驶(多模态)大模型综述:从DriveGPT4、DriveMLM到DriveLM、DriveVLM

前言 由于今年以来&#xff0c;一直在不断深挖具身智能机器人相关&#xff0c;而自动驾驶其实和机器人有着无比密切的联系&#xff0c;甚至可以认为&#xff0c;汽车就是一个带着4个轮子的机器人 加之个人认为&#xff0c;目前大模型落地潜力最大的两个方向&#xff0c;一个是…...

晨控CK-GW08-EC与汇川AC801系列PLC的EtherCAT通讯连接说明手册

晨控CK-GW08-EC与汇川AC801系列PLC的EtherCAT通讯连接说明手册 晨控CK-GW08-EC是一款支持标准工业通讯协议EtherCAT的网关控制器,方便用户集成到PLC等控制系统中。系统还集成了8路读写接口&#xff0c;用户可通过通信接口使用EtherCAT协议对8路读写接口所连接的读卡器进行相对…...

向上or向下调整建堆 的时间复杂度的本质区别的讲解

知识点&#xff1a;&#xff08;N代表节点数&#xff0c;h代表高度&#xff09; 1&#xff1a;高度为h的满二叉树节点个数N为 2^&#xff08;h&#xff09;-1 即N 2^&#xff08;h&#xff09;-1 2&#xff1a;所以h log&#xff08;N1&#xff09; 一&#xff1a;向上…...

阿一网络安全实战演练之利用 REST URL 中的服务器端参数污染

所需知识 要解决这个实验室问题&#xff0c;您需要了解以下内容&#xff1a; 如何确定用户输入是否包含在服务器端的 URL 路径或查询字符串中。如何使用路径遍历序列尝试更改服务器端请求。如何查找 API 文档。 这些内容在我们的 API 测试学院主题中有涵盖。 进入实验室 研…...

[游戏开发] LuaTable转string存读二进制文件

UE5和Unity通用此方案&#xff0c;只不过读写文件的接口略有不同&#xff0c;lua代码的处理是相同的。 下面两个方法是 LuaTable和字符串互相转换的代码 function XUtils.luaTableToString(tab, sp)sp sp or ""local s ""for k,v in pairs(tab) doif t…...

光伏业务管理系统的一些妙用功能

现在信息化流程化基本上每个行业都必须要有的了&#xff0c;光伏业务管理系统软件是一种专门用于光伏产业运营和管理的综合性系统&#xff0c;它结合了信息技术、数据分析、项目管理、客户管理等多个领域的知识&#xff0c;为光伏企业提供了一个全面、高效、智能的管理平台&…...

Java面试八股之请简述消息队列的发布订阅模式

请简述消息队列的发布订阅模式 发布订阅&#xff08;Publish-Subscribe&#xff0c;简称 Pub/Sub&#xff09;模型是一种消息传递模式&#xff0c;它在组件之间提供了高度的解耦和灵活性。这种模式广泛应用于分布式系统、事件驱动架构以及消息队列系统中。下面是发布订阅模型的…...

七、2 ADC数模转换器有关函数介绍(Keil5)

函数介绍 &#xff08;1&#xff09;ADCCLK的配置函数&#xff08;在rcc.h中&#xff09; &#xff08;2&#xff09;ADC的库函数&#xff08;在adc.h中&#xff09;...

了解载波侦听多路访问CSMA(上)

1.CSMA的思想 CSMA的全称是Carrier Sense Multiple Access&#xff0c;在笔者的理解中&#xff0c;其更趋向于一种理论研究的随机接入协议&#xff0c;或者说&#xff0c;基于其思想诞生了比如CSMA/CD与CSMA/CA这样的具体协议。CSMA可以分成以下三种&#xff1a; 1-persistent…...

开启教育新征程:“集师” 知识付费平台搭建

在教育培训行业竞争日益激烈的今天&#xff0c;如何脱颖而出&#xff0c;实现知识的最大价值&#xff1f;答案就在 “集师” 知识付费平台搭建&#xff01; “集师” 为您打造专属的知识付费平台&#xff0c;提供一站式解决方案。无论您是专注于学科教育、艺术培训还是职业技能…...

Vue3 + Electron 创建新的子窗口 且子窗口唯一

main.js const { app, BrowserWindow, ipcMain } require(electron) ...ipcMain.on(window-create, () > {createChildWindow() })let childWindow nullconst createChildWindow () > {// 如果窗口存在 先销毁if (childWindow) {childWindow.destroy()childWindow n…...

海康VisionMaster使用学习笔记2-相机取图及参数设置

相机取图及参数设置 1. 关联相机-相机管理界面 除了以上两类外,第三方相机都可以通过全局相机进行连接 2. 相机参数设置 相机连接 跨网段IP,枚举 图像缓存数量 实时取流,断线重连 只有支持组播的相机才可以实时取流 触发设置 触发源 LINE0 可以保护电路 LINE2 可配置输入输出…...

【网络】【Linux】Linux内核中连接的组织形式与全连接队列

Linux内核中连接的组织形式与全连接队列 文章目录 1.前言2.Linux内核中连接的组织形式2.1套接字和文件描述符2.2创建连接 & 获取连接 3.全连接队列3.1为什么有全连接队列&#xff1f;3.2全连接队列的长度 1.前言 TCP是面向连接的&#xff0c;TCP的各种可靠性机制实际都不…...

记录一次 npm ERR! cb() never called! 解决过程

gitlab cicd过程&#xff0c;使用docker部署Vue3前端项目&#xff0c;报错如下&#xff1a; 针对 npm ERR! cb() never called! 这个报错&#xff0c;网上有很多解决方案&#xff0c;大都是清空缓存&#xff0c;重新运行npm 之类的。笔者全都试过&#xff0c;无法解决问题。笔者…...

WEB渗透免杀篇-加载器免杀

SSI加载 https://github.com/DimopoulosElias/SimpleShellcodeInjector生成payload(c) msfvenom -p windows/meterpreter/reverse_tcp lhost192.168.0.108 lport12138 -f c -o shellcode.c执行 cat shellcode.c |grep -v unsigned|sed "s/\"\\\x//g"|sed &quo…...

什么是反人性设计?

目录 一、什么是人性&#xff1f; 二、什么是反人性设计&#xff1f; 三、有哪些反人性设计&#xff1f; 一、什么是人性&#xff1f; 人性&#xff0c;通常指的是人类共有的基本特质和行为倾向&#xff0c;它涵盖了一系列心理、情感和社会属性。人性可以从多个角度来理解&a…...

如何进行长截图的两种方法

前言 本文主要讲2种截图方式&#xff0c;分别是谷歌和QQ。 谷歌分为Web端 和 移动端&#xff0c;选一种即可。 第一种&#xff1a;谷歌浏览器控制台自带的 1.先把控制台语言更改为中文&#xff0c;方便查看 ①.按F12&#xff0c;点击设置面板 ②.修改语言为中文并关闭 ③.点击…...

基于轨迹的汽车跟随系统横向控制方法

A Trajectory-Based Approach for the Lateral Control of Vehicle Following Systems 基于轨迹的汽车跟随系统横向控制方法 Abstract Abstract| A crucial task for steering an autonomous vehicle along a safe path in a vehicle following scenario is the lateral cont…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...