SQL 创建表 CREATE TABLE
主题
- 默认模式
- 浅蓝色模式
- 淡绿色模式
- 深夜模式
SQL 创建数据表
在上一章中,我们学习了如何在数据库服务器上创建数据库。接下来,我们将学习在数据库中创建表——这些表是实际存储数据的基本结构。数据库表通过行和列的形式将信息有序地组织起来,为数据管理提供了清晰的框架。
在 SQL 中,我们使用CREATE TABLE创建数据表。

SQL 基本语法
✅ 以下是 MySQL 数据库和 SQL Server 数据库创建数据表的语法,语句如下:
sql
复制
-- MySQL数据库的语法
CREATE TABLE users (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, -- MySQL 自增主键
username VARCHAR(50) NOT NULL,
birth_date DATE,
phone VARCHAR(15) NOT NULL UNIQUE
);
-- SQL Server数据库的语法
CREATE TABLE users (
id INT NOT NULL PRIMARY KEY IDENTITY(1,1), -- SQL Server 自增主键,从1开始、步长为1
username VARCHAR(50) NOT NULL,
birth_date DATE,
phone VARCHAR(15) NOT NULL UNIQUE
);
上述 SQL 语句由以下几个部分组成:
CREATE TABLE: 这是 SQL 的关键字,用于指示数据库系统创建一个新的数据表。users: 这是要创建的新数据表的名称。名称应具有描述性,且通常遵循一定地命名规范(如使用小写字母、下划线分隔单词等)。- 该表拥有
id,name,birth_date和phone四个字段,每个字段后都有一个数据类型声明。
SQL 数据类型
从上述代码可以看出,在创建数据表时需要为每个字段指定名称、数据类型,以及相应的长度限制(若未指定则使用默认长度)。
不同数据库系统所支持的字段数据类型可能存在差异。在定义整数字段时,MySQL 和 SQL Server 通常使用INT类型,而 Oracle 数据库则更倾向于使用NUMBER类型来存储数值数据。
1. MySQL 常用数据类型
在创建数据表时,为字段选择合适的数据类型至关重要。正确选择数据类型不仅能保证数据的准确性和完整性,还可以提高存储效率和查询性能。因此,掌握不同数据类型的特点及适用场景,是数据库设计与管理的基本技能。
✅ 下面是整理的 MySQL 数据类型参考表:
| 数据类型 | 类别 | 描述 | 存储需求/范围 |
|---|---|---|---|
| TINYINT | 整数 | 非常小的整数 | 1字节,有符号:-128~127,无符号:0~255 |
| SMALLINT | 整数 | 小整数 | 2字节,有符号:-32768~32767,无符号:0~65535 |
| MEDIUMINT | 整数 | 中等整数 | 3字节,有符号:-8388608~8388607,无符号:0~16777215 |
| INT/INTEGER | 整数 | 标准整数 | 4字节,有符号:-2147483648~2147483647,无符号:0~4294967295 |
| BIGINT | 整数 | 大整数 | 8字节,有符号:-2^63~2^63-1,无符号:0~2^64-1 |
| FLOAT | 浮点 | 单精度浮点数 | 4字节,约7位精度 |
| DOUBLE | 浮点 | 双精度浮点数 | 8字节,约15位精度 |
| DECIMAL/NUMERIC | 浮点 | 精确小数 | 变长,每4字节存9位数字,用于存储精确数值如货币 |
| CHAR | 短文本 | 定长字符串 | 0~255字符,固定长度 |
| VARCHAR | 短文本 | 变长字符串 | 0~65535字符,长度+1或+2字节前缀 |
| BINARY | 短文本 | 定长二进制字符串 | 0~255字节 |
| VARBINARY | 短文本 | 变长二进制字符串 | 0~65535字节 |
| TINYTEXT | 长文本 | 短文本字符串 | 最大长度255字符 |
| TEXT | 长文本 | 文本字符串 | 最大长度65535字符 |
| MEDIUMTEXT | 长文本 | 中等长度文本 | 最大长度16777215字符 |
| LONGTEXT | 长文本 | 长文本数据 | 最大长度4294967295字符 |
| DATE | 日期时间 | 日期值 | YYYY-MM-DD,范围'1000-01-01'~'9999-12-31' |
| TIME | 日期时间 | 时间值 | HH:MM:SS,范围'-838:59:59'~'838:59:59' |
| DATETIME | 日期时间 | 日期时间值 | YYYY-MM-DD HH:MM:SS,范围'1000-01-01 00:00:00'~'9999-12-31 23:59:59' |
| TIMESTAMP | 日期时间 | 时间戳 | YYYY-MM-DD HH:MM:SS,范围'1970-01-01 00:00:01'UTC~'2038-01-19 03:14:07'UTC |
| YEAR | 日期时间 | 年份值 | YYYY格式,1901~2155 |
| TINYBLOB | BLOB | 短二进制数据 | 最大长度255字节 |
| BLOB | BLOB | 二进制大对象 | 最大长度65535字节 |
| MEDIUMBLOB | BLOB | 中等二进制数据 | 最大长度16777215字节 |
| LONGBLOB | BLOB | 长二进制数据 | 最大长度4294967295字节 |
| ENUM | 其他 | 枚举类型 | 最多65535个值中的一个 |
| SET | 其他 | 集合类型 | 最多64个值中的零个或多个 |
| JSON | 其他 | JSON文档 | MySQL 5.7.8及以上版本支持 |
| BOOLEAN/BOOL | 其他 | 布尔值 | TINYINT(1)的别名,0为false,非0为true |
✅ 指定数据类型需要注意的事项:
- 选择数据类型时,应根据实际需求选择最合适的类型,避免过度分配存储空间。
- 数值类型可选择
UNSIGNED属性表示无符号数。 - 浮点数与
DECIMAL的选择:需要精确计算时(如货币)应使用DECIMAL。 CHAR与VARCHAR的选择:长度固定或较短且频繁更新时使用CHAR,长度变化较大时使用VARCHAR。TIMESTAMP受时区影响,而DATETIME不受时区影响。BLOB类型用于存储二进制数据,如图片、文档等。
条件创建 (IF NOT EXISTS)
在创建数据表时,若该表已存在,系统会返回错误信息并导致后续操作中止。通过使用IF NOT EXISTS子句,可以有效避免该问题,确保脚本继续顺利执行。
✅ 以下是使用条件创建 (IF NOT EXISTS)的语法,语句如下:
sql
复制
-- MySQL数据库的语法
CREATE TABLE IF NOT EXISTS users (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, -- MySQL 自增主键
username VARCHAR(50) NOT NULL,
birth_date DATE,
phone VARCHAR(15) NOT NULL UNIQUE
);
提示:如果要查看当前选定数据库内的表的列表,可以SHOW TABLES;在 MySQL 命令行上执行语句。
评论区 0
发表评论
教程介绍
SQL 是一种专门用来与数据库沟通、管理和操作关系型数据库的标准化编程语言。
6
章节
76
阅读
0
评论
反馈提交成功
感谢您的反馈,我们将尽快处理您的反馈