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

【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)
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.kler.cn/a/580805.html

相关文章:

  • 2025年渗透测试面试题总结-华顺某信安-安全服务工程师(题目+回答)
  • 1分钟看懂React的那些Hook‘s
  • Python:函数(一)
  • UIToolkit(一)
  • cursor mcp 在windows下配置
  • MySQL 索引技术指南
  • 《Mycat核心技术》第19章:基于MySQL实现读写分离
  • 深度学习双向RNN
  • 从 “12.3” 的崩溃到完美的解决方案:一场类型选择的冒险之旅
  • 计算机导论——CS50
  • 大空间多人互动技术、大空间LBE、VR大空间什么意思?如何实现?
  • MATLAB 控制系统设计与仿真 - 21
  • 启动wsl里的Ubuntu24报错:当前计算机配置不支持 WSL2,HCS_E_HYPERV_NOT_INSTALLED
  • leetcode hot100 二叉树
  • Spark(8)配置Hadoop集群环境-使用脚本命令实现集群文件同步
  • 《C#上位机开发从门外到门内》1-2:上位机开发语言与工具、开发环境部署
  • 实现“一塔一档”管理模式需要多种物联网(IoT)技术的支持
  • 若依-导出后端解析
  • Git常用命令全面分类总结
  • Java 三路快排