linux个人心得24 (mysql③,AI排版尝试)

一、MySQL 数据导入(mysql 客户端)

表格

操作场景 核心命令 关键说明
基本导入方式 1(重定向) mysql -u [用户名] -p[密码] [目标数据库名] < [文件名.sql] 最常用,直接执行.sql 文件,目标库需预先创建
基本导入方式 2(source) 1. mysql -u [用户名] -p2. USE [目标数据库名];3. source /完整路径/文件名.sql; 登录后执行,需写.sql 文件完整路径
导入到新建数据库 1. CREATE DATABASE new_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;2. mysql -u root -p new_database < mydatabase_backup.sql 先建库(指定字符集),再导入备份文件
导入全库备份文件 mysql -u root -p < all_databases_backup.sql 备份文件含 CREATE DATABASE 语句,无需指定目标库
从压缩包直接导入 `gunzip < mydatabase_backup.sql.gz mysql -u root -p new_database` 无需解压,通过管道直接导入,效率更高

二、MySQL 备份 & 导入最佳实践

表格

操作类型 命令示例 核心关键点
导出单个库 mysqldump -u user -p dbname > backup.sql 基础备份方式,仅导出指定库数据 + 结构
仅导出结构 mysqldump -u user -p --no-data dbname > schema.sql 只复制表结构,不含数据
生产环境备份 mysqldump -u user -p --single-transaction --routines dbname > backup.sql 保证 InnoDB 数据一致性,不锁表,同时导出存储过程 / 函数
备份并压缩 `mysqldump -u user -p dbname gzip > backup.sql.gz` 压缩后节省存储空间,建议生产环境使用
导入数据 mysql -u user -p dbname < backup.sql 目标数据库需预先创建,字符集需与备份文件匹配
从压缩包导入 `gunzip < backup.sql.gz mysql -u user -p dbname` 跳过解压步骤,直接导入,适合大文件

三、MySQL 创建表常用约束

表格

约束名称 关键字 核心作用 示例应用(employees 表)
主键约束 PRIMARY KEY 唯一标识每行记录,隐含 NOT NULL+UNIQUE,一张表仅一个主键 id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT
非空约束 NOT NULL 列值不能为 NULL,插入 / 更新时必须赋值 first_name VARCHAR(50) NOT NULL
唯一约束 UNIQUE 列值唯一(可多个 NULL),结合 NOT NULL 则无 NULL 且无重复 email VARCHAR(100) NOT NULL UNIQUE
默认值约束 DEFAULT 插入时未指定值则用默认值 hire_date DATE NOT NULL DEFAULT (CURRENT_DATE)
检查约束 CHECK 列值需满足指定条件(MySQL8.0.16 + 支持) salary DECIMAL(10,2) NOT NULL CHECK (salary >= 3000.00)
外键约束 FOREIGN KEY 关联主从表,保证引用完整性,支持级联更新 / 删除 CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES departments(id) ON DELETE SET NULL ON UPDATE CASCADE

四、约束关联补充说明

表格

补充项 说明
AUTO_INCREMENT 非约束,是列属性,通常与主键搭配,插入时自动递增(仅 INT/BIGINT 类型可用)
ON DELETE SET NULL 外键规则:主表记录删除时,从表关联字段设为 NULL(需从表字段允许 NULL)
ON UPDATE CASCADE 外键规则:主表关联字段更新时,从表关联字段同步更新(级联更新)

五、示例表创建语句

sql

复制代码
-- 1. 创建部门表(主表)
CREATE TABLE departments (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL UNIQUE
);

-- 2. 创建员工表(含所有常用约束)
CREATE TABLE employees (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '员工ID, 主键, 自动递增',
    employee_number VARCHAR(10) NOT NULL UNIQUE COMMENT '员工编号, 必须提供且不能重复',
    first_name VARCHAR(50) NOT NULL COMMENT '员工的名字, 不能为空',
    last_name VARCHAR(50) NOT NULL COMMENT '员工的姓氏, 不能为空',
    email VARCHAR(100) NOT NULL UNIQUE COMMENT '电子邮箱, 不能为空且不能重复',
    phone_number VARCHAR(20) COMMENT '联系电话, 可以为空',
    hire_date DATE NOT NULL DEFAULT (CURRENT_DATE) COMMENT '入职日期, 不能为空, 默认为当前日期',
    salary DECIMAL(10, 2) NOT NULL CHECK (salary >= 3000.00) COMMENT '月薪, 不能为空, 且必须大于等于3000',
    department_id INT UNSIGNED COMMENT '所属部门ID, 外键',
    status VARCHAR(10) NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'on_leave', 'terminated')) COMMENT '员工状态, 默认为active',
    -- 表级别外键约束
    CONSTRAINT fk_department
    FOREIGN KEY (department_id)
    REFERENCES departments(id)
    ON DELETE SET NULL
    ON UPDATE CASCADE
);
相关推荐
饭小猿人12 小时前
Android 腾讯X5WebView如何禁止系统自带剪切板和自定义剪切板视图
android·java
_李小白13 小时前
【android opencv学习笔记】Day 8: remap(像素位置重映射)
android·opencv·学习
美狐美颜SDK开放平台13 小时前
多场景美颜SDK解决方案:直播APP(iOS/安卓)开发接入详解
android·人工智能·ios·音视频·美颜sdk·第三方美颜sdk·短视频美颜sdk
嗷o嗷o13 小时前
Android BLE 里,MTU、分包和长数据发送到底该怎么处理
android
qq_2837200514 小时前
Python3 模块精讲:pymysql(第三方)- 连接 MySQL
mysql·adb·pymysql
Gary Studio15 小时前
Android AIDL HAL工程结构示例
android
y = xⁿ15 小时前
MySQL八股知识合集
android·mysql·adb
andr_gale16 小时前
04_rc文件语法规则
android·framework·aosp
一只小白菜16 小时前
macOS MySQL 简易操作手册(基于 zsh + MySQL 8.0.24)
adb