MariaDB - 快速指南


MariaDB - 简介

数据库应用程序与主应用程序分开存在并存储数据集合。每个数据库都使用一个或多个 API 来创建、访问、管理、搜索和复制其包含的数据。

数据库还使用非关系数据源,例如对象或文件。然而,事实证明,数据库是大型数据集的最佳选择,因为大型数据集会因其他数据源的检索和写入速度缓慢而受到影响。

关系数据库管理系统(RDBMS)将数据存储在各种表中。这些表之间的关系是使用主键和外键建立的。

RDBMS 提供以下功能 -

  • 它们使您能够实现具有表、列和索引的数据源。

  • 它们确保多个表的行之间的引用的完整性。

  • 它们会自动更新索引。

  • 它们解释 SQL 查询和操作,以操纵或从表中获取数据。

关系型数据库管理系统术语

在开始讨论 MariaDB 之前,让我们回顾一下与数据库相关的一些术语。

  • 数据库- 数据库是由保存相关数据的表组成的数据源。

  • - 表,意思是电子表格,是包含数据的矩阵。

  • - 列,意思是数据元素,是保存一种类型数据的结构;例如,发货日期。

  • Row - 行是对相关数据进行分组的结构;例如,客户的数据。它也称为元组、条目或记录。

  • 冗余- 该术语是指存储数据两次以加速系统。

  • 主键- 这是指唯一的识别值。该值不能在表中出现两次,并且只有一行与其关联。

  • 外键- 外键充当两个表之间的链接。

  • 复合键- 复合键或复合键是引用多个列的键。它指的是由于一个列缺乏独特的品质而导致多个列。

  • 索引- 索引实际上与书籍的索引相同。

  • 引用完整性- 该术语是指确保所有外键值都指向现有行。

MariaDB数据库

MariaDB 是 MySQL 的原始开发人员创建的一个流行的 MySQL 分支。它源于对 MySQL 被 Oracle 收购的担忧。它为小型数据处理任务和企业需求提供支持。它的目标是成为 MySQL 的直接替代品,只需要简单地卸载 MySQL 并安装 MariaDB。MariaDB 提供与 MySQL 相同的功能,甚至更多。

MariaDB 的主要特点

MariaDB 的重要特征是 -

  • 所有 MariaDB 都遵循 GPL、LGPL 或 BSD。

  • MariaDB 包含多种存储引擎可供选择,其中包括高性能存储引擎,用于与其他 RDBMS 数据源配合使用。

  • MariaDB 使用标准且流行的查询语言。

  • MariaDB 可在多种操作系统上运行并支持多种编程语言。

  • MariaDB 提供对 PHP(最流行的 Web 开发语言之一)的支持。

  • MariaDB 提供 Galera 集群技术。

  • MariaDB 还提供了许多 MySQL 中不可用的操作和命令,并消除/替换了对性能产生负面影响的功能。

入门

在开始本教程之前,请确保您具有 PHP 和 HTML 的一些基本知识,特别是我们的 PHP 和 HTML 教程中讨论的材料。

本指南重点介绍在 PHP 环境中使用 MariaDB,因此我们的示例对于 PHP 开发人员来说最有用。

如果您不熟悉或需要复习,我们强烈建议您复习我们的 PHP 教程。

MariaDB - 安装

MariaDB 的所有下载都位于MariaDB 基金会官方网站的下载部分。单击所需版本的链接,将显示多个操作系统、体系结构和安装文件类型的下载列表。

在 LINUX/UNIX 上安装

如果您对 Linux/Unix 系统有深入的了解,只需下载源代码即可构建您的安装。我们推荐的安装方式是使用分发包。MariaDB 为以下 Linux/Unix 发行版提供软件包 -

  • 红帽/CentOS/Fedora
  • Debian/Ubuntu

以下发行版在其存储库中包含 MariaDB 包 -

  • 开放SUSE
  • 架构Linux
  • 马吉亚
  • 薄荷
  • 斯莱克软件

按照以下步骤在 Ubuntu 环境中安装 -

步骤 1 - 以 root 用户身份登录。

步骤 2 - 导航到包含 MariaDB 包的目录。

步骤 3 - 使用以下代码导入 GnuPG 签名密钥 -

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db

步骤4 - 将MariaDB 添加到sources.list文件中。打开文件,并添加以下代码 -

sudo add-apt-repository 'deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntuprecise main'

步骤 5 - 使用以下命令刷新系统 -

sudo apt-get update

步骤 6 - 使用以下命令安装 MariaDB -

sudo apt-get install mariadb-server

在 Windows 上安装

找到并下载自动安装文件 (MSI) 后,只需双击该文件即可开始安装。安装向导将引导您完成安装的每个步骤和任何必要的设置。

通过从命令提示符启动安装来测试安装。导航到安装位置(通常在目录中),然后在提示符下键入以下内容 -

mysqld.exe --console

如果安装成功,您将看到与启动相关的消息。如果没有出现,则您可能存在权限问题。确保您的用户帐户可以访问该应用程序。图形客户端可用于 Windows 环境中的 MariaDB 管理。如果您发现命令行不舒服或麻烦,请务必尝试一下。

测试安装

执行一些简单的任务来确认 MariaDB 的功能和安装。

使用管理实用程序获取服务器状态

使用 mysqladmin 二进制文件查看服务器版本。

[root@host]# mysqladmin --version

它应该显示版本、发行版、操作系统和体系结构。如果您没有看到该类型的输出,请检查您的安装是否存在问题。

使用客户端执行简单命令

打开 MariaDB 的命令提示符。这应该将您连接到 MariaDB 并允许执行命令。输入一个简单的命令如下 -

mysql> SHOW DATABASES;

安装后

成功安装MariaDB后,设置root密码。全新安装的密码为空。输入以下内容设置新密码 -

mysqladmin -u root password "[enter your password here]";

输入以下内容以使用您的新凭据连接到服务器 -

mysql -u root -p
Enter password:*******

在 Windows 上升级

如果您的Windows系统上已经安装了MySQL,并且想要升级到MariaDB;不要卸载 MySQL 并安装 MariaDB。这将导致与现有数据库发生冲突。您必须安装 MariaDB,然后使用 Windows 安装文件中的升级向导。

MySQL my.cnf 文件的选项应该适用于 MariaDB。然而,MariaDB 有很多特性是 MySQL 所没有的。

考虑 my.cnf 文件中的以下冲突 -

  • MariaDB 默认使用 Aria 存储引擎来存储临时文件。如果您有很多临时文件,并且不使用 MyISAM 表,请修改键缓冲区大小。

  • 如果您的应用程序频繁连接/断开连接,请更改线程缓存大小。

  • 如果使用超过 100 个连接,请使用线程池。

兼容性

MySQL 和 MariaDB 本质上是相同的。然而,存在足够多的差异,会在升级中产生问题。在MariaDB 知识库中查看更多这些关键差异。

MariaDB - 管理

在尝试运行 MariaDB 之前,首先确定其当前状态,正在运行还是关闭。有三种启动和停止 MariaDB 的选项 -

  • 运行 mysqld(MariaDB 二进制文件)。
  • 运行 mysqld_safe 启动脚本。
  • 运行 mysql.server 启动脚本。

如果您将 MariaDB 安装在非标准位置,则可能需要编辑脚本文件中的位置信息。只需在脚本中添加“stop”参数即可停止 MariaDB。

如果您想在 Linux 下自动启动它,请将启动脚本添加到您的init系统中。每个发行版都有不同的过程。请参阅您的系统文档。

创建用户帐户

使用以下代码创建一个新的用户帐户 -

CREATE USER 'newusername'@'localhost' IDENTIFIED BY 'userpassword';

此代码向用户表添加一行,但没有权限。您还可以选择使用密码的哈希值。使用以下代码授予用户权限 -

GRANT SELECT, INSERT, UPDATE, DELETE ON database1 TO 'newusername'@'localhost';

其他权限包括 MariaDB 中几乎所有可能的命令或操作。创建用户后,执行“FLUSH PRIVILEGES”命令以刷新授权表。这允许使用用户帐户。

配置文件

在 Unix/Linux 上构建后,配置文件“/etc/mysql/my.cnf”应编辑为如下所示 -

# Example mysql config file.
# You can copy this to one of:
# /etc/my.cnf to set global options,
# /mysql-data-dir/my.cnf to get server specific options or
# ~/my.cnf for user specific options.

#

# One can use all long options that the program supports.
# Run the program with --help to get a list of available options

# This will be passed to all mysql clients
[client]
#password = my_password
#port = 3306
#socket = /tmp/mysql.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# The MySQL server
[mysqld]
#port = 3306
#socket = /tmp/mysql.sock
temp-pool

# The following three entries caused mysqld 10.0.1-MariaDB (and possibly other
   versions) to abort...
# skip-locking
# set-variable = key_buffer = 16M
# set-variable = thread_cache = 4

loose-innodb_data_file_path = ibdata1:1000M
loose-mutex-deadlock-detector
gdb

######### Fix the two following paths

# Where you want to have your database
data = /path/to/data/dir

# Where you have your mysql/MariaDB source + sql/share/english
language = /path/to/src/dir/sql/share/english

[mysqldump]
quick
MariaDB
8
set-variable = max_allowed_packet=16M
[mysql]
no-auto-rehash

[myisamchk]
set-variable = key_buffer = 128M

编辑“data=”和“language=”行以匹配您的环境。

文件修改后,导航到源目录并执行以下命令 -

./scripts/mysql_install_db --srcdir = $PWD --datadir = /path/to/data/dir --
   user = $LOGNAME

如果您将 datadir 添加到配置文件,请省略“$PWD”变量。确保运行 MariaDB 版本 10.0.1 时使用“$LOGNAME”。

管理命令

查看以下在使用 MariaDB 时经常使用的重要命令列表 -

  • USE [数据库名称] - 设置当前默认数据库。

  • SHOW DATABASES - 列出当前服务器上的数据库。

  • SHOW TABLES - 列出所有非临时表。

  • SHOW COLUMNS FROM [table name] - 提供与指定表相关的列信息。

  • SHOW INDEX FROM TABLENAME [表名] - 提供与指定表相关的表索引信息。

  • SHOW TABLE STATUS LIKE [表名]\G – − 为表提供有关非临时表的信息,LIKE 子句后出现的模式用于获取表名。

MariaDB - PHP 语法

MariaDB 与多种编程语言和框架都能很好地合作,例如 PHP、C#、JavaScript、Ruby on Rails、Django 等。由于其简单性和历史足迹,PHP 仍然是所有可用语言中最受欢迎的。本指南将重点介绍与 MariaDB 合作的 PHP。

PHP 提供了一系列用于处理 MySQL 数据库的函数。这些函数执行访问或执行操作等任务,并且它们与 MariaDB 完全兼容。只需像调用任何其他 PHP 函数一样调用这些函数即可。

您将用于 MariaDB 的 PHP 函数符合以下格式 -

mysql_function(value,value,...);

函数的第二部分指定其操作。本指南中使用的两个函数如下 -

mysqli_connect($connect);
mysqli_query($connect,"SQL statement");

以下示例演示了 PHP 调用 MariaDB 函数的一般语法 -

<html>
   <head>
      <title>PHP and MariaDB</title>
   </head>

   <body>
      <?php
         $retval = mysql_function(value, [value,...]);
      
         if( !$retval ) {
            die ( "Error: Error message here" );
         }
         // MariaDB or PHP Statements
      ?>
   </body>
</html>

在下一节中,我们将使用 PHP 函数检查基本的 MariaDB 任务。

MariaDB - 连接

与 MariaDB 建立连接的一种方法是在命令提示符下使用 mysql 二进制文件。

MYSQL 二进制

查看下面给出的示例。

[root@host]# mysql -u root -p

Enter password:******

上面给出的代码连接到 MariaDB 并提供用于执行 SQL 命令的命令提示符。输入代码后,应出现一条欢迎消息,指示连接成功,并显示版本号。

Welcome to the MariaDB monitor. Commands end with ; or \g. 
Your MariaDB connection id is 122323232 
Server version: 5.5.40-MariaDB-log
  
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
mysql> 

该示例使用 root 访问权限,但任何具有权限的用户当然都可以访问 MariaDB 提示符并执行操作。

通过exit命令断开与 MariaDB 的连接,如下所示 -

mysql> exit

PHP 连接脚本

连接和断开 MariaDB 的另一种方法是使用 PHP 脚本。PHP 提供了mysql_connect()函数来打开数据库连接。它使用五个可选参数,并在连接成功后返回 MariaDB 链接标识符,在连接失败时返回 false。它还提供了用于关闭数据库连接的mysql_close()函数,该函数使用单个参数。

句法

查看以下 PHP 连接脚本语法 -

connection mysql_connect(server,user,passwd,new_link,client_flag);

参数的描述如下 -

先生编号 参数及说明
1

服务器

该可选参数指定运行数据库服务器的主机名。它的默认值为“localhost:.3036”。

2

用户

该可选参数指定访问数据库的用户名。它的默认值是服务器的所有者。

3

密码

该可选参数指定用户的密码。其默认值为空。

4

新链接

此可选参数指定在使用相同参数第二次调用mysql_connect()时,而不是新连接时,将返回当前连接的标识符。

5

客户标志

此可选参数使用以下常量值的组合 -

  • MYSQL_CLIENT_SSL - 它使用 ssl 加密。

  • MYSQL_CLIENT_COMPRESS - 它使用压缩协议。

  • MYSQL_CLIENT_IGNORE_SPACE - 它允许函数名称后有空格。

  • MYSQL_CLIENT_INTERACTIVE - 它允许在关闭连接之前交互超时秒数的不活动。

查看下面给出的 PHP 断开连接脚本语法 -

bool mysql_close ( resource $link_identifier );

如果省略该资源,最近打开的资源将关闭。成功关闭时返回 true 值,否则返回 false 值。

尝试以下示例代码来连接 MariaDB 服务器 -

<html>
   <head>
      <title>Connect to MariaDB Server</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'guest1';
         $dbpass = 'guest1a';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      
         if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }
         
         echo 'Connected successfully';
         mysql_close($conn);
      ?>
   </body>
</html>

连接成功后,您将看到以下输出 -

mysql> Connected successfully

MariaDB - 创建数据库

在 MariaDB 中创建或删除数据库需要通常仅授予 root 用户或管理员的权限。在这些帐户下,您有两个选项用于创建数据库 - mysqladmin 二进制文件和 PHP 脚本。

mysqladmin 二进制文件

以下示例演示了如何使用 mysqladmin 二进制文件创建名为Products 的数据库-

[root@host]# mysqladmin -u root -p create PRODUCTS
Enter password:******

PHP 创建数据库脚本

PHP 使用mysql_query函数创建 MariaDB 数据库。该函数使用两个参数,其中一个参数是可选的,成功时返回“true”值,失败时返回“false”值。

句法

查看以下创建数据库脚本语法 -

bool mysql_query( sql, connection );

参数的描述如下 -

序列号 参数及说明
1

sql

此必需参数由执行操作所需的 SQL 查询组成。

2

联系

如果未指定,此可选参数将使用最近使用的连接。

尝试以下示例代码来创建数据库 -

<html>
   <head>
      <title>Create a MariaDB Database</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'root';
         $dbpass = 'rootpassword';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      
         if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }

         echo 'Connected successfully<br />';
         $sql = 'CREATE DATABASE PRODUCTS';
         $retval = mysql_query( $sql, $conn );
      
         if(! $retval ) {
            die('Could not create database: ' . mysql_error());
         }

         echo "Database PRODUCTS created successfully\n";
         mysql_close($conn);
      ?>
   </body>
</html>

成功删除后,您将看到以下输出 -

mysql> Database PRODUCTS created successfully 
mysql> SHOW DATABASES; 
+-----------------------+ 
| Database              | 
+-----------------------+ 
| PRODUCTS              | 
+-----------------------+  

MariaDB - 删除数据库

在 MariaDB 中创建或删除数据库需要权限,通常仅授予 root 用户或管理员。在这些帐户下,您有两个删除数据库的选项:mysqladmin 二进制文件和 PHP 脚本。

请注意,删除的数据库是不可恢复的,因此执行此操作时请务必小心。此外,用于删除的 PHP 脚本不会删除前提示您进行确认。

mysqladmin 二进制文件

以下示例演示了如何使用 mysqladmin 二进制文件删除现有数据库 -

[root@host]# mysqladmin -u root -p drop PRODUCTS
Enter password:******
mysql> DROP PRODUCTS
ERROR 1008 (HY000): Can't drop database 'PRODUCTS'; database doesn't exist

PHP 删除数据库脚本

PHP 使用mysql_query函数删除 MariaDB 数据库。该函数使用两个参数,其中一个参数是可选的,成功时返回“true”值,失败时返回“false”值。

句法

查看以下删除数据库脚本语法 -

bool mysql_query( sql, connection );

参数的描述如下 -

先生编号 参数及说明
1

sql

此必需参数由执行操作所需的 SQL 查询组成。

2

联系

如果未指定,此可选参数将使用最近使用的连接。

尝试以下示例代码来删除数据库 -

<html>
   <head>
      <title>Delete a MariaDB Database</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'root';
         $dbpass = 'rootpassword';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      
         if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }
         echo 'Connected successfully<br />';
         
         $sql = 'DROP DATABASE PRODUCTS';
         $retval = mysql_query( $sql, $conn );
         
         if(! $retval ){
            die('Could not delete database: ' . mysql_error());
         }

         echo "Database PRODUCTS deleted successfully\n";
         mysql_close($conn);
      ?>
   </body>
</html>

成功删除后,您将看到以下输出 -

mysql> Database PRODUCTS deleted successfully 

MariaDB - 选择数据库

连接到 MariaDB 后,您必须选择要使用的数据库,因为可能存在许多数据库。有两种方法可以执行此任务:从命令提示符或通过 PHP 脚本。

命令提示符

在命令提示符下选择数据库时,只需使用 SQL 命令“use”即可-

[root@host]# mysql -u root -p

Enter password:******

mysql> use PRODUCTS;

Database changed

mysql> SELECT database();  
+-------------------------+ 
| Database                | 
+-------------------------+ 
| PRODUCTS                | 
+-------------------------+ 

选择数据库后,所有后续命令都将在所选数据库上运行。

注意- 所有名称(例如数据库、表、字段)均区分大小写。确保命令符合正确的大小写。

PHP 选择数据库脚本

PHP提供了mysql_select_db函数用于数据库选择。该函数使用两个参数,其中一个参数是可选的,并在成功选择时返回“true”值,在失败时返回 false 值。

句法

查看以下选择数据库脚本语法。

bool mysql_select_db( db_name, connection );

参数的描述如下 -

序列号 参数及说明
1

数据库名称

此必需参数指定要使用的数据库的名称。

2

联系

如果未指定,此可选参数将使用最近使用的连接。

尝试以下示例代码来选择数据库 -

<html>
   <head>
      <title>Select a MariaDB Database</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'guest1';
         $dbpass = 'guest1a';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      
         if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }
         echo 'Connected successfully';
         
         mysql_select_db( 'PRODUCTS' );
         mysql_close($conn);
      ?>
   </body>
</html>

成功选择后,您将看到以下输出 -

mysql> Connected successfully 

MariaDB - 数据类型

良好的字段定义对于优化数据库至关重要。理想的方法要求您专门使用所需类型和大小的字段。例如,如果您仅使用 5 个字符宽的字段,则不要定义 20 个字符宽的字段。给定字段中存储的数据类型,字段(或列)类型也称为数据类型。

MariaDB 数据类型可分为数字、日期和时间以及字符串值。

数字数据类型

MariaDB 支持的数字数据类型如下:

  • TINYINT - 此数据类型表示有符号范围 -128 到 127 和无符号范围 0 到 255 之间的小整数。

  • BOOLEAN - 此数据类型将值 0 与“false”关联,将值 1 与“true”关联。

  • SMALLINT - 此数据类型表示有符号范围 -32768 到 32768 内的整数,以及无符号范围 0 到 65535 内的整数。

  • MEDIUMINT - 此数据类型表示有符号范围为 -8388608 到 8388607 的整数,以及无符号范围为 0 到 16777215 的整数。

  • INT(也称为 INTEGER) - 此数据类型表示正常大小的整数。当标记为无符号时,范围为 0 到 4294967295。当有符号(默认设置)时,范围为 -2147483648 到 2147483647。当列设置为 ZEROFILL(无符号状态)时,其所有值都会在前面添加零以放置INT 值中的 M 位。

  • BIGINT - 此数据类型表示有符号范围 9223372036854775808 到 9223372036854775807 内的整数,无符号范围 0 到 18446744073709551615。

  • DECIMAL(也称为 DEC、NUMERIC、FIXED)- 此数据类型表示精确的定点数,其中 M 指定其数字,D 指定小数点后的数字。M值不加“-”或小数点。如果 D 设置为 0,则不会出现小数或小数部分,并且该值将在 INSERT 时四舍五入到最接近的 DECIMAL。允许的最大位数为 65,小数点的最大值为 30。省略时 M 的默认值为 10,省略时 D 的默认值为 0。

  • FLOAT - 此数据类型表示值 0 的小浮点数或以下范围内的数字 -

    • -3.402823466E+38 至 -1.175494351E-38

    • 1.175494351E-38 至 3.402823466E+38

  • DOUBLE(也为REALDOUBLE PRECISION) - 此数据类型表示值 0 或以下范围内的正常大小的浮点数 -

    • -1.7976931348623157E+308 至 -2.2250738585072014E-308

    • 2.2250738585072014E-308 至 1.7976931348623157E+308

  • BIT - 此数据类型表示位字段,其中 M 指定每个值的位数。省略M时,默认为1。位值可以用“b'[value]'”应用,其中value代表0和1中的位值。对于全长,从左侧自动进行零填充;例如,“10”变为“0010”。

日期和时间数据类型

MariaDB 支持的日期和时间数据类型如下:

  • DATE - 此数据类型表示“1000-01-01”到“9999-12-31”的日期范围,并使用“YYYY-MM-DD”日期格式。

  • TIME - 此数据类型表示“-838:59:59.999999”到“838:59:59.999999”的时间范围。

  • DATETIME - 此数据类型表示范围“1000-01-01 00:00:00.000000”到“9999-12-31 23:59:59.999999”。它使用“YYYY-MM-DD HH:MM:SS”格式。

  • TIMESTAMP - 此数据类型表示“YYYY-MM-DD HH:MM:DD”格式的时间戳。它主要用于详细说明数据库修改的时间,例如插入或更新。

  • YEAR - 此数据类型表示 4 位数格式的年份。四位数字格式允许的值范围为 1901 到 2155 和 0000。

字符串数据类型

MariaDB 支持的字符串类型值如下 -

  • 字符串文字- 此数据类型表示用引号括起来的字符序列。

  • CHAR - 此数据类型表示包含指定长度空格的右填充固定长度字符串。M 表示字符的列长度,范围为 0 到 255,默认值为 1。

  • VARCHAR - 此数据类型表示可变长度字符串,M 范围(最大列长度)为 0 到 65535。

  • BINARY - 此数据类型表示二进制字节字符串,其中 M 为以字节为单位的列长度。

  • VARBINARY - 此数据类型表示可变长度的二进制字节字符串,其中 M 为列长度。

  • TINYBLOB - 此数据类型表示最大长度为 255 (28 - 1) 字节的 blob 列。在存储中,每个都使用一字节长度前缀来指示值中的字节数量。

  • BLOB - 此数据类型表示最大长度为 65,535 (216 - 1) 字节的 blob 列。在存储中,每个都使用两个字节的长度前缀来指示值中的字节数量。

  • MEDIUMBLOB - 此数据类型表示最大长度为 16,777,215 (2 24 - 1) 字节的 blob 列。在存储中,每个都使用三字节长度前缀来指示值中的字节数量。

  • LONGBLOB - 此数据类型表示最大长度为 4,294,967,295(2 32 - 1) 字节的 blob 列。在存储中,每个都使用四字节长度前缀来指示值中的字节数量。

  • TINYTEXT - 此数据类型表示最大长度为 255 (2 8 - 1) 个字符的文本列。在存储中,每个都使用一字节长度前缀来指示值中的字节数量。

  • TEXT - 此数据类型表示最大长度为 65,535 (2 16 - 1) 个字符的文本列。在存储中,每个都使用两个字节的长度前缀来指示值中的字节数量。

  • MEDIUMTEXT - 此数据类型表示最大长度为 16,777,215 (2 24 - 1) 个字符的文本列。在存储中,每个都使用三字节长度前缀来指示值中的字节数量。

  • LONGTEXT - 此数据类型表示最大长度为 4,294,967,295 或 4GB (2 32 - 1) 个字符的文本列。在存储中,每个都使用四字节长度前缀来指示值中的字节数量。

  • ENUM - 此数据类型表示仅具有列表中的单个值的字符串对象。

  • SET - 此数据类型表示具有列表中零个或多个值的字符串对象,最多有 64 个成员。SET 值在内部呈现为整数值。

MariaDB - 创建表

在本章中,我们将学习如何创建表。在创建表之前,首先确定表的名称、字段名称和字段定义。

以下是创建表的一般语法 -

CREATE TABLE table_name (column_name column_type);

查看应用于在 PRODUCTS 数据库中创建表的命令 -

databaseproducts_ tbl(
   product_id INT NOT NULL AUTO_INCREMENT,
   product_name VARCHAR(100) NOT NULL,
   product_manufacturer VARCHAR(40) NOT NULL,
   submission_date DATE,
   PRIMARY KEY ( product_id )
);

上面的例子使用“NOT NULL”作为字段属性,以避免空值引起的错误。属性“AUTO_INCRMENT”指示 MariaDB 将下一个可用值添加到 ID 字段。关键字primary key 将列定义为主。用逗号分隔的多个列可以定义主键。

创建表的两种主要方法是使用命令提示符和 PHP 脚本。

命令提示符

利用 CREATE TABLE 命令执行任务,如下所示 -

root@host# mysql -u root -p
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> CREATE TABLE products_tbl(
   -> product_id INT NOT NULL AUTO_INCREMENT,
   -> product_name VARCHAR(100) NOT NULL,
   -> product_manufacturer VARCHAR(40) NOT NULL,
   -> submission_date DATE,
   -> PRIMARY KEY ( product_id )
   -> );
mysql> SHOW TABLES;
+------------------------+
| PRODUCTS               |
+------------------------+
| products_tbl           |
+------------------------+

确保所有命令均以分号终止。

PHP 创建表脚本

PHP 提供了mysql_query()用于创建表。它的第二个参数包含必要的 SQL 命令 -

<html>
   <head>
      <title>Create a MariaDB Table</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'root';
         $dbpass = 'rootpassword';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      
         if(! $conn ){
            die('Could not connect: ' . mysql_error());
         }
         echo 'Connected successfully<br />';
         
         $sql = "CREATE TABLE products_tbl( ".
            "product_id INT NOT NULL AUTO_INCREMENT, ".
            "product_name VARCHAR(100) NOT NULL, ".
            "product_manufacturer VARCHAR(40) NOT NULL, ".
            "submission_date DATE, ".
            "PRIMARY KEY ( product_id )); ";
      
         mysql_select_db( 'PRODUCTS' );
         $retval = mysql_query( $sql, $conn );
      
         if(! $retval ) {
            die('Could not create table: ' . mysql_error());
         }
         echo "Table created successfully\n";
         
         mysql_close($conn);
      ?>
   </body>
</html>

成功创建表后,您将看到以下输出 -

mysql> Table created successfully

MariaDB - 删除表

在本章中,我们将学习删除表。

表删除非常容易,但请记住所有删除的表都是不可恢复的。表删除的一般语法如下 -

DROP TABLE table_name ;

执行表删除有两个选项:使用命令提示符或 PHP 脚本。

命令提示符

在命令提示符下,只需使用DROP TABLE SQL 命令 -

root@host# mysql -u root -p
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> DROP TABLE products_tbl

mysql> SELECT * from products_tbl
ERROR 1146 (42S02): Table 'products_tbl' doesn't exist

PHP 删除表脚本

PHP 提供了mysql_query()来删除表。只需将其第二个参数传递给适当的 SQL 命令 -

<html>
   <head>
      <title>Create a MariaDB Table</title>
   </head>

   <body>
      <?php
         $dbhost = 'localhost:3036';
         $dbuser = 'root';
         $dbpass = 'rootpassword';
         $conn = mysql_connect($dbhost, $dbuser, $dbpass);
         
         if(! $conn ) {
            die('Could not connect: ' . mysql_error());
         }
         echo 'Connected successfully<br />';
         
         $sql = "DROP TABLE products_tbl";
         mysql_select_db( 'PRODUCTS' );
         $retval = mysql_query( $sql, $conn );
      
         if(! $retval ) {
            die('Could not delete table: ' . mysql_error());
         }
         echo "Table deleted successfully\n";
         
         mysql_close($conn);
      ?>
   </body>
</html>

成功删除表后,您将看到以下输出 -

mysql> Table deleted successfully

MariaDB - 插入查询

在本章中,我们将学习如何向表中插入数据。

向表中插入数据需要使用 INSERT 命令。该命令的一般语法是 INSERT,后跟表名、字段和值。

查看下面给出的一般语法 -

INSERT INTO tablename (field,field2,...) VALUES (value, value2,...);

该语句要求对字符串值使用单引号或双引号。该语句的其他选项包括“INSERT...SET”语句、“INSERT...SELECT”语句和几个其他选项。

注意- 语句中出现的 VALUES() 函数仅适用于 INSERT 语句,如果在其他地方使用则返回 NULL。

执行该操作有两个选项:使用命令行或使用 PHP 脚本。

命令提示符

在提示符下,有多种方法可以执行选择操作。标准声明如下 -

belowmysql>
INSERT INTO products_tbl (ID_number, Nomenclature) VALUES (12345,“Orbitron 4000”);
mysql> SHOW COLUMNS FROM products_tbl;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| ID_number   | int(5)      |      |     |         |       |
| Nomenclature| char(13)    |      |     |         |       |
+-------------+-------------+------+-----+---------+-------+

您可以插入多行 -

INSERT INTO products VALUES (1, “first row”), (2, “second row”);

您还可以使用 SET 子句 -

INSERT INTO products SELECT * FROM inventory WHERE status = 'available';

PHP 插入脚本

在 PHP 函数中使用相同的“INSERT INTO...”语句来执行该操作。您将再次使用mysql_query()函数。

查看下面给出的示例 -

<?php
   if(isset($_POST['add'])) {
      $dbhost = 'localhost:3036';
      $dbuser = 'root';
      $dbpass = 'rootpassword';
      $conn = mysql_connect($dbhost, $dbuser, $dbpass);

      if(! $conn ) {
         die('Could not connect: ' . mysql_error());
      }

      if(! get_magic_quotes_gpc() ) {
         $product_name = addslashes ($_POST['product_name']);
         $product_manufacturer = addslashes ($_POST['product_name']);
      } else {
         $product_name = $_POST['product_name'];
         $product_manufacturer = $_POST['product_manufacturer'];
      }
      $ship_date = $_POST['ship_date'];
      $sql = "INSERT INTO products_tbl ".
         "(product_name,product_manufacturer, ship_date) ".
         "VALUES"."('$product_name','$product_manufacturer','$ship_date')";

      mysql_select_db('PRODUCTS');
      $retval = mysql_query( $sql, $conn );
      
      if(! $retval ) {
         die('Could not enter data: ' . mysql_error());
      }

      echo "Entered data successfully\n";
      mysql_close($conn);
   }
?>

成功插入数据后,您将看到以下输出 -

mysql> Entered data successfully

您还将验证语句与插入语句协作,例如检查以确保数据输入正确。MariaDB 为此提供了许多选项,其中一些是自动的。

MariaDB - 选择查询

在本章中,我们将学习如何从表中选择数据。

SELECT 语句检索选定的行。它们可以包括 UNION 语句、排序子句、LIMIT 子句、WHERE 子句、GROUP BY...HAVING 子句和子查询。

查看以下一般语法 -

SELECT field, field2,... FROM table_name, table_name2,... WHERE...

SELECT 语句提供了多个选项来指定所使用的表 -

  • 数据库名.表名

  • 表名.列名

  • 数据库名.表名.列名

所有 select 语句必须包含一个或多个select 表达式。选择表达式由以下选项之一组成 -

  • 列名。

  • 使用运算符和函数的表达式。

  • 规范“table_name.*”选择给定表中的所有列。

  • 字符“*”从 FROM 子句中指定的所有表中选择所有列。

可以使用命令提示符或PHP脚本来执行select语句。

命令提示符

在命令提示符下,执行语句如下 -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> SELECT * from products_tbl
+-------------+---------------+
| ID_number   | Nomenclature  |
+-------------+---------------+
| 12345       | Orbitron 4000 |
+-------------+---------------+

PHP 选择脚本

在 PHP 函数中使用相同的 SELECT 语句来执行操作。您将再次使用mysql_query()函数。查看下面给出的示例 -

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name,product_manufacturer, ship_date FROM products_tbl';
   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Product ID :{$row['product_id']} <br> ".
         "Name: {$row['product_name']} <br> ".
         "Manufacturer: {$row['product_manufacturer']} <br> ".
         "Ship Date : {$row['ship_date']} <br>".
         "--------------------------------<br>";
   }

   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

成功检索数据后,您将看到以下输出 -

Product ID: 12345
Nomenclature: Orbitron 4000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 12346
Nomenclature: Orbitron 3000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
mysql> Fetched data successfully

最佳实践建议在每个 SELECT 语句后释放游标内存。PHP为此提供了mysql_free_result()函数。回顾其用途,如下所示 -

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl';
   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "Product ID :{$row[0]} <br> ".
         "Name: {$row[1]} <br> ".
         "Manufacturer: {$row[2]} <br> ".
         "Ship Date : {$row[3]} <br> ".
         "--------------------------------<br>";
   }

   mysql_free_result($retval);
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

MariaDB -Where 子句

WHERE子句过滤各种语句,例如 SELECT、UPDATE、DELETE 和 INSERT。他们提出了用于指定行动的标准。它们通常出现在语句中的表名之后,其条件如下。WHERE 子句的功能本质上类似于 if 语句。

查看下面给出的 WHERE 子句的一般语法 -

[COMMAND] field,field2,... FROM table_name,table_name2,... WHERE [CONDITION]

请注意 WHERE 子句的以下特点 -

  • 它是可选的。

  • 它允许指定任何条件。

  • 它允许通过使用 AND 或 OR 运算符来指定多个条件。

  • 区分大小写仅适用于使用 LIKE 比较的语句。

WHERE 子句允许使用以下运算符 -

操作员
=!=
> <
>= <=

WHERE 子句可以在命令提示符处或 PHP 脚本中使用。

命令提示符

在命令提示符下,只需使用标准命令 -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> SELECT * from products_tbl WHERE product_manufacturer = 'XYZ Corp';
+-------------+----------------+----------------------+
| ID_number   | Nomenclature   | product_manufacturer |
+-------------+----------------+----------------------+
| 12345       | Orbitron 4000  | XYZ Corp             |
+-------------+----------------+----------------------+
| 12346       | Orbitron 3000  | XYZ Corp             |
+-------------+----------------+----------------------+
| 12347       | Orbitron 1000  | XYZ Corp             |
+-------------+----------------+----------------------+

查看使用AND条件的示例-

SELECT *
FROM products_tbl
WHERE product_name = 'Bun Janshu 3000';
AND product_id <= 344;

此示例结合了 AND 和 OR 条件

SELECT *
FROM products_tbl
WHERE (product_name = 'Bun Janshu 3000' AND product_id < 344)
OR (product_name = 'Bun Janshu 3000');

使用Where子句的PHP脚本

在使用 WHERE 子句的操作中使用mysql_query()函数 -

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date
      FROM products_tbl
      WHERE product_manufacturer = "XYZ Corp"';
   
   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Product ID :{$row['product_id']} <br> ".
         "Name: {$row['product_name']} <br> ".
         "Manufacturer: {$row['product_manufacturer']} <br> ".
         "Ship Date: {$row['ship_date']} <br> ".
         "--------------------------------<br>";
   }

   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

成功检索数据后,您将看到以下输出 -

Product ID: 12345
Nomenclature: Orbitron 4000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 12346
Nomenclature: Orbitron 3000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
Product ID: 12347
Nomenclature: Orbitron 1000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
mysql> Fetched data successfully

MariaDB - 更新查询

UPDATE命令通过更改值来修改现有字段。它使用 SET 子句指定要修改的列,并指定分配的新值。这些值可以是表达式,也可以是字段的默认值。设置默认值需要使用 DEFAULT 关键字。该命令还可以使用 WHERE 子句来指定更新条件和/或 ORDER BY 子句以按特定顺序进行更新。

查看以下一般语法 -

UPDATE table_name SET field=new_value, field2=new_value2,...
[WHERE ...]

从命令提示符或使用 PHP 脚本执行 UPDATE 命令。

命令提示符

在命令提示符处,只需使用标准命令根 -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> UPDATE products_tbl
   SET nomenclature = 'Fiber Blaster 300Z' WHERE ID_number = 112;
mysql> SELECT * from products_tbl WHERE ID_number='112';
+-------------+---------------------+----------------------+
| ID_number   | Nomenclature        | product_manufacturer |
+-------------+---------------------+----------------------+
| 112         | Fiber Blaster 300Z  | XYZ Corp             |
+-------------+---------------------+----------------------+      

PHP 更新查询脚本

在 UPDATE 命令语句中使用mysql_query()函数 -

<?php
   $dbhost = ‘localhost:3036’;
   $dbuser = ‘root’;
   $dbpass = ‘rootpassword’;
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die(‘Could not connect: ‘ . mysql_error());
   }

   $sql = ‘UPDATE products_tbl
      SET product_name = ”Fiber Blaster 300z”
      WHERE product_id = 112’;

   mysql_select_db(‘PRODUCTS’);
   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {
      die(‘Could not update data: ‘ . mysql_error());
   }

   echo “Updated data successfully\n”;
   mysql_close($conn);
?>

成功更新数据后,您将看到以下输出 -

mysql> Updated data successfully

MariaDB - 删除查询

DELETE 命令从指定表中删除表行,并返回删除的数量。使用 ROW_COUNT() 函数访问删除的数量。WHERE 子句指定行,如果没有该子句,则所有行都将被删除。LIMIT 子句控制删除的行数。

在多行的 DELETE 语句中,它仅删除那些满足条件的行;不允许使用 LIMIT 和 WHERE 子句。DELETE 语句允许从不同数据库的表中删除行,但不允许从表中删除然后在子查询中从同一个表中进行选择。

查看以下 DELETE 语法 -

DELETE FROM table_name [WHERE …]

从命令提示符或使用 PHP 脚本执行 DELETE 命令。

命令提示符

在命令提示符下,只需使用标准命令 -

root@host# mysql –u root –p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> DELETE FROM products_tbl WHERE product_id=133;
mysql> SELECT * from products_tbl WHERE ID_number='133';
ERROR 1032 (HY000): Can't find record in 'products_tbl'

PHP删除查询脚本

在 DELETE 命令语句中使用mysql_query()函数 -

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'DELETE FROM products_tbl WHERE product_id = 261';
   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {
      die('Could not delete data: ' . mysql_error());
   }

   echo "Deleted data successfully\n";
   mysql_close($conn);
?>

成功删除数据后,您将看到以下输出 -

mysql> Deleted data successfully
mysql> SELECT * from products_tbl WHERE ID_number='261';
ERROR 1032 (HY000): Can't find record in 'products_tbl'

MariaDB - Like 子句

WHERE 子句提供了一种在操作使用精确匹配时检索数据的方法。在需要具有共享特征的多个结果的情况下,LIKE子句可适应广泛的模式匹配。

LIKE 子句测试模式匹配,返回 true 或 false。用于比较的模式接受以下通配符:“%”,匹配字符数(0 个或更多);和“_”,匹配单个字符。“_”通配符仅匹配其集合中的字符,这意味着在使用另一个集合时它将忽略拉丁字符。默认情况下,匹配不区分大小写,需要额外设置区分大小写。

NOT LIKE 子句允许测试相反的条件,就像not运算符一样。

如果语句表达式或模式的计算结果为 NULL,则结果为 NULL。

查看下面给出的一般 LIKE 子句语法 -

SELECT field, field2,... FROM table_name, table_name2,...
WHERE field LIKE condition

在命令提示符处或 PHP 脚本中使用 LIKE 子句。

命令提示符

在命令提示符下,只需使用标准命令 -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from products_tbl
   WHERE product_manufacturer LIKE 'XYZ%';
+-------------+----------------+----------------------+
| ID_number   | Nomenclature   | product_manufacturer |
+-------------+----------------+----------------------+
| 12345       | Orbitron 4000  | XYZ Corp             |
+-------------+----------------+----------------------+
| 12346       | Orbitron 3000  | XYZ Corp             |
+-------------+----------------+----------------------+
| 12347       | Orbitron 1000  | XYZ Corp             |
+-------------+----------------+----------------------+

PHP 脚本使用 Like 子句

在使用 LIKE 子句的语句中使用mysql_query()函数

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date
      FROM products_tbl WHERE product_manufacturer LIKE "xyz%"';
   
   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Product ID:{$row['product_id']} <br> ".
         "Name: {$row['product_name']} <br> ".
         "Manufacturer: {$row['product_manufacturer']} <br> ".
         "Ship Date: {$row['ship_date']} <br> ".
         "--------------------------------<br>";
   }
   
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

成功检索数据后,您将看到以下输出 -

Product ID: 12345
Nomenclature: Orbitron 4000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 12346
Nomenclature: Orbitron 3000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
Product ID: 12347
Nomenclature: Orbitron 1000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
mysql> Fetched data successfully

MariaDB - 按子句排序

正如前面讨论中提到的, ORDER BY子句对语句的结果进行排序。它指定所操作数据的顺序,并包括按升序 (ASC) 或降序 (DESC) 排序的选项。如果省略顺序规范,则默认顺序为升序。

ORDER BY 子句出现在多种语句中,例如 DELETE 和 UPDATE。它们总是出现在语句的末尾,而不是在子查询中或集合函数之前,因为它们对最终结果表进行操作。您也不能使用整数来标识列。

查看下面给出的 ORDER BY 子句的一般语法 -

SELECT field, field2,... [or column] FROM table_name, table_name2,...
ORDER BY field, field2,... ASC[or DESC]

在命令提示符处或 PHP 脚本中使用 ORDER BY 子句。

命令提示符

在命令提示符下,只需使用标准命令 -

root@ host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed

mysql> SELECT * from products_tbl ORDER BY product_manufacturer ASC
+-------------+----------------+----------------------+
| ID_number   | Nomenclature   | product_manufacturer |
+-------------+----------------+----------------------+
| 56789       | SuperBlast 400 | LMN Corp             |
+-------------+----------------+----------------------+
| 67891       | Zoomzoom 5000  | QFT Corp             |
+-------------+----------------+----------------------+
| 12347       | Orbitron 1000  | XYZ Corp             |
+-------------+----------------+----------------------+

使用 Order By 子句的 PHP 脚本

在使用 ORDER BY 子句的语句中再次使用mysql_query()函数 -

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date 
      FROM products_tbl ORDER BY product_manufacturer DESC';

   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Product ID :{$row['product_id']} <br> ".
         "Name: {$row['product_name']} <br> ".
         "Manufacturer: {$row['product_manufacturer']} <br> ".
         "Ship Date : {$row['ship_date']} <br> ".
         "--------------------------------<br>";
   }

   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

成功检索数据后,您将看到以下输出 -

Product ID: 12347
Nomenclature: Orbitron 1000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 67891
Nomenclature: Zoomzoom 5000
Manufacturer: QFT Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 56789
Nomenclature: SuperBlast 400
Manufacturer: LMN Corp
Ship Date: 01/04/17
----------------------------------------------
mysql> Fetched data successfully

MariaDB - 加入

在之前的讨论和示例中,我们研究了从单个