如何在 MySQL (创造 MySQL 表格)

⚡ 智能摘要

在中创建数据库 MySQL 遵循两条已验证的路径:执行 CREATE DATABASE 语句,或通过 ER 模型生成物理模式。 MySQL 工作台正向工程。两种方法都能生成完全相同的、可用于生产的工作台。

  • 🗄️ 数据库创建: 运行 CREATE DATABASE movies;或 CREATE SCHEMA,哪个 MySQL 视为同义词。
  • 🛡️ 安全重播: 添加 IF NOT EXISTS,以便重复脚本跳过创建过程,而不是引发重复名称错误。
  • 🌐 字符集: 对于多语言数据,请选择 utf8mb4 和 utf8mb4_0900_ai_ci;对于仅包含英语的传统模式,请选择 latin1 和 latin1_swedish_ci。
  • 🧱 创建表格: CREATE TABLE 定义了每个字段名称、数据类型、主键和存储引擎(通常是 InnoDB)。
  • 🔢 资料类型: 列类型分为数值型、文本型、日期或时间型,以及枚举型、集合型、布尔型和二进制型。
  • ⚙️ 正向工程: MySQL Workbench 将已批准的 ER 模型转换为可执行的 SQL 脚本,并将其提交到实时服务器。

创建数据库的步骤 MySQL

数据库中 MySQL 是一个用于存放表、视图及相关对象的命名容器。您可以通过两种方式创建它:

1)通过执行简单的 SQL 查询

2)通过使用正向工程 MySQL 工作台

As SQL 初学者,我们先来了解一下查询方法。

如何在 MySQL

以下是在 MySQL:

CREATE DATABASE 是用于在 MySQL.

假设你需要创建一个名为“movies”的数据库。你可以在以下情况下创建数据库: MySQL 通过执行以下 SQL 命令。

CREATE DATABASE movies;

注意:您也可以使用 CREATE SCHEMA 命令代替 CREATE DATABASE 命令。

这条语句只能执行一次。再次运行会报错,所以我们需要添加更多参数来改进查询。

如果不存在

一个单一的 MySQL 服务器可以托管多个数据库。当多人共享同一台服务器时,您可能会尝试创建一个与现有数据库同名的数据库。

如果不存在 指示 MySQL 服务器会在创建数据库之前检查是否存在同名数据库。只有当数据库名称未被占用时才会创建该数据库;如果没有此子句, MySQL 引发错误。

CREATE DATABASE IF NOT EXISTS movies;

数据库名称确定安全后,下一步该如何决定呢? MySQL 应该存储并比较其中的文本。

排序规则和字符集

A 字符集 决定列可以存储哪些字符,而 整理比较中使用的规则 以及排序。两者都可以从四个层面进行定义:服务器、数据库、表和列。

你选择的排序规则取决于字符集。例如,latin1 字符集使用…… latin1_swedish_ci 排序规则,即瑞典式不区分大小写的排序规则。

CREATE DATABASE IF NOT EXISTS movies CHARACTER SET latin1 COLLATE latin1_swedish_ci;

对于阿拉伯语或中文等本地语言,请选择 Unicode 编码。 utf8mb4 字符集,其中存储了所有Unicode字符,包括表情符号。 MySQL utf8mb4 是默认字符集, utf8mb4_0900_ai_ci 默认排序规则。

CREATE DATABASE IF NOT EXISTS movies CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

您可以找到所有排序规则和字符集的列表 开始.

运行以下 SQL 命令即可查看现有数据库列表。

SHOW DATABASES;

数据库就绪后,现在可以添加实际用于保存记录的表了。

如何在 MySQL

CREATE TABLE 命令用于在数据库中创建表。

在中创建表 MySQL

如图所示,每个表都属于一个数据库。表是用以下方式创建的: 创建表 语句,其语法如下。

CREATE TABLE [IF NOT EXISTS] `TableName` (`fieldname` dataType [optional parameters]) ENGINE = storage Engine;

点击这里

  • “CREATE TABLE”命令负责在数据库中创建表。
  • “[IF NOT EXISTS]”是可选的,仅当找不到匹配的表名时才创建表。
  • “`fieldName`”是字段的名称,“data Type”定义了存储在其中的数据的性质。
  • “[可选参数]”是关于字段的额外信息,例如“AUTO_INCREMENT”或“NOT NULL”。
  • “存储引擎”管理表,通常是 InnoDB,它支持事务和外键。

MySQL 创建表示例

下面是一个 MySQL 在数据库中创建表的示例:

CREATE TABLE IF NOT EXISTS `MyFlixDB`.`Members` (
  `membership_number` INT AUTO_INCREMENT ,
  `full_names` VARCHAR(150) NOT NULL ,
  `gender` VARCHAR(6) ,
  `date_of_birth` DATE ,
  `physical_address` VARCHAR(255) ,
  `postal_address` VARCHAR(255) ,
  `contact_number` VARCHAR(75) ,
  `email` VARCHAR(255) ,
  PRIMARY KEY (`membership_number`) )
ENGINE = InnoDB;

注意: 正确的 MySQL 关键字是 AUTO_INCREMENT 带下划线。 AUTOINCREMENT 属于 SQLite 并引发语法错误 MySQL.

每一列都包含一个数据类型,因此请谨慎选择:既不要低估也不要高估您预期的数据范围。

MySQL 数据类型

数据类型定义了可以存储在表的特定列中的数据的性质。

MySQL 具有 3 主要数据类型类别,即:

  1. 数字
  2. 文本
  3. 约会时间

数值数据类型

数值数据类型用于存储数值。务必确保数据范围在所选数值数据类型的下限和上限之间。

TINYINT( ) -128 至 127 正常
0 至 255 无符号。
SMALLINT( ) -32768 至 32767 正常
0 至 65535 无符号。
中整数( ) -8388608 至 8388607 正常
0 至 16777215 无符号。
INT( ) -2147483648 至 2147483647 正常
0 至 4294967295 无符号。
BIGINT( ) -9223372036854775808 至 9223372036854775807 正常
0 至 18446744073709551615 无符号。
FLOAT 带有浮动小数点的小近似数。
双倍的( , ) 具有浮动小数点的大数。
DECIMAL( , ) 将 DOUBLE 类型存储为字符串,允许使用固定的小数点。是存储货币值的理想选择。

文本数据类型

顾名思义,这种数据类型用于存储文本值。请务必确保文本数据的长度不超过该列的最大长度限制。

CHAR( ) 长度为 0 至 255 个字符的固定部分。
VARCHAR( ) 长度从 0 到 255 个字符的可变部分。
小文本 最大长度为 255 个字符的字符串。
文字 最大长度为 65535 个字符的字符串。
BLOB 最大长度为 65535 个字符的字符串。
中文本 最大长度为 16777215 个字符的字符串。
中等斑点 最大长度为 16777215 个字符的字符串。
长文 最大长度为 4294967295 个字符的字符串。
长斑 最大长度为 4294967295 个字符的字符串。

日期和时间数据类型

日期和时间数据类型以固定格式存储日历和时钟值,从而保证排序和比较的可靠性。

日期 YYYY-MM-DD
日期时间 YYYY-MM-DD HH:MM:SS
TIMESTAMP YYYYMMDDHHMMSS
时间 时:分:秒

其他数据类型

除了上述数​​据类型之外,还有一些其他数据类型。 MySQL.

枚举 存储从预定义文本值列表中选择的文本值
设置 这也用于存储从预定义文本值列表中选择的文本值。它可以有多个值。
BOOL TINYINT(1) 的同义词,用于存储布尔值
BINARY 与 CHAR 类似;区别在于文本以二进制格式存储。
变量 与 VARCHAR 类似;区别在于文本以二进制格式存储。

现在我们来看一个创建表的查询语句,该语句使用了所有数据类型。请仔细研究并找出以下 CREATE TABLE 语句中每种数据类型的定义方式。 MySQL 例。

CREATE TABLE `all_data_types` (
    `varchar` VARCHAR( 20 )  ,
    `tinyint` TINYINT  ,
    `text` TEXT  ,
    `date` DATE  ,
    `smallint` SMALLINT  ,
    `mediumint` MEDIUMINT  ,
    `int` INT  ,
    `bigint` BIGINT  ,
    `float` FLOAT( 10, 2 )  ,
    `double` DOUBLE  ,
    `decimal` DECIMAL( 10, 2 )  ,
    `datetime` DATETIME  ,
    `timestamp` TIMESTAMP  ,
    `time` TIME  ,
    `year` YEAR  ,
    `char` CHAR( 10 )  ,
    `tinyblob` TINYBLOB  ,
    `tinytext` TINYTEXT  ,
    `blob` BLOB  ,
    `mediumblob` MEDIUMBLOB  ,
    `mediumtext` MEDIUMTEXT  ,
    `longblob` LONGBLOB  ,
    `longtext` LONGTEXT  ,
    `enum` ENUM( '1', '2', '3' )  ,
    `set` SET( '1', '2', '3' )  ,
    `bool` BOOL  ,
    `binary` BINARY( 20 )  ,
    `varbinary` VARBINARY( 20 )
) ENGINE = MYISAM;

创建 MySQL 数据库

遵循一些约定俗成的规则可以使你的脚本更易读:

  • SQL关键字请使用大写字母,例如“DROP SCHEMA IF EXISTS `MyFlixDB`;”
  • 所有 SQL 命令都应以分号结尾。
  • 避免在模式、表和字段名称中使用空格。请使用下划线来分隔模式、表或字段名称。
  • 对于新建表,建议优先选择 InnoDB 而不是 MyISAM,因为 InnoDB 支持事务、行级锁定和外键。

查询方法已完成。第二条路径通过可视化模型而非手写 SQL 代码访问同一个数据库。

如何创建 MySQL 工作台ER图正向工程

MySQL 工作台 具有支持正向工程的实用程序。 正向工程 是描述该过程的技术术语 自动将逻辑模型转换为物理实现。.

我们创建了一个 ER 图 的内容,请阅读我们的 ER 建模 本课。现在我们将使用该ER模型生成创建数据库的SQL脚本。

从 MyFlix ER 模型创建 MyFlix 数据库

步骤 1)打开 MyFlix 数据库的 ER 模型 你之前创建的。

步骤2)选择正向工程

点击数据库菜单,然后选择“正向工程”。

选择正向工程 MySQL 工作台

步骤 3)连接选项

下一个窗口允许您连接到实例 MySQL 服务器。单击已存储连接下拉列表,然后选择本地主机。单击“执行”。

正向工程向导中的连接选项

步骤 4)选择以下选项

在出现的向导中选择以下选项。单击“下一步”。

MyFlix数据库的前向工程选项

步骤 5)保持默认选择,然后单击“下一步”。

下一个屏幕显示了 EER 图中对象的摘要。我们的 MyFlix 数据库包含 5 个表。保持默认选择,然后单击“下一步”。

MyFlix EER 图中的对象概述

步骤6) Rev查看 SQL 脚本

下面的窗口预览了用于创建数据库的 SQL 脚本。将脚本保存到 *.sql 文件或复制到剪贴板,然后单击“下一步”。

生成的 SQL 脚本预览

步骤 7)提交进度

在选定的数据库上创建数据库后,将显示以下窗口。 MySQL 服务器实例。ER模型中的表现在已实际存在于服务器上。

正向工程提交进度窗口

数据库及示例数据已附上。我们将在后续课程中使用此数据库。只需将其导入即可。 MySQL 开始工作台。

单击此处下载 MyFlixDB

常见问题

没有区别 MySQLCREATE SCHEMA 是 CREATE DATABASE 的别名,两者都创建同一个对象。在其他系统中,例如: Oracle模式和数据库仍然是两个不同的概念。

运行 DROP DATABASE IF EXISTS movies;从客户端或从 MySQL 工作台该命令会永久删除数据库及其中的所有表,因此请先进行备份。

该账户需要全局级别的 CREATE 权限。管理员可以使用 `GRANT CREATE ON *.* TO 'user'@'localhost';` 命令授予该权限。如果没有此权限,服务器将返回访问被拒绝的错误。

是的。AI 助手可以将您对实体的简单描述转换为包含键和数据类型的 CREATE TABLE 脚本。在生产服务器上运行脚本之前,务必检查生成的类型、长度和约束条件。

现代数据库客户端中的人工智能功能会读取您的数据。 ER 图 或者查询历史记录并提出规范化修复建议、索引候选方案和数据类型更正建议。这些建议可以加快设计评审速度,但最终仍需人工审核每一项更改。

总结一下这篇文章: