创建第一个数据库和表

这一节创建教程数据库,并完成第一张用户表。

一、创建数据库

连接 MySQL 后执行:

CREATE DATABASE mysql_tutorial
    DEFAULT CHARACTER SET utf8mb4
    DEFAULT COLLATE utf8mb4_0900_ai_ci;

含义:

部分含义
CREATE DATABASE创建数据库
mysql_tutorial数据库名字
CHARACTER SET utf8mb4使用完整 Unicode 字符集
COLLATE utf8mb4_0900_ai_ci使用 MySQL 8 常见排序规则

如果当前环境不支持 utf8mb4_0900_ai_ci,可以改成:

CREATE DATABASE mysql_tutorial
    DEFAULT CHARACTER SET utf8mb4
    DEFAULT COLLATE utf8mb4_unicode_ci;

二、查看数据库

SHOW DATABASES;

如果能看到 mysql_tutorial,说明创建成功。

三、选择数据库

USE mysql_tutorial;

后面的建表、插入、查询都会在这个数据库里执行。

查看当前正在使用哪个数据库:

SELECT DATABASE();

四、创建用户表

CREATE TABLE users (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    age TINYINT UNSIGNED NULL,
    status ENUM('active', 'disabled') NOT NULL DEFAULT 'active',
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

这是我们创建的第一张表。

字段说明:

字段含义
id用户 ID,主键,自增
username用户名,不能为空
email邮箱,不能为空,不能重复
age年龄,可以为空
status状态,只能是 activedisabled
created_at创建时间,默认当前时间

五、查看表

查看当前数据库里的表:

SHOW TABLES;

查看表结构:

DESC users;

也可以查看完整建表语句:

SHOW CREATE TABLE users;

SHOW CREATE TABLE 对排查字符集、索引、约束很有用。

六、插入第一条数据

INSERT INTO users (username, email, age)
VALUES ('tom', 'tom@example.com', 18);

这里没有手动写 idcreated_at

  • id 会自动递增。
  • created_at 会自动使用当前时间。

再插入一条:

INSERT INTO users (username, email, age)
VALUES ('jack', 'jack@example.com', 20);

七、查询数据

SELECT id, username, email, age, status, created_at
FROM users;

结果类似:

+----+----------+------------------+------+--------+---------------------+
| id | username | email            | age  | status | created_at          |
+----+----------+------------------+------+--------+---------------------+
|  1 | tom      | tom@example.com  |   18 | active | 2026-06-07 10:00:00 |
|  2 | jack     | jack@example.com |   20 | active | 2026-06-07 10:01:00 |
+----+----------+------------------+------+--------+---------------------+

八、重复执行会报错怎么办

再次执行同样的建库语句,可能会报错:

Can't create database 'mysql_tutorial'; database exists

本地练习时可以使用:

CREATE DATABASE IF NOT EXISTS mysql_tutorial
    DEFAULT CHARACTER SET utf8mb4
    DEFAULT COLLATE utf8mb4_0900_ai_ci;

建表也可以写:

CREATE TABLE IF NOT EXISTS users (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    age TINYINT UNSIGNED NULL,
    status ENUM('active', 'disabled') NOT NULL DEFAULT 'active',
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

注意:IF NOT EXISTS 只是不报错,不会自动修改已有表结构。

九、本节完整 SQL

CREATE DATABASE IF NOT EXISTS mysql_tutorial
    DEFAULT CHARACTER SET utf8mb4
    DEFAULT COLLATE utf8mb4_0900_ai_ci;

USE mysql_tutorial;

CREATE TABLE IF NOT EXISTS users (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    age TINYINT UNSIGNED NULL,
    status ENUM('active', 'disabled') NOT NULL DEFAULT 'active',
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO users (username, email, age)
VALUES ('tom', 'tom@example.com', 18);

INSERT INTO users (username, email, age)
VALUES ('jack', 'jack@example.com', 20);

SELECT id, username, email, age, status, created_at
FROM users;