- 学习MySQL
- MySQL-主页
- MySQL - 简介
- MySQL-安装
- MySQL - 管理
- MySQL-PHP 语法
- MySQL-连接
- MySQL-创建数据库
- MySQL - 删除数据库
- MySQL - 选择数据库
- MySQL - 数据类型
- MySQL - 创建表
- MySQL - 删除表
- MySQL - 插入查询
- MySQL - 选择查询
- MySQL-Where 子句
- MySQL - 更新查询
- MySQL - 删除查询
- MySQL - Like 子句
- MySQL - 对结果进行排序
- MySQL - 使用连接
- MySQL - NULL 值
- MySQL - 正则表达式
- MySQL - 事务
- MySQL - 更改命令
- MySQL - 索引
- MySQL - 临时表
- MySQL - 克隆表
- MySQL - 数据库信息
- MySQL - 使用序列
- MySQL - 处理重复项
- MySQL - SQL 注入
- MySQL - 数据库导出
- MySQL - 数据库导入
- MySQL 有用资源
- MySQL - 有用的函数
- MySQL - 语句参考
- MySQL - 快速指南
- MySQL - 有用的资源
- MySQL - 讨论
MySQL - 快速指南
MySQL - 简介
什么是数据库?
数据库是存储数据集合的独立应用程序。每个数据库都有一个或多个不同的 API,用于创建、访问、管理、搜索和复制其所保存的数据。
也可以使用其他类型的数据存储,例如文件系统上的文件或内存中的大型哈希表,但对于这些类型的系统,数据获取和写入不会那么快速和容易。
如今,我们使用关系数据库管理系统(RDBMS)来存储和管理大量数据。这称为关系数据库,因为所有数据都存储在不同的表中,并且使用主键或称为外键的其他键建立关系。
关系数据库管理系统(RDBMS)是一个软件 -
使您能够实现包含表、列和索引的数据库。
保证各个表的行之间的引用完整性。
自动更新索引。
解释 SQL 查询并组合来自各个表的信息。
关系型数据库管理系统术语
在我们继续解释MySQL数据库系统之前,让我们先修改一些与数据库相关的定义。
数据库- 数据库是具有相关数据的表的集合。
表- 表是一个包含数据的矩阵。数据库中的表看起来像一个简单的电子表格。
列- 一列(数据元素)包含一种且同类的数据,例如列邮政编码。
行- 行(=元组、条目或记录)是一组相关数据,例如一个订阅的数据。
冗余- 存储数据两次,冗余以使系统更快。
主键- 主键是唯一的。一个键值不能在一张表中出现两次。有了一把钥匙,你只能找到一排。
外键- 外键是两个表之间的链接引脚。
复合键- 复合键(复合键)是由多列组成的键,因为一列不够唯一。
索引- 数据库中的索引类似于书本后面的索引。
引用完整性- 引用完整性确保外键值始终指向现有行。
MySQL数据库
MySQL 是一种快速、易于使用的 RDBMS,适用于许多小型和大型企业。MySQL 由瑞典公司 MySQL AB 开发、营销和支持。MySQL 变得如此流行有很多好的原因 -
MySQL 是在开源许可下发布的。因此您无需支付任何费用即可使用它。
MySQL 本身就是一个非常强大的程序。它处理最昂贵和最强大的数据库包的大部分功能。
MySQL 使用众所周知的 SQL 数据语言的标准形式。
MySQL 适用于多种操作系统和多种语言,包括 PHP、PERL、C、C++、JAVA 等。
MySQL 运行速度非常快,即使处理大型数据集也能很好地工作。
MySQL 对 PHP 非常友好,PHP 是最受赞赏的 Web 开发语言。
MySQL 支持大型数据库,表中最多可达 5000 万行或更多。表的默认文件大小限制为 4GB,但您可以将此值(如果您的操作系统可以处理)增加到 800 万太字节 (TB) 的理论限制。
MySQL 是可定制的。开源GPL许可证允许程序员修改MySQL软件以适应自己的特定环境。
在你开始之前
在开始本教程之前,您应该对 PHP 和 HTML 教程中涵盖的信息有基本的了解。
本教程主要关注在 PHP 环境中使用 MySQL。本教程中给出的许多示例对于 PHP 程序员来说非常有用。
我们建议您查看我们的PHP 教程以供参考。
MySQL-安装
MySQL 的所有下载都位于MySQL 下载。选择所需的MySQL 社区服务器版本号以及您将运行它的平台。
在 Linux/UNIX 上安装 MySQL
在 Linux 系统上安装 MySQL 的推荐方法是通过 RPM。MySQL AB 在其网站上提供以下 RPM 可供下载 -
MySQL - MySQL 数据库服务器管理数据库和表、控制用户访问并处理 SQL 查询。
MySQL-client - MySQL 客户端程序,可以连接到服务器并与服务器交互。
MySQL-devel - 编译使用 MySQL 的其他程序时派上用场的库和头文件。
MySQL-shared - MySQL 客户端的共享库。
MySQL-bench - MySQL 数据库服务器的基准测试和性能测试工具。
此处列出的 MySQL RPM 均构建在SuSE Linux 系统上,但它们通常可以毫无困难地运行在其他 Linux 变体上。
现在,您需要遵循下面给出的步骤来继续安装 -
使用root用户登录系统。
切换到包含 RPM 的目录。
通过执行以下命令安装 MySQL 数据库服务器。请记住将斜体文件名替换为 RPM 的文件名。
[root@host]# rpm -i MySQL-5.0.9-0.i386.rpm
上面的命令负责安装 MySQL 服务器、创建 MySQL 用户、创建必要的配置并自动启动 MySQL 服务器。
您可以在 /usr/bin 和 /usr/sbin 中找到所有与 MySQL 相关的二进制文件。所有表和数据库都将在 /var/lib/mysql 目录中创建。
以下代码框有一个可选但推荐的步骤,以相同的方式安装其余的 RPM -
[root@host]# rpm -i MySQL-client-5.0.9-0.i386.rpm [root@host]# rpm -i MySQL-devel-5.0.9-0.i386.rpm [root@host]# rpm -i MySQL-shared-5.0.9-0.i386.rpm [root@host]# rpm -i MySQL-bench-5.0.9-0.i386.rpm
在 Windows 上安装 MySQL
现在,任何版本的 Windows 上的默认安装都比以前容易得多,因为 MySQL 现在与安装程序一起整齐地打包在一起。只需下载安装程序包,将其解压缩到任意位置并运行 setup.exe 文件即可。
默认安装程序 setup.exe 将引导您完成这个简单的过程,并且默认情况下会将所有内容安装在 C:\mysql 下。
第一次从命令提示符启动服务器来测试服务器。转到mysqld 服务器的位置(可能是 C:\mysql\bin),然后输入 -
mysqld.exe --console
注意- 如果您使用的是 NT,则必须使用 mysqld-nt.exe 而不是 mysqld.exe
如果一切顺利,您将看到一些有关启动和InnoDB的消息。如果没有,您可能遇到权限问题。确保运行数据库进程的任何用户(可能是 MySQL)都可以访问保存数据的目录。
MySQL 不会将自己添加到开始菜单中,也没有特别好的 GUI 方式来停止服务器。因此,如果您倾向于通过双击 mysqld 可执行文件来启动服务器,您应该记住使用 mysqladmin、任务列表、任务管理器或其他 Windows 特定的方式手动停止该进程。
验证 MySQL 安装
MySQL 成功安装后,基表已初始化并且服务器已启动:您可以通过一些简单的测试来验证一切是否正常工作。
使用 mysqladmin 实用程序获取服务器状态
使用mysqladmin二进制文件检查服务器版本。该二进制文件在 Linux 上位于 /usr/bin 中,在 Windows 上位于 C:\mysql\bin 中。
[root@host]# mysqladmin --version
它将在 Linux 上产生以下结果。它可能会根据您的安装而有所不同 -
mysqladmin Ver 8.23 Distrib 5.0.9-0, for redhat-linux-gnu on i386
如果您没有收到这样的消息,那么您的安装可能存在一些问题,您需要一些帮助来修复它。
使用 MySQL 客户端执行简单的 SQL 命令
您可以通过 MySQL 客户端并使用mysql命令连接到 MySQL 服务器。此时,您不需要提供任何密码,因为默认情况下它将设置为空白。
您只需使用以下命令 -
[root@host]# mysql
它应该得到 mysql> 提示符的奖励。现在,您已连接到 MySQL 服务器,并且可以在 mysql> 提示符下执行所有 SQL 命令,如下所示 -
mysql> SHOW DATABASES; +----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.13 sec)
安装后步骤
MySQL 附带了 MySQL root 用户的空白密码。成功安装数据库和客户端后,您需要设置 root 密码,如以下代码块所示 -
[root@host]# mysqladmin -u root password "new_password";
现在要连接到 MySQL 服务器,您必须使用以下命令 -
[root@host]# mysql -u root -p Enter password:*******
UNIX 用户还希望将 MySQL 目录放入 PATH 中,这样您就不必每次要使用命令行客户端时都键入完整路径。
对于 bash,它会是这样的 -
export PATH = $PATH:/usr/bin:/usr/sbin
在启动时运行 MySQL
如果您想在启动时运行 MySQL 服务器,请确保 /etc/rc.local 文件中有以下条目。
/etc/init.d/mysqld start
另外,您应该在 /etc/init.d/ 目录中拥有 mysqld 二进制文件。
MySQL - 管理
运行和关闭 MySQL 服务器
首先检查您的 MySQL 服务器是否正在运行。您可以使用以下命令来检查它 -
ps -ef | grep mysqld
如果您的 MySql 正在运行,那么您将看到结果中列出了mysqld进程。如果服务器未运行,则可以使用以下命令启动它 -
root@host# cd /usr/bin ./safe_mysqld &
现在,如果您想关闭已经运行的 MySQL 服务器,则可以使用以下命令来完成:
root@host# cd /usr/bin ./mysqladmin -u root -p shutdown Enter password: ******
设置 MySQL 用户帐户
要向 MySQL 添加新用户,只需向数据库mysql中的用户表添加新条目即可。
以下程序是添加具有 SELECT、INSERT 和 UPDATE 权限的新用户guest的示例,密码为guest123;SQL 查询是 -
root@host# mysql -u root -p Enter password:******* mysql> use mysql; Database changed mysql> INSERT INTO user (host, user, password, select_priv, insert_priv, update_priv) VALUES ('localhost', 'guest', PASSWORD('guest123'), 'Y', 'Y', 'Y'); Query OK, 1 row affected (0.20 sec) mysql> FLUSH PRIVILEGES; Query OK, 1 row affected (0.01 sec) mysql> SELECT host, user, password FROM user WHERE user = 'guest'; +-----------+---------+------------------+ | host | user | password | +-----------+---------+------------------+ | localhost | guest | 6f8c114b58f2ce9e | +-----------+---------+------------------+ 1 row in set (0.00 sec)
添加新用户时,请记住使用 MySQL 提供的 PASSWORD() 函数对新密码进行加密。正如您在上面的示例中看到的,密码 mypass 被加密为 6f8c114b58f2ce9e。
请注意 FLUSH PRIVILEGES 语句。这告诉服务器重新加载授权表。如果您不使用它,那么至少在服务器重新启动之前您将无法使用新用户帐户连接到 MySQL。
您还可以通过在执行 INSERT 查询时将用户表中以下列的值设置为“Y”来为新用户指定其他权限,也可以稍后使用 UPDATE 查询更新它们。
- 选择权限
- 插入_权限
- 更新权限
- 删除_权限
- 创建_priv
- 删除权限
- 重新加载权限
- 关机权限
- 进程权限
- 文件权限
- 授予权限
- 参考文献_priv
- 索引_priv
- 更改_priv
添加用户帐户的另一种方法是使用 GRANT SQL 命令。以下示例将为名为TUTORIALS 的特定数据库添加用户zara和密码zara123。
root@host# mysql -u root -p password; Enter password:******* mysql> use mysql; Database changed mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP -> ON TUTORIALS.* -> TO 'zara'@'localhost' -> IDENTIFIED BY 'zara123';
这还将在 MySQL 数据库表中创建一个名为user的条目。
注意- MySQL 不会终止命令,直到您在 SQL 命令末尾给出分号 (;)。
/etc/my.cnf 文件配置
在大多数情况下,您不应触摸此文件。默认情况下,它将具有以下条目 -
[mysqld] datadir = /var/lib/mysql socket = /var/lib/mysql/mysql.sock [mysql.server] user = mysql basedir = /var/lib [safe_mysqld] err-log = /var/log/mysqld.log pid-file = /var/run/mysqld/mysqld.pid
在这里,您可以为错误日志指定不同的目录,否则您不应更改此表中的任何条目。
管理 MySQL 命令
以下是重要的 MySQL 命令的列表,您将不时使用这些命令来处理 MySQL 数据库 -
USE Databasename - 这将用于在 MySQL 工作区中选择一个数据库。
SHOW DATABASES - 列出可由 MySQL DBMS 访问的数据库。
SHOW TABLES - 使用 use 命令选择数据库后,显示数据库中的表。
SHOW COLUMNS FROM tablename:显示表的属性、属性类型、关键信息、是否允许NULL、默认值等信息。
SHOW INDEX FROM tablename - 显示表上所有索引的详细信息,包括主键。
SHOW TABLE STATUS LIKE tablename\G - 报告 MySQL DBMS 性能和统计信息的详细信息。
在下一章中,我们将讨论如何在 MySQL 中使用 PHP 语法。
MySQL-PHP 语法
MySQL 可以很好地与 PERL、C、C++、JAVA 和 PHP 等各种编程语言结合使用。在这些语言中,PHP 因其 Web 应用程序开发功能而成为最受欢迎的语言。
本教程主要关注在 PHP 环境中使用 MySQL。如果您对带有 PERL 的 MySQL 感兴趣,那么您可以考虑阅读PERL 教程。
PHP 提供了各种函数来访问 MySQL 数据库并操作 MySQL 数据库内的数据记录。您需要以与调用任何其他 PHP 函数相同的方式调用 PHP 函数。
与 MySQL 一起使用的 PHP 函数具有以下一般格式 -
mysql_function(value,value,...);
函数名称的第二部分是特定于函数的,通常是描述函数功能的单词。以下是我们将在教程中使用的两个函数 -
mysqli_connect($connect); mysqli_query($connect,"SQL statement");
以下示例显示了 PHP 调用任何 MySQL 函数的通用语法。
<html> <head> <title>PHP with MySQL</title> </head> <body> <?php $retval = mysql_function(value, [value,...]); if( !$retval ) { die ( "Error: a related error message" ); } // Otherwise MySQL or PHP Statements ?> </body> </html>
从下一章开始,我们将看到所有重要的 MySQL 功能以及 PHP。
MySQL-连接
使用 MySQL 二进制文件的 MySQL 连接
您可以在命令提示符下使用mysql二进制文件建立 MySQL 数据库。
例子
这是一个从命令提示符连接到 MySQL 服务器的简单示例 -
[root@host]# mysql -u root -p Enter password:******
这将为您提供 mysql> 命令提示符,您可以在其中执行任何 SQL 命令。以下是上述命令的结果 -
以下代码块显示了上述代码的结果 -
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2854760 to server version: 5.0.9 Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
在上面的示例中,我们使用root作为用户,但您也可以使用任何其他用户。任何用户都可以执行该用户允许的所有 SQL 操作。
您可以随时在 mysql> 提示符下使用exit命令断开与 MySQL 数据库的连接。
mysql> exit Bye
使用 PHP 脚本连接 MySQL
PHP 提供了mysql_connect()函数来打开数据库连接。该函数采用五个参数,成功时返回 MySQL 链接标识符,失败时返回 FALSE。
句法
connection mysql_connect(server,user,passwd,new_link,client_flag);
先生。 | 参数及说明 |
---|---|
1 |
服务器 可选 - 运行数据库服务器的主机名。如果未指定,则默认值为localhost:3306。 |
2 |
用户 可选 - 访问数据库的用户名。如果未指定,则默认值将是拥有服务器进程的用户的名称。 |
3 |
密码 可选 - 访问数据库的用户的密码。如果未指定,则默认密码为空。 |
4 |
新链接 可选 - 如果使用相同的参数第二次调用 mysql_connect(),则不会建立新连接;相反,将返回已打开连接的标识符。 |
5 |
客户端标志 可选 - 以下常量的组合 -
|
您可以随时使用另一个 PHP 函数mysql_close()断开与 MySQL 数据库的连接。该函数采用单个参数,该参数是mysql_connect()函数返回的连接。
句法
bool mysql_close ( resource $link_identifier );
如果未指定资源,则关闭最后打开的数据库。如果成功关闭连接,该函数返回 true,否则返回 false。
例子
尝试以下示例来连接到 MySQL 服务器 -
<html> <head> <title>Connecting MySQL Server</title> </head> <body> <?php $dbhost = 'localhost:3306'; $dbuser = 'guest'; $dbpass = 'guest123'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_close($conn); ?> </body> </html>
MySQL-创建数据库
使用 mysqladmin 创建数据库
您需要特殊权限才能创建或删除 MySQL 数据库。因此,假设您有权访问 root 用户,您可以使用 mysql mysqladmin二进制文件创建任何数据库。
例子
这是一个创建名为TUTORIALS 的数据库的简单示例-
[root@host]# mysqladmin -u root -p create TUTORIALS Enter password:******
这将创建一个名为 TUTORIALS 的 MySQL 数据库。
使用 PHP 脚本创建数据库
PHP 使用mysql_query函数来创建或删除 MySQL 数据库。该函数采用两个参数,成功时返回 TRUE,失败时返回 FALSE。
句法
bool mysql_query( sql, connection );
先生。 | 参数及说明 |
---|---|
1 | sql 必需 - 用于创建或删除 MySQL 数据库的 SQL 查询 |
2 | 联系 可选 - 如果未指定,则将使用 mysql_connect 最后打开的连接。 |
例子
以下示例创建数据库 -
<html> <head> <title>Creating MySQL 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 TUTORIALS'; $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not create database: ' . mysql_error()); } echo "Database TUTORIALS created successfully\n"; mysql_close($conn); ?> </body> </html>
删除 MySQL 数据库
使用 mysqladmin 删除数据库
您需要特殊权限才能创建或删除 MySQL 数据库。因此,假设您有权访问 root 用户,您可以使用 mysql mysqladmin二进制文件创建任何数据库。
删除任何数据库时请务必小心,因为您将丢失数据库中的所有可用数据。
这是删除上一章中创建的数据库(TUTORIALS)的示例 -
[root@host]# mysqladmin -u root -p drop TUTORIALS Enter password:******
这将向您发出警告,并确认您是否确实要删除该数据库。
Dropping the database is potentially a very bad thing to do. Any data stored in the database will be destroyed. Do you really want to drop the 'TUTORIALS' database [y/N] y Database "TUTORIALS" dropped
使用 PHP 脚本删除数据库
PHP 使用mysql_query函数来创建或删除 MySQL 数据库。该函数采用两个参数,成功时返回 TRUE,失败时返回 FALSE。
句法
bool mysql_query( sql, connection );
先生编号 | 参数及说明 |
---|---|
1 | sql 必需 - 用于创建或删除 MySQL 数据库的 SQL 查询 |
2 | 联系 可选 - 如果未指定,则将使用 mysql_connect 最后打开的连接。 |
例子
尝试以下示例来删除数据库 -
<html> <head> <title>Deleting MySQL 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 TUTORIALS'; $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not delete database: ' . mysql_error()); } echo "Database TUTORIALS deleted successfully\n"; mysql_close($conn); ?> </body> </html>
警告- 使用 PHP 脚本删除数据库时,它不会提示您进行任何确认。因此,删除 MySQL 数据库时要小心。
选择 MySQL 数据库
连接到 MySQL 服务器后,需要选择要使用的数据库。这是因为 MySQL 服务器可能有多个可用的数据库。
从命令提示符中选择 MySQL 数据库
从 mysql> 提示符中选择数据库非常简单。您可以使用SQL 命令来选择数据库。
例子
这是选择名为TUTORIALS 的数据库的示例-
[root@host]# mysql -u root -p Enter password:****** mysql> use TUTORIALS; Database changed mysql>
现在,您已经选择了TUTORIALS数据库,后续的所有操作都将在TUTORIALS数据库上进行。
注意- 所有数据库名称、表名称、表字段名称均区分大小写。因此,在给出任何 SQL 命令时,您必须使用正确的名称。
使用 PHP 脚本选择 MySQL 数据库
PHP 提供了函数mysql_select_db来选择数据库。成功时返回 TRUE,失败时返回 FALSE。
句法
bool mysql_select_db( db_name, connection );
先生。 | 参数及说明 |
---|---|
1 | 数据库名称 必需 - 要选择的 MySQL 数据库名称 |
2 | 联系 可选 - 如果未指定,则将使用 mysql_connect 最后打开的连接。 |
例子
这是一个向您展示如何选择数据库的示例。
<html> <head> <title>Selecting MySQL Database</title> </head> <body> <?php $dbhost = 'localhost:3036'; $dbuser = 'guest'; $dbpass = 'guest123'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_select_db( 'TUTORIALS' ); mysql_close($conn); ?> </body> </html>
MySQL - 数据类型
正确定义表中的字段对于数据库的整体优化非常重要。您应该仅使用您真正需要使用的字段的类型和大小。例如,如果您知道只会使用 2 个字符,则不要定义 10 个字符宽的字段。这些类型的字段(或列)也称为数据类型,位于您将在这些字段中存储的数据类型之后。
MySQL 使用许多不同的数据类型,分为三类 -
- 数字
- 日期和时间
- 字符串类型。
现在让我们详细讨论它们。
数字数据类型
MySQL 使用所有标准 ANSI SQL 数字数据类型,因此如果您从不同的数据库系统访问 MySQL,这些定义对您来说会很熟悉。
以下列表显示了常见的数值数据类型及其描述 -
INT - 可以有符号或无符号的正常大小的整数。如果有符号,则允许的范围为 -2147483648 到 2147483647。如果无符号,则允许的范围为 0 到 4294967295。您最多可以指定 11 位的宽度。
TINYINT - 一个非常小的整数,可以有符号或无符号。如果有符号,允许的范围是 -128 到 127。如果无符号,允许的范围是 0 到 255。您可以指定最多 4 位的宽度。
SMALLINT - 可以有符号或无符号的小整数。如果有符号,允许的范围是 -32768 到 32767。如果无符号,允许的范围是 0 到 65535。您可以指定最多 5 位的宽度。
MEDIUMINT - 可以有符号或无符号的中等大小的整数。如果有符号,允许的范围是 -8388608 到 8388607。如果无符号,允许的范围是 0 到 16777215。您最多可以指定 9 位的宽度。
BIGINT - 可以有符号或无符号的大整数。如果有符号,则允许的范围为 -9223372036854775808 到 9223372036854775807。如果无符号,则允许的范围为 0 到 18446744073709551615。您最多可以指定 20 位的宽度。
FLOAT(M,D) - 不能无符号的浮点数。您可以定义显示长度 (M) 和小数位数 (D)。这不是必需的,默认为 10,2,其中 2 是小数位数,10 是总位数(包括小数)。FLOAT 的小数精度可以达到 24 位。
DOUBLE(M,D) - 不能无符号的双精度浮点数。您可以定义显示长度 (M) 和小数位数 (D)。这不是必需的,默认为 16,4,其中 4 是小数位数。对于 DOUBLE,小数精度可以达到 53 位。REAL 是 DOUBLE 的同义词。
DECIMAL(M,D) - 无法无符号的未压缩浮点数。在解压缩的小数中,每个小数对应一个字节。需要定义显示长度 (M) 和小数位数 (D)。NUMERIC 是 DECIMAL 的同义词。
日期和时间类型
MySQL 日期和时间数据类型如下 -
DATE - YYYY-MM-DD 格式的日期,介于 1000-01-01 和 9999-12-31 之间。例如,1973 年 12 月 30 日将存储为 1973-12-30。
DATETIME - YYYY-MM-DD HH:MM:SS 格式的日期和时间组合,介于 1000-01-01 00:00:00 和 9999-12-31 23:59:59 之间。例如,1973 年12月 30 日下午 3:30将存储为 1973-12-30 15:30:00。
TIMESTAMP - 1970 年 1 月 1日午夜到 2037 年某个时间之间的时间戳。这看起来像以前的 DATETIME 格式,只是数字之间没有连字符;1973 年12月 30 日下午 3:30将存储为 19731230153000 (YYYYMMDDHHMMSS)。
TIME - 以 HH:MM:SS 格式存储时间。
YEAR(M) - 以 2 位或 4 位格式存储年份。如果长度指定为 2(例如 YEAR(2)),则 YEAR 可以介于 1970 到 2069(70 到 69)之间。如果长度指定为 4,则 YEAR 可以是 1901 到 2155。默认长度为 4。
字符串类型
尽管数字和日期类型很有趣,但您存储的大多数数据都将采用字符串格式。此列表描述了 MySQL 中常见的字符串数据类型。
CHAR(M) - 长度在 1 到 255 个字符之间的固定长度字符串(例如 CHAR(5)),存储时用空格右侧填充到指定长度。不需要定义长度,但默认值为 1。
VARCHAR(M) - 长度在 1 到 255 个字符之间的可变长度字符串。例如,VARCHAR(25)。创建 VARCHAR 字段时必须定义长度。
BLOB 或 TEXT - 最大长度为 65535 个字符的字段。BLOB 是“二进制大型对象”,用于存储大量二进制数据,例如图像或其他类型的文件。定义为 TEXT 的字段也保存大量数据。两者之间的区别在于,存储数据的排序和比较在 BLOB 中区分大小写,而在 TEXT 字段中不区分大小写。不使用 BLOB 或 TEXT 指定长度。
TINYBLOB 或 TINYTEXT - 最大长度为 255 个字符的 BLOB 或 TEXT 列。未使用 TINYBLOB 或 TINYTEXT 指定长度。
MEDIUMBLOB 或 MEDIUMTEXT - 最大长度为 16777215 个字符的 BLOB 或 TEXT 列。您未使用 MEDIUMBLOB 或 MEDIUMTEXT 指定长度。
LONGBLOB 或 LONGTEXT - 最大长度为 4294967295 个字符的 BLOB 或 TEXT 列。您未使用 LONGBLOB 或 LONGTEXT 指定长度。
ENUM - 枚举,这是列表的一个奇特术语。定义 ENUM 时,您正在创建一个项目列表,必须从中选择值(或者可以为 NULL)。例如,如果您希望字段包含“A”或“B”或“C”,则可以将 ENUM 定义为 ENUM('A'、'B'、'C')并且仅包含这些值(或 NULL)可能会填充该字段。
下一章我们将讨论如何在 MySQL 中创建表。
创建 MySQL 表
首先,表创建命令需要以下详细信息 -
- 表名
- 字段名称
- 每个字段的定义
句法
以下是创建 MySQL 表的通用 SQL 语法 -
CREATE TABLE table_name (column_name column_type);
现在,我们将在TUTORIALS数据库中创建下表。
create table tutorials_tbl( tutorial_id INT NOT NULL AUTO_INCREMENT, tutorial_title VARCHAR(100) NOT NULL, tutorial_author VARCHAR(40) NOT NULL, submission_date DATE, PRIMARY KEY ( tutorial_id ) );
在这里,有几项需要解释 -
使用字段属性NOT NULL是因为我们不希望该字段为 NULL。因此,如果用户尝试创建具有 NULL 值的记录,那么 MySQL 将引发错误。
字段属性AUTO_INCRMENT告诉 MySQL 继续将下一个可用数字添加到 id 字段。
关键字PRIMARY KEY用于将列定义为主键。您可以使用以逗号分隔的多个列来定义主键。
从命令提示符创建表
通过 mysql> 提示符可以轻松创建 MySQL 表。您将使用 SQL 命令CREATE TABLE来创建表。
例子
这是一个示例,它将创建tutorials_tbl -
root@host# mysql -u root -p Enter password:******* mysql> use TUTORIALS; Database changed mysql> CREATE TABLE tutorials_tbl( -> tutorial_id INT NOT NULL AUTO_INCREMENT, -> tutorial_title VARCHAR(100) NOT NULL, -> tutorial_author VARCHAR(40) NOT NULL, -> submission_date DATE, -> PRIMARY KEY ( tutorial_id ) -> ); Query OK, 0 rows affected (0.16 sec) mysql>
注意- MySQL 不会终止命令,除非您在 SQL 命令末尾给出分号 (;)。
使用 PHP 脚本创建表
要在任何现有数据库中创建新表,您需要使用 PHP 函数mysql_query()。您将使用正确的 SQL 命令传递其第二个参数来创建表。
例子
以下程序是使用 PHP 脚本创建表的示例 -
<html> <head> <title>Creating MySQL Tables</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 tutorials_tbl( ". "tutorial_id INT NOT NULL AUTO_INCREMENT, ". "tutorial_title VARCHAR(100) NOT NULL, ". "tutorial_author VARCHAR(40) NOT NULL, ". "submission_date DATE, ". "PRIMARY KEY ( tutorial_id )); "; mysql_select_db( 'TUTORIALS' ); $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 表
删除现有的 MySQL 表非常容易,但删除任何现有表时需要非常小心,因为删除表后丢失的数据将无法恢复。
句法
下面是删除 MySQL 表的通用 SQL 语法 -
DROP TABLE table_name ;
从命令提示符删除表
要从命令提示符删除表,我们需要在 mysql> 提示符下执行 DROP TABLE SQL 命令。
例子
以下程序是删除tutorials_tbl的示例-
root@host# mysql -u root -p Enter password:******* mysql> use TUTORIALS; Database changed mysql> DROP TABLE tutorials_tbl Query OK, 0 rows affected (0.8 sec) mysql>
使用 PHP 脚本删除表
要删除任何数据库中的现有表,您需要使用 PHP 函数mysql_query()。您将使用适当的 SQL 命令传递其第二个参数来删除表。
例子
<html> <head> <title>Creating MySQL Tables</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 tutorials_tbl"; mysql_select_db( 'TUTORIALS' ); $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 - 插入查询
要将数据插入 MySQL 表,您需要使用 SQL INSERT INTO命令。您可以使用 mysql> 提示符或使用任何脚本(例如 PHP)将数据插入 MySQL 表中。
句法
以下是 INSERT INTO 命令的通用 SQL 语法,用于将数据插入 MySQL 表 -
INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );
要插入字符串数据类型,需要将所有值保留在双引号或单引号中。例如“值”。
从命令提示符插入数据
要从命令提示符插入数据,我们将使用 SQL INSERT INTO 命令将数据插入 MySQL 表tutorials_tbl。
例子
以下示例将在tutorials_tbl表中创建3条记录 -
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> INSERT INTO tutorials_tbl ->(tutorial_title, tutorial_author, submission_date) ->VALUES ->("Learn PHP", "John Poul", NOW()); Query OK, 1 row affected (0.01 sec) mysql> INSERT INTO tutorials_tbl ->(tutorial_title, tutorial_author, submission_date) ->VALUES ->("Learn MySQL", "Abdul S", NOW()); Query OK, 1 row affected (0.01 sec) mysql> INSERT INTO tutorials_tbl ->(tutorial_title, tutorial_author, submission_date) ->VALUES ->("JAVA Tutorial", "Sanjay", '2007-05-06'); Query OK, 1 row affected (0.01 sec) mysql>
注意- 请注意所有箭头符号 (->) 并不是 SQL 命令的一部分。它们指示新行,并且由 MySQL 提示符自动创建,同时按 Enter 键,而不在命令的每行末尾给出分号。
在上面的示例中,我们没有提供tutorial_id,因为在创建表时,我们已经为此字段指定了AUTO_INCRMENT选项。因此 MySQL 会自动插入这些 ID。这里,NOW()是一个MySQL函数,它返回当前日期和时间。
使用 PHP 脚本插入数据
您可以在 PHP 函数mysql_query()中使用相同的 SQL INSERT INTO 命令将数据插入 MySQL 表中。
例子
此示例将从用户处获取三个参数并将它们插入到 MySQL 表中 -
<html> <head> <title>Add New Record in MySQL Database</title> </head> <body> <?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() ) { $tutorial_title = addslashes ($_POST['tutorial_title']); $tutorial_author = addslashes ($_POST['tutorial_author']); } else { $tutorial_title = $_POST['tutorial_title']; $tutorial_author = $_POST['tutorial_author']; } $submission_date = $_POST['submission_date']; $sql = "INSERT INTO tutorials_tbl ". "(tutorial_title,tutorial_author, submission_date) "."VALUES ". "('$tutorial_title','$tutorial_author','$submission_date')"; mysql_select_db('TUTORIALS'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not enter data: ' . mysql_error()); } echo "Entered data successfully\n"; mysql_close($conn); } else { ?> <form method = "post" action = "<?php $_PHP_SELF ?>"> <table width = "600" border = "0" cellspacing = "1" cellpadding = "2"> <tr> <td width = "250">Tutorial Title</td> <td> <input name = "tutorial_title" type = "text" id = "tutorial_title"> </td> </tr> <tr> <td width = "250">Tutorial Author</td> <td> <input name = "tutorial_author" type = "text" id = "tutorial_author"> </td> </tr> <tr> <td width = "250">Submission Date [ yyyy-mm-dd ]</td> <td> <input name = "submission_date" type = "text" id = "submission_date"> </td> </tr> <tr> <td width = "250"> </td> <td> </td> </tr> <tr> <td width = "250"> </td> <td> <input name = "add" type = "submit" id = "add" value = "Add Tutorial"> </td> </tr> </table> </form> <?php } ?> </body> </html>
在进行数据插入时,最好使用函数get_magic_quotes_gpc()来检查当前的 magic quote 配置是否已设置。如果此函数返回 false,则使用函数addslashes()在引号前添加斜杠。
您可以进行许多验证来检查输入的数据是否正确,并可以采取适当的操作。
MySQL - 选择查询
SQL SELECT命令用于从 MySQL 数据库获取数据。您可以在 mysql> 提示符以及任何脚本(如 PHP)中使用此命令。
句法
以下是从 MySQL 表中获取数据的 SELECT 命令的通用 SQL 语法 -
SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE Clause] [OFFSET M ][LIMIT N]
您可以使用一个或多个以逗号分隔的表来包含使用 WHERE 子句的各种条件,但 WHERE 子句是 SELECT 命令的可选部分。
您可以在单个 SELECT 命令中获取一个或多个字段。
您可以指定星号 (*) 来代替字段。在这种情况下,SELECT 将返回所有字段。
您可以使用 WHERE 子句指定任何条件。
您可以使用OFFSET指定一个偏移量,从该偏移量 SELECT 将开始返回记录。默认情况下,偏移量从零开始。
您可以使用LIMIT属性限制退货数量。
从命令提示符获取数据
这将使用 SQL SELECT 命令从 MySQL 表tutorials_tbl获取数据。
例子
以下示例将返回tutorials_tbl表中的所有记录-
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> SELECT * from tutorials_tbl +-------------+----------------+-----------------+-----------------+ | tutorial_id | tutorial_title | tutorial_author | submission_date | +-------------+----------------+-----------------+-----------------+ | 1 | Learn PHP | John Poul | 2007-05-21 | | 2 | Learn MySQL | Abdul S | 2007-05-21 | | 3 | JAVA Tutorial | Sanjay | 2007-05-21 | +-------------+----------------+-----------------+-----------------+ 3 rows in set (0.01 sec) mysql>
使用 PHP 脚本获取数据
您可以在 PHP 函数mysql_query()中使用相同的 SQL SELECT 命令。该函数用于执行SQL命令,然后可以使用另一个PHP函数mysql_fetch_array()来获取所有选定的数据。此函数以关联数组、数值数组或两者的形式返回行。如果没有更多行,则此函数返回 FALSE。
以下程序是一个简单的示例,它将展示如何从tutorials_tbl表中获取/显示记录。
例子
以下代码块将显示tutorials_tbl表中的所有记录。
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl'; mysql_select_db('TUTORIALS'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Tutorial ID :{$row['tutorial_id']} <br> ". "Title: {$row['tutorial_title']} <br> ". "Author: {$row['tutorial_author']} <br> ". "Submission Date : {$row['submission_date']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn); ?>
行的内容被分配给变量 $row,然后打印该行中的值。
注意- 当您想要将数组值直接插入字符串时,请始终记住添加大括号。
在上面的示例中,常量MYSQL_ASSOC用作 PHP 函数mysql_fetch_array()的第二个参数,以便它以关联数组的形式返回行。使用关联数组,您可以使用字段名称而不是索引来访问字段。
PHP 提供了另一个名为mysql_fetch_assoc()的函数,它也以关联数组的形式返回行。
例子
以下示例使用 mysql_fetch_assoc() 函数显示tutorial_tbl 表中的所有记录。
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl'; mysql_select_db('TUTORIALS'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_assoc($retval)) { echo "Tutorial ID :{$row['tutorial_id']} <br> ". "Title: {$row['tutorial_title']} <br> ". "Author: {$row['tutorial_author']} <br> ". "Submission Date : {$row['submission_date']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn); ?>
您还可以使用常量MYSQL_NUM作为 PHP 函数 mysql_fetch_array() 的第二个参数。这将导致函数返回带有数字索引的数组。
例子
尝试以下示例,使用 MYSQL_NUM 参数显示tutorials_tbl 表中的所有记录。
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl'; mysql_select_db('TUTORIALS'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_NUM)) { echo "Tutorial ID :{$row[0]} <br> ". "Title: {$row[1]} <br> ". "Author: {$row[2]} <br> ". "Submission Date : {$row[3]} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn); ?>
所有上述三个示例都会产生相同的结果。
释放内存
最好在每个 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 tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl'; mysql_select_db('TUTORIALS'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_NUM)) { echo "Tutorial ID :{$row[0]} <br> ". "Title: {$row[1]} <br> ". "Author: {$row[2]} <br> ". "Submission Date : {$row[3]} <br> ". "--------------------------------<br>"; } mysql_free_result($retval); echo "Fetched data successfully\n"; mysql_close($conn); ?>
在获取数据时,您可以编写任意复杂的代码,但过程将保持与上面提到的相同。
MySQL - WHERE 子句
我们已经看到了从 MySQL 表中获取数据的SQL SELECT命令。我们可以使用称为WHERE 子句的条件子句来过滤结果。使用此 WHERE 子句,我们可以指定选择标准以从表中选择所需的记录。
句法
以下代码块具有 SELECT 命令的通用 SQL 语法,带有 WHERE 子句,用于从 MySQL 表中获取数据 -
SELECT field1, field2,...fieldN table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....
您可以使用一个或多个由逗号分隔的表来包含使用 WHERE 子句的各种条件,但 WHERE 子句是 SELECT 命令的可选部分。
您可以使用 WHERE 子句指定任何条件。
您可以使用AND或OR运算符指定多个条件。
WHERE 子句还可以与 DELETE 或 UPDATE SQL 命令一起使用来指定条件。
WHERE子句的工作方式类似于任何编程语言中的if 条件。该子句用于将给定值与 MySQL 表中可用的字段值进行比较。如果外部给定的值等于 MySQL 表中的可用字段值,则返回该行。
以下是可与WHERE子句一起使用的运算符列表。
假设字段 A 包含 10,字段 B 包含 20,则 -
操作员 | 描述 | 例子 |
---|---|---|
= | 检查两个操作数的值是否相等,如果相等,则条件成立。 | (A = B) 不正确。 |
!= | 检查两个操作数的值是否相等,如果不相等则条件成立。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 | (A > B) 不正确。 |
< | 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 | (A < B) 为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 | (A >= B) 不正确。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 | (A <= B) 为真。 |
当您想要从表中获取选定的行时,特别是当您使用MySQL Join时,WHERE 子句非常有用。连接将在另一章中讨论。
使用主键搜索记录是一种常见的做法,可以使搜索速度更快。
如果给定条件与表中的任何记录都不匹配,则查询将不会返回任何行。
从命令提示符获取数据
这将使用带有 WHERE 子句的 SQL SELECT 命令从 MySQL 表tutorials_tbl中获取所选数据。
例子
以下示例将返回tutorials_tbl表中作者姓名为Sanjay的所有记录。
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> SELECT * from tutorials_tbl WHERE tutorial_author = 'Sanjay'; +-------------+----------------+-----------------+-----------------+ | tutorial_id | tutorial_title | tutorial_author | submission_date | +-------------+----------------+-----------------+-----------------+ | 3 | JAVA Tutorial | Sanjay | 2007-05-21 | +-------------+----------------+-----------------+-----------------+ 1 rows in set (0.01 sec) mysql>
除非对字符串执行LIKE比较,否则比较不区分大小写。您可以使用BINARY关键字使搜索区分大小写,如下所示 -
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> SELECT * from tutorials_tbl \ WHERE BINARY tutorial_author = 'sanjay'; Empty set (0.02 sec) mysql>
使用 PHP 脚本获取数据
您可以在 PHP 函数mysql_query()中使用相同的 SQL SELECT 命令和 WHERE CLAUSE 。该函数用于执行SQL命令,稍后可以使用另一个PHP函数mysql_fetch_array()来获取所有选定的数据。此函数以关联数组、数值数组或两者的形式返回一行。如果没有更多行,则此函数返回 FALSE。
例子
以下示例将返回tutorials_tbl表中作者姓名为Sanjay的所有记录-
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl WHERE tutorial_author = "Sanjay"'; mysql_select_db('TUTORIALS'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Tutorial ID :{$row['tutorial_id']} <br> ". "Title: {$row['tutorial_title']} <br> ". "Author: {$row['tutorial_author']} <br> ". "Submission Date : {$row['submission_date']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn); ?>
MySQL - 更新查询
可能存在需要修改 MySQL 表中现有数据的需求。您可以使用 SQL UPDATE命令来执行此操作。这将修改任何 MySQL 表的任何字段值。
句法
以下代码块具有 UPDATE 命令的通用 SQL 语法,用于修改 MySQL 表中的数据 -
UPDATE table_name SET field1 = new-value1, field2 = new-value2 [WHERE Clause]
- 您可以更新一个或多个字段。
- 您可以使用 WHERE 子句指定任何条件。
- 您一次可以更新一个表中的值。
当您想要更新表中选定的行时,WHERE 子句非常有用。
从命令提示符更新数据
这将使用带有 WHERE 子句的 SQL UPDATE 命令来更新 MySQL 表tutorials_tbl中的选定数据。
例子
以下示例将更新tutorial_id 为3 的记录的tutorial_title字段。
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> UPDATE tutorials_tbl -> SET tutorial_title = 'Learning JAVA' -> WHERE tutorial_id = 3; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql>
使用 PHP 脚本更新数据
您可以在 PHP 函数mysql_query()中使用带或不带 WHERE 子句的 SQL UPDATE 命令。该函数将以与在 mysql> 提示符下执行类似的方式执行 SQL 命令。
例子
以下示例更新了tutorial_id 为3 的记录的tutorial_title字段。
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'UPDATE tutorials_tbl SET tutorial_title="Learning JAVA" WHERE tutorial_id=3'; mysql_select_db('TUTORIALS'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not update data: ' . mysql_error()); } echo "Updated data successfully\n"; mysql_close($conn); ?>
MySQL - 删除查询
如果您想删除一条记录