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;
假设有两个表 students
和 courses
,通过 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;例如,创建一个名为 my_database 的数据库: CREATE DATABASE my_database;2. 选择数据库 USE database_name;要使用刚才创建的 my_database 数据库: USE my_database;3. 删除…...

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

2024自动驾驶(多模态)大模型综述:从DriveGPT4、DriveMLM到DriveLM、DriveVLM
前言 由于今年以来,一直在不断深挖具身智能机器人相关,而自动驾驶其实和机器人有着无比密切的联系,甚至可以认为,汽车就是一个带着4个轮子的机器人 加之个人认为,目前大模型落地潜力最大的两个方向,一个是…...

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

向上or向下调整建堆 的时间复杂度的本质区别的讲解
知识点:(N代表节点数,h代表高度) 1:高度为h的满二叉树节点个数N为 2^(h)-1 即N 2^(h)-1 2:所以h log(N1) 一:向上…...

阿一网络安全实战演练之利用 REST URL 中的服务器端参数污染
所需知识 要解决这个实验室问题,您需要了解以下内容: 如何确定用户输入是否包含在服务器端的 URL 路径或查询字符串中。如何使用路径遍历序列尝试更改服务器端请求。如何查找 API 文档。 这些内容在我们的 API 测试学院主题中有涵盖。 进入实验室 研…...

[游戏开发] LuaTable转string存读二进制文件
UE5和Unity通用此方案,只不过读写文件的接口略有不同,lua代码的处理是相同的。 下面两个方法是 LuaTable和字符串互相转换的代码 function XUtils.luaTableToString(tab, sp)sp sp or ""local s ""for k,v in pairs(tab) doif t…...
光伏业务管理系统的一些妙用功能
现在信息化流程化基本上每个行业都必须要有的了,光伏业务管理系统软件是一种专门用于光伏产业运营和管理的综合性系统,它结合了信息技术、数据分析、项目管理、客户管理等多个领域的知识,为光伏企业提供了一个全面、高效、智能的管理平台&…...

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

七、2 ADC数模转换器有关函数介绍(Keil5)
函数介绍 (1)ADCCLK的配置函数(在rcc.h中) (2)ADC的库函数(在adc.h中)...
了解载波侦听多路访问CSMA(上)
1.CSMA的思想 CSMA的全称是Carrier Sense Multiple Access,在笔者的理解中,其更趋向于一种理论研究的随机接入协议,或者说,基于其思想诞生了比如CSMA/CD与CSMA/CA这样的具体协议。CSMA可以分成以下三种: 1-persistent…...

开启教育新征程:“集师” 知识付费平台搭建
在教育培训行业竞争日益激烈的今天,如何脱颖而出,实现知识的最大价值?答案就在 “集师” 知识付费平台搭建! “集师” 为您打造专属的知识付费平台,提供一站式解决方案。无论您是专注于学科教育、艺术培训还是职业技能…...
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为什么有全连接队列?3.2全连接队列的长度 1.前言 TCP是面向连接的,TCP的各种可靠性机制实际都不…...

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

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…...

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

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

基于轨迹的汽车跟随系统横向控制方法
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…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...

五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...

Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...

高分辨率图像合成归一化流扩展
大家读完觉得有帮助记得关注和点赞!!! 1 摘要 我们提出了STARFlow,一种基于归一化流的可扩展生成模型,它在高分辨率图像合成方面取得了强大的性能。STARFlow的主要构建块是Transformer自回归流(TARFlow&am…...