MySQL 8 教程

MySQL - 主页 MySQL - 简介 MySQL - 功能 MySQL - 版本 MySQL - 变量 MySQL - 安装 MySQL - 管理 MySQL - PHP 语法 MySQL - Node.js 语法 MySQL - Java 语法 MySQL - Python 语法 MySQL - 连接 MySQL - Workbench

MySQL 8 数据库

MySQL - 创建数据库 MySQL - 删除数据库 MySQL - 选择数据库 MySQL - 显示数据库 MySQL - 复制数据库 MySQL - 数据库导出 MySQL - 数据库导入 MySQL - 数据库信息

MySQL 8 用户

MySQL - 创建用户 MySQL - 删除用户 MySQL - 显示用户 MySQL - 更改密码 MySQL - 授予权限 MySQL - 显示权限 MySQL - 撤销权限 MySQL - 锁定用户账户 MySQL - 解锁用户账户

MySQL 8 表

MySQL - 创建表 MySQL - 显示表 MySQL - 修改表 MySQL - 重命名表 MySQL - 克隆表 MySQL - 截断表 MySQL - 临时表 MySQL - 修复表 MySQL - 描述表 MySQL - 添加/删除列 MySQL - 显示列 MySQL - 重命名列 MySQL - 表锁定 MySQL - 删除表 MySQL - 派生表

MySQL 8 查询

MySQL - 查询 MySQL - 约束 MySQL - INSERT 插入查询 MySQL - SELECT 查询 MySQL - UPDATE 更新查询 MySQL - DELETE删除查询 MySQL - REPLACE 替换查询 MySQL - 忽略插入 MySQL - 重复键更新时插入 MySQL - 插入到另一个表语句

MySQL 8 视图

MySQL - 创建视图 MySQL - 更新视图 MySQL - 删除视图 MySQL - 重命名视图

MySQL 8 索引

MySQL - 索引 MySQL - 创建索引 MySQL - 删除索引 MySQL - 显示索引 MySQL - 唯一索引 MySQL - 聚集索引 MySQL - 非聚集索引

MySQL 运算符和子句

MySQL - Where 子句 MySQL - Limit 子句 MySQL - Distinct 子句 MySQL - Order By 子句 MySQL - Group By 子句 MySQL - Having 子句 MySQL - AND 运算符 MySQL - OR 或运算符 MySQL - LIKE 运算符 MySQL - IN 运算符 MySQL - ANY 运算符 MySQL - Exists 运算符 MySQL - NOT 运算符 MySQL - NOT EQUAL 运算符 MySQL - IS NULL 运算符 MySQL - IS NOT NULL 运算符 MySQL - Between 运算符 MySQL - UNION 运算符 MySQL - UNION 与 UNION ALL MySQL - MINUS 运算符 MySQL - INTERSECT 运算符 MySQL - INTERVAL 运算符

MySQL 连接

MySQL - 使用连接 MySQL - Inner Join 内连接 MySQL - LEFT JOIN 左连接 MySQL - RIGHT JOIN 右连接 MySQL - CROSS JOIN 交叉连接 MySQL - 全连接 MySQL - 自连接 MySQL - Delete Join 删除连接 MySQL - UPDATE JOIN 更新连接 MySQL - 联合 vs 连接

MySQL 键

MySQL - UNIQUE 唯一键 MySQL - PRIMARY KEY 主键 MySQL - FOREIGN KEY 外键 MySQL - 复合键 MySQL - 备用键

MySQL 触发器

MySQL - 触发器 MySQL - 创建触发器 MySQL - 显示触发器 MySQL - 删除触发器 MySQL - 插入前触发器 MySQL - 插入后触发器 MySQL - 更新前触发器 MySQL - 更新后触发器 MySQL - 删除前触发器 MySQL - 删除后触发器

MySQL 8 数据类型

MySQL - 数据类型 MySQL - VARCHAR MySQL - BOOLEAN MySQL - ENUM 枚举 MySQL - DECIMAL 十进制 MySQL - INT 整数 MySQL - FLOAT 浮点数 MySQL - BIT 位 MySQL - TINYINT 微小整数 MySQL - BLOB 二进制大对象 MySQL - SET 集合

MySQL 正则表达式

MySQL - 正则表达式 MySQL - RLIKE 运算符 MySQL - NOT LIKE 运算符 MySQL - NOT REGEXP 运算符 MySQL - regexp_instr() 函数 MySQL - regexp_like() 函数 MySQL - regexp_replace() 函数 MySQL - regexp_substr() 函数

MySQL 全文搜索

MySQL - 全文搜索 MySQL - 自然语言全文搜索 MySQL - 布尔全文搜索 MySQL - 查询扩展全文搜索 MySQL - ngram 全文解析器

MySQL8 函数和运算符

MySQL - 日期和时间函数 MySQL - 算术运算符 MySQL - 数字函数 MySQL - 字符串函数 MySQL - 聚合函数

MySQL 8 其他概念

MySQL - NULL 值 MySQL - 事务 MySQL - 序列 MySQL - 处理重复项 MySQL - SQL 注入 MySQL - 子查询 MySQL - 注释 MySQL - 检查约束 MySQL - 存储引擎 MySQL - 将表导出为 CSV 文件 MySQL - 将 CSV 文件导入数据库 MySQL - UUID MySQL - 通用表表达式 MySQL - 级联删除 MySQL - Upsert 操作 MySQL - 水平分区 MySQL - 垂直分区 MySQL - 游标 MySQL - 存储函数 MySQL - SIGNAL 异常处理 MySQL - RESIGNAL 异常处理 MySQL - 字符集 MySQL - 排序规则 MySQL - 通配符 MySQL - 别名 MySQL - ROLLUP 超级聚合 MySQL - 当前日期 MySQL - 字面量 MySQL - 存储过程 MySQL - EXPLAIN 语句 MySQL - JSON MySQL - 标准差 MySQL - 查找重复记录 MySQL - 删除重复记录 MySQL - 选择随机记录 MySQL - 显示进程列表 MySQL - 更改列类型 MySQL - 重置自动增量 MySQL - Coalesce() 函数

MySQL 8 实用资源

MySQL - 实用函数 MySQL - 语句参考 MySQL - 快速指南 MySQL - 实用资源 MySQL - 讨论


MySQL - 数据库信息

MySQL 通常存储两种类型的数据:以表和视图形式存储的实际数据,以及有关数据库结构及其对象的信息。这些信息称为元数据。

例如,当用户忘记数据库或其对象的某些信息时,MySQL 会提供特定的命令来检索这些信息。实际上,您可以从 MySQL 数据库中检索三种类型的信息。它们如下:

  • 查询结果信息 - 包括受 SELECT、UPDATE 或 DELETE 语句影响的记录数。

  • 表和数据库信息 - 包括表和数据库结构相关的信息。

  • MySQL 服务器信息 - 包括数据库服务器的状态、版本号等。

在 MySQL 提示符下获取所有这些信息非常容易,但在使用 PERL 或 PHP API 时,我们需要显式调用各种 API 来获取所有这些信息。

从 MySQL 提示符下获取数据库信息

从 MySQL 提示符访问 MySQL 服务器时,在 Windows 的命令提示符和 Linux 的终端等中,使用以下命令获取有关数据库的任何信息。

  • SHOW DATABASES:此命令用于检索 MySQL 中存在的所有数据库的列表。

  • SHOW TABLES:此命令用于显示数据库中存在的表的列表。

  • mysql -V:此命令用于提供系统中安装的 MySQL 的当前版本。

  • DESCDESCRIBE:此命令用于检索数据库表的结构或定义。

mysql -V 命令

如果要检查系统中安装的 MySQL 服务器的版本,请在命令提示符中使用以下 mysql -V 命令或终端。

注意: 您必须记住,在 Windows 中,命令提示符必须以管理员身份运行。

示例

在这里,我们在命令提示符中检查 MySQL 服务器的当前版本 -

C:\Windows\System32> mysql -V

输出

从下面的输出中我们可以看到,当前的 MySQL 服务器版本是"8.0.33"−

mysql Ver 8.0.33 for Win64 on x86_64 (MySQL Community Server - GPL)

SHOW DATABASES 命令

要列出或检索 MySQL 中所有数据库的名称,您可以在登录 MySQL 服务器后使用以下 SHOW DATABASES 命令−

注意 − 此命令将同时列出系统数据库和用户定义的数据库。用户必须识别所有数据存储在其内的特定用户定义数据库。

示例

在以下查询中,我们将获取当前 MySQL 服务器中存在的数据库列表 -

SHOW DATABASES;

此处,前三行是系统数据库,后两行是用户定义数据库 -

Database
information_schema
mysql
performance_schema
tutorials
tutorials_copy

SHOW TABLES 命令

要列出 MySQL 数据库中的所有表,您可以在使用 USE 命令选择一个数据库后,使用 SHOW TABLES 命令 -

示例

在下面的查询中,我们选择一个名为"Tutorials"的数据库 -

USE Tutorials;

现在,让我们使用 SHOW TABLES 命令获取上述数据库中所有表的名称 -

Show Tables;

输出

以下是"Tutorials"数据库中存在的表的列表 -

Tables_in_tutorials
customers
employees
students

DESC 命令

如果我们想要检查 MySQL 表的结构,我们需要使用 DESC 或 DESCRIBE 查询。DESC 是 DESCRIBE 查询的快捷方式,但返回的结果相同。

示例

这里,我们获取 MySQL CUSTOMERS 表的结构 -

DESC CUSTOMERS;

以下是结构 -

Field Type Null Key Default Extra
ID int NO PRI NULL auto_increment
NAME varchar(20) NO NULL
AGE int NO NULL
ADDRESS char(25) YES NULL
SALARY decimal(18,2) YES NULL

获取查询影响的行数

现在让我们看看如何获​​取这些信息。

PERL 示例

在 DBI 脚本中,受影响的行数由 do()execute() 命令返回,具体取决于执行查询的方式。

# 方法 1
# 使用 do() 执行 $query
my $count = $dbh->do ($query);
# 如果发生错误,则报告 0 行
printf "%d rows were affected
", (defined ($count) ? $count : 0);

# 方法 2
# 使用 prepare() 和 execute() 执行查询
my $sth = $dbh->prepare ($query);
my $count = $sth->execute ( );
printf "%d rows were affected
", (defined ($count) ? $count : 0);

PHP 示例

在 PHP 中,调用 mysql_affected_rows() 函数来查找查询更改了多少行。

$result_id = mysql_query ($query, $conn_id);
# 如果查询失败,则报告 0 行
$count = ($result_id ? mysql_affected_rows ($conn_id) : 0);
print ("$count rows were affected
");

列出表和数据库

列出数据库服务器中所有可用的数据库和表非常容易。如果您没有足够的权限,结果可能为 null

除了以下代码块中显示的方法外,您还可以使用 SHOW TABLESSHOW DATABASES 查询来获取 PHP 或 PERL 中的表或数据库列表。

PERL 示例

# 获取当前数据库中所有可用的表。
my @tables = $dbh->tables ( );

foreach $table (@tables ){
   print "Table Name $table
";
}

PHP 示例

尝试以下示例获取数据库信息 -

复制并粘贴以下示例为 mysql_example.php -

<html>
   <head>
      <title>Getting MySQL Database Info</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $dbname = 'TUTORIALS';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
         $tutorial_count = null;
		 
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
		 
         if ($result = mysqli_query($mysqli, "SELECT DATABASE()")) {
            $row = mysqli_fetch_row($result);
            printf("Default database is %s<br />", $row[0]);
            mysqli_free_result($result);
         }
         $mysqli->close();
      ?>
   </body>
</html>

输出

访问部署在 Apache Web 服务器上的 mysql_example.php 并验证输出。

Connected successfully.
Default database is tutorials

获取服务器元数据

MySQL 中有一些重要的命令,可以在 MySQL 提示符下执行,也可以使用 PHP 等脚本执行,以获取有关数据库服务器的各种重要信息。

Sr.No. 命令 &描述
1

SELECT VERSION()

服务器版本字符串

2

SELECT DATABASE()

当前数据库名称(如果没有则为空)

3

SELECT USER()

当前用户名

4

SHOW STATUS

服务器状态指标

5

SHOW VARIABLES

服务器配置变量