MySQL数据表操作

105 阅读4分钟

数据类型

  • MySQL常见数值类型

    类型大小范围(有符号)范围(无符号)用途
    TINYINT1(-128, 127)(0, 255)小整数值
    INT4(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
    BIGINT8(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
    FLOAT4单精度浮点数
    DOUBLE8双精度浮点数
    DECIMAL小数值
  • MySQL日期和时间类型

    类型大小格式用途
    DATE3YYYY-MM-DD日期值
    TIME3HH:MM:SS时间值
    YEAR1YYYY年份值
    DATETIME8YYYY-MM-DD hh:mm:ss
    TIMESTAMP4时间戳
  • MySQL字符串类型

    类型大小用途
    CHAR0-255定长字符串
    VARCHAR0-65535变长字符串
    BLOB0-65535二进制形式的长文本数据
    TEXT0-65535长文本数据
    LONGTEXT极大文本数据
  • MySQL枚举和集合类型

    类型作用
    ENUM枚举类型,用于存储单一值,可以选择一个预定义的集合
    SET集合类型,用于存储多个值,可以选择多个预定义的集合

命令合集

  • 查询数据库下的所有数据表
    SHOW TABLES;
    
  • 创建数据表
    -- 创建语句说明
    CREATE TABLE `数据表名称`  (
        `字段名称` 字段类型 [是否为NULL] [默认值] [字段注释],
         .....
         主键信息
         索引信息
    )
    
  • 查询表结构
       DESC 数据表名;
       ```
    
  • 查询建表语句
    SHOW CREATE TABLE 数据表名;
    
  • 数据表修改
    操作类型SQL 语法示例说明
    添加字段ALTER TABLE table_name ADD COLUMN column_name column_type;添加新字段到表中
    修改字段类型ALTER TABLE table_name MODIFY COLUMN column_name new_data_type;更改字段的数据类型
    修改字段名ALTER TABLE table_name CHANGE COLUMN old_name new_name new_data_type;修改字段的名称和类型
    删除字段ALTER TABLE table_name DROP COLUMN column_name;删除表中的某个字段
    添加外键ALTER TABLE table_name ADD CONSTRAINT fk_name FOREIGN KEY (column_name) REFERENCES other_table(id);添加外键约束
    删除外键ALTER TABLE table_name DROP FOREIGN KEY fk_name;删除外键约束
    添加索引ALTER TABLE table_name ADD INDEX index_name (column_name);在指定字段上创建索引
    删除索引ALTER TABLE table_name DROP INDEX index_name;删除已存在的索引
    修改表名ALTER TABLE old_table_name RENAME TO new_table_name;修改表的名称
    修改存储引擎ALTER TABLE table_name ENGINE = InnoDB;更改表的存储引擎,如 InnoDB 或 MyISAM
  • 数据表清空
    TRUNCATE TABLE 数据表名称;
    
  • 数据表删除
    DROP TABLE [IF EXISTS] 数据表名称;
    

实操案例

  • 新建company(公司)数据库

    -- 获取所有数据库
    SHOW DATABASES;
    -- 创建company数据库
    CREATE DATABASE IF NOT EXISTS company DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_bin;
    

    02_1_创建company数据库.png

  • 切换company,创建workers(职工)表

    • 分析职工表的字段设计

      字段名称字段描述类型是否允许为空值默认值主键索引
      id员工idint自增主键
      name员工姓名VARCHAR(255)
      gender员工性别CHAR(1)
      id_card员工身份证号VARCHAR(18)唯一索引
      hire_date入职日期DATETIME
    • 创建职工表

      -- 切换到company数据库中
      USE company;
      -- 执行建表语句
      DROP TABLE IF EXISTS `workers`;
      CREATE TABLE `workers`  (
      `id` int NOT NULL COMMENT '员工id',
      `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '1' COMMENT '员工姓名',
      `gender` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '员工性别',
      `id_card` varchar(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '身份证编号',
      `hire_date` datetime NOT NULL COMMENT '入职日期',
      PRIMARY KEY (`id`, `name`) USING BTREE,
      UNIQUE INDEX `card`(`id_card` ASC) USING BTREE
      ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '职工信息表' ROW_FORMAT = Dynamic;
      

      02_2_创建职工表.png

  • 数据表查询

    -- 获取数据库下所有的数据表
    SHOW TABLES;
    -- 查询职工表结构
    DESC workers;
    -- 查询职工表建表语句
    SHOW CREATE TABLE workers;
    

    02_3_1_职工表信息查询.png

    02_3_2_职工表信息查询.png

  • 修改职工表

    • 修改分析

      1. 将入职日期字段hire_date名称修改为employment_date,并将datetime类型,修改为date类型
      2. 新增一个phone(联系方式)字段,设置为VARCHAR(11)
    • 修改职工表

      ALTER TABLE workers
      CHANGE COLUMN hire_date employment_date DATE NOT NULL,
      ADD COLUMN phone VARCHAR(11) NOT NULL COMMENT '联系方式';
      

      02_4_修改职工表.png

  • 查询职工表信息

            ```SQL
            -- 查询职工表结构
            DESC workers;
            -- 查询职工表建表语句
            SHOW CREATE TABLE workers;
            ```
    
    

    02_5_查询职工表.png

  • 删除职工表
    • 清空职工表中数据

      TRUNCATE TABLE workers;
      
    • 删除职工表

      DROP TABLE IF EXISTS workers;
      
    • 截图

      02_6_删除职工表.png

  • 注意事项
    1. DROP TABLE 不可撤销,务必备份数据
    2. 先检查外键约束、视图依赖,必要时先删除外键或视图。
    3. 使用 DROP TABLE IF EXISTS 避免表不存在的错误。
    4. 如果只是清空数据,使用 TRUNCATE TABLE 更高效。
    5. 删除操作慎重,避免误删生产环境的数据