《《PHP安全开发案例教程》第6章.pptx》由会员分享,可在线阅读,更多相关《《PHP安全开发案例教程》第6章.pptx(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第6章 MySQL数据库操作学习目标1、了解MySQL数据库的概述和特点2、掌握通过命令操作MySQL数据库和数据表3、掌握通过命令操作MySQL数据4、了解phpMyAdmin图形化管理工具5、掌握PHP操作MySQL数据库6.1 MySQL概述6.1.1 MySQL的基础数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。关系型数据库是建立在关系模型(二维表格模型)基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之
2、一,在 WEB 应用方面,MySQL是最好的关系数据库管理系统(Relational Database Management System,RDBMS)应用软件。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,分为社区版和商业版。6.1.1 MySQL的基础MySQL最新稳定版本是5.7.20,若是生产环境,则优先选择这个版本。2017年9月21日MySQL 8.0.3 RC(发布候选版)发布,若是需要体验最新的数据库功能则可以选择这个版本。总的说来,MySQL有如下特点:(1)Mysql是开源的,所以不需要支付额外的费用。(2)Mysql支持大
3、型的数据库。可以处理拥有上千万条记录的大型数据库。(3)MySQL使用标准的SQL数据语言形式。(4)Mysql可以允许于多个系统上,并且支持多种语言。(5)Mysql对PHP有很好的支持,PHP是目前最流行的Web开发语言。(6)Mysql是可以定制的,采用了GPL协议,可以修改源码来开发自己的Mysql系统。6.1.2 MySQL数据类型数据类型也称字段类型或列类型,数据表中的每个字段都可以设置数据类型。MySQL支持多种列类型:数值类型、日期/时间类型和字符串(字符)类型。MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIM
4、AL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。每个整数类型的存储和范围见表6-1所示。1.数值类型6.1.2 MySQL数据类型表示时间值的DATE和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。每个时间类型有一个有效值范围和一个“零”值,当指定不合法的MySQL不能表示的值时使用“零”值。TIMESTAMP类型有专有的自动更新特性。日
5、期/时间类型的存储和范围见表6-2所示。2.日期/时间类型字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。字符串类型的存储和范围见表6-3所示。3.字符串类型6.2 通过命令行使用MySQL6.2.1 启动和关闭MySQL服务器(1)从Windows命令行启动MySQL依次点击“开始”“附件”,右击“命令提示符”命令,从弹出的菜单中选择“以管理员身份运行”命令,从弹出的对话框中输入“net start MySQL57”,按回车键后会看到MySQL的启动信息1.启动MySQL服务器(2)以Windows服务方式启动MySQL在NT家族
6、中,一般都将MySQL安装为Windows服务,当Windows启动、停止时,MySQL也自动启动、停止。还可以从命令行使用NET命令,或使用图形Services工具来控制MySQL服务器。6.2.1 启动和关闭MySQL服务器(1)从Windows命令行关闭MySQL依次点击“开始”“附件”,右击“命令提示符”命令,从弹出的菜单中选择“以管理员身份运行”命令,从弹出的对话框中输入“net stop MySQL57”,按回车键后会看到MySQL的关闭信息。2.关闭MySQL服务器(2)从Windows服务中关闭MySQL点“开始”“控制面板”“管理工具”“服务”,选中“MySQL57”,再点左
7、边的“停止”即可关闭MySQL服务器。6.2.2 操作MySQL数据库可用命令行方式连接MySQL服务器,命令的具体格式是:mysql-u 用户名-p密码-h 服务器IP地址-P MySQL服务器端端口号-D 数据库名若MySQL服务器就是本机而且是默认的端口 3306,那命令可以简化为:mysql-u 用户名-p密码1.连接MySQL服务器6.2.2 操作MySQL数据库在创建表之前,需要先创建数据库,创建数据库的语法如下:CREATE DATABASE 数据库名 DEFAULT CHARACTER SET charset_name|DEFAULT COLLATE collation_nam
8、e;数据库只需要创建一次,但是必须在每次启动mysql会话时在使用前先选择它。可以根据上面的例子执行一个USE语句来实现。mysql CREATE DATABASE student COLLATE utf8mb4_unicode_ci;2.创建数据库使用SHOW语句找出服务器上当前存在什么数据库:SHOW DATABASES;3.查看数据库6.2.2 操作MySQL数据库创建数据库并不表示选定并使用它,所以必须明确地操作。为了使student成为当前的数据库,使用这个命令:mysql USE student;4.选择指定数据库如果需要删除数据库,可以使用DROP语句,其语法如下:DROP DA
9、TABASE|SCHEMA IF EXISTS 数据库名;DROP DATABASE用于取消数据库中的所用表格和取消数据库。使用此语句时要非常小心!5.删除数据库6.2.3 操作MySQL数据表数据表是存储信息的容器,信息以二维表的形式存储于数据表中。数据表由列和行组成,表的列也称为字段,每个字段用于存储某种数据类型的信息;表的行也称为记录,每条记录为存储表中的一条完整的信息。创建并选定数据库后就可以创建表,创建表的语法如下:CREATE TEMPORARY TABLE IF NOT EXISTS tbl_name(create_definition,.)table_options selec
10、t_statement表名称被指定为db_name.tbl_name,以便在特定的数据库中创建表。不论是否有当前数据库,都可以通过这种方式创建表。具体示例见教材150页。1.创建表6.2.3 操作MySQL数据表每个数据库都可以有多个数据表,查看数据表的语法如下:SHOW FULL TABLES FROM db_name LIKE patternSHOW TABLES列举了给定数据库中的非TEMPORARY表。本命令也列举数据库中的其它视图。支持FULL修改符,这样SHOW FULL TABLES就可以显示第二个输出列。对于一个表,第二列的值为BASE TABLE;对于一个视图,第二列的值为V
11、IEW。2.查看数据库中的表查看数据表的结构,有两种方法:DESCRIBE 表名;SHOW FIELDS FROM 表名;3.查看数据表结构6.2.3 操作MySQL数据表若用户对数据表的结构不满意,可以修改:ALTER TABLE tbl_name alter_specification,alter_specification.partition_options常见的用法如下:(1)删除列,语法如下:ALTER TABLE 表名 DROP 列名称(2)增加列ALTER TABLE 表名 ADD 列名称 列属性 COMMENT 注释说明4.修改数据表结构6.2.3 操作MySQL数据表(3)修
12、改列的类型信息ALTER TABLE 表名 CHANGE 列名称 新列名称 列属性 COMMENT 注释说明(4)重命名列ALTER TABLE 表名 CHANGE 列名称 新列名称 列属性 COMMENT 注释说明(5)重命名表ALTER TABLE 表名 RENAME 表新名(6)删除表中主键ALTER TABLE 表名 drop primary key4.修改数据表结构6.2.3 操作MySQL数据表(7)添加主键ALTER TABLE sj_resource_charges ADD CONSTRAINT PK_SJ_RESOURCE_CHARGES PRIMARY KEY(resid,
13、resfromid)(8)添加索引ALTER TABLE sj_resource_charges add index INDEX_NAME(name);(9)添加唯一限制条件索引ALTER TABLE sj_resource_charges add unique emp_name2(cardnumber);(10)删除索引ALTER TABLE tablename DROP INDEX emp_name;4.修改数据表结构6.2.3 操作MySQL数据表删除数据表的语法如下:DROP TEMPORARY TABLE IF EXISTS tbl_name,tbl_name.RESTRICT|CA
14、SCADEDROP TABLE用于取消一个或多个表。必须有每个表的DROP权限。所有的表数据和表定义会被取消,所以使用本语句要小心!对与不存在的表,使用IF EXISTS用于防止错误发生。5.删除指定数据表6.2.4 操作MySQL数据INSERT语句用于向一个已有的表中插入新行。其语法如下:INSERT LOW_PRIORITY|DELAYED|HIGH_PRIORITY IGNORE INTO tbl_name(col_name,.)VALUES(expr|DEFAULT,.),(.),.ON DUPLICATE KEY UPDATE col_name=expr,.1.添加表数据对数据库中
15、单个表的数据进行修改,其语法如下:UPDATE LOW_PRIORITY IGNORE tbl_name SET col_name1=expr1,col_name2=expr2.WHERE where_definition ORDER BY.LIMIT row_count2.更新表数据6.2.4 操作MySQL数据SELECT语句用来从数据表中检索信息,其语法如下:SELECT what_to_selectFROM which_tableWHERE conditions_to_satisfy;(1)选择所有数据SELECT*FROM 表名;(2)选择特殊行SELECT*FROM 表名 WHER
16、E 字段名=要查询的值;3.查询表数据6.2.4 操作MySQL数据(3)选择特殊列SELECT 字段1,字段2 FROM 表名;(4)分类行SELECT 字段1,字段2 FROM 表名 ORDER BY 字段;(5)日期计算以下查询显示了每个人的出生日期、当前日期和年龄数值的年数字,按age排序输出。SELECT name,birth,CURDATE(),(YEAR(CURDATE()-YEAR(birth)-(RIGHT(CURDATE(),5)RIGHT(birth,5)AS ageFROM stu_table ORDER BY age;3.查询表数据6.2.4 操作MySQL数据(6)
17、NULL值操作SELECT *FROM 表名 WHERE 列名 IS NULL;(7)模式匹配找出名字里含有“Z”的所有名字:SELECT*FROM 表名 WHERE 列名 LIKE%Z%;(8)计算行SELECT COUNT(*)FROM 表名;3.查询表数据6.2.4 操作MySQL数据对数据库中单个表的数据进行删除,其语法如下:DELETE LOW_PRIORITY QUICK IGNORE FROM tbl_name WHERE where_definition ORDER BY.LIMIT row_count完全清空一个表:TRUNCATE TABLE tbl_name4.删除表数据
18、6.3 phpMyAdmin图形化管理工具应用MySQL命令行方式需要对MySQL知识非常熟悉,对SQL语言也是同样的道理。不仅如此,如果数据库的访问量很大,列表中数据的读取就会相当困难。如果使用合适的工具,MySQL数据库的管理就会变得相当简单。当前出现很多GUIMySQL客户程序,其中最为出色的是基于Web的phpMyAdmin工具。这是一种 MySQL数据库前台的基于PHP的工具。phpMyAdmin是一个用PHP编写的软件工具,可以通过web方式控制和操作MySQL数据库。通过phpMyAdmin可以完全对数据库进行操作,例如建立、复制和删除数据等等。【例6-1】用phpMyAdmin
19、创建数据库及表6.4 PHP操作MySQL数据库PHP操作MySQL数据库一般可分为5个步骤:(1)连接MySQL数据库服务器。(2)选择数据库。(3)执行SQL语句。(4)关闭结果集。(5)断开与MySQL数据库服务器连接。6.4.1连接数据库在PHP7中要连接MySQL可以使用mysqli或PDO_MySQL扩展,本书以mysqli进行讲解。mysqli_connect(host,username,password,dbname,port,socket);mysqli_connect()函数打开一个到 MySQL 服务器的新连接,返回一个到 MySQL 服务器的链接标识。mysqli_co
20、nnect()参数如表6-6所示。【例6-2】6.4.2 数据库基本操作mysqli_query()函数执行某个针对数据库的查询。语法如下所示。mysqli_query(connection,query,resultmode);参数如表6-7所示。1.对数据库执行一次查询2.以数组方式返回一行查询结果mysqli_fetch_array()函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有。该函数返回的字段名是区分大小写的。语法如下:mysqli_fetch_array(result,resulttype);参数说明:见表6-8所示。6.4.2 数据库基本操作mysqli_num_ro
21、ws()函数用于返回结果集中行的数量,语法如下:mysqli_num_rows(result);参数如表6-9所示。【例6-3】3.获取结果中行的数量4.设置默认字符编码mysqli_set_charset()函数规定当与数据库服务器进行数据传送时要使用的默认字符集,如果成功则返回 TRUE,如果失败则返回 FALSE。mysqli_set_charset()函数在针对中文字符非常有用,很多数据库查询乱码的情况都是字符集的问题。语法如下:mysqli_set_charset(connection,charset);参数如表6-10所示。6.4.2 数据库基本操作每一次数据库操作都会占用服务器的系统资源,因此数据库操作完成后应该及时关闭数据库连接,使用mysqli_close函数可以关闭数据库连接,语法如下:bool mysqli_close(connection)参数如表6-11所示。【例6-4】5.关闭数据库链接【例6-5】【例6-6】6.5 实训1、以命令行方式连接MySQL服务器并进行相关操作2、下载phpMyAdmin最新稳定版本安装在自己的电脑上3、用phpMyAdmin设计在第五章中提到的用户注册表4、用PHP直接实现用户留言表的建立5、用PHP直接实现用户反馈表的建立
限制150内