【MySQL_06】表的相关操作
文章目录
- 一、表的基本操作
- 1.1 创建表
- 1.2 修改表结构
- 1.2.1 添加列
- 1.2.2 删除列
- 1.2.3 修改列
- 1.2.4 重命名列
- 1.2.5 添加约束
- 1.3 删除表
- 1.4 查询表结构
- 1.5 重命名表
- 1.6 复制表
- 1.6.1 仅复制结构
- 1.6.2 复制结构及数据
- 1.7 清空表数据
- 二、数据完整性约束
- 2.1 主键约束
- 2.2 唯一约束
- 2.3 非空约束
- 2.4 外键约束
- 2.5 检查约束
- 三、索引管理
- 3.1 创建索引
- 3.2 删除索引
- 四、高级表功能
- 4.1 分区表
- 4.1.1 按范围分区
- 4.1.2 管理分区
- 4.2 视图
- 4.2.1 创建虚拟表
- 4.2.2 删除视图
- 4.3 触发器
- 4.3.1 自动执行业务逻辑
- 4.3.2 删除触发器
- 4.4 存储过程与函数
- 4.4.1 存储过程示例
- 4.4.2 函数示例
- 4.5 定时任务
- 4.5.1 创建每日备份事件
- 4.5.2 删除事件
- 五、事务管理
- 5.1 事务控制
- 六、备份与恢复
- 6.1 使用mysqldump备份
- 6.2 恢复数据
- 七、性能优化
- 7.1 优化存储空间
- 7.2 查询分析
- 八、存储引擎与字符集
- 8.1 切换存储引擎
- 8.2 设置UTF-8编码
- 九、权限管理
- 9.1 授权访问
- 9.2 撤销权限
- 十、日志管理
- 10.1 启用二进制日志
- 10.2 监控慢查询
一、表的基本操作
1.1 创建表
使用 CREATE TABLE 语句定义表结构,包含列名、数据类型和约束条件。
语法:
CREATE TABLE table_name (column1 datatype constraints,column2 datatype constraints,...
);
示例:
CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,first_name VARCHAR(50) NOT NULL,salary DECIMAL(10, 2)
);
1.2 修改表结构
通过 ALTER TABLE 调整表结构,支持添加/删除/修改列、重命名列、添加约束等操作。
1.2.1 添加列
ALTER TABLE employees ADD department VARCHAR(50);
1.2.2 删除列
ALTER TABLE employees DROP COLUMN department;
1.2.3 修改列
ALTER TABLE employees MODIFY salary DECIMAL(12, 2);
1.2.4 重命名列
ALTER TABLE employees CHANGE hire_date start_date DATE;
1.2.5 添加约束
ALTER TABLE employees ADD CONSTRAINT chk_salary CHECK (salary > 0);
1.3 删除表
使用 DROP TABLE 永久删除表及数据:
DROP TABLE employees; -- 不可恢复!
1.4 查询表结构
查看表结构信息:
DESCRIBE employees; -- 或 SHOW COLUMNS FROM employees;
1.5 重命名表
修改表名:
RENAME TABLE employees TO staff;
1.6 复制表
1.6.1 仅复制结构
CREATE TABLE employees_copy LIKE employees;
1.6.2 复制结构及数据
CREATE TABLE employees_copy AS SELECT * FROM employees;
1.7 清空表数据
快速清空数据并重置自增列:
TRUNCATE TABLE employees; -- 不可逆操作!
二、数据完整性约束
2.1 主键约束
唯一标识记录:
CREATE TABLE orders (order_id INT PRIMARY KEY,...
);
2.2 唯一约束
确保列值唯一:
ALTER TABLE employees ADD UNIQUE (email);
2.3 非空约束
禁止空值:
CREATE TABLE users (username VARCHAR(50) NOT NULL,...
);
2.4 外键约束
跨表数据一致性:
ALTER TABLE orders
ADD FOREIGN KEY (user_id) REFERENCES users(id);
2.5 检查约束
自定义数据条件:
ALTER TABLE products
ADD CHECK (stock_quantity >= 0);
三、索引管理
3.1 创建索引
加速查询:
CREATE INDEX idx_last_name ON employees(last_name);
3.2 删除索引
释放存储空间:
DROP INDEX idx_last_name ON employees;
四、高级表功能
4.1 分区表
4.1.1 按范围分区
CREATE TABLE sales (...)
PARTITION BY RANGE (YEAR(sale_date)) (PARTITION p2020 VALUES LESS THAN (2021),PARTITION p2021 VALUES LESS THAN (2022)
);
4.1.2 管理分区
动态调整分区:
ALTER TABLE sales ADD PARTITION (PARTITION p2022 VALUES LESS THAN (2023));
4.2 视图
4.2.1 创建虚拟表
CREATE VIEW high_salary_view AS
SELECT * FROM employees WHERE salary > 10000;
4.2.2 删除视图
DROP VIEW high_salary_view;
4.3 触发器
4.3.1 自动执行业务逻辑
CREATE TRIGGER update_timestamp
BEFORE UPDATE ON orders
FOR EACH ROW SET NEW.updated_at = NOW();
4.3.2 删除触发器
DROP TRIGGER update_timestamp;
4.4 存储过程与函数
4.4.1 存储过程示例
CREATE PROCEDURE RaiseSalary(IN emp_id INT, IN amount DECIMAL)
BEGINUPDATE employees SET salary = salary + amount WHERE id = emp_id;
END;
4.4.2 函数示例
CREATE FUNCTION GetEmployeeName(emp_id INT)
RETURNS VARCHAR(100)
BEGINRETURN (SELECT CONCAT(first_name, ' ', last_name) FROM employees WHERE id = emp_id);
END;
4.5 定时任务
4.5.1 创建每日备份事件
CREATE EVENT daily_backup
ON SCHEDULE EVERY 1 DAY
DO BEGIN-- 备份逻辑
END;
4.5.2 删除事件
DROP EVENT daily_backup;
五、事务管理
5.1 事务控制
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT; -- 或 ROLLBACK;
六、备份与恢复
6.1 使用mysqldump备份
mysqldump -u root -p mydb employees > backup.sql
6.2 恢复数据
mysql -u root -p mydb < backup.sql
七、性能优化
7.1 优化存储空间
OPTIMIZE TABLE employees;
7.2 查询分析
EXPLAIN SELECT * FROM employees WHERE last_name = 'Smith';
八、存储引擎与字符集
8.1 切换存储引擎
ALTER TABLE employees ENGINE = InnoDB;
8.2 设置UTF-8编码
ALTER TABLE employees CONVERT TO CHARACTER SET utf8mb4;
九、权限管理
9.1 授权访问
GRANT SELECT, INSERT ON employees TO 'user1'@'localhost';
9.2 撤销权限
REVOKE DELETE ON employees FROM 'user1'@'localhost';
十、日志管理
10.1 启用二进制日志
SET GLOBAL log_bin = ON;
10.2 监控慢查询
SHOW VARIABLES LIKE 'slow_query%';
相关文章:
【MySQL_06】表的相关操作
文章目录 一、表的基本操作1.1 创建表1.2 修改表结构1.2.1 添加列1.2.2 删除列1.2.3 修改列1.2.4 重命名列1.2.5 添加约束 1.3 删除表1.4 查询表结构1.5 重命名表1.6 复制表1.6.1 仅复制结构1.6.2 复制结构及数据 1.7 清空表数据 二、数据完整性约束2.1 主键约束2.2 唯一约束2.…...
clickhouse集群部署保姆级教程
ClickHouse安装 版本要求 23.8及之后的版本 硬件要求 三台机器 建议配置 磁盘 ssd 500G内存 32gcpu 16c 最低配置 磁盘 机械硬盘 50G内存 4gcpu 4c 容量规划 一亿条数据大约使用1TB磁盘容量 参考官方容量推荐 安装包准备 zookeeper安装 zookeeper需要java启动&…...
驾培市场与低空经济无人机融合技术详解
随着科技的飞速发展和社会的不断进步,驾培市场正面临着前所未有的变革。传统汽车驾驶培训已不再是唯一的选择,无人机驾驶等新兴领域正逐渐成为驾培市场的重要组成部分。本报告旨在探讨驾培市场与低空经济的融合发展,特别是应用型人才培养与驾…...
pandas-基础(数据结构及文件访问)
1 Pandas的数据结构 1.1 Series 特点:一维的数据型对象,包含一个值序列和数据标签(即索引) 创建Series: pandas.Series(dataNone, indexNone, dtypeNone, nameNone, copyFalse, fastpathFalse) 参数说明: data&a…...
简单记录一下Oracle数据库与mysql数据库注入的不同。
Oracle数据库的注入比mysql较复制。 一确定注入点:与mysql一样。 and 11 -- #文章有出现. and 12 -- #文章不见了。 二。确定列数。 ’order by 1,2 -- #没问题 order by 1,2,3 -- #保错,所以有两列。 三,所有uni…...
前端小食堂 | Day11 - Vue.js の烹饪秘籍
🎨 今日主菜:Vue 常用技巧全家桶 1. 响应式烹饪秘籍 <script setup> // 🍳 精准控制响应式 const counter ref(0); // 基本类型用ref const user reactive({ name: 小明, age: 18 }); // 对象用reactive // 🔥 自…...
如何将本地已有的仓库上传到gitee (使用UGit)
1、登录Gitee。 2、点击个人头像旁边的加号,选择新建仓库: 3、填写仓库相关信息 4、复制Gitee仓库的地址 5、绑定我们的本地仓库与远程仓库 6、将本地仓库发布(推送)到远程仓库: 注意到此处报错ÿ…...
多方安全计算(MPC)电子拍卖系统
目录 一、前言二、多方安全计算(MPC)与电子拍卖系统概述2.1 多方安全计算(MPC)的基本概念2.2 电子拍卖系统背景与需求三、MPC电子拍卖系统设计原理3.1 系统总体架构3.2 电子拍卖中的安全协议3.3 数学与算法证明四、数据加解密模块设计五、GPU加速与系统性能优化六、GUI设计与系…...
Day04 模拟原生开发app过程 Androidstudio+逍遥模拟器
1、用Androidstudio打开已经写好了的music项目 2、逍遥模拟器打开apk后缀文件 3、在源文件搜索关键字 以后的测试中做资产收集...
C# Channel
核心概念创建Channel无界通道有界通道FullMode选项 生产者-消费者模式生产者写入数据消费者读取数据 完整示例高级配置优化选项:取消操作:通过 CancellationToken 取消读写。 错误处理适用场景Channel的类型创建Channel写入和读取消息使用场景示例代码注…...
17网商品列表的HTML结构是怎样的?
根据搜索结果,目前没有直接提供17网(17zwd)商品列表的HTML结构的详细信息。不过,我们可以根据一般的电商网站结构进行推测,并结合已有的爬虫代码示例来分析可能的HTML结构。 17网商品列表的HTML结构推测 一般来说&am…...
若依ry-vue分离板(完整版)前后端部署
目录 1.目标 2.准备工作 3.源码下载 4.整理前后端目录 5.先部署后端 (1)导入数据库 (2)改代码数据库配置 (3)运行redis (4)运行执行文件 (5)后端启…...
【YOLOv8】YOLOv8改进系列(5)----替换主干网络之EfficientFormerV2
主页:HABUO🍁主页:HABUO 🍁YOLOv8入门改进专栏🍁 🍁如果再也不能见到你,祝你早安,午安,晚安🍁 【YOLOv8改进系列】: 【YOLOv8】YOLOv8结构解读…...
深入理解 HTML 文本格式化
在网页开发中,HTML 文本格式化是一项基础且关键的技能。通过合理运用 HTML 格式化标签,我们能够让网页上的文本以丰富多样的形式呈现,从而提升用户体验。本文将详细介绍 HTML 文本格式化的相关知识。 一、HTML 文本格式化基础 加粗文本…...
时序和延时
1、延迟模型的类型 verilog有三种类型的延迟模型:分布延迟 、 集总延迟 、 路径延迟(pin to pin) 1.1、 分布延迟 分布延迟是在每个独立元件的基础上进行定义的。 module M(output wire out ,input wire a …...
北大一二三四版全套DeepSeek教学资料
DeepSeek学习资料合集:https://pan.quark.cn/s/bb6ebf0e9b4d DeepSeek实操变现指南:https://pan.quark.cn/s/76328991eaa2 你是否渴望深入探索人工智能的前沿领域?是否在寻找一份能引领你从理论到实践,全面掌握AI核心技术的学习…...
垃圾收集算法与收集器
在 JVM 中,垃圾收集(Garbage Collection, GC)算法的核心目标是自动回收无用对象的内存,同时尽量减少对应用性能的影响。以下是 JVM 中主要垃圾收集算法的原理、流程及实际应用场景的详细介绍: 一、标记-清除算法&#…...
【大模型】WPS 接入 DeepSeek-R1详解,打造全能AI办公助手
目录 一、前言 二、WPS接入AI工具优势 三、WPS接入AI工具两种方式 3.1 手动配置的方式 3.2 Office AI助手 四、WPS手动配置方式接入AI大模型 4.1 安装VBA插件 4.1.1 下载VBA插件并安装 4.2 配置WPS 4.3 WPS集成VB 4.4 AI助手效果测试 4.5 配置模板文…...
STM32步进电机驱动全解析(上) | 零基础入门STM32第五十七步
主题内容教学目的/扩展视频步进电机电路原理,跳线设置,驱动程序,调用控制。熟悉驱动程序,能调用控制。 师从洋桃电子,杜洋老师 📑文章目录 一、步进电机核心原理图解二、核心特性与优势三、关键驱动方式对比…...
Spring Boot 多数据源解决方案:dynamic-datasource-spring-boot-starter 的奥秘(上)
在 Spring Boot 生态中,dynamic-datasource-spring-boot-starter 是一个非常实用的组件,它为我们在多数据源场景下提供了便捷的解决方案。在上一篇文章《一分钟上手:如何创建你的第一个 Spring Boot Starter》中,我们学习了如何创…...
[NewStarCTF 2023 公开赛道]ez_sql1 【sqlmap使用/大小写绕过】
题目: 发现id处可以sql注入: 虽然输入id1;show databases;#没什么回显,但是知道这里是字符型注入了 这次利用sqlmap注入 --dbs:列出所有数据库名字 python .\sqlmap.py -u http://a40b2f0a-823f-4c99-b43c-08b94ed0abb2.node5.…...
【商城实战(18)】后台管理系统基础搭建:从0到1构建电商中枢
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配…...
新能源汽车充电综合解决方案:安科瑞电气助力绿色出行
安科瑞 华楠 18706163979 随着新能源汽车的迅猛发展,充电基础设施的建设成为了推动行业进步的关键。然而,充电技术滞后、运营效率低下、车桩比失衡等问题,依然困扰着广大车主和运营商。今天,我们要为大家介绍一款新能源汽车充电…...
蓝桥杯java-B组真题—动态规划
目录 一.什么是动态规划? 二.题目 第一种情况:集合本身之和为奇数 第二种情况:集合本身之和为偶数 下面是代码实现: 一.什么是动态规划? 这里就简单的解释一下,动态规划就是记录之前的计算结果,避免重复的计算之前已经计算过的结果,用…...
【网络编程】事件选择模型
十、基于I/O模型的网络开发 10.9 事件选择模型 10.0.1 基本概念 事件选择(WSAEventSelect) 模型是另一个有用的异步 I/O 模型。和 WSAAsyncSelect 模 型类似的是,它也允许应用程序在一个或多个套接字上接收以事件为基础的网络事件通知,最 主要的差别在…...
网易邮箱如何用大数据任务调度实现海量邮件数据处理?Apache DolphinScheduler用户交流会上来揭秘!
你是否对大数据领域的前沿应用充满好奇?网易邮箱作为互联网大厂网易的重要业务线,在大数据应用方面有着诸多值得借鉴的实践经验。你是否渴望深入了解网易邮箱如何借助 Apache DolphinScheduler 实现海量邮件数据处理、用户行为分析、实时监控等核心业务场…...
前端知识点---路由模式-实例模式和单例模式(ts)
在 ArkTS(Ark UI 框架)中,路由实例模式(Standard Instance Mode)主要用于管理页面跳转。当创建一个新页面时,可以选择标准实例模式(Standard Mode)或单实例模式(Single M…...
固定表头、首列 —— uniapp、vue 项目
项目实地:也可以在 【微信小程序】搜索体验:xny.handbook 另一个体验项目:官网 一、效果展示 二、代码展示 (1)html 部分 <view class"table"><view class"tr"><view class&quo…...
langchain系列(九)- LangGraph 子图详解
目录 一、导读 二、原理说明 1、简介 2、子图图示 3、使用说明 三、基础代码实现 1、实现功能 2、Graph 图示 3、代码实现 4、输出 5、分析 四、人机交互 1、实现中断 2、历史状态(父图) 3、历史状态(子图) 4、历史…...
搜索引擎是如何理解你的查询并提供精准结果的?
目录 一、搜索引擎简单介绍 二、搜索引擎整体架构和工作过程 (一)整体分析 (二)爬虫系统 三个基本点 爬虫系统的工作流程 关键考虑因素和挑战 (三)索引系统 网页处理阶段 预处理阶段 反作弊分析…...
