菜鸟科技网

命令行如何创建表?

在数据库管理中,使用命令行创建表是一项基础且重要的技能,尤其对于需要自动化操作或远程管理数据库的场景,下面将详细介绍如何在不同主流数据库系统中(如MySQL、PostgreSQL、SQLite)通过命令行创建表,包括语法结构、参数说明及实例演示。

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

MySQL命令行创建表

在MySQL中,创建表主要使用CREATE TABLE语句,基本语法如下:

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

参数说明

  • 列名:表的字段名称,需符合MySQL标识符规范。
  • 数据类型:如INT(整数)、VARCHAR(n)(可变长度字符串)、DATETIME(日期时间)等。
  • 约束条件:包括PRIMARY KEY(主键)、NOT NULL(非空)、UNIQUE(唯一)、DEFAULT(默认值)等。
  • 表选项:如ENGINE=InnoDB(存储引擎)、CHARSET=utf8mb4(字符集)等。

实例:创建一个用户表users,包含ID(主键)、用户名(唯一)、邮箱、注册时间字段:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

操作步骤

命令行如何创建表?-图2
(图片来源网络,侵删)
  1. 登录MySQL命令行:mysql -u 用户名 -p(输入密码后进入)。
  2. 选择数据库:USE 数据库名;(若未创建需先执行CREATE DATABASE 数据库名;)。
  3. 执行上述CREATE TABLE语句。

PostgreSQL命令行创建表

PostgreSQL的CREATE TABLE语法与MySQL类似,但支持更复杂的数据类型(如SERIAL自增类型)和约束。
基本语法

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

实例:创建订单表orders,包含订单ID(自增主键)、用户ID(外键关联)、订单金额、创建时间:

CREATE TABLE orders (
    order_id SERIAL PRIMARY KEY,
    user_id INT NOT NULL REFERENCES users(id),  -- 外键约束,关联users表的id字段
    amount DECIMAL(10,2) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

操作步骤

  1. 登录PostgreSQL命令行:psql -U 用户名 -d 数据库名
  2. 直接执行CREATE TABLE语句(PostgreSQL中无需USE命令,直接在目标数据库中操作)。

SQLite命令行创建表

SQLite作为轻量级嵌入式数据库,语法更为简洁,支持AUTOINCREMENT自增。
基本语法

命令行如何创建表?-图3
(图片来源网络,侵删)
CREATE TABLE 表名 (
    列名1 数据类型 PRIMARY KEY AUTOINCREMENT,
    列名2 数据类型 NOT NULL,
    ...
);

实例:创建商品表products,包含商品ID、名称、价格、库存:

CREATE TABLE products (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    price REAL NOT NULL CHECK(price > 0),  -- 检查约束,价格需大于0
    stock INTEGER DEFAULT 0
);

操作步骤

  1. 打开SQLite数据库文件:sqlite3 数据库名.db(若文件不存在会自动创建)。
  2. 执行CREATE TABLE语句。

命令行创建表的通用注意事项

  1. 数据类型选择:根据业务需求选择合适的数据类型(如存储金额用DECIMAL而非FLOAT避免精度问题)。
  2. 约束设计:合理使用主键、外键、非空等约束,确保数据完整性。
  3. 字符集与排序规则:涉及多语言时需指定字符集(如utf8mb4),避免乱码。
  4. 注释添加:可通过COMMENT字段添加列注释(MySQL/PostgreSQL支持),提升可读性。
  5. SQL脚本批量执行:可将建表语句保存为.sql文件,通过命令行mysql -u 用户名 -p 数据库名 < 文件名.sql批量执行。

不同数据库建表语法对比

功能 MySQL PostgreSQL SQLite
自增主键 INT AUTO_INCREMENT SERIALINT GENERATED INTEGER PRIMARY KEY AUTOINCREMENT
外键约束 REFERENCES 表名(列名) REFERENCES 表名(列名) 不支持(需触发器模拟)
默认值 DEFAULT 值 DEFAULT 值 DEFAULT 值
字符集 CHARSET=utf8mb4 ENCODING='UTF8' 无需指定(UTF-8默认)

相关问答FAQs

Q1:如何在命令行中查看已创建的表结构?
A1:不同数据库查看表结构的命令不同:

  • MySQL:DESC 表名;SHOW CREATE TABLE 表名;(显示详细建表语句)。
  • PostgreSQL:\d 表名(显示字段、类型、约束等信息)。
  • SQLite:.schema 表名(显示建表SQL语句)。

Q2:创建表时如何修改默认的存储引擎或字符集?
A2

  • MySQL:在CREATE TABLE语句末尾添加表选项,如ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  • PostgreSQL:通过ALTER TABLE修改,如ALTER TABLE 表名 SET TABLESPACE 表空间名;(字符集需在数据库集群配置中设置)。
  • SQLite:无需指定存储引擎,字符集默认为UTF-8,但可通过PRAGMA encoding查询或修改数据库编码。
    你可以熟练掌握在命令行中创建表的方法,并根据实际数据库类型调整语法细节,确保表结构符合业务需求。
分享:
扫描分享到社交APP
上一篇
下一篇