MariaDB 教程:通过示例学习语法、命令

什么是 MariaDB?

MariaDB 是 MySQL 数据库管理系统。它由其原始开发人员创建。此 DBMS 工具为小型和企业任务提供数据处理功能。

MariaDB 是一个改进版本 MySQL。它具有许多内置的强大功能以及许多可用性、安全性和性能改进,这些改进是您在 MySQL.

这里有特点 MariaDB:

  • 它在 GPL、BSD 或 LGPL 许可下运行。
  • MariaDB 支持流行且标准的查询语言。
  • 它带有许多存储引擎,包括可以与其他关系数据库管理系统集成的高性能存储引擎。
  • 它提供了Galera集群技术。
  • MariaDB 支持流行的 Web 开发语言 PHP。
  • MariaDB 可以在不同的操作系统上运行,并且支持多种编程语言。
  • MariaDB 附带了 MySQL. MySQL 具有对 DBMS 性能产生负面影响的功能。此类功能已在 MariaDB.

MariaDB 与 MySQL

以下是两者之间的一些主要区别 MariaDB vs MySQL

产品型号 MariaDB MySQL
更多存储引擎选项 MariaDB 有 12 个新的存储引擎,你不会在 MySQL. 与……相比,它的存储选项较少 MariaDB.
速度改进 MariaDB 相比而言,速度有所提高 MySQL。它具有许多用于优化速度的功能。这些功能包括派生视图/表、子查询、执行控制、磁盘访问和优化器控制。 MySQL 与相比,速度较慢 MariaDB。它仅依赖少数功能进行速度优化,例如哈希索引。
更快的缓存/索引 使用内存存储引擎 MariaDB,INSERT 语句可以比标准完成 24% MySQL. 内存存储引擎 MySQL 相比之下速度较慢 MariaDB.
更大、更快的连接池 MariaDB 带有先进的线程池,运行速度更快,支持多达 200,000 多个连接。 提供的线程池 MySQL 无法支持单次最多200,000万个连接。
改进复制 In MariaDB,复制可以更安全、更快速地完成。与传统方式相比,更新速度也可以提高 2 倍 MySQL. MySQL的社区版允许连接静态数量的线程。 MySQL的企业计划附带线程功能。
新功能/扩展 MariaDB 带有新功能和扩展,包括 JSON、WITH 和 KILL 语句。 新的 MariaDB 未提供以下功能 MySQL.
缺少功能 MariaDB 缺少 MySQL 企业版。为了解决这个问题,它提供了替代的开源插件。因此, MariaDB 用户可以享受与 MySQL 企业版用户。 企业版 MySQL 使用专有代码。只有 MySQL 企业版可以使用此功能。

如何安装 MariaDB

作为独立应用程序安装

为了使用 MariaDB,你必须将它安装到你的电脑上。

可以按照以下步骤进行安装:

步骤1) 打开以下网址
从链接下载安装文件 https://downloads.mariadb.org/

步骤2) Double 单击文件开始安装
下载完成后,打开文件

步骤3) 单击“下一步”按钮
在弹出的窗口中,单击下一步按钮:

安装 MariaDB

步骤4) 接受许可协议
然后单击下一步按钮:

安装 MariaDB

步骤5) 选择 MariaDB 服务器
选择要安装的功能,然后单击下一步

安装 MariaDB

步骤6) 输入密码
在下一个窗口中,您将需要更改 root 用户的密码。

  1. 输入密码并通过重新输入相同的密码进行确认。如果您想允许远程机器访问,请激活必要的复选框。
  2. 完成后,单击下一步按钮。

安装 MariaDB

步骤7) 输入名称并选择端口号
在下一个窗口中,输入实例的名称,选择端口号,并设置必要的大小。单击下一步按钮:

安装 MariaDB

步骤8) 点击下一步
在下一个窗口中,只需单击下一步按钮。

步骤9) 点击安装
单击“安装”按钮启动安装。

安装 MariaDB

步骤10) 显示进度条
将显示一个显示安装进度的进度条:

安装 MariaDB

步骤11) 点击完成按钮
安装完成后,您将看到“完成”按钮。单击按钮关闭窗口:

安装 MariaDB

步骤12) 祝贺您!
你现在有 MariaDB 安装在您的计算机上。

使用命令提示符

现在,你有 MariaDB 安装在您的计算机上后,您就可以启动它并开始使用它了。这可以通过 MariaDB 命令提示符。

按照以下步骤进行操作:

步骤1) 单击“开始”,选择“所有程序”,然后单击 MariaDB...

步骤2) 选择 MariaDB 命令提示符。

MariaDB 命令提示符

步骤3) - MariaDB 命令提示符将启动。现在是登录的时候了。您应该以 root 用户身份登录,并使用在安装期间设置的密码 MariaDB. 在命令提示符中输入以下命令:

MySQL -u root -p

步骤4) 输入密码并按回车键。您应该已登录,如下所示:

MariaDB 命令提示符

您现在已登录 MariaDB.

数据类型

MariaDB 支持以下数据类型:

  • 字符串数据类型
  • 数字数据类型
  • 日期/时间数据类型
  • 大对象数据类型

字符串数据类型

其中包括:

字符串数据类型 描述
字符(大小) size 表示要存储的字符数。最多可存储 255 个字符。固定长度的字符串。
varchar(大小) size 表示要存储的字符数。最多可存储 255 个字符。可变长度的字符串。
字体大小) size 表示要存储的字符数。最多可存储 255 个字符。固定长度的字符串。
二进制(大小) size 表示要存储的字符数。最多可存储 255 个字符。固定大小的字符串。

数值数据类型

它们包括以下内容:

数值数据类型 描述
相当于 tinyint(1)的非常小的整数值。有符号值的范围在 -128 到 127 之间。无符号值的范围在 0 到 255 之间。
整数(米) 标准整数值。有符号值的范围为 -2147483648 到 2147483647。无符号值的范围为 0 到 4294967295。
浮点数(m,d) 具有单精度的浮点数。
双精度(m,d) 双精度浮点数。
浮点(p) 一个浮点数。

日期/时间数据类型

其中包括:

日期/时间数据类型 描述
日期 显示格式为“yyyy-mm-dd”。值范围介于“1000-01-01”和“9999-12-31”之间。
日期时间 显示格式为“yyyy-mm-dd hh:mm:ss”。值范围为“1000-01-01 00:00:00”至“9999-12-31 23:59:59”。
时间戳(米) 显示格式为“yyyy-mm-dd hh:mm:ss”。值范围为“1970-01-01 00:00:01”(utc)和“2038-01-19 03:14:07”(utc)。
时间 显示格式为“hh:mm:ss”。值范围为“-838:59:59”至“838:59:59”。

大对象数据类型 (LOB)

它们包括以下内容:

大对象数据类型 描述
小斑点 其最大大小为 255 字节。
斑点(大小) 最大大小为 65,535 字节。
中等斑点 其最大大小为 16,777,215 字节。
长文本 其最大尺寸为 4GB。

创建数据库和表

在中创建一个新数据库 MariaDB,您应该拥有仅授予根用户和管理员的特殊权限。

要创建新的数据库,您应该使用 CREATE DATABASE 命令,其语法如下:

CREATE DATABASE DatabaseName;

在这种情况下,您需要创建一个数据库并将其命名为 Demo。

开始 MariaDB 命令提示符并通过键入以下命令以 root 用户身份登录:

mysql -u root -p

输入 root 密码并按回车键。您将登录。

现在,运行以下命令:

CREATE DATABASE Demo;

在中创建数据库和表 MariaDB

然后,您就创建了一个名为 Demo 的数据库。确认数据库是否创建成功对您很有帮助。您只需运行以下命令即可显示可用数据库的列表:

SHOW DATABASES;

在中创建数据库和表 MariaDB

以上输出表明 Demo 数据库是列表的一部分,因此数据库创建成功。

MariaDB 选择数据库

为了能够使用或操作某个数据库,您必须从可用数据库列表中选择它。选择数据库后,您可以执行诸如在数据库中创建表之类的任务。

要选择数据库,您应该使用 USE 命令。其语法如下:

USE database_name;

您需要使用Demo数据库,可以通过以下命令选择:

USE Demo;

在中创建数据库和表 MariaDB

上图显示 MariaDB 命令提示符已从无更改为已选择的数据库的名称。

您现在可以继续在 Demo 数据库中创建表。

MariaDB –创建表

为了能够创建表,您必须选择一个数据库。可以使用 CREATE TABLE 语句创建表。以下是该命令的语法:

CREATE TABLE tableName (columnName columnType);

您可以将其中一列设置为主键。此列不应允许空值。

我们将在 Demo 数据库中创建两个表:Book 表和 Price 表。每个表有两列。

首先,我们创建包含两列(id 和 name)的 Book 表。运行以下命令:

CREATE TABLE Book(  
id INT NOT NULL AUTO_INCREMENT,  
name VARCHAR(100) NOT NULL,  
PRIMARY KEY (id));  

在中创建数据库和表 MariaDB

PRIMARY KEY 约束已用于将 id 列设置为表的主键。AUTO_INCREMENT 属性将为表中插入的每个新记录自动将 id 列的值增加 1。所有列都不允许为空值。

现在,创建第二张表,即价格表:

CREATE TABLE Price(  
id INT NOT NULL AUTO_INCREMENT,  
price float NOT NULL,  
PRIMARY KEY (id));  

在中创建数据库和表 MariaDB

id 列已设置为该表的主键。

显示表格

现在您已经创建了两个表,确认表是否创建成功对您很有帮助。您可以通过运行以下命令来显示数据库中包含的表列表:

SHOW TABLES;

在中创建数据库和表 MariaDB

上面的截图显示在Demo数据库中成功创建了两个表。

显示表结构

要查看任何特定表的结构,可以使用 DESCRIBE 命令(通常缩写为 DESC)。该命令采用以下语法:

DESC TableName;

例如,要查看名为 Book 的表的结构,可以运行以下命令;

DESC Book;

在中创建数据库和表 MariaDB

该表有两列。要查看 Price 表的结构,可以运行以下命令:

DESC Price;

在中创建数据库和表 MariaDB

CRUD 和子句

插入

将数据插入到 MariaDB 表,则应使用 INSERT INTO 语句。此命令采用以下语法:

INSERT INTO tableName
(column_1, column_2, ... )  
VALUES  
(value1, value2, ... ),  
(value1, value2, ... ),  
...;   

上述语法表明您必须指定要插入数据的表列以及需要插入的数据。

让我们在 Book 表中插入一条记录:

INSERT INTO book  
(id, name)  
VALUES(1, 'MariaDB Book');  

CRUD 和子句-INSERT

您已将一条记录插入表中。将一条记录插入 Price 表中:

INSERT INTO price
(id, price)  
VALUES(1, 200);  

CRUD 和子句-INSERT

已创建记录。

选择

SELECT 语句可帮助我们查看或查看数据库表的内容。例如,要查看 Book 表的内容,您需要运行以下命令:

SELECT * from book;

CRUD 和子句-INSERT

现在,查看 Price 表的内容:

SELECT * from price;

CRUD 和子句-INSERT

插入多条记录

我们可以将多条记录插入到 MariaDB 一次完成一个表。为了演示这一点,运行以下示例:

INSERT INTO book
(id, name)  
VALUES  
(2,'MariaDB Book2'),  
(3,'MariaDB Book3'),  
(4,'MariaDB Book4'),  
(5,'MariaDB Book5');

插入多条记录

您可以查询表来检查记录是否插入成功:

SELECT * FROM book;

插入多条记录

记录已成功插入。通过运行此示例将多条记录插入 Price 表:

INSERT INTO price 
(id, price)  
VALUES  
(2, 250),  
(3, 220),  
(4, 190),  
(5, 300); 

插入多条记录

我们来确认一下记录是否创建成功:

SELECT * FROM price;

插入多条记录

更新

UPDATE 命令帮助我们更改或修改已插入表中的记录。您可以将其与 WHERE 子句结合使用以指定要更新的记录。语法如下:

UPDATE tableName SET field=newValue, field2=newValue2,...  
[WHERE ...]  

UPDATE 命令还可以与 SET、WHERE、LIMIT 和 ORDER BY 等子句结合使用。您很快就会看到这一点:

考虑包含以下记录的 Price 表:

CRUD 和子句-UPDATE

我们将 id 为 1 的书的价格从 200 改为 250:

UPDATE price 
SET price = 250
WHERE id = 1;

CRUD 和子句-UPDATE

该命令已成功运行。您现在可以查询表以查看更改是否已发生:

CRUD 和子句-UPDATE

上面的截图显示更改已实施。考虑包含以下记录的 Book 表:

CRUD 和子句-UPDATE

让我们将 Book 书名改为 MariaDB Book1。请注意,这本书的 ID 为 1。以下是该命令:

UPDATE book
SET name = “MariaDB Book1”
WHERE id = 1;

CRUD 和子句-UPDATE

检查变更是否已实施:

CRUD 和子句-UPDATE

上面的截图显示更改已成功实施。

在上面的例子中,我们每次只更改了一列。但是,我们可以一次更改多列。让我们用一个例子来演示一下。

让我们使用包含以下数据的价格表:

CRUD 和子句-UPDATE

让我们更改 id 为 5 的书的 id 和价格。我们将其 id 更改为 6,将价格更改为 6。运行以下命令:

UPDATE price
SET id = 6,
price = 280
WHERE id = 5;

CRUD 和子句-UPDATE

现在,查询表来检查更改是否成功:

CRUD 和子句-UPDATE

更改已成功完成。

删除

当我们需要从表中删除一个或多个记录时,我们使用 DELETE 命令。该命令的语法如下:

DELETE FROM tableName  
[WHERE condition(s)]  
[ORDER BY exp [ ASC | DESC ]]  
[LIMIT numberRows];   

考虑具有以下记录的价格表:

CRUD 和子句-DELETE

我们需要从表中删除最后一条记录。它的 ID 为 6,价格为 280。让我们删除该记录:

DELETE FROM price
WHERE id = 6;   

CRUD 和子句-DELETE

命令运行成功。让我们查询表来确认删除是否成功:

CRUD 和子句-DELETE

输出表明该记录已成功删除。

其中

WHERE 子句帮助我们指定需要进行更改的确切位置。它与 INSERT、SELECT、UPDATE 和 DELETE 等语句一起使用。考虑包含以下数据的 Price 表:

CRUD 和 Where 子句

假设我们需要查看价格低于 250 的记录。我们可以运行以下命令:

SELECT *   
FROM price 
WHERE price < 250;  

CRUD 和 Where 子句

所有价格低于250的记录均已返回。

WHERE 子句可以与 AND 语句结合使用。假设我们需要查看 Price 表中价格低于 250 且 id 高于 3 的所有记录。我们可以运行以下命令:

SELECT *  
FROM price  
WHERE id > 3  
AND price < 250;   

CRUD 和 Where 子句

只返回了一条记录。原因是它必须满足所有指定条件,即 id 大于 3 且价格低于 250。如果违反其中任何一个条件,则不会返回该记录。

该子句还可以与 OR 命令结合使用。让我们将上一个命令中的 AND 替换为 OR,然后查看收到的输出类型:

SELECT *  
FROM price 
WHERE id > 3  
OR price < 250;   

CRUD 和 Where 子句

我们现在得到 2 条记录而不是 1 条。这是因为,对于符合条件的记录,它只需满足指定条件之一。

喜欢

此子句用于指定访问需要精确匹配的表数据时的数据模式。它可以与 INSERT、UPDATE、SELECT 和 DELETE 语句结合使用。

您应该将要查找的数据模式传递给该子句,它将返回 true 或 false。以下是可以与该子句一起使用的通配符:

  • %:匹配 0 个或多个字符。
  • _:用于匹配单个字符。

以下是 LIKE 子句的语法:

SELECT field_1, field_2,... FROM tableName1, tableName2,...  
WHERE fieldName LIKE condition;

让我们演示如何使用带有 % 通配符的子句。让我们使用包含以下记录的 Book 表:

CRUD 和 Where 子句

我们需要查看名称以 M 开头的所有记录。我们可以运行以下命令:

SELECT name  
FROM book  
WHERE name LIKE 'M%';  

CRUD 和 Where 子句

所有记录都已返回,因为它们的名称以字母 M 开头。要查看所有以 4 结尾的名称,可以运行以下命令:

SELECT name  
FROM book  
WHERE name LIKE '%4';  

CRUD 和 Where 子句

仅返回一个名称,因为它是唯一满足条件的名称。

我们还可以用通配符来包围搜索模式:

SELECT name  
FROM book  
WHERE name LIKE '%DB%';  

CRUD 和 Where 子句

除了 % 通配符外,LIKE 子句还可以与 _ 通配符一起使用。这是下划线通配符,它​​只会查找单个字符。

让我们处理包含以下记录的价格表:

CRUD 和 Where 子句

让我们检查价格为 1_0 的记录。我们运行以下命令:

SELECT *  
FROM price
WHERE price LIKE '1_0';  

CRUD 和 Where 子句

它返回了价格为190的记录。我们还可以尝试另一种模式:

SELECT *  
FROM price 
WHERE price LIKE '_2_';  

CRUD 和 Where 子句

我们可以将 LIKE 子句与 NOT 运算符一起使用。这将返回所有不符合指定模式的记录。例如:

让我们使用包含以下记录的价格表:

CRUD 和 Where 子句

让我们找出所有价格不是以 2 开头的记录:

SELECT *  
FROM price  
WHERE price NOT LIKE '2%';  

CRUD 和 Where 子句

只有一条记录不符合指定的模式。

排列方式

此子句可帮助我们按升序或降序对记录进行排序。我们将它与 SELECT 语句一起使用,如下所示:

SELECT expression(s)  
FROM tables  
[WHERE condition(s)]  
ORDER BY exp [ ASC | DESC ];   

我们可以使用此子句而不添加 ASC 或 DESC 部分。例如:

我们将使用包含以下记录的价格表:

CRUD 和 Where 子句

针对表运行以下命令:

SELECT * FROM price 
WHERE price LIKE '2%.'
ORDER BY price;   

CRUD 和 Where 子句

在上面的命令中,我们按价格排序。记录按价格升序排列。这意味着当我们不指定顺序时,默认按升序排序。

让我们使用 DESC 选项运行该子句:

SELECT * FROM price
WHERE price LIKE '2%'  
ORDER BY price DESC;   

CRUD 和 Where 子句

记录已按照我们指定的方式按价格降序排列。

让我们将 ORDER BY 子句与 ASC 属性一起使用:

SELECT * FROM price 
WHERE price LIKE '2%.'  
ORDER BY price ASC;   

CRUD 和 Where 子句

记录已排序,但价格按升序排列。这类似于我们使用不带 ASC 或 DESC 属性的 ORDER BY 子句的情况。

DISTINCT,

此子句帮助我们在从表中选择记录时消除重复。这意味着它帮助我们获得唯一的记录。其语法如下:

SELECT DISTINCT expression(s)  
FROM tableName  
[WHERE condition(s)];   

为了证明这一点,我们将使用包含以下数据的价格表:

CRUD 和子句-DISTINCT

当我们从表中选择价格列时,我们得到以下结果:

SELECT price FROM Price;

CRUD 和子句-DISTINCT

我们有两条价格为 250 的记录,因此产生了重复。我们只需要唯一的记录。我们可以使用 DISTINCT 子句过滤这些记录,如下所示:

SELECT DISTINCT price FROM Price;

CRUD 和子句-DISTINCT

现在,上面的输出中没有任何重复项。

FROM 子句用于从数据库表中提取数据。它在连接表时也很有用。以下是该命令的语法:

SELECT columnNames FROM tableName; 

要查看 book 表的内容,请运行以下命令:

SELECT * FROM price;

CRUD 和 Clauses-From

该子句可帮助您从数据库表中仅获取单个列。例如:

SELECT price FROM Price;

CRUD 和 Clauses-From

高级任务

存储过程

程序是指 MariaDB 可以向其传递参数的程序。过程不返回值。要创建过程,我们使用 CREATE PROCEDURE 命令。

为了演示如何创建和调用过程,我们将创建一个名为 myProcedure() 的过程,该过程可帮助我们从 book 表中选择 name 列。过程如下:

DELIMITER $
    CREATE PROCEDURE myProcedure()
        BEGIN
            SELECT name FROM book;
        END;
;

高级任务-存储过程

过程已创建。我们只是将 SELECT 语句括在过程的 BEGIN 和 END 子句中。

现在,我们可以通过其名称调用该过程,如下所示:

CALL myProcedure();

高级任务-存储过程

该过程在调用时返回 book 表的名称列。

我们可以创建一个接受参数的过程。例如,我们需要选择书籍名称并使用书籍 ID 进行过滤。我们可以为此创建以下过程:

DELIMITER $
    CREATE PROCEDURE myProcedure2(book_id int)
        BEGIN
            SELECT name FROM book WHERE id = book_id;
        END;
;

高级任务-存储过程

上面,我们创建了一个名为 myProcedure2() 的过程。此过程采用一个名为 book_id 的整数参数,它是我们需要查看其名称的书籍的 ID。要查看 ID 为 3 的书籍的名称,我们可以按如下方式调用该过程:

CALL myProcedure2(3);

高级任务-存储过程

功能

与过程不同,我们必须将参数传递给函数,并且函数必须返回一个值。要在 MariaDB,我们使用 CREATE FUNCTION 语句。该语句采用以下语法:

CREATE 
[ DEFINER = { CURRENT-USER | username } ] 
FUNCTION function-name [(parameter datatype [, parameter datatype]) ]
RETURNS datatype [LANGUAGE SQL
                        | DETERMINISTIC
                        | NOT DETERMINISTIC
                        | {CONTAINS SQL 
                          | NO SQL
                          | READS SQL DATA
                          | MODIFIES SQL DATA}
                        | SQL SECURITY {DEFINER | INVOKER}
                        | COMMENT 'comment'

BEGIN

   declaration-section

   executable-section

END;

上述参数说明如下:

产品型号 描述
DEFINER 子句 此参数是可选的。如果不指定,则定义者将成为创建该函数的用户。如果需要指定不同的定义者,请包含 DEFINER 子句,其中 user_name 将成为该函数的定义者。
函数名 在 MariaDB.
参数 传递给函数的参数。在函数创建过程中,所有参数都被视为 IN 参数 (而不是 OUT/INOUT 参数)。
返回数据类型 函数返回值的数据类型。
语言 SQL 它影响便携性,但不影响功能。
确定性 仅当给定多个参数时,该函数才会返回一个结果。
不确定 当给定多个参数时,函数可能会返回不同的结果。
包含 SQL 通知 MariaDB 此函数包含 SQL。数据库不会验证这是否属实。
没有 SQL 此子句未使用,并且对您的功能没有影响。
读取 SQL 数据 告诉 MariaDB 该函数将使用 SELECT 语句读取数据,但不会修改数据。
修改 SQL 数据 告诉 MariaDB 此函数将使用 INSERT、DELETE、UPDATE 和其他 DDL 语句来修改 SQL 数据。
申明部分 这是应该声明局部变量的地方。
可执行部分 此处应添加功能代码。

下面是一个例子 MariaDB 功能:

DELIMITER //

CREATE FUNCTION sumFunc (x INT )
RETURNS INT DETERMINISTIC

BEGIN

   DECLARE sum INT;
   SET sum = 0;
   label1: WHILE sum <= 3000 DO
   SET sum = sum + x;
   END WHILE label1;
   RETURN sum;
END; //
DELIMITER ;

功能 MariaDB

然后我们可以按如下方式调用上述函数:

select sumFunc(1000);

该命令将返回以下内容:

功能 MariaDB

一旦完成某个函数的使用,删除它就大有裨益。这很容易,因为您只需调用采用以下语法的 DROP FUNCTION 语句:

DROP FUNCTION function_name;

例如,要删除名为 myFunc 的函数,我们可以运行以下命令:

DROP FUNCTION myFunc;

注册

当您需要一次从多个表中检索数据时,请使用 MariaDB JOINS。这意味着 注册 处理两个或多个表。支持以下三种类型的 JOINS MariaDB:

  • 内/简单连接
  • 左外连接/左连接
  • 右外连接/右连接

让我们逐一讨论一下:

INNER JOIN

内连接返回连接条件为真的表中的所有行。其语法如下:

SELECT columns  
FROM table-1   
INNER JOIN table-2  
ON table-1.column = table-2.column;  

例如:

我们将使用我们的两张桌子、书籍和书籍。

书籍表包含以下数据:

INNER JOIN

价格表包含以下数据:

INNER JOIN

目标是将 Book 表中的名称列和 Price 表中的价格列合并为一个表。这可以通过内连接来实现,如下所示:

SELECT book.name, price.price 
FROM book   
INNER JOIN price 
ON book.id = price.id;   

该命令返回以下内容:

INNER JOIN

左外连接

此连接返回左侧表中的所有行以及另一个表中连接条件为真的行。其语法如下:

SELECT columns  
FROM table-1  
LEFT [OUTER] JOIN table-2  
ON table-1.column = table-2.column;  

OUTER 关键字放在方括号内,因为它是可选的。

例如:

SELECT book.name, price.price 
FROM book   
LEFT JOIN price 
ON book.id = price.id;   

该命令返回以下内容:

左外连接

上表中的最后一条记录左侧没有匹配值。因此它被替换为 NULL。

右外连接

此连接返回右侧表中的所有行以及另一个表中连接条件为真的行。其语法如下:

SELECT columns  
FROM table-1  
RIGHT [OUTER] JOIN table-2  
ON table-1.column = table-2.column;  

OUTER 关键字放在方括号内,因为它是可选的。

例如:

SELECT book.name, price.price 
FROM book   
RIGHT JOIN price
ON book.id = price.id;   

该命令返回以下内容:

右外连接

原因是右侧表中的所有行都与另一个表中的行匹配。如果某些行不匹配,则第一列将为 NULL。