零点起飞学PHP之数据库管理系统.pptx_第1页
零点起飞学PHP之数据库管理系统.pptx_第2页
零点起飞学PHP之数据库管理系统.pptx_第3页
零点起飞学PHP之数据库管理系统.pptx_第4页
零点起飞学PHP之数据库管理系统.pptx_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第11章 数据库管理系统 数据库管理系统可以说是现在Web应用中必不可少的 一部分。现在的数据库管理系统有很多,常见的有 MySQL、Oracle、SQL Server、PostgreSQL等。常与 PHP搭配使用的数据库管理系统是MySQL。流行的 LAMP组合就是Linux、Apache、MySQL和PHP。由此 也可以反映出MySQL和PHP搭配的流行程度。本章我 们就主要介绍使用PHP操作MySQL。 11.1 MySQL基础 虽然PHP和MySQL组合是非常流行的,但是它们毕竟 是两种不同的技术。因此现在我们需要暂缓PHP的学 习,来了解一些MySQL或者说是对大多数数据库的操 作基础。 11.1.1 使用MySQL数据库 前的准备 由于我们使用的是集成环境,因此相关配置已经设置 得比较通用了。但是在默认的情况下通常需要配置 php.ini文件来获取PHP对MySQL的支持。php.ini文件 中需要设置的选项如下: 1005extension=php_mysql.dll 1006extension=php_mysqli.dll 在确认了以上模块被加载之后,我们就可以从XAMPP 控制面板中启动MySQL服务。 在MySQL成功启动后,就为我们的后续操作做好了基 础。 11.1.2 连接与断开 MySQL数据库 数据库管理系统是用来管理数据的。同操作文件类似的,要对数据 进行操作,就需要打开一个到数据的连接。MySQL默认的客户端是 基于命令行的,我们可以通过XAMPP控制面板中的Shell按钮来打开 一个命令行窗口。 我们可以在命令行中输入如下的命令来打开与MySQL的连接: mysql u 用户名 p 密码 在XAMPP集成环境中,默认的用户名为root,密码为空。在把上述 命令中的“用户名”替换为“root”后点击回车键提交后会提示我们输入 密码,由于密码为空,我们直接按回车即可。然后窗口中就会显示 MySQL的欢迎信息。 现在我们就已经连接了MySQL。断开与MySQL的连接可以输入 “exit”命令来退出。 以上介绍的就是连接与断开MySQL的操作。虽然这两步操作是非常 简单的,但是他们也是非常重要的两个步骤,在PHP操作数据库管 理系统的过程中同样是不可或缺的。 11.1.3 数据库操作 数据库管理系统通常使用SQL(结构化查询语言)语 句来操作。SQL是大多数关系数据库管理系统所支持 的工业标准。在接下来的大部分内容中,我们都将介 绍SQL的使用。 1.查看数据库 在一个数据库系统中可以有多个数据库,查看该数据 库管理系统中存在的数据库可以使用如下的命令: SHOW DATABASES SQL命令中的关键字通常建议使用大写。一条SQL命 令应该是以分号结束的。我们使用上面的命令来查看 当前的MySQL中所有的数据库。 从执行结果我们可以看到,现在的MySQL中存在6个 数据库。 2.创建数据库 为了我们对数据库的操作不会影响到其他数据库而导 致系统不稳定。我们通常会创建一个用于学习的数据 库。创建数据库使用的命令如下: CREATE DATABASE 数据库名称 如果期望创建的数据库名称已经存在则会报告一条错 误。创建成功则报告影响到的数据行数。下面我们就 来创建一个名为mydatabase的数据库: 我们可以再次查看数据库。 从查询结果中我们可以看到,mydatabase数据库已经 被建立。 3.删除数据库 与创建数据库对应的是删除数据库。当一个数据库不 再需要使用的时候就可以将其删除。删除一个数据库 的命令如下: DROP DATABASE 数据库名称 例如删除我们新创建的mydatabase数据库的语句如下 : DROP DATABASE mydatabase; 该语句正确执行后mydatabase数据库会被删除,这里 就不做详细演示。 4.取消操作 当我们在输入SQL命令的过程中出现错误,可以通过 在结尾加入“c”来取消当前SQL命令。例如下面的语句 : DROP DATABASE mydatabasec 11.1.4 数据表操作 在一个数据库管理系统中,通常会有多个数据库。直 接用来存储数据的是数据库中的数据表。数据表就类 似于一个二维表格。 1.选择数据库 在前面的讲解过程中我们可以看到一个数据库管理系 统中可以有多个数据库。要指定操作的数据库需要使 用的命令如下: USE 数据库名称; 这里我们可以选择一个存在的数据库。选择数据库管 理系统中名为“mysql”的数据库。 在成功选择数据库后客户端会返回“Database changed” 的提示信息。 2.显示数据库中的数据表 在成功选择一个数据库以后,我们就可以通过使用如 下命令来查看该数据库中的数据表: SHOW TABLES; 在执行该命令后通常会出现类似如下的信息: 限于篇幅问题,我们这里只列出了查询结果中的一部 分。 3.创建数据表和查看数据 表结构 创建数据表可以使用如下的语句: CREATE TABLE 数据表名 (数据表定义); 数据表名可以使用不包括“”、“/”和“.”的字符。数据表定义通常会定 义该数据表的字段名、字段类型、数据宽度、是否可以为空、主 键、自动增加和默认值。通常的形式如下: 字段名 字段类型(字段宽度) NOT NULL PRIMARY KEY AUTO_INCREMENT DEFAULT 默认值 以上的形式可以在一条SQL语句中存在多次以定义数据表的多个字 段。数据库管理系统中常用的数据类型以及其取值返回如表所示。 3.创建数据表和查看数据 表结构 类型占用存储空间说明 TINYINT1 数值类 型,有符号时的取值范围为 -128127 ,无符号时的取值范围为 0255 SMALLINT2 数值类 型,有符号时的取值范围为 - 3276832767,无符号时的取值范围为 065535 MEDIUMINT3 有符号时的取值范围为 -83886088388607, 无符号时的取值范围为 016777215 INT4 有符号时的取值范围为 - 21474836482147483647,无符号时的取值 范围为 04294967295 BIGINT8 有符号时的取值范围为 - 922337203685477580892233720368547758 07,无符号时的取值范围为 018446744073709551615 DATE3 日期和时间类 型,支持的范围为 “1000-01-01” 到“9999-12-31” TIME3 日期和时间类 型,支持的范围为 “1000-01-01 00:00:00”到“9999-12-31 23:59:59” CHAR(n)n 字符类型,可以使用n限制允许的字符长度, 取值范围为 0255 VARCHAR(n)n+1 字符类型,可以使用n限制允许的字符长度, 取值范围为 065535 3.创建数据表和查看数据 表结构 在了解了数据类型之后,我们就可以来创建一个最简 单的数据表。为了数据的安全,我们选择在前面创建 的mydatabase数据库中创建数据表,创建的代码如下 : CREATE TABLE simple_table (id INT); 以上代码执行后会输出如下的信息: mysql CREATE TABLE simple_table(id INT); Query OK, 0 rows affected (0.13 sec) 3.创建数据表和查看数据 表结构 提示信息显示查询成功,我们可以通过如下命令来查看数据表的结构: DESCRIBE 数据表名称; 查看simple_table数据表结构的语句以及执行结果如下: 从执行结果我们可以看到该表的信息,由于我们只设定了列名称和类型,因此其他选 项均使用默认值。其他选项被设置后的效果说明: NOT NULL:该选项被设置后该字段不可以为空,例如可以限制用户名字段; PRIMARY KEY:该选择用来设置字段为主键,一个表中只可有一个主键,主键的值 不可以重复。可以将ID类的字段设置为主键; DEFAULT:该选项用来设置字段的默认值。 现在我们就可以来完整地创建一个数据表。数据表的名称我们定为complete_table,数 据表的信息如表所示。 列名称数据类型可以为空自动增加默认值主键 idINTNOT NULL AUTO_INCR EMENT - PRIMARY KEY name VARCHAR(2 0) NOT NULL- sexCHAR(4)-boy- register_timeDATE- 3.创建数据表和查看数据 表结构 根据上表我们就可以使用如下的SQL语句来创建 complete_table数据表: CREATE TABLE complete_table ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, sex CHAR(4) DEFAULT boy, register_time DATE ); 执行以上语句。 3.创建数据表和查看数据 表结构 提示信息表示查询成功,说明complete_table数据表已 经创建成功。查看complete_table数据表。 从查询结果我们可以清楚地看出创建的complete_table 数据表与我们在表中所规定的信息是完全一致的。 4.修改数据表结构 数据表在创建好之后通常不会频繁改动,但是在有些时候改动表结构是必要 的。例如一个社交网站记录用户的数据表在初期id的数据类型被设置为 TINYINT型,如果注册的用户非常多,那么就有必要使用取值范围更大的数 据类型。 修改数据表的结构可以使用如下形式的语句: ALTER TABLE 数据表名 修改规则; 常用的修改规则有增加、修改和删除列,他们的形式如下: ADD 列信息; MODIFY 列名称 修改规则; DROP 列名称; 例如为complete_table数据表添加age列,我们可以使用如下的语句: ALTER TABLE complete ADD age CHAR AFTER name; 以上语句执行后会在name列后怎加名为age数据类型为char的列,执行效果如 下: mysql ALTER TABLE complete_table ADD age CHAR AFTER name; Query OK, 0 rows affected (0.09 sec) Records: 0 Duplicates: 0 Warnings: 0 查看修改后的表结构。 4.修改数据表结构 从查询结果可以看出在name列后加入了age列,如果新添加的列 要作为第一列则可以使用FIRST选项。接着我们可以MODIFY选 项来将age列的数据类型修改为TINYINT并设置为不可为空,使 用的语句及执行效果如下: mysql ALTER TABLE complete_table MODIFY age TINYINT NOT NULL; Query OK, 0 rows affected (0.09 sec) Records: 0 Duplicates: 0 Warnings: 0 再次查看数据表结构。 从修改后的表结构中我们可以看出修改的结果与我们期望的结果 是相同的。删除列的语句非常简单,删除age列可以使用如下的 语句: ALTER TABLE complete DROP age; 为了保持数据表的完整性,这里我们就不做实际演示。 5.为表添加、修改和删除 数据 在创建了期望的数据表之后我们就可以向该数据表中 添加数据了。向数据表中添加数据可以使用如下的语 句: INSERT 数据表名 (列名,) VALUES (值,); 向complete_table中插入一行数据的语句如下: INSERT complete_table (name,age,sex,register_time) VALUES(Tom,15,boy,CURDATE(); 注意:CURDATE()为MySQL中的函数,它可以获取 系统当前时间。 5.为表添加、修改和删除 数据 同创建数据表类似的,可以通过逗号来分割每行数据的值 以使用一条SQL语句向数据表中插入多行数据: 到此为止我们就为complete_table数据表中加入了4行数据。 有些数据会经常改变,我们就可以通过使用如下语句来更 改数据: UPDATE 数据表名 SET 列名称=值 WHERE 设置条件; 将数据表中Jim的年龄由16改为15的语句如下: UPDATE complete_table SET age=15 WHERE name=Jim; 注意:如果不指定设置条件则会更改数据表中所有的记 录。 5.为表添加、修改和删除 数据 删除数据表中的数据可以使用如下的形式: DELETE FROM 数据表名 WHERE 删除条件; 删除数据表中Mary的记录可以使用如下的语句: DELETE FROM complete_table WHERE name=Mary; 注意:如果不指定删除条件则会删除数据表中所有的 记录。 6.删除数据表 当一个数据表不再需要的时候就可以将其删除,可以使用 的形式如下: DROP TABLE 数据表名; 注意:该语句会删除表中的数据以及表的结构,需要谨慎 使用。 删除complete_table数据表可以使用如下的语句: DROP TABLE complete_table; 执行成功后complete数据表即被删除,查看mydatabase数据 库中的数据表。 从查询结果可以看出,mydatabase数据库中只存在 simple_table数据表。 11.1.5 查询数据操作 查询数据库操作是数据库管理系统中使用最为频繁的 操作。本节就简单介绍一下查询数据的操作。在进行 查询操作之前,我们应该建立一个如表所示的简单数 据表。 student_idnamechinesemathenglishtotal_points 1Jim856392240 2Tom667589230 3Anne927667235 4Mary789073241 5Allen907776243 11.1.5 查询数据操作 查询整个表中的数据可以使用如下的语句: SELECT * FROM 数据表名; 查看report_card数据表信息的语句以及执行效果如下: 查看数据表中指定的列可以使用如下的形式: SELECT 列名称, FROM 数据表名; 查看report_card数据表中的name和total_points列的语句 如下: mysql SELECT * FROM report_card; 11.1.5 查询数据操作 查看数据表中指定的列可以使用如下的形式: SELECT 列名称, FROM 数据表名; 查看report_card数据表中的name和total_points列的语句 如下: mysql SELECT name,total_points FROM report_card; 11.1.5 查询数据操作 与修改数据表类似的,查询数据也可以通过使用 WHERE设置查询条件,形式如下: SELECT 列名称,|* FROM 数据表名 WHERE 查 询条件; 查询report_card数据表中Anne成绩使用的语句如下: mysql SELECT * FROM report_card WHERE name=Anne; 11.1.5 查询数据操作 查询chinese列值大于80的数据并显示其name列的语句如下: mysql SELECT name FROM report_card WHERE chinese80; 查询数据操作还可以使用“ORDER BY”选项对查询结果排序,语句形式如下 : SELECT 列名称,|* FROM 数据表名 ORDER BY 列名称, ASC|DESC,; ASC和DESC选项用于控制排序方式,默认为按照升序排列(ASC)。将表 report_card按照total_points列降序排列使用的语句如下: mysql SELECT * FROM report_card ORDER BY total_points DESC; 通过使用LIMIT选项可以设置输出查询结果的条数,语法形式如下: SELECT 列名称,|* FROM 数据表名 LIMIT 行数; 将上面排序的结果只显示前3行的语句如下: mysql SELECT * FROM report_card ORDER BY total_points DESC LIMIT 3; 11.1.6 使用phpMyAdmin 管理数据库 在前面的学习过程中,我们一直都是在命令行中进行 一系列的操作。以命令行的方式操作数据库虽然效率 很高,但是对于初学者或者业余爱好者来说都是不太 友好的。phpMyAdmin是使用PHP编写的一套用户界面 友好的数据库管理工具。在我们使用的XAMPP集成环 境中就包含这个工具。因为类似的工具都对数据库的 操作进行了简化,虽然操作都非常简单,但是对于我 们学习PHP的读者来说并不是最合适的。因此本章才 会以命令行方式为主,而不是使用phpMyAdmin。下 面我们就来简单介绍一下phpMyAdmin。 1.启动phpMyAdmin 启动phpMyAdmin的方式有两种一种为直接使用浏览 器访问地址“http:/localhost/phpmyadmin/”即可。第二 种方式为从XAMPP控制面板启动。 phpMyAdmin主界面的左侧列出的是当前系统中的数 据库。大部分右侧则是一些容易理解的设置和相关的 信息。 2.管理数据库 在phpMyAdmin主界面左侧的数据库中点击一个数据库即可 查看该数据库,这里以查看mydatabase数据库为例,查看该 数据库的信息。 点击其中的数据表名称即可查看该数据表中的数据。这里 以查看report_card数据表为例。 点击数据表对应操作中的“结构”可以查看数据表的结构, 这里以complete_table为例。 点击数据表对应操作中的“插入”可以为数据表添加数据, 这里以report_card为例。 从以上一系列的介绍可以看出,phpMyAdmin的使用是非常 简单和直观的,这里我们就不多做介绍,有兴趣的读者可 以自己尝试其他操作。 11.2 使用PHP操作数据 库 在上一节中介绍了使用命令行方式或者phpMyAdmin 工具来管理数据库。本节我们来介绍使用PHP来实现 操作数据库。 11.2.1 PHP操作数据库 流程 标准的数据库操作流程分为3步: (1)打开与数据库的连接; (2)对数据库进行相关操作; (3)关闭与数据库的连接。 打开与数据库的连接可以使用mysql_connect函数,该函数的原型如下: resource mysql_connect ( string $server , string $username , string $password , bool $new_link , int $client_flags ) 参数server为MySQL服务器名,默认为“localhost:3306”;参数username为数据库的用户 名;参数password为数据库对应用户名的密码;参数new_link用来控制是否打开新的连 接;参数client_flags用于传送客户端标记,可以为以下参数: MYSQL_CLIENT_COMPRESS:使用压缩的通讯协议; MYSQL_CLIENT_IGNORE_SPACE:允许在函数名后有空格; MYSQL_CLIENT_INTERACTIVE:允许断开连接之前等候interactive_timeout时间; MYSQL_CLIENT_SSL:使用SSL加密。 mysql_connect函数通常只使用前三个参数。 关闭数据库连接可以使用mysql_close函数,它的原型如下: bool mysql_close ( resource $link_identifier ) 参数link_identifier为打开的数据库连接,如果省略该参数则关闭上一个打开的数据库连 接。该函数不是必须要调用的,当程序执行完毕后数据库管理系统会自动关闭非持久 性连接。 11.2.1 PHP操作数据库 流程 【示例11-1】演示使用mysql_connect函数连接MySQL 服务器。 服务器名称、用户名和密码错误均会导致连接失败。 但是所有参数为空的时候有可能会连接成功,因为 MySQL可能会有一个任意用户名并且没有密码的用 户。但是这些用户可能会没有足够的权限去操作 MySQL。 11.2.2 查询数据库 在成功连接数据库之后即可对数据库进行查询操作, 这就类似于在命令行方式下成功登录后向数据库发送 SQL语句。 1.发送SQL查询 在PHP中向数据库发送SQL查询可以使用mysql_query函数 ,该函数会向数据库发送SQL查询并将查询的结果返回。 mysql_query函数的原型如下: resource mysql_query ( string $query , resource $link_identifier ) 参数query即为SQL语句;可选参数link_identifier为打开的 数据库连接,如果省略则使用上一个打开的连接,没有打 开的连接,则该函数会无参数调用mysql_connect函数。以 下代码发送SQL查询来查看MySQL中存在的数据库: mysql_query(SHOW DATABSES,$link) 查询的结果会以资源类型返回,我们需要使用专门的函数 来读取返回的结果。 2.获取结果集 mysql_fetch_row、mysql_fetch_assoc和mysql_fetch_array函数可以从 返回的结果集中取出一行作为数组元素。mysql_fetch_row函数会返 回索引数组;mysql_fetch_assoc函数会返回关联数组; mysql_fetch_array可能返回关联数组或者索引数组。以上三个函数的 原型如下: array mysql_fetch_row ( resource $result ) array mysql_fetch_assoc ( resource $result ) array mysql_fetch_array ( resource $result , int $ result_type ) 三个函数中的参数result为SQL查询的结果集。mysql_fetch_array函数 的参数result_type可以为以下的取值: MYSQL_ASSOC:只返回关联数组; MYSQL_BOTH:该选项为默认值,返回有数字和字符索引的关联数 组; MYSQL_NUM:只返回索引数组。 2.获取结果集 【示例11-2】演示使用mysql_fetch_row函数取得SQL 查询的结果集。 注意:同字符串操作类似的,mysql_connect返回的资 源中也有一个类似的指针。从结果集获取数据的函数 通常会移动指针。因此上面的示例中可以使用while循 环来遍历结果集。 运行结果输出的即为MySQL中存在的数据库。 3.选择数据库 在成功连接数据库管理系统后,通常会选择一个数据库进 行操作。但是通常不会使用mysql_query函数发送SQL查询 来选择一个数据库,而是使用专门的mysql_select_db函数来 选择一个数据库,它的原型如下: bool mysql_select_db ( string $database_name ,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论