【MySQL_06】表的相关操作

news2025/3/11 21:45:47

文章目录

    • 一、表的基本操作
      • 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)
BEGIN
    UPDATE employees SET salary = salary + amount WHERE id = emp_id;
END;
4.4.2 函数示例
CREATE FUNCTION GetEmployeeName(emp_id INT) 
RETURNS VARCHAR(100)
BEGIN
    RETURN (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%';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2313406.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

clickhouse集群部署保姆级教程

ClickHouse安装 版本要求 23.8及之后的版本 硬件要求 三台机器 建议配置 磁盘 ssd 500G内存 32gcpu 16c 最低配置 磁盘 机械硬盘 50G内存 4gcpu 4c 容量规划 一亿条数据大约使用1TB磁盘容量 参考官方容量推荐 安装包准备 zookeeper安装 zookeeper需要java启动&…

驾培市场与低空经济无人机融合技术详解

随着科技的飞速发展和社会的不断进步&#xff0c;驾培市场正面临着前所未有的变革。传统汽车驾驶培训已不再是唯一的选择&#xff0c;无人机驾驶等新兴领域正逐渐成为驾培市场的重要组成部分。本报告旨在探讨驾培市场与低空经济的融合发展&#xff0c;特别是应用型人才培养与驾…

简单记录一下Oracle数据库与mysql数据库注入的不同。

Oracle数据库的注入比mysql较复制。 一确定注入点&#xff1a;与mysql一样。 and 11 -- #文章有出现. and 12 -- #文章不见了。 二。确定列数。 ’order by 1&#xff0c;2 -- #没问题 order by 1,2,3 -- #保错&#xff0c;所以有两列。 三&#xff0c;所有uni…

如何将本地已有的仓库上传到gitee (使用UGit)

1、登录Gitee。 2、点击个人头像旁边的加号&#xff0c;选择新建仓库&#xff1a; 3、填写仓库相关信息 4、复制Gitee仓库的地址 5、绑定我们的本地仓库与远程仓库 6、将本地仓库发布&#xff08;推送&#xff09;到远程仓库&#xff1a; 注意到此处报错&#xff…

Day04 模拟原生开发app过程 Androidstudio+逍遥模拟器

1、用Androidstudio打开已经写好了的music项目 2、逍遥模拟器打开apk后缀文件 3、在源文件搜索关键字 以后的测试中做资产收集

若依ry-vue分离板(完整版)前后端部署

目录 1.目标 2.准备工作 3.源码下载 4.整理前后端目录 5.先部署后端 &#xff08;1&#xff09;导入数据库 &#xff08;2&#xff09;改代码数据库配置 &#xff08;3&#xff09;运行redis &#xff08;4&#xff09;运行执行文件 &#xff08;5&#xff09;后端启…

【YOLOv8】YOLOv8改进系列(5)----替换主干网络之EfficientFormerV2

主页&#xff1a;HABUO&#x1f341;主页&#xff1a;HABUO &#x1f341;YOLOv8入门改进专栏&#x1f341; &#x1f341;如果再也不能见到你&#xff0c;祝你早安&#xff0c;午安&#xff0c;晚安&#x1f341; 【YOLOv8改进系列】&#xff1a; 【YOLOv8】YOLOv8结构解读…

北大一二三四版全套DeepSeek教学资料

DeepSeek学习资料合集&#xff1a;https://pan.quark.cn/s/bb6ebf0e9b4d DeepSeek实操变现指南&#xff1a;https://pan.quark.cn/s/76328991eaa2 你是否渴望深入探索人工智能的前沿领域&#xff1f;是否在寻找一份能引领你从理论到实践&#xff0c;全面掌握AI核心技术的学习…

【大模型】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第五十七步

主题内容教学目的/扩展视频步进电机电路原理&#xff0c;跳线设置&#xff0c;驱动程序&#xff0c;调用控制。熟悉驱动程序&#xff0c;能调用控制。 师从洋桃电子&#xff0c;杜洋老师 &#x1f4d1;文章目录 一、步进电机核心原理图解二、核心特性与优势三、关键驱动方式对比…

[NewStarCTF 2023 公开赛道]ez_sql1 【sqlmap使用/大小写绕过】

题目&#xff1a; 发现id处可以sql注入&#xff1a; 虽然输入id1;show databases;#没什么回显&#xff0c;但是知道这里是字符型注入了 这次利用sqlmap注入 --dbs&#xff1a;列出所有数据库名字 python .\sqlmap.py -u http://a40b2f0a-823f-4c99-b43c-08b94ed0abb2.node5.…

新能源汽车充电综合解决方案:安科瑞电气助力绿色出行

安科瑞 华楠 18706163979 随着新能源汽车的迅猛发展&#xff0c;充电基础设施的建设成为了推动行业进步的关键。然而&#xff0c;充电技术滞后、运营效率低下、车桩比失衡等问题&#xff0c;依然困扰着广大车主和运营商。今天&#xff0c;我们要为大家介绍一款新能源汽车充电…

蓝桥杯java-B组真题—动态规划

目录 一.什么是动态规划? 二.题目 第一种情况:集合本身之和为奇数 第二种情况:集合本身之和为偶数 下面是代码实现: 一.什么是动态规划? 这里就简单的解释一下&#xff0c;动态规划就是记录之前的计算结果&#xff0c;避免重复的计算之前已经计算过的结果&#xff0c;用…

网易邮箱如何用大数据任务调度实现海量邮件数据处理?Apache DolphinScheduler用户交流会上来揭秘!

你是否对大数据领域的前沿应用充满好奇&#xff1f;网易邮箱作为互联网大厂网易的重要业务线&#xff0c;在大数据应用方面有着诸多值得借鉴的实践经验。你是否渴望深入了解网易邮箱如何借助 Apache DolphinScheduler 实现海量邮件数据处理、用户行为分析、实时监控等核心业务场…

前端知识点---路由模式-实例模式和单例模式(ts)

在 ArkTS&#xff08;Ark UI 框架&#xff09;中&#xff0c;路由实例模式&#xff08;Standard Instance Mode&#xff09;主要用于管理页面跳转。当创建一个新页面时&#xff0c;可以选择标准实例模式&#xff08;Standard Mode&#xff09;或单实例模式&#xff08;Single M…

固定表头、首列 —— uniapp、vue 项目

项目实地&#xff1a;也可以在 【微信小程序】搜索体验&#xff1a;xny.handbook 另一个体验项目&#xff1a;官网 一、效果展示 二、代码展示 &#xff08;1&#xff09;html 部分 <view class"table"><view class"tr"><view class&quo…

langchain系列(九)- LangGraph 子图详解

目录 一、导读 二、原理说明 1、简介 2、子图图示 3、使用说明 三、基础代码实现 1、实现功能 2、Graph 图示 3、代码实现 4、输出 5、分析 四、人机交互 1、实现中断 2、历史状态&#xff08;父图&#xff09; 3、历史状态&#xff08;子图&#xff09; 4、历史…

搜索引擎是如何理解你的查询并提供精准结果的?

目录 一、搜索引擎简单介绍 二、搜索引擎整体架构和工作过程 &#xff08;一&#xff09;整体分析 &#xff08;二&#xff09;爬虫系统 三个基本点 爬虫系统的工作流程 关键考虑因素和挑战 &#xff08;三&#xff09;索引系统 网页处理阶段 预处理阶段 反作弊分析…

IDEA软件安装环境配置中文插件

一、Java环境配置 1. JDK安装8 访问Oracle官网下载JDK8&#xff08;推荐JDK8&#xff0c;11&#xff09;Java Downloads | Oracle 双击安装程序&#xff0c;保持默认设置连续点击"下一步"完成安装 验证JDK安装&#xff0c;winR键 然后输入cmd&#xff0c;输入java…

循环神经网络(RNN):时序建模的核心引擎与演进之路

在人工智能处理序列数据的战场上&#xff0c;循环神经网络&#xff08;RNN&#xff09;如同一个能够理解时间的智者。从 2015 年谷歌神经机器翻译系统颠覆传统方法&#xff0c;到 2023 年 ChatGPT 实现对话连续性&#xff0c;这些突破都植根于 RNN 对时序建模的深刻理解。本文将…