Mysql数据库和表的相关命令

Database常见命令

  • 创建数据库

    CREATE DATABASE database_name;
    
    #完整语法
    #指定字符集和排序规则
    CREATE DATABASE [IF NOT EXISTS] database_name 
    [CHARACTER SET charset_name]
    [COLLATE collation_name];
    
  • 删除数据库

    DROP DATABASE database_name;
    
    # 判断是否存在
    DROP DATABASE [IF EXISTS] database_name;
    
    • 功能:删除一个数据库及其所有数据
    • 注意:此操作不可逆,请谨慎使用
  • 选择数据库

    USE database_name;
    
  • 显示当前选择的数据库

    SELECT DATABASE();
    
  • 显示所有的数据库

    SHOW DATABASES;
    
  • 显示数据库信息

    SHOW CREATE DATABASE database_name;
    
    显示创建数据库的 SQL 语句,包括字符集和排序规则
    
  • 修改数据库

    ALTER DATABASE database_name
    CHARACTER SET charset_name
    COLLATE collation_name;
    
  • 数据库备份

    mysqldump -u username -p database_name > backup_file.sql
    
  • 恢复数据库

    mysql -u username -p database_name < backup_file.sql
    
  • 重命名:可以先备份在删除再导入

导入sql文件

  1. 在命令行中使用 mysql 客户端工具执行 SQL 文件

    mysql -u root -p mydatabase < /path/to/file.sql
    
  2. 如果已经进入 MySQL 命令行,可以使用 source 命令执行 SQL 文件

    source 文件路径;
    

表的常用命令

创建表

  • 基本语法
CREATE TABLE 表名 (
    列名1 数据类型 [约束条件],
    列名2 数据类型 [约束条件],
    ...
    [表级约束条件]
)
CHARACTER SET 字符集名称
COLLATE 校对规则名称
ENGINE = 存储引擎名称;
CREATE TABLE employees (
    id INT PRIMARY KEY, -- 列级主键约束
    first_name VARCHAR(50) NOT NULL, -- 列级非空约束
    last_name VARCHAR(50) NOT NULL, -- 列级非空约束
    email VARCHAR(100) UNIQUE, -- 列级唯一约束
    department_id INT,
    salary DECIMAL(10, 2) CHECK (salary > 0), -- 列级检查约束
    CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES departments(id), -- 表级外键约束
    CONSTRAINT chk_salary CHECK (salary < 100000) -- 表级检查约束
)CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci
ENGINE = InnoDB;

数据类型

  • 整数类型INT, TINYINT, SMALLINT, BIGINT
  • 浮点数类型FLOAT, DOUBLE, DECIMAL
  • 字符串类型VARCHAR, CHAR, TEXT
  • 日期时间类型DATE, TIME, DATETIME, TIMESTAMP
  • 布尔类型BOOLEAN(实际上是 TINYINT(1)

约束条件

  • PRIMARY KEY:主键,唯一标识每一行。
  • UNIQUE:唯一约束,确保列中的值不重复。
  • NOT NULL:非空约束,确保列中的值不为空。
  • DEFAULT:默认值。
  • AUTO_INCREMENT:自增列(通常用于主键)。
  • FOREIGN KEY:外键约束

修改表

  1. 添加列

    ALTER TABLE 表名 ADD 列名 数据类型 [约束条件];
    
  2. 修改列

    ALTER TABLE 表名 MODIFY 列名 新数据类型 [约束条件];
    若省略,则新列将 不继承旧列的约束,仅保留重命名和数据类型变更
    
  3. 重命名列

    ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [约束条件];
    若省略,则新列将 不继承旧列的约束,仅保留重命名和数据类型变更
    
  4. 删除列

    ALTER TABLE 表名 DROP COLUMN 列名;
    
  5. 修改字符集和校对规则

    ALTER TABLE 表名
    CONVERT TO CHARACTER SET 字符集名称
    COLLATE 校对规则名称;
    
  6. 修改存储引擎

    ALTER TABLE 表名
    ENGINE = 存储引擎名称;
    
  7. 添加约束

    ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束类型 (列名);
    
    MySQL 会为每个表的主键约束默认分配名称 PRIMARY,无论用户是否显式命名
    ALTER TABLE table_name
    ADD PRIMARY KEY (column_name);
    
    
    ALTER TABLE table_name
    ADD CONSTRAINT constraint_name UNIQUE (column_name);
    
  8. 删除约束

    ALTER TABLE 表名 DROP CONSTRAINT 约束名;# 该格式可以删除外键约束
    
    ALTER TABLE table_name
    DROP PRIMARY KEY;
    
    ALTER TABLE table_name
    DROP INDEX constraint_name;
    

清空表

TRUNCATE TABLE 表名;

删除表

DROP TABLE IF EXISTS 表名;

重命名表

RENAME TABLE 旧表名 TO 新表名;

复制表

  1. 复制表结构

    CREATE TABLE 新表名 LIKE 原表名;
    
  2. 复制表结构和数据

    CREATE TABLE 新表名 AS SELECT * FROM 原表名;
    

查看表信息

  1. 查看所有表

    SHOW TABLES;
    
  2. 查看表结构

    DESC 表名;
    
  3. 查看建表语句

    SHOW CREATE TABLE 表名;
    
  4. 查看表状态(存储引擎,空间大小等信息)

    SHOW TABLE STATUS LIKE '表名';
    

为表添加计算列

  1. 创建表时增加计算列

    CREATE TABLE table_name (
        column1 data_type,
        column2 data_type,
        ...
        generated_column_name data_type
            GENERATED ALWAYS AS (expression) [STORED | VIRTUAL]
    );
    
    • table_name: 表名。
    • column1, column2, ...: 普通列的定义。
    • generated_column_name: 计算列的名称。
    • data_type: 计算列的数据类型。
    • expression: 计算列的表达式。
    • STOREDVIRTUAL: 指定计算列的类型
      • STORED 表示计算列的值会实际存储在表中
      • VIRTUAL 表示计算列的值在查询时动态计算,不占用存储空间
    • 可以为STORED 计算列创建索引,从 MySQL 5.7 开始,支持为 VIRTUAL 计算列创建索引
    • 计算列的表达式依赖于其他列的值,当这些列的值更新时,计算列的值会自动更新
    CREATE TABLE users (
        id INT PRIMARY KEY,
        name VARCHAR(50),
        birth_year INT,
        age INT GENERATED ALWAYS AS (YEAR(CURDATE()) - birth_year) STORED
    );
    
  2. 修改表时增加计算列

    ALTER TABLE table_name
    ADD COLUMN column_name data_type
    GENERATED ALWAYS AS (expression) [STORED | VIRTUAL];
    
    ALTER TABLE users
    ADD COLUMN age INT
    GENERATED ALWAYS AS (YEAR(CURDATE()) - birth_year) STORED;
    
posted @ 2025-03-17 21:19  QAQ001  阅读(23)  评论(0)    收藏  举报