如何在 MySQL 中创建数据库(创建 MySQL 表)
如何在 MySQL 中创建数据库
两种创建数据库的方法
1) 执行简单的 SQL 查询
2) 使用 MySQL Workbench 的正向工程
作为一名 SQL 初学者,我们先来看查询方法。
如何在 MySQL 中创建数据库
以下是在 MySQL 中创建数据库的方法
CREATE DATABASE 是用于在 MySQL 中创建数据库的 SQL 命令。
假设您需要创建一个名为“movies”的数据库。您可以通过执行以下 SQL 命令在 MySQL 中创建数据库。
CREATE DATABASE movies;
注意:您也可以使用 CREATE SCHEMA 命令代替 CREATE DATABASE。
现在,让我们添加更多参数和规范来改进我们的 SQL 查询。
IF NOT EXISTS
一个 MySQL 服务器可以有多个数据库。如果您不是唯一访问同一 MySQL 服务器的人,或者您需要处理多个数据库,那么尝试创建一个与现有数据库名称相同的数据库的可能性就存在。IF NOT EXISTS 允许您指示 MySQL 服务器在创建数据库之前检查是否存在具有相似名称的数据库。
当使用 IF NOT EXISTS 时,只有在给定名称不与现有数据库名称冲突时,才会创建数据库。如果不使用 IF NOT EXISTS,MySQL 将会抛出错误。
CREATE DATABASE IF NOT EXISTS movies;
排序规则和字符集
排序规则是用于比较的规则集。许多人使用 MySQL 来存储英语以外的数据。数据以特定的字符集形式存储在 MySQL 中。字符集可以在不同级别定义,即服务器、数据库、表和列。
您需要选择排序规则,而排序规则又取决于所选的字符集。
例如,Latin1 字符集使用 latin1_swedish_ci
排序规则,这是瑞典语不区分大小写的排序。
CREATE DATABASE IF NOT EXISTS movies CHARACTER SET latin1 COLLATE latin1_swedish_ci
在使用阿拉伯语、中文等本地语言时的最佳实践是选择具有多种排序规则的 Unicode (utf-8) 字符集,或者只坚持默认排序规则 utf8-general-ci。
您可以在 此处找到所有排序规则和字符集的列表。
您可以通过运行以下 SQL 命令查看现有数据库的列表。
SHOW DATABASES
如何在 MySQL 中创建表
CREATE TABLE 命令用于在数据库中创建表。
可以使用 CREATE TABLE 语句创建表,其语法如下。
CREATE TABLE [IF NOT EXISTS] `TableName` (`fieldname` dataType [optional parameters]) ENGINE = storage Engine;
HERE
- “CREATE TABLE”负责在数据库中创建表。
- “[IF NOT EXISTS]”是可选的,仅在未找到匹配的表名时创建表。
- “`fieldName`”是字段的名称,“data Type”定义了要存储在字段中的数据性质。
- “[optional parameters]” 是字段的附加信息,例如“AUTO_INCREMENT”、“NOT NULL”等。
MySQL 创建表示例
下面是一个在数据库中创建表的 MySQL 示例。
CREATE TABLE IF NOT EXISTS `MyFlixDB`.`Members` ( `membership_number` INT AUTOINCREMENT , `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 的数据类型。您可以根据需要使用它们。在创建数据库时,您应该始终尽量不要低估或高估数据的潜在范围。
数据类型
数据类型定义了可以在表的特定列中存储的数据性质。
MySQL 主要有 3 类数据类型,即
- 数值,
- 文本
- 日期/时间。
数值数据类型
数值数据类型用于存储数值。确保数据的范围在数值数据类型的上下边界之间非常重要。
TINYINT( ) | -128 到 127(普通) 0 到 255(无符号)。 |
SMALLINT( ) | -32768 到 32767(普通) 0 到 65535(无符号)。 |
MEDIUMINT( ) | -8388608 到 8388607(普通) 0 到 16777215(无符号)。 |
INT( ) | -2147483648 到 2147483647(普通) 0 到 4294967295(无符号)。 |
BIGINT( ) | -9223372036854775808 到 9223372036854775807(普通) 0 到 18446744073709551615(无符号)。 |
FLOAT | 具有浮点小数点的较小的近似数字。 |
DOUBLE( , ) | 具有浮点小数点的较大数字。 |
DECIMAL( , ) | 存储为字符串的 DOUBLE,允许固定小数点。用于存储货币值的选择。 |
文本数据类型
顾名思义,这些数据类型用于存储文本值。请务必确保您的文本数据的长度不超过最大长度。
CHAR( ) | 长度从 0 到 255 个字符的固定部分。 |
VARCHAR( ) | 长度从 0 到 255 个字符的可变部分。 |
TINYTEXT | 最大长度为 255 个字符的字符串。 |
TEXT | 最大长度为 65535 个字符的字符串。 |
BLOB | 最大长度为 65535 个字符的字符串。 |
MEDIUMTEXT | 最大长度为 16777215 个字符的字符串。 |
MEDIUMBLOB | 最大长度为 16777215 个字符的字符串。 |
LONGTEXT | 最大长度为 4294967295 个字符的字符串。 |
LONGBLOB | 最大长度为 4294967295 个字符的字符串。 |
日期/时间
DATE | YYYY-MM-DD |
DATETIME | YYYY-MM-DD HH:MM:SS |
TIMESTAMP | YYYYMMDDHHMMSS |
TIME | HH:MM:SS |
除了以上之外,MySQL 还有其他一些数据类型。
ENUM | 用于存储从预定义文本值列表中选择的文本值。 |
SET | 也用于从预定义文本值列表中存储文本值。它可以包含多个值。 |
BOOL | TINYINT(1) 的同义词,用于存储布尔值。 |
BINARY | 类似于 CHAR,区别在于文本以二进制格式存储。 |
VARBINARY | 类似于 VARCHAR,区别在于文本以二进制格式存储。 |
现在,让我们看看一个包含所有数据类型数据的创建表的查询。请仔细研究它,并确定在下面的创建表 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 ;
最佳实践
- 对 SQL 关键字使用大写字母,例如“DROP SCHEMA IF EXISTS `MyFlixDB`;”
- 在所有 SQL 命令后使用分号。
- 避免在模式、表和字段名称中使用空格。请改用下划线来分隔模式、表或字段名称。
如何创建 MySQL workbench ER 图正向工程
MySQL workbench 提供了支持正向工程的实用程序。正向工程是一个技术术语,用于描述将逻辑模型自动转换为物理实现的过程。
我们在 ER 图教程中创建了一个 ER 图。现在我们将使用该 ER 模型来生成创建数据库的 SQL 脚本。
从 MyFlix ER 模型创建 MyFlix 数据库
步骤 1) 打开 MyFlix 数据库的 ER 模型
打开您在之前的教程中创建的 MyFlix 数据库的 ER 模型。
步骤 2) 选择正向工程
点击数据库菜单。选择正向工程。
步骤 3) 连接选项
下一个窗口允许您连接到 MySQL 服务器实例。点击存储的连接下拉列表并选择 localhost。点击执行。
步骤 4) 选择以下选项
在出现的向导中选择以下选项。点击下一步。
步骤 5) 保持默认选择并点击下一步
下一个屏幕显示了我们 EER 图中对象的摘要。我们的 MyFlix DB 有 5 个表。保持默认选择并点击下一步。
步骤 6) 审查 SQL 脚本
出现下图所示窗口。此窗口允许您预览创建数据库的 SQL 脚本。我们可以将脚本保存到“*.sql”文件中,或将脚本复制到剪贴板。点击下一步按钮。
步骤 7) 提交进度
成功在选定的 MySQL 服务器实例上创建数据库后,将出现下图所示窗口。
- 创建数据库涉及将逻辑数据库设计模型转换为物理数据库。
- MySQL 支持多种用于数值、日期和字符串值的。数据类型。
- CREATE DATABASE 命令用于创建数据库。
- CREATE TABLE 命令用于在数据库中创建表。
- MySQL workbench 支持正向工程,它涉及从逻辑数据库模型自动生成 SQL 脚本,这些脚本可以执行以创建物理数据库。
已附上包含虚拟数据的数据库。我们将在所有后续教程中使用此数据库。只需将数据库导入 MySQL Workbench 即可开始。