查看: 106|回复: 0

PHP从入门到精通—MySQL数据库基础—数据库简介 ...

[复制链接]

2

主题

10

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2023-3-26 17:45:57 | 显示全部楼层 |阅读模式
学习对PHP会话技术(PHP从入门到精通—PHP会话技术—会话技术概述、Cookie技术、Session技术)有一个基本的了解,程序的运行离不开数据库的支持,PHP只有与数据库相结合,才能充分发挥动态网页编程语言的优势,因此,网络上的众多PHP应用都是基于数据库来支撑它们的应用服务。PHP支持多种数据库,尤其与MySQL被称为黄金组合。接下来,将详细介绍MySQL的基础知识以及操作MySQL数据库需注意的问题。数据表的基本操作、数据表中数据的基本操作的内容。


数据库简介
Ø 数据库简介
数据库(Database)是存储信息的表的集合。简单来说,数据库可被视为电子化的文件柜——存储电子文件的地方,用户可以对文件中的数据进行添加、删除、更新、查询等操作。与普通的文件存储相比,MySQL具有安全性高、支持海量数据存储、利于数据信息的查询和管理、支持高并发访问等优点。
关系型数据库是当前商业开发中使用最多的数据库种类,它是建立在关系模型基础上的数据库。关系模型实际上是一个二维表格模型,它可以映射现实世界中各种实体以及实体之间的联系,因此,一个关系型数据库是由二维表及其之间的联系组成的一个数据组织。
实际开发中经常使用数据库管理系统(Database Management System,DBMS)来完成对数据库的操作,MySQL是一种开放源代码的关系型数据库管理系统,它使用结构化查询语言(Structured Query Language,SQL)进行数据库管理,是Web领域最流行的数据库管理系统之一。
MySQL的使用
在使用MySQL之前,首先要在操作系统中安装MySQL。本书在附录部分详细讲解了MySQL的安装,此处不再赘述。 接下来讲解MySQL的基本使用,包括如何启动服务、登录和退出数据库等。
Ø 启动和停止MySQL服务
此处以Windows操作系统为例,右键“计算机”,在弹出的快捷菜单中选择“管理”,打开“计算机管理”界面,如图所示。


在界面的左侧导航栏中,展开“服务和应用程序”,单击“服务”,会出现Windows的所有服务,找到MySQL,如图所示。


右击MySQL,可以在快捷菜单中找到“启动”和“停止”,如图所示。


上图右键菜单选项中就是启动和停止MySQL服务的方法,因为此时已经处于启动状态,所以“启动”选项为灰色。
另外,还可以通过DOS命令启动和停止MySQL服务,打开DOS命令行窗口,输入net stop mysql命令停止MySQL服务,如图所示。


需要启动MySQL服务时,输入net start mysql命令,如图所示。


Ø 登录和退出MySQL数据库
启动MySQL服务后,就可以登录并使用MySQL数据库。登录MySQL数据库有两种方式,用户可以选择通过命令行登录,也可以通过Command Line Client登录。
1.使用命令行登录退出
打开DOS命令行窗口,输入mysql –uroot -p命令,再输入密码,成功登录MySQL数据库,如图所示。


此时可以输入“show databases;”命令查看数据库中所有的库,如图所示。


使用完毕后,可以输入“exit;”命令退出MySQL数据库,如图所示。


2.使用Command Line Client登录退出
使用DOS命令行窗口登录和退出MySQL比较繁琐,可以使用更简单的方式登录,单击“开始”菜单中的“程序”,单击“MySQL”,然后单击“MySQL Server 5.5”,如图所示。


打开MySQL 5.5 Command Line Client,如图所示。


输入MySQL的登录密码然后回车,这时成功登录MySQL数据库了,如图所示。


使用完毕后,退出MySQL数据库与DOS命令行的退出方式一致,此处就不再演示。
MySQL支持的数据类型
学习如何操作MySQL,首先要了解其支持的数据类型,MySQL支持所有标准的SQL数据类型,主要包括数值类型、字符串类型及日期和时间类型,接下来详细讲解这三种数据类型。
Ø 数值类型
MySQL支持所有标准SQL中的数值类型,其中包括严格数据类型(例如INTEGER、SMALLINT、DECIMAL和NUMBERIC)、近似数值数据类型(例如FLOAT、REAL和DOUBLE PRESISION)。
作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。MySQL中不同数值类型所对应的字节大小和取值范围是不同的。占用字节最小的是TINYINT,占用字节数最大的是BIGINT,DECIMAL类型的取值范围与DOUBLE类型相同。


在表中列举了MySQL支持的数值类型,占用字节最小的是TINYINT。

Ø 字符串类型
MySQL提供了8种基本的字符串类型,分别为CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和SET类型,可以存储的范围从简单的一个字符到巨大的文本块或二进制字符串数据,常见的字符串类型所对应的字节大小和取值范围如表所示。

数据类型字节数类型描述
CHAR0~255定长字符串
VARCHAR0~65535可变长字符串
TINYBLOB0~255不超过 255 个字符的二进制字符串
TINYTEXT0~255短文本字符串
BLOB0~65535二进制形式的长文本数据
TEXT0~65535长文本数据
MEDIUMBLOB0~16777215二进制形式的中等长度文本数据
MEDIUMTEXT0~16777215中等长度文本数据
LOGNGBLOB0~4294967295二进制形式的极大文本数据
LONGTEXT0~4294967295极大文本数据
VARBINARY(M)0~M允许长度0~M个字节的变长字节字符集
BINARY(M)0~M允许长度0~M个字节的定长字节字符集

表列出了常见的字符串类型,其中有些类型比较相似,接下来详细讲解一些容易混淆的类型。
1.CHAR和VARCHAR类型
CHAR 类型用于定长字符串,并且必须在圆括号内用一个大小修饰符来定义。这个大小修饰符的范围是0~255。CHAR类型的一个变体是VARCHAR 类型。它是一种可变长度的字符串类型,并且也必须带有一个范围在0~65535之间的指示器。
CHAR和VARCHGAR不同之处在于MySQL数据库处理这个指示器的方式,CHAR把这个大小视为值的大小,在长度不足的情况下就用空格补足,而VARCHAR类型把它视为最大值并且只使用存储字符串实际需要的长度(增加一个额外字节来存储字符串本身的长度)来存储值,所以短于指示器长度的VARCHAR类型不会被空格填补,但长于指示器的值仍然会被截短。VARCHAR类型可以根据实际内容动态改变存储值的长度,因此在不能确定字段需要多少字符时使用VARCHAR类型可以大大地节约磁盘空间、提高存储效率。
2.TEXT和BLOB类型
对于字段长度超过255的情况下,MySQL提供了TEXT和BLOB两种类型。根据存储数据的大小,它们都有不同的子类型。这些大型的数据用于存储文本块或图像、声音文件等二进制数据类型。
TEXT类型和BLOB类型有如下相同点:在TEXT或BLOB列的存储或检索过程中,不存在大小写转换;BLOB和TEXT列都不能有默认值;当保存或检索BLOB和TEXT列的值时不删除尾部空格;对于BLOB和TEXT列的索引,必须指定索引前缀的长度。
TEXT类型和BLOB类型有如下不同点:TEXT值是大小写不敏感的,而BLOB是大小写敏感的;TEXT被视为非二进制字符串,而BLOB被视为二进制字符串;TEXT列有一个字符集,并且根据字符集的校对规则对值进行排序和比较,BLOB列没有字符集;可以将TEXT列视为VARCHAR列,在大多数情况下,可以将BLOB列视为足够大的VARBINARY列;BLOB可以储存图片,而TEXT不可以,TEXT只能储存纯文本文件。
Ø 日期时间类型
MySQL提供了5种日期时间类型,这些日期时间类型有对应的字节数和取值范围等。
1.YEAR类型
YEAR类型使用1个字节来表示年份,MySQL中以YYYY的形式来显示YEAR类型的值,为YEAR类型的字段赋值表示方法如下。
l 使用4位字符串和数字表示。其范围是1901~2155。输入格式为'YYYY'或YYYY。例如,输入‘2008’或者2008,可直接保存2008。如果超过了范围,就会插入0000。
l 使用两位字符串表示。‘00’~‘69’转换为2000~2069,‘70’~‘99’转换为1970~1999。例如,输入‘35’,YEAR值会转换成2035,输入‘90’,YEAR值会转换成1990。
l 使用两位数字表示。1~69转换为2001~2069,70~99转换为1970~1999。
另外,在对YEAR类型字段进行相关操作的时候,最好使用四位字符串或者数字表示,不要使用两位的字符串和数字。有时可能会插入0或者‘0’,此处要严格区分0和‘0’。如果向YEAR类型的字段插入0,存入该字段的年份是0000;如果向YEAR类型的字段插入‘0’,存入的年份是2000。
2.TIME类型
TIME类型使用3个字节来表示时间。MySQL中以HH:MM:SS的形式显示TIME类型的值,其中,HH表示时(取值范围为0~23),MM表示分(取值范围为0~59),SS表示秒(取值范围是0~59)。
TIME类型的范围可以从‘-838:59:59’~‘838:59:59’。虽然小时的范围是0~23,但是为了表示某种特殊需要的时间间隔,将TIME类型的范围扩大了,而且还支持了负值。TIME类型的字段赋值表示方法如下。
l 表示‘D HH:MM:SS’格式的字符串。其中,D表示天数(取值范围是0~34)。保存时,小时的值等于(D*24+HH)。例如,输入‘2 11:30:50’,TIME类型会转换为59:30:50。当然,输入时可以不严格按照这个格式,可以是‘HH:MM:SS’、'HH:MM'、'D HH:MM'、'D HH'、'SS'等形式。例如,输入‘30’,TIME类型会自动转换为00:00:30。
l 表示‘HHMMSS’格式的字符串或HHMMSS格式的数值,例如,输入‘123456’,TIME类型会转换成12:34:56。如果输入0或者‘0’,那么TIME类型会转换为0000:00:00。
l 使用current_time或者current_time()输入当前系统时间。
还需注意的是,一个合法的TIME值,如果超出了TIME的范围,将被截取为范围最接近的端点。例如,‘880:00:00’将会被转换为838:59:59。另外,无效的TIME值,在命令行下无法被插入到表中。
3.DATE类型
DATE类型使用4个字节来表示日期。MySQL中是以YYYY-MM-DD的形式显示DATE类型的值,其中,YYYY表示年,MM表示月,DD表示日。DATE类型的字段赋值表示方法如下。
l 表示‘YYYY-MM-DD’或‘YYYYMMDD’格式的字符串。例如,输入‘4008-2-8’,DATE类型将转换为4008-02-08;输入‘40080308’,DATE类型将转换为4008-03-08。
l MySQL中还支持一些不严格的语法格式,任何标点都可以用来做间隔符。如‘YYYY/MM/DD’、‘YYYY@MM@DD’和‘YYYY.MM.DD’等分隔形式。例如,输入‘2011.3.8’,DATE类型将转换为2011-03-08。
l 表示‘YY-MM-DD’或者‘YYMMDD’格式的字符串,其中‘YY’的取值,‘00’~‘69’转换为2000~2069,‘70’~‘99’转换为1970~1999,与YEAR类型类似。例如,输入‘35-01-02’,DATE类型将转换为2035-01-02,输入‘800102’,DATE类型将转换为1980-01-02。
l 使用current_date或current_date ()输入当前系统日期。
在实际开发中,如果只需要记录日期,选择DATE类型是最合适的,因为DATE类型只占用4个字节。需要注意的是,虽然MySQL支持DATE类型的一些不严格的语法格式,但是,在实际应用中,最好还是选择标准形式。日期中使用“-”做分隔符,时间用“:”做分隔符,中间用空格隔开,格式如2016-03-17 16:27:55。
4.DATETIME类型
DATETIME类型使用8个字节来表示日期和时间。MySQL中以‘YYYY-MM-DD HH:MM:SS’的形式来显示DATETIME类型的值。从其形式上可以看出,DATETIME类型可以直接用DATE类型和TIME类型组合而成。DATETIME类型的字段赋值表示方法如下。
l 表示‘YYYY-MM-DD HH:MM:SS’或‘YYYYMMDDHHMMSS’格式的字符串。这种方式可以表达的范围是‘1000-01-01 00:00:00’~‘9999-12-31 23:59:59’。例如,输入‘2008-08-08 08:08:08’,DATETIME类型会自动转换为2008-08-08 08:08:08,输入‘20080808080808’,同样转换为2008-08-08 08:08:08。
l DATETIME类型可以使用任何标点作为间隔符,这与TIME类型不同,TIME类型只能用‘:’隔开。例如,输入‘2008@08@08 08*08*08’,数据库中DATETIME类型统一转换为2008-08-08 08:08:08。
l 表示‘YY-MM-DD HH:MM:SS’或‘YYMMDDHHMMSS’格式的字符串。其中‘YY’的取值,‘00’~‘69’转换为2000~2069,‘70’~‘99’转换为1970~1999。与YEAR类型和DATE类型相同。例如,输入‘69-01-01 11:11:11’,数据库中插入2069-01-01 11:11:11,输入‘70-01-01 11:11:11’,数据库中插入1970-01-01 11:11:11。
l 使用now()来输入当前系统日期和时间。
DATETIME类型用来记录日期和时间,其作用等价于DATE类型和TIME类型的组合。但是如果需要同时记录日期和时间,选择DATETIME类型是个不错的选择。
5.TIMESTAMP类型
TIMESTAMP类型使用4个字节来表示日期和时间。TIMESTAMP类型的范围是1970-01-01 08:00:01~2038-01-19 11:14:07。MySQL中也是以‘YYYY-MM-DD HH:MM:SS’的形式显示TIMESTAMP类型的值。从其形式可以看出,TIMESTAMP类型与DATETIME类型显示的格式是一样的。给TIMESTAMP类型的字段赋值的表示方法基本与DATETIME类型相同。值得注意的是,TIMESTAMP类型范围比较小,没有DATETIME类型的范围大,因此输入值时需要保证在TIMESTAMP类型的有效范围内。
数据库的基本操作
Ø 创建和查看数据库
创建数据库就是在数据库系统中划分一块存储数据的空间,其语法格式如下所示。
CREATE DATABASE 数据库名称;
以上示例是创建数据库的语法,此处需注意,数据库名称是唯一的,不能重复。
接下来通过具体案例演示数据库的创建,如例所示。
创建一个名为qianfeng的数据库,SQL语句如下所示。
CREATE DATABASE qianfeng;
执行结果如下所示。
mysql> CREATE DATABASE qianfeng;
Query OK, 1 row affected (0.01 sec)
以上执行结果证明SQL语句运行成功。为了验证数据库系统中是否创建了名为qianfeng的数据库,需要查看数据库,查看数据库的SQL语句如下所示。
SHOW DATABASES;
Ø 使用数据库
创建数据库后,如果想在此数据库中进行操作,则需要切换到该数据库,具体语法格式如下。
USE 数据库名;
Ø 修改数据库
前面讲解了如何创建和查看数据库,数据库创建完成后,编码也就确定了,若想修改数据库的编码,可以使用ALTER DATABASE语句实现,具体语法格式如下。
ALTER DATABASE 数据库名称 DEFAULT CHARACTER
SET 编码方式 COLLATE 编码方式_bin;
Ø 删除数据库
删除数据库就是将数据库系统中已经存在的数据库删除,删除后,数据库中所有数据会被清除,为数据库分配的空间也将被回收,删除数据库的语法格式如下。
数据表的基本操作
常见数据表
数据库创建成功后,就可以在已经创建的数据库中创建数据表。在创建表之前,使用“USE 数据库名”切换到要操作的数据库。创建数据表的语法格式如下所示。


以上示例中,表名表示创建数据表的名称,字段名表示数据表的列名。
Ø 创建数据表
数据库创建成功后,就可以在已经创建的数据库中创建数据表。在创建表之前,使用“USE 数据库名”切换到要操作的数据库。创建数据表的语法格式如下所示。
CREATE table 表名(
字段名1 数据类型,
字段名2 数据类型,
……
字段名n 数据类型
);
以上示例中,表名表示创建数据表的名称,字段名表示数据表的列名。
Ø 查看数据表
创建完成数据表后,可以通过使用DESC语句查看数据表的具体信息,语法格式如下所示。
DESC 表名;
Ø 修改数据表
前面讲解了如何创建和查看数据表,在实际开发中,数据表创建完成后,可能会对数据表的表名、表中的字段名、字段的数据类型等进行修改,接下来对数据表的修改进行详细讲解。
1.修改表名
在MySQL中,修改表名的语法格式如下所示。
ALTER TABLE 原表名 RENAME [TO] 新表名;
以上示例中,关键字TO是可选的,是否写TO关键字都不会影响SQL语句的执行。
2.修改字段
数据表中的字段也时常有变更的需求,修改字段的语法格式如下所示。
ALTER TABLE 表名 CHANGE 原字段名 新字段名 新数据类型;
3.修改字段的数据类型
上面讲解了如何修改表中的字段,但有时并不需要修改字段,只需修改字段的数据类型,修改表中字段数据类型的语法格式如下所示。
ALTER TABLE 表名 MODIFY 字段名 数据类型;
4.添加字段
在实际开发中,可能随着需求的扩展,表中需要添加字段,MySQL中添加字段的语法格式如下所示。
ALTER TABLE 表名 ADD 新字段名 数据类型;
5.删除字段
删除表中某一字段也是很可能出现的需求,MySQL中删除字段的语法格式如下所示。
ALTER TABLE 表名 DROP 字段名;
Ø 删除数据表
删除数据表是从数据库将数据表删除,同时删除表中存储的数据。在MySQL中使用DROP TABLE语句删除数据表,语法格式如下所示。
DROP TABLE 表名;
数据表中数据的基本操作
Ø 插入数据
MySQL中使用INSERT语句向数据表中插入数据,语法格式如下所示。
INSERT INTO 表名(字段名1,字段名2,……) VALUES(值1,
值2,……);
以上语法格式中,“字段名1,字段名2”是数据表中的字段名称,可以为表中所有字段,也可以是部分字段,“值1,值2”是对应字段需要添加的数据,每个值的顺序、类型必须与前面的字段名对应。当为表中所有字段插入数据时,字段名可以省略,此时每个值的顺序、类型必须与表中字段的顺序和类型都对应。
Ø 查询数据
MySQL中使用SELECT语句从数据库中查询数据。在SELECT语句中,可根据自己对数据的需求,使用不同的查询条件。SELECT语句的具体语法格式如下所示。
SELECT 字段名1,字段名2,……,字段名n FROM 表名 WHERE
条件表达式;
以上语法格式中,“字段名1,字段名2”是数据表中的字段名称,当需要查询表中所有字段时,可以使用通配符“*”取代所有字段名,FROM后表名是查询数据的表名称,WHERE后条件表达式是指筛选数据的条件。MySQL提供了一系列关系运算符和关键字,这些关系运算符和关键字可以作为条件表达式过滤数据,具体如表所示。

关系运算符含义
=等于
!=不等于
<>不等于
<小于
<=小于等于
>大于
>=大于等于

表中列出了常见的关系运算符,其中需要注意的是“!=”和“<>”都表示不等于,有个别数据库不支持“!=”,所以建议使用“<>”。

关系运算符含义
AND多个条件同时满足
OR多个条件满足一个即可
IN 或 NOT IN判断某个字段的值是否在指定集合中
IS  NULL或IS NOT NULL判断某个字段的值是否为空值
BETWEEN……AND……判断某个字段的值是否在指定范围内
LIKE或 NOT LIKE通常用于模糊查询

表中列出了常见的关键字,大家可以在开发中根据具体需求酌情使用。
Ø 更新数据
MySQL中使用UPDATE语句更新表中的数据,语法格式如下所示。
UPDATE 表名
SET 字段名1=值1 [,字段名2=值2,……]
[WHERE条件表达式];
以上语法格式中,“字段名”用于指定需要更新的字段名称,“值”用于表示字段更新的新数据,如果要更新多个字段的值,可以用逗号分隔多个字段和值,WHERE条件表达式是可选的,用于指定更新数据需要满足的条件。
Ø 删除数据
MySQL中使用DELETE语句删除表中数据,语法格式如下所示。
DELETE FROM 表名 [WHERE 条件表达式];
以上语法中,WHERE条件语句是可选的,用于指定删除数据满足的条件,如果不指定条件,那么默认删除表中全部的数据。

小结:PHP从入门到精通—数据库简介、MySQL的使用、MySQL支持的数据类型、数据库的基本操作、数据表的基本操作、数据表中数据的基本操作
主要介绍MySQL的基础知识和操作方法,包括MySQL的基本使用、MySQL支持的数据类型、数据库的基本操作、数据表的基本操作、数据表中数据的基本操作。通过本章的学习,大家要理解MySQL的基本概念,掌握MySQL的基本操作技能,为以后学习PHP操作MySQL打下坚实的基础。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表