【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.…...
如何选择开源向量数据库
文章目录 评估维度查询性能索引与存储扩展性数据管理能力生态支持 常见向量数据库对比 评估维度 选择开源向量数据库时,需要综合考虑查询性能、数据规模、索引构建速度、生态支持等多个因素,以下是关键的评估维度:选择开源向量数据库时&…...
c#面试题整理4
1.stirng str"",string strnull,俩者有何区别 空字符串占有存储控件,null不占用 2.class与struct的异同 异同class 可继承 引用类型 1.都可以定义方法字段 2.都可实例化,与类的使用几乎一样 struct 不可继承 值类型 只能声明带…...
智能焊机监测系统:打造工业安全的数字化盾牌
在现代工业生产中,焊机作为核心设备之一,其稳定性和安全性直接关系到生产效率和产品质量。德州迪格特科技有限公司推出的智能焊机监测系统,通过先进的技术手段,为工业生产构筑了一道坚固的安全防线。 智能监测,保障焊…...
Centos的ElasticSearch安装教程
由于我们是用于校园学习,所以最好是关闭防火墙 systemctl stop firewalld systemctl disable firewalld 个人喜欢安装在opt临时目录,大家可以随意 在opt目录下创建一个es-standonely-docker目录 mkdir es-standonely-docker 进入目录编辑yml文件 se…...
一二三应用开发平台——能力扩展:多数据源支持
背景 随着项目规模的扩大,单一数据源已无法满足复杂业务需求,多数据源应运而生。 技术选型 MyBatis-Plus 的官网提供了两种多数据源扩展插件:开源生态的 <font style"color:rgb(53, 56, 65);">dynamic-datasource</fon…...
pandas-基础(数据结构及文件访问)
1 Pandas的数据结构 1.1 Series 特点:一维的数据型对象,包含一个值序列和数据标签(即索引) 创建Series: pandas.Series(dataNone, indexNone, dtypeNone, nameNone, copyFalse, fastpathFalse) 参数说明: data&a…...
数据分析与AI丨AI Fabric:数据和人工智能架构的未来
AI Fabric 架构是模块化、可扩展且面向未来的,是现代商业环境中企业实现卓越的关键。 在当今商业环境中,数据分析和人工智能领域发展可谓日新月异。几乎每天都有新兴技术诞生,新的应用场景不断涌现,前沿探索持续拓展。可遗憾的是&…...
如何根据应用需求选择光谱相机
一、按核心参数匹配需求 光谱范围 农业监测:需覆盖可见光至近红外(400-1000nm),以捕捉作物叶绿素、水分等特征。 地质勘探:需宽光谱(350-2500nm)及高分辨率(3-10nm…...
内存泄漏出现的时机和原因,如何避免?
由于时间比较紧张我就不排版了,但是对于每一种可能的情况都会出对应的代码示例以及解决方案代码示例。 内存泄漏可能的原因之一在于用户在动态分配一个内存空间之中,忘记将这部分内容手动释放。例如:(c之中使用new分配内存没有使…...
Python第十六课:深度学习入门 | 神经网络解密
🎯 本节目标 理解生物神经元与人工神经网络的映射关系掌握激活函数与损失函数的核心作用使用Keras构建手写数字识别模型可视化神经网络的训练过程掌握防止过拟合的基础策略一、神经网络基础(大脑的数字化仿生) 1. 神经元对比 生物神经元人工神经元树突接收信号输入层接收特…...
从0到1,带你开启TypeScript的奇妙之旅
目录 一、TypeScript 是什么? 二、为什么要学习 TypeScript? 三、快速上手:环境搭建与 Hello World (一)安装 TypeScript (二)创建第一个 TypeScript 文件 (三)编译 TypeScript 文件 (四)运行编译后的 JavaScript 文件 四、深入 TypeScript 核心语法 (一)…...
如何修复“RPC 服务器不可用”错误
远程过程调用(Remote Procedure Call, RPC)是允许客户端在不同计算机上执行进程的众多可用网络进程之一。本文将深入探讨RPC如何在不同的软件系统之间实现无缝消息交换,同时重点介绍与RPC相关的常见错误的一些原因。 什么是远程过…...
【redis】五种数据类型和编码方式
文章目录 五种数据类型编码方式stringhashlistsetzset查询内部编码 五种数据类型 字符串:Java 中的 String哈希:Java 中的 HashMap列表:Java 中的 List集合:Java 中的 Set有序集合:除了存 member 之外,还有…...
今日头条文章爬虫教程
今日头条文章爬虫教程 随着互联网的发展,新闻资讯类平台如今日头条积累了海量的数据。对于数据分析师、研究人员等群体来说,获取这些数据进行分析和研究具有重要的价值。本文将介绍如何使用Python编写爬虫,爬取今日头条的文章数据。 一、准…...
使用Modelsim手动仿真
FPGA设计流程 在设计输入之后,设计综合前进行 RTL 级仿真,称为综合前仿真,也称为前仿真或 功能仿真。前仿真也就是纯粹的功能仿真,主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟。在完成一个设计的代码编写工作之后,可以直接对代码进行仿真,…...
从Manus看网络安全:通用AI智能体重构安全运营
当通用AI智能体遇见网络安全 开启主动防御的跃迁 在勒索软件平均潜伏期缩短至3.7天、APT攻击复杂度指数级攀升的当下,传统SOAR产品(安全编排、自动化和响应)正面临两大困境: 规则依赖症:基于Playbook的响应逻辑&…...
南开提出1Prompt1Story,无需训练,可通过单个连接提示实现一致的文本到图像生成。
(1Prompt1Story)是一种无训练的文本到图像生成方法,通过整合多个提示为一个长句子,并结合奇异值重加权(SVR)和身份保持交叉注意力(IPCA)技术,解决了生成图像中身份不一致…...
hooks useModule自定义hooks (二次封装AgGridReact ag-table)自定义表头,自定义表头搜索
场景业务: 多次运用AgGridReact的table 列表 思路: 运用自定义hooks进行二次封装: 通用配置例如:传参的参数,传参的url,需要缓存的key这些键值类 定制化配置例如:需要对table 的一些定制化传…...
Manus无需邀请码即可使用的平替方案-OpenManus实测
文章目录 Manus 简介核心定位技术架构核心特点应用场景性能表现用户体验发展计划OpenManus技术架构与设计理念核心功能特性应用场景案例与闭源Manus的差异对比安装使用与实战演示执行过程记录简单案例-快速写一个helloworld的java程序复杂案例-分析特斯拉汽车近三年财务数据并生…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
