如何在Ubuntu云服务器上的MySQL和MariaDB中创建表

来自菜鸟教程
跳转至:导航、​搜索


状态: 已弃用

本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:

原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.

请参阅:
本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。


什么是 MySQL 和 MariaDB

MySQL 和 MariaDB 是两个使用 SQL 语言的流行数据库系统。 Ubuntu 上的许多应用程序使用 MySQL 或 MariaDB 来管理它们的信息。

在本文中,我们将讨论如何在 MySQL 或 MariaDB 界面中创建表。 我们将在 Ubuntu 12.04 VPS 服务器上执行这些任务,但大多数命令对于任何 Ubuntu 机器都应该是相同的。

如何在 Ubuntu 上安装 MySQL 和 MariaDB

MySQL 和 MariaDB 具有相同的命令语法,因此任一数据库系统都适用于本指南。

要在 Ubuntu 上安装 MySQL,请使用以下命令:

sudo apt-get install mysql-server

要在 Ubuntu 12.04 上安装 MariaDB,请在终端中输入以下内容:

sudo apt-get update
sudo apt-get install python-software-properties
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
sudo add-apt-repository 'deb http://repo.maxindo.net.id/mariadb/repo/5.5/ubuntu precise main'
sudo apt-get update
sudo apt-get install mariadb-server

有关 如何在 Ubuntu 上安装 MySQL 的更多信息,请遵循本指南。

在 MySQL 和 MariaDB 中创建数据库

在我们查看表之前,我们需要在 MySQL 中配置一个初始数据库环境。

使用以下命令登录 MySQL 或 MariaDB:

mysql -u root -p

输入您在安装过程中设置的密码以继续。

我们将创建一个名为“playground”的数据库来学习。 使用以下命令创建数据库:

CREATE DATABASE playground;

我们将使用以下命令切换到新数据库:

USE playground;

我们现在准备开始学习表格。

如何在 MySQL 和 MariaDB 中创建表

我们已将数据库命名为“playground”,所以现在让我们使用该数据库创建一个表,用于描述在游乐场中找到的设备。

表创建语法遵循以下约定:

CREATE TABLE [IF NOT EXISTS] name_of_table (list_of_table_columns) [engine=database_engine]

括号中的部分(“[”和“]”)是可选的。 如果已经有同名的表,“IF NOT EXISTS”选项会强制中止表创建。 如果表已经创建,使用此选项以避免出现错误很重要。

“engine=database_engine”部分用于选择特定类型的表来优化您的信息处理。 这超出了本文的范围,如果省略此选项,则选择一个好的默认值 (InnoDB)。

我们稍后将解释列部分所需的不同字段,但现在,让我们创建我们的表:

CREATE TABLE IF NOT EXISTS equipment (
    equip_id int(5) NOT NULL AUTO_INCREMENT,
    type varchar(50) DEFAULT NULL,
    install_date DATE DEFAULT NULL,
    color varchar(20) DEFAULT NULL,
    working bool DEFAULT NULL,
    location varchar(250) DEFAULT NULL,
    PRIMARY KEY(equip_id)
    );
Query OK, 0 rows affected (0.03 sec)

定义列

要查看我们已完成的工作,请使用以下命令打印出新表的列:

show columns in equipment;
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          | |+--------------+--------------+------+-----+---------+----------------+
| equip_id     | int(5)       | NO   | PRI | NULL    | auto_increment |
| type         | varchar(50)  | YES  |     | NULL    |                |
| install_date | date         | YES  |     | NULL    |                |
| color        | varchar(20)  | YES  |     | NULL    |                |
| working      | tinyint(1)   | YES  |     | NULL    |                |
| location     | varchar(250) | YES  |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

结果使我们对定义列所需的字段有了一些了解。 建表命令中的每一列描述以逗号分隔,并遵循以下约定:

Column_Name Data_Type[(size_of_data)] [NULL or NOT NULL] [DEFAULT default_value] [AUTO_INCREMENT]

这些是每个列定义的值:

<ul>
<li><strong>Column Name</strong>: Describes the attribute being assigned.  For instance, our first column is called "equip_id" because it will hold the unique ID number associated with each piece of equipment.</li>

<li><strong>Data Type</strong>: Specifies the type of data the column will hold.  Can be any of MySQL's data types.  For instance, "int" specifies that only integer values will be accepted, while "varchar" is used to hold string values.  There are many data types, but these are outside of the scope of this article.

<em>Note: Most data types need a size value in parentheses to specify the maximum amount of space needed to hold the values for that field.</em></li>

<li><strong>Null</strong>: Defines whether null is a valid value for that field.  Can be "null" or "not null".</li>

<li><strong>Default Value</strong>: Sets the initial value of all newly created records that do no specify a value. The "default" keyword is followed by the value.</li>

<li><strong>auto_increment</strong>: MySQL will handle the sequential numbering internally of any column marked with this option, in order to provide a unique value for each record.</li>
</ul>

最后,在关闭列声明之前,您需要通过键入“PRIMARY KEY (columns_to_be_primary_keys) 指定将哪些列用作主键。

我们使用“equip_id”列作为主键,因为“auto_increment”选项保证值是唯一的,这是主键的要求。

如何将数据插入 MySQL 或 MariaDB 表

让我们在表中插入一条记录。 为此,我们将使用以下语法:

INSERT INTO table_name (field1, field2, ...) VALUES (value1, value2, ...);

每个字符串值都必须放在引号中。 设置了“auto_increment”的每一列都不需要值,因为数据库将为它提供下一个序列号。

我们可以像这样在我们的游乐场设备表中添加一张幻灯片:

INSERT INTO equipment (type, install_date, color, working, location)
VALUES
("Slide", Now(), "blue", 1, "Southwest Corner");

我们使用了一个名为“Now()”的特殊函数,它为日期列填充当前日期。

要查看信息,请查询表。 星号 (*) 是匹配所有内容的特殊通配符。 此查询选择设备表中的所有内容:

SELECT * FROM equipment;
+----------+-------+--------------+-------+---------+------------------+
| equip_id | type  | install_date | color | working | location         |
+----------+-------+--------------+-------+---------+------------------+
|        1 | Slide | 2013-07-26   | blue  |       1 | Southwest Corner |
+----------+-------+--------------+-------+---------+------------------+
1 row in set (0.00 sec)

让我们添加另一个条目:

INSERT INTO equipment (type, install_date, color, working, location)
VALUES
("Swing", Now(), "green", 1, "Northwest Corner");

我们可以看到我们的新数据出现在表中:

SELECT * FROM equipment;
+----------+-------+--------------+-------+---------+------------------+
| equip_id | type  | install_date | color | working | location         |
+----------+-------+--------------+-------+---------+------------------+
|        1 | Slide | 2013-07-26   | blue  |       1 | Southwest Corner |
|        2 | Swing | 2013-07-26   | green |       1 | Northwest Corner |
+----------+-------+--------------+-------+---------+------------------+
2 rows in set (0.00 sec)

如何在 MySQL 和 MariaDB 中删除表

要删除表,我们可以使用以下语法:

DROP TABLE table_name;

这个命令要非常小心,因为一旦表被删除,里面的数据就无法恢复了。

首先,让我们查看我们当前的表,以便我们可以确定“显示表”命令的样子:

SHOW tables;
+----------------------+
| Tables_in_playground |
+----------------------+
| equipment            |
+----------------------+
1 row in set (0.00 sec)

让我们删除我们的设备表:

DROP TABLE equipment;

现在,再次检查“操场”表列表:

SHOW tables;
Empty set (0.00 sec)

我们在“playground”数据库中不再有任何表,因此操作成功。

结论

您现在应该可以对表执行基本操作了。

这些是管理 MySQL 或 MariaDB 所需的基本技能。 当您深入数据库管理的其他领域时,现在熟悉它们会有所回报。

贾斯汀·艾林伍德