MySQL 创建表(图文教程)
一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 - 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/
截止目前, 星球 内专栏累计输出 66w+ 字,讲解图 2896+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2300+ 小伙伴加入学习 ,欢迎点击围观
在 MySQL 中,创建表是数据库设计的重要步骤。表是数据存储的基本单位,它由列和行组成,每个列具有指定的数据类型。创建表时,我们需要定义表的名称、列的名称、数据类型以及其他约束条件,以确保数据的完整性和一致性。
创建表的基本语法
使用 CREATE TABLE
语句可以在数据库中创建新表。基本的语法格式如下:
CREATE TABLE 表名 (
列名1 数据类型 [约束条件],
列名2 数据类型 [约束条件],
...
);
示例
假设我们要创建一个员工表 t_employee
,包含以下信息:
employee_id
:员工编号,整数类型,作为主键,自动增长name
:员工姓名,字符串类型position
:员工职位,字符串类型salary
:员工薪资,浮点类型,不能为负数
具体的 SQL 语句如下:
CREATE TABLE t_employee (
employee_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
position VARCHAR(50) DEFAULT '',
salary DECIMAL(10, 2) CHECK (salary >= 0)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
在这个例子中,我们定义了四个列,并使用了一些常见的约束与表属性,解释如下:
字段定义:
PRIMARY KEY
: 将该字段设为主键,确保每行记录的employee_id
唯一;
AUTO_INCREMENT
:自动递增,每次插入新记录时employee_id
值自动加 1;
NOT NULL
:表示该字段不能为空,要求每个员工都必须有姓名;
DEFAULT ''
:为该字段设置了默认值为空字符串 (''
),表示如果插入记录时未指定该字段,默认值将为空字符串;
CHECK (salary >= 0)
:约束条件,确保薪资为非负数,防止负薪资的插入;表属性:
ENGINE=InnoDB
:指定存储引擎为InnoDB
,支持事务、行级锁和外键约束,适合处理高并发的事务场景;DEFAULT CHARSET=utf8mb4
:设置字符集为utf8mb4
,支持 UTF-8 编码并允许存储 4 字节字符(如 emoji 表情);COLLATE=utf8mb4_unicode_ci
:指定排序规则为不区分大小写的 Unicode 排序,用于排序和比较字符数据;
打开命令行,执行以上建表语句,如下:
数据类型
在创建表时,数据类型的选择非常重要。常用的数据类型可翻阅《MySQL 数据类型》 小节。
常见约束
约束用于保证数据的完整性和一致性。常见的约束包括:
- PRIMARY KEY:定义主键,确保列值唯一,且不为空;
- AUTO_INCREMENT:自动增长,通常用于主键;
- NOT NULL:不允许为空;
- UNIQUE:值唯一,不允许重复;
- CHECK:添加条件约束;
- DEFAULT:设置默认值;
查看表结构
可以使用 DESCRIBE
命令查看表的结构,包括列名称、数据类型和约束条件:
DESCRIBE t_employee;
或者使用 SHOW CREATE TABLE
来查看完整的建表语句:
SHOW CREATE TABLE t_employee;
小结
创建表是 MySQL 中进行数据管理的第一步。通过定义列的数据类型和约束,可以确保数据的完整性。理解 CREATE TABLE
语句的基本语法、数据类型选择、常用约束,有助于你设计合理的数据库表结构,为后续的数据存储和查询打下良好的基础。