当前位置: 首页 > 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程序复杂案例-分析特斯拉汽车近三年财务数据并生…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

.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 适用场…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...