菜鸟科技网

MySQL命令行如何建表?

MySQL命令行建表是数据库管理中的基础操作,通过SQL语句可以直接在终端或命令提示符中完成表结构的创建,适用于自动化脚本、服务器管理等场景,以下是详细步骤和注意事项:

MySQL命令行如何建表?-图1
(图片来源网络,侵删)

需确保MySQL服务已启动,并使用具有CREATE TABLE权限的用户登录,登录命令为mysql -u 用户名 -p,输入密码后进入MySQL交互环境,在创建表前,建议先选择目标数据库,使用USE 数据库名;命令,若数据库不存在,需先通过CREATE DATABASE 数据库名;创建。

建表的核心语句是CREATE TABLE,基本语法为:

CREATE TABLE 表名 (
    列名1 数据类型 [约束条件],
    列名2 数据类型 [约束条件],
    ...
    [表级约束]
);

数据类型需根据业务需求选择,如INT(整数)、VARCHAR(可变字符串)、DATETIME(日期时间)等,约束条件包括主键(PRIMARY KEY)、非空(NOT NULL)、唯一(UNIQUE)、默认值(DEFAULT)等,表级约束通常用于定义主键或外键。

创建一个用户表(users),包含id(主键)、username(唯一且非空)、password(非空)、email(唯一)、created_time(默认当前时间),语句如下:

MySQL命令行如何建表?-图2
(图片来源网络,侵删)
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(100) UNIQUE,
    created_time DATETIME DEFAULT CURRENT_TIMESTAMP
);

这里AUTO_INCREMENT表示id自增,CURRENT_TIMESTAMP作为默认值自动填充当前时间。

若需创建带外键的表,例如订单表(orders)关联用户表的id,需使用FOREIGN KEY约束:

CREATE TABLE orders (
    order_id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    order_amount DECIMAL(10,2),
    order_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id)
);

外键确保订单表中的user_id必须存在于用户表的id列,维护数据完整性。

创建表时还可添加索引优化查询,如普通索引INDEX idx_username (username)或全文索引FULLTEXT INDEX ft_content (content),对于大型表,可使用PARTITION BY进行分区,提升查询效率。

MySQL命令行如何建表?-图3
(图片来源网络,侵删)

建表完成后,可通过SHOW TABLES;查看当前数据库中的所有表,使用DESCRIBE 表名;SHOW COLUMNS FROM 表名;查看表结构,若需修改表结构,可使用ALTER TABLE语句,如添加列ALTER TABLE users ADD COLUMN age INT;或修改列类型ALTER TABLE users MODIFY COLUMN email VARCHAR(150);

注意事项包括:避免使用保留字作为列名或表名,必要时用反引号(`)包裹;数据类型选择需权衡存储空间和性能,如用CHAR(36)存储UUID而非VARCHAR;字符集推荐使用utf8mb4,支持emoji表情;存储引擎根据需求选择,InnoDB支持事务和外键,MyISAM适合读密集型场景。

以下为常见数据类型和约束的简要对比:

类型/约束 说明 示例
INT 整数,可选长度和符号 age INT(3) UNSIGNED
VARCHAR(n) 可变长度字符串,n为最大字符数 username VARCHAR(50)
DATETIME 日期时间,格式'YYYY-MM-DD HH:MM:SS' created_time DATETIME
PRIMARY KEY 主键,唯一且非空 id INT PRIMARY KEY
AUTO_INCREMENT 自增,需配合整数类型主键 id INT AUTO_INCREMENT
FOREIGN KEY 外键,关联其他表的主键 FOREIGN KEY (user_id) REFERENCES users(id)

相关问答FAQs

  1. Q:如何在MySQL命令行中创建带注释的表或列?
    A:使用COMMENT关键字添加注释,可在列定义或表定义后添加。

    CREATE TABLE products (
        id INT AUTO_INCREMENT PRIMARY KEY COMMENT '产品ID',
        name VARCHAR(100) NOT NULL COMMENT '产品名称',
        description TEXT COMMENT '产品描述'
    ) COMMENT '产品信息表';
  2. Q:创建表时如何指定字符集和存储引擎?
    A:在CREATE TABLE语句末尾添加ENGINECHARSET选项。

    CREATE TABLE logs (
        log_id INT AUTO_INCREMENT,
        log_content TEXT,
        log_time DATETIME
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

    其中ENGINE=InnoDB指定存储引擎为InnoDB,CHARSET=utf8mb4设置字符集为utf8mb4,COLLATE指定排序规则。

分享:
扫描分享到社交APP
上一篇
下一篇