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

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

如何选择开源向量数据库

文章目录 评估维度查询性能索引与存储扩展性数据管理能力生态支持 常见向量数据库对比 评估维度 选择开源向量数据库时&#xff0c;需要综合考虑查询性能、数据规模、索引构建速度、生态支持等多个因素&#xff0c;以下是关键的评估维度&#xff1a;选择开源向量数据库时&…...

c#面试题整理4

1.stirng str"",string strnull&#xff0c;俩者有何区别 空字符串占有存储控件&#xff0c;null不占用 2.class与struct的异同 异同class 可继承 引用类型 1.都可以定义方法字段 2.都可实例化&#xff0c;与类的使用几乎一样 struct 不可继承 值类型 只能声明带…...

智能焊机监测系统:打造工业安全的数字化盾牌

在现代工业生产中&#xff0c;焊机作为核心设备之一&#xff0c;其稳定性和安全性直接关系到生产效率和产品质量。德州迪格特科技有限公司推出的智能焊机监测系统&#xff0c;通过先进的技术手段&#xff0c;为工业生产构筑了一道坚固的安全防线。 智能监测&#xff0c;保障焊…...

Centos的ElasticSearch安装教程

由于我们是用于校园学习&#xff0c;所以最好是关闭防火墙 systemctl stop firewalld systemctl disable firewalld 个人喜欢安装在opt临时目录&#xff0c;大家可以随意 在opt目录下创建一个es-standonely-docker目录 mkdir es-standonely-docker 进入目录编辑yml文件 se…...

一二三应用开发平台——能力扩展:多数据源支持

背景 随着项目规模的扩大&#xff0c;单一数据源已无法满足复杂业务需求&#xff0c;多数据源应运而生。 技术选型 MyBatis-Plus 的官网提供了两种多数据源扩展插件&#xff1a;开源生态的 <font style"color:rgb(53, 56, 65);">dynamic-datasource</fon…...

pandas-基础(数据结构及文件访问)

1 Pandas的数据结构 1.1 Series 特点&#xff1a;一维的数据型对象&#xff0c;包含一个值序列和数据标签(即索引&#xff09; 创建Series&#xff1a; pandas.Series(dataNone, indexNone, dtypeNone, nameNone, copyFalse, fastpathFalse) 参数说明&#xff1a; data&a…...

数据分析与AI丨AI Fabric:数据和人工智能架构的未来

AI Fabric 架构是模块化、可扩展且面向未来的&#xff0c;是现代商业环境中企业实现卓越的关键。 在当今商业环境中&#xff0c;数据分析和人工智能领域发展可谓日新月异。几乎每天都有新兴技术诞生&#xff0c;新的应用场景不断涌现&#xff0c;前沿探索持续拓展。可遗憾的是&…...

如何根据应用需求选择光谱相机

一、按核心参数匹配需求 ‌光谱范围‌ ‌农业监测‌&#xff1a;需覆盖可见光至近红外&#xff08;400-1000nm&#xff09;&#xff0c;以捕捉作物叶绿素、水分等特征‌。 ‌地质勘探‌&#xff1a;需宽光谱&#xff08;350-2500nm&#xff09;及高分辨率&#xff08;3-10nm…...

内存泄漏出现的时机和原因,如何避免?

由于时间比较紧张我就不排版了&#xff0c;但是对于每一种可能的情况都会出对应的代码示例以及解决方案代码示例。 内存泄漏可能的原因之一在于用户在动态分配一个内存空间之中&#xff0c;忘记将这部分内容手动释放。例如&#xff1a;&#xff08;c之中使用new分配内存没有使…...

Python第十六课:深度学习入门 | 神经网络解密

🎯 本节目标 理解生物神经元与人工神经网络的映射关系掌握激活函数与损失函数的核心作用使用Keras构建手写数字识别模型可视化神经网络的训练过程掌握防止过拟合的基础策略一、神经网络基础(大脑的数字化仿生) 1. 神经元对比 生物神经元人工神经元树突接收信号输入层接收特…...

从0到1,带你开启TypeScript的奇妙之旅

目录 一、TypeScript 是什么? 二、为什么要学习 TypeScript? 三、快速上手:环境搭建与 Hello World (一)安装 TypeScript (二)创建第一个 TypeScript 文件 (三)编译 TypeScript 文件 (四)运行编译后的 JavaScript 文件 四、深入 TypeScript 核心语法 (一)…...

如何修复“RPC 服务器不可用”错误

远程过程调用&#xff08;Remote Procedure Call&#xff0c; RPC&#xff09;是允许客户端在不同计算机上执行进程的众多可用网络进程之一。本文将深入探讨RPC如何在不同的软件系统之间实现无缝消息交换&#xff0c;同时重点介绍与RPC相关的常见错误的一些原因。 什么是远程过…...

【redis】五种数据类型和编码方式

文章目录 五种数据类型编码方式stringhashlistsetzset查询内部编码 五种数据类型 字符串&#xff1a;Java 中的 String哈希&#xff1a;Java 中的 HashMap列表&#xff1a;Java 中的 List集合&#xff1a;Java 中的 Set有序集合&#xff1a;除了存 member 之外&#xff0c;还有…...

今日头条文章爬虫教程

今日头条文章爬虫教程 随着互联网的发展&#xff0c;新闻资讯类平台如今日头条积累了海量的数据。对于数据分析师、研究人员等群体来说&#xff0c;获取这些数据进行分析和研究具有重要的价值。本文将介绍如何使用Python编写爬虫&#xff0c;爬取今日头条的文章数据。 一、准…...

使用Modelsim手动仿真

FPGA设计流程 在设计输入之后,设计综合前进行 RTL 级仿真,称为综合前仿真,也称为前仿真或 功能仿真。前仿真也就是纯粹的功能仿真,主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟。在完成一个设计的代码编写工作之后,可以直接对代码进行仿真,…...

从Manus看网络安全:通用AI智能体重构安全运营

当通用AI智能体遇见网络安全 开启主动防御的跃迁 在勒索软件平均潜伏期缩短至3.7天、APT攻击复杂度指数级攀升的当下&#xff0c;传统SOAR产品&#xff08;安全编排、自动化和响应&#xff09;正面临两大困境&#xff1a; 规则依赖症&#xff1a;基于Playbook的响应逻辑&…...

南开提出1Prompt1Story,无需训练,可通过单个连接提示实现一致的文本到图像生成。

&#xff08;1Prompt1Story&#xff09;是一种无训练的文本到图像生成方法&#xff0c;通过整合多个提示为一个长句子&#xff0c;并结合奇异值重加权&#xff08;SVR&#xff09;和身份保持交叉注意力&#xff08;IPCA&#xff09;技术&#xff0c;解决了生成图像中身份不一致…...

hooks useModule自定义hooks (二次封装AgGridReact ag-table)自定义表头,自定义表头搜索

场景业务&#xff1a; 多次运用AgGridReact的table 列表 思路&#xff1a; 运用自定义hooks进行二次封装&#xff1a; 通用配置例如&#xff1a;传参的参数&#xff0c;传参的url&#xff0c;需要缓存的key这些键值类 定制化配置例如&#xff1a;需要对table 的一些定制化传…...

Manus无需邀请码即可使用的平替方案-OpenManus实测

文章目录 Manus 简介核心定位技术架构核心特点应用场景性能表现用户体验发展计划OpenManus技术架构与设计理念核心功能特性应用场景案例与闭源Manus的差异对比安装使用与实战演示执行过程记录简单案例-快速写一个helloworld的java程序复杂案例-分析特斯拉汽车近三年财务数据并生…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...