- MySQL 基础
- MySQL - 首页
- MySQL - 简介
- MySQL - 特性
- MySQL - 版本
- MySQL - 变量
- MySQL - 安装
- MySQL - 管理
- MySQL - PHP 语法
- MySQL - Node.js 语法
- MySQL - Java 语法
- MySQL - Python 语法
- MySQL - 连接
- MySQL - Workbench
- MySQL 数据库
- MySQL - 创建数据库
- MySQL - 删除数据库
- MySQL - 选择数据库
- MySQL - 显示数据库
- MySQL - 复制数据库
- MySQL - 数据库导出
- MySQL - 数据库导入
- MySQL - 数据库信息
- MySQL 用户
- MySQL - 创建用户
- MySQL - 删除用户
- MySQL - 显示用户
- MySQL - 修改密码
- MySQL - 授予权限
- MySQL - 显示权限
- MySQL - 收回权限
- MySQL - 锁定用户账户
- MySQL - 解锁用户账户
- MySQL 表
- MySQL - 创建表
- MySQL - 显示表
- MySQL - 修改表
- MySQL - 重命名表
- MySQL - 克隆表
- MySQL - 清空表
- MySQL - 临时表
- MySQL - 修复表
- MySQL - 描述表
- MySQL - 添加/删除列
- MySQL - 显示列
- MySQL - 重命名列
- MySQL - 表锁
- MySQL - 删除表
- MySQL - 派生表
- MySQL 查询
- MySQL - 查询
- MySQL - 约束
- MySQL - 插入查询
- 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 - 不等于运算符
- 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 - FULL JOIN
- MySQL - 自连接
- MySQL - 删除连接
- MySQL - 更新连接
- MySQL - UNION 与 JOIN
- MySQL 触发器
- MySQL - 触发器
- MySQL - 创建触发器
- MySQL - 显示触发器
- MySQL - 删除触发器
- MySQL - INSERT 之前触发器
- MySQL - INSERT 之后触发器
- MySQL - UPDATE 之前触发器
- MySQL - UPDATE 之后触发器
- MySQL - DELETE 之前触发器
- MySQL - DELETE 之后触发器
- MySQL 数据类型
- 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 - 聚合函数
- MySQL 其他概念
- MySQL - NULL 值
- MySQL - 事务
- MySQL - 使用序列
- MySQL - 处理重复项
- MySQL - SQL 注入
- MySQL - 子查询
- MySQL - 注释
- MySQL - 检查约束
- MySQL - 存储引擎
- MySQL - 将表导出到 CSV 文件
- MySQL - 将 CSV 文件导入到数据库
- MySQL - UUID
- MySQL - 公共表表达式
- MySQL - ON DELETE CASCADE
- 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 - 显示 Processlist
- MySQL - 更改列类型
- MySQL - 重置自动递增
- MySQL - Coalesce() 函数
- MySQL 有用资源
- 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 版本。
DESC 或 DESCRIBE:此命令用于检索数据库表的结构或定义。
mysql -V 命令
如果要检查系统中安装的 MySQL Server 版本,请在命令提示符或终端上使用以下 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;
这里,前三行是系统数据库,后两行是用户定义的数据库 -
数据库 |
---|
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;
以下是结构 -
字段 | 类型 | 空 | 键 | 默认值 | 额外 |
---|---|---|---|---|---|
ID | int | 否 | PRI | 空 | auto_increment |
NAME | varchar(20) | 否 | 空 | ||
AGE | int | 否 | 空 | ||
ADDRESS | char(25) | 是 | 空 | ||
SALARY | decimal(18,2) | 是 | 空 |
获取查询影响的行数
现在让我们看看如何获取此信息。
PERL 示例
在 DBI 脚本中,受影响的行数由do( )或execute( )命令返回,具体取决于您如何执行查询。
# Method 1 # execute $query using do( ) my $count = $dbh->do ($query); # report 0 rows if an error occurred printf "%d rows were affected\n", (defined ($count) ? $count : 0); # Method 2 # execute query using prepare( ) plus execute( ) my $sth = $dbh->prepare ($query); my $count = $sth->execute ( ); printf "%d rows were affected\n", (defined ($count) ? $count : 0);
PHP 示例
在 PHP 中,调用mysql_affected_rows( )函数以找出查询更改了多少行。
$result_id = mysql_query ($query, $conn_id); # report 0 rows if the query failed $count = ($result_id ? mysql_affected_rows ($conn_id) : 0); print ("$count rows were affected\n");
列出表和数据库
列出数据库服务器上所有可用数据库和表非常容易。如果您没有足够的权限,则您的结果可能是null。
除了以下代码块中显示的方法外,您还可以使用SHOW TABLES或SHOW DATABASES查询在 PHP 或 PERL 中获取表或数据库列表。
PERL 示例
# Get all the tables available in current database. my @tables = $dbh->tables ( ); foreach $table (@tables ){ print "Table Name $table\n"; }
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 等任何脚本执行,以获取有关数据库服务器的各种重要信息。
序号 | 命令和描述 |
---|---|
1 |
SELECT VERSION( ) 服务器版本字符串 |
2 |
SELECT DATABASE( ) 当前数据库名称(如果无则为空) |
3 |
SELECT USER( ) 当前用户名 |
4 |
SHOW STATUS 服务器状态指示器 |
5 |
SHOW VARIABLES 服务器配置变量 |