PHP学习9——MySQL数据库

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 主要内容:MySQL的启动MySQL数据库操作数据库表设计创建和查看表修改表结构MySQL语句操作数据库备份与恢复PHP操作MySQL数据库面向对象的数据库操作 MySQL数据库是目前最流行的数据库之一,因为他是自由的开源的软件,可以免费的使用,功能强大,跨平台,安全性高,成本低(完全免费),存储量大。

主要内容:

  • MySQL的启动
  • MySQL数据库操作
  • 数据库表设计
  • 创建和查看表
  • 修改表结构
  • MySQL语句操作
  • 数据库备份与恢复
  • PHP操作MySQL数据库
  • 面向对象的数据库操作

 

MySQL数据库是目前最流行的数据库之一,因为他是自由的开源的软件,可以免费的使用,功能强大,跨平台,安全性高,成本低(完全免费),存储量大。

MySQL的启动

 点击MySQL的start即可,绿色为正常启动

 

按住win+r,打开命令窗口,输入cmd,使用dos连接和退出

 

 MySQL数据库操作

创建数据库

CREATE DATABASE db_name

注意:

  • 数据库名db_name在windows不区分大小写,而linux是区分的,为了程序的移植,建议使用小写字母名称。
  • 不能与其他数据库同名,否则发生错误。
  • 名称可以包含字母,数字,下划线,美元符号($),但是不能以数字开头,也不能使用MySQL关键字。
  • 名称最长64个字符。
  • 每条命令以分号;结束,按enter提交,也可以将一条命令分为多行写,分号结束。

查看数据库

SHOW DATABASES

选择数据库

USE db_name

删除数据库

DROP DATABASE db_name

数据库表设计

数据类型

数值类型

  • tinyint,1字节
  • smallint,2字节
  • mediumint,3字节
  • int,4字节
  • bigint,8字节
  • float,4字节
  • double,8字节
  • decimal(m,d),m+2字节

字符串类型

  • char
  • varchar
  • binyblob,tinytext
  • blob,text
  • mediumblob,mediumtext
  • longblob,longtext
  • enum("value1","value2")
  • set("value1","value2")

日期类型

  • date,1000-01-01到9999-12-31,3字节
  • time,-838:59:59到838:59:59,3字节
  • datetime,1000-01-01 00:00:00到9999-12-31 23:59:59,8字节
  • timestamp,1970-01-01 00:00:00到2037年的某个时刻,4字节
  • Year,1901到2155,1字节

数据字段属性

某些情况,定义数据类型是不够的,还有一些附加属性,比如自动增加,自动补0,设置默认值。

字段属性:

  • UNSIGNED,只能设置数值类型,数据不能出现负值
  • ZEROFILL,只能设置数值类型,不足补0,比如INT(3) ZEROFILL,将5插入输出005
  • AUTO_INCREMENT,只能修饰整数类型,每增加一条,该字段值自动加1
  • NULL/NOT NULL,数据默认为NULL,允许为空值,如果指定为NOT NULL数据不能为空值
  • DEFAULT,指定默认值

创建和查看表数据

创建表

CREATE [TEMPORARY] TABLE  [IF NOT EXISTS] tb_name (col_name1  type, col_name2 type...... );

查看表

SHOW TABLES;

输入多行命令以分号结束,例如

CREATE TABLE test_tb(

id int(8) AUTO_INCREMENT PRIMARY KEY,

user varchar(40) NOT NULL,

psw varchar(20) NOT NULL,

createtime date NOT NULL DEFAULT 0);

  

查看表结构

  • SHOW COLUMNS FROM tb_name;
  • DESCRIBE tb_name [col_name];
  • DESC tb_name [col_name];

修改表结构

ALTER [IGNORE] TABLE tb_name alter_specification;

alter_specification是详细要修改的内容

  • ALTER TABLE tb_name ADD email varchar(40) NOT NULL;增加新字段
  • ALTER TABLE tb_name ALTER psw int(8) NOT NULL;修改字段类型
  • ALTER TABLE tb_name CHANGE old_col_name new_col_name type;修改字段名称
  • ALTER TABLE tb_name MODIFY col_name type;修改字句定义字段
  • ALTER TABLE tb_name DROP col_name;删除字段
  • ALTER TABLE tb_name DROP PRIMARY KEY;删除主键
  • ALTER TABLE tb_name DROP INDEX index_name;删除索引
  • ALTER TABLE tb_name RENAME new_tablename;更改表名称

 

重命名表

删除表

DROP TABLE tb_name;

删除表需要谨慎,因为删除后数据表无法恢复的。

 MySQL语句操作

插入记录

 insert into cartoon (name,sex,age,country)values ('Tom','boy',10,'usa');

 insert into cartoon (name,sex,age,country)values ('Jerry','boy',9,'usa');

 insert into cartoon (name,sex,age,country)values ('Jim','girl',15,'Canada');

 insert into cartoon (name,sex,age,country)values ('Mario','boy',20,'France');

 

注意字符串数据要加单引号,标准SQL一次只可以插入一条数据,因此需要执行4次语句插入4条数据,而MySQL中可以一次插入多数据,例如: 

 insert into cartoon (name,sex,age,country)values ('Tom','boy',10,'usa'),
('Jerry','boy',9,'usa'),
('Jim','girl',15,'Canada'),
('Mario','boy',20,'France');

  

 

查询记录

SELECT * FROM tb_name;

SELECT * FROM tb_name

[WHERE condition(查询条件)]

[GROUP BY col_name(进行分组)]

[HAVING condition(满足的第二条件)]

[ORDER BY col_name(排序)]

[LIMIT row_count(显示查询结果条数)]——也即是这一个和SQL SERVER有一点点不同,其他几乎一样的。

修改记录

UPDATE tb_name SET col_name=expression WHERE condition

 

删除记录

DELETE FROM tb_name WHERE condition

 

数据库备份与恢复

备份数据库

备份数据的操作需要用到mysqldump.exe程序

这里将test数据库备份到D:/test.txt文件中,-p 后面没有密码。

数据库恢复

先退出数据库,回到根目录bin下,

注意恢复数据库语句不要分号;

 

 

PHP操作MySQL数据库

访问数据库的步骤PHP访问数据库和使用MySQL客户端的操作类似:

  1. 打开数据库连接
  2. 选择数据库
  3. 对数据库操作
  4. 关闭结果集
  5. 关闭数据库连接

连接数据库

<?php
	//连接数据库
	mysqli_connect($server,$username,$password) or die('数据库连接失败!');
	echo "数据库连接成功!";
?>

或者

<?php
	$servername = "localhost";
	$username = "root";
	$password = "";
	 
	// 创建连接
	$conn = new mysqli($servername, $username, $password);
	 
	// 检测连接
	if ($conn->connect_error) {
		die("连接失败: " . $conn->connect_error);
	} 
	echo "数据库连接成功<br/>";
?>

另外我们可以通过配置文件,来设置连接数据库的参数

使用函数 parse_ini_file() 解析配置文件 config.ini 来获得数据库连接参数,然后使用 new 关键字对 mysqli 类进行实例化,最后使用函数 mysqli_connect_errno() 来判断是否成功连接上了 MySQL 数据库,实现该过程的代码如下所示:

try{
    //解析config.ini文件
    $config = parse_ini_file(realpath(dirname(__FILE__) . '/config/config.ini'));
    //对mysqli类进行实例化
    $mysqli = new mysqli($config['host'], $config['username'], $config['password'], $config['dbname']);   
    if(mysqli_connect_errno()){    //判断是否成功连接上MySQL数据库
        throw new Exception('数据库连接错误!');  //如果连接错误,则抛出异常
    }else{
        echo '数据库连接成功!';   //打印连接成功的提示
    }
}catch (Exception $e){        //捕获异常
    echo $e->getMessage();    //打印异常信息
}

  

案例:

<?php

    //连接数据库
	$server='localhost';
	$username='root';
	$password='';
	$database='test';
	$conn=mysqli_connect($server,$username,$password,$database) or die('数据库连接失败!');
	
	if (mysqli_connect_errno($conn)) 
	{ 
		echo "连接 MySQL 失败: " . mysqli_connect_error(); 
	}else{
		echo "数据库连接成功!<br/>";
	}
	//选择数据库
	$ch=mysqli_select_db($conn,$database);
	if($ch){
		echo "成功选择数据库<br/>";
	}else{
		echo "数据库可能不存在<br/>";
	}
	
	//1、操作数据库
	$sql='select * from cartoon';
	$result=mysqli_query($conn,$sql);
	if($result){
		echo "SQL查询发送成功!<br/>";
	}
	
	//2、取结果集中的一行作为数组,如果要输出全部可以使用while循环
	$arr=mysqli_fetch_assoc($result);
	//输出返回的数组信息
	print_r($arr);

	//3、取结果集中的一行作为对象,使用对象while循环输出
	while($obj=mysqli_fetch_assoc($result)){
		echo '<br/>'.$obj['name']."现在".$obj['age']."岁了。<br/>";
	}
	
	
	//4、取结果集中的一行作为枚举数组
	$result=mysqli_query($conn,$sql);
	while($arr=mysqli_fetch_row($result)){
		echo '<br/>'.$arr[1]."是一个".$arr[2]."。<br/>";
	}
	
	//5、取结果集中的行数,仅仅对select语句有效
	$num=mysqli_num_rows($result);
	echo "查询到的结果有:".$num."行<br/>";
	
	//6、取受影响的行数,对插入,修改,删除语句有效
	$num=mysqli_affected_rows($conn);
	echo "本次操作受影响行数为:".$num."行<br/>";
	

	//断开数据库连接
	mysqli_close($conn);
	
?>

 

简单版本

<?php

    //连接数据库
	$conn=mysqli_connect('localhost','root','','test') or die('数据库连接失败!');
	
	
	//操作数据库
	$sql='select * from cartoon';
	$result=mysqli_query($conn,$sql);
	

	//取结果集中的一行作为对象,使用对象while循环输出
	while($obj=mysqli_fetch_assoc($result)){
		echo '<br/>'.$obj['name']."现在".$obj['age']."岁了。<br/>";
	}
		

	//断开数据库连接
	mysqli_close($conn);
	
?>

  

这里主要是学习MySQL的基本知识,介绍了MySQL数据库的使用、数据类型,常用的命令,为后面PHP连接做好基础准备。

后面介绍了PHP操作数据库的知识,PHP大多数时候是用来查询数据的。

面向对象的数据库操作

创建数据库

<?php
	$servername = "localhost";
	$username = "root";
	$password = "";
	$dbname='my';
	 
	// 创建连接
	$conn = new mysqli($servername, $username, $password);
	 
	// 检测连接
	if ($conn->connect_error) {
		die("连接失败: " . $conn->connect_error);
	}else{
		echo "连接成功<br/>";
	}
	
	//操作数据库
	$sql='CREATE DATABASE my_db';
	if($conn->query($sql)==TRUE){
		echo '数据库创建成功<br/>';
	}else{
		echo "数据库创建失败:$conn->error<br/>";
	}
	
	//关闭连接
	$conn->close();
?>

创建数据表

<?php
	$servername = "localhost";
	$username = "root";
	$password = "";
	$dbname='my_db';
	 
	// 创建连接
	$conn = new mysqli($servername, $username, $password,$dbname);
	 
	// 检测连接
	if ($conn->connect_error) {
		die("连接失败: " . $conn->connect_error);
	}else{
		echo "连接成功<br/>";
	}
	
	//操作数据库
	// 使用 sql 创建数据表
	$sql = "CREATE TABLE MyGuests (
	id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
	firstname VARCHAR(30) NOT NULL,
	lastname VARCHAR(30) NOT NULL,
	email VARCHAR(50),
	reg_date TIMESTAMP
	)";
	
	if($conn->query($sql)==TRUE){
		echo '执行成功<br/>';
	}else{
		echo '执行失败<br/>';
	}
	
	//关闭连接
	$conn->close();
?>

插入数据

<?php
	$servername = "localhost";
	$username = "root";
	$password = "";
	$dbname='my_db';
	 
	// 创建连接
	$conn = new mysqli($servername, $username, $password,$dbname);
	 
	// 检测连接
	if ($conn->connect_error) {
		die("连接失败: " . $conn->connect_error);
	}else{
		echo "连接成功<br/>";
	}
	
	//操作数据库
	// 使用 sql 数据插入
	$sql = "INSERT INTO MyGuests (firstname, lastname, email)
	VALUES ('John', 'Doe', 'john@example.com')";

	if ($conn->query($sql) === TRUE) {
		echo "新记录插入成功";
	} else {
		echo "Error: " . $sql . "<br>" . $conn->error;
	}
	
	//关闭连接
	$conn->close();
?>

查询数据

<?php
	$servername = "localhost";
	$username = "root";
	$password = "";
	$dbname='my_db';
	 
	// 创建连接
	$conn = new mysqli($servername, $username, $password,$dbname);
	 
	// 检测连接
	if ($conn->connect_error) {
		die("连接失败: " . $conn->connect_error);
	}else{
		echo "连接成功<br/>";
	}
	
	//操作数据库
	// 使用 sql 数据查询
	$sql = "SELECT * FROM myguests;";
	$result=$conn->query($sql);
	if ($result->num_rows>0) {
		//输出数据
		while($row=$result->fetch_assoc()){
			echo "id:".$row['id']."-name:".$row['firstname']."<br/>";
		}
	} else {
		echo "0 结果<br/>";
	}
	
	//关闭连接
	$conn->close();
?>

简单版本

<?php	 
	// 创建连接
	$conn = new mysqli('localhost', 'root', '','my_db')or die("连接失败: " . $conn->connect_error);;
	
	//操作数据库
	$sql = "SELECT * FROM myguests;";
	$result=$conn->query($sql);
	while($row=$result->fetch_assoc()){
		echo "id:".$row['id']."-name:".$row['firstname']."<br/>";
	}
	
	//关闭连接
	$conn->close();
?>

  

 

ok,就到这里。

 

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
15
分享
相关文章
源码编译安装LAMP(HTTP服务,MYSQL ,PHP,以及bbs论坛)
通过以上步骤,你可以成功地在一台Linux服务器上从源码编译并安装LAMP环境,并配置一个BBS论坛(Discuz!)。这些步骤涵盖了从安装依赖、下载源代码、配置编译到安装完成的所有细节。每个命令的解释确保了过程的透明度,使即使是非专业人士也能够理解整个流程。
45 18
【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
167 25
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
本文详细介绍了MySQL中的SQL语法,包括数据定义(DDL)、数据操作(DML)、数据查询(DQL)和数据控制(DCL)四个主要部分。内容涵盖了创建、修改和删除数据库、表以及表字段的操作,以及通过图形化工具DataGrip进行数据库管理和查询。此外,还讲解了数据的增、删、改、查操作,以及查询语句的条件、聚合函数、分组、排序和分页等知识点。
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
|
4月前
|
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
103 15
PHP与MySQL动态网站开发:从基础到实践####
本文将深入探讨PHP与MySQL的结合使用,展示如何构建一个动态网站。通过一系列实例和代码片段,我们将逐步了解数据库连接、数据操作、用户输入处理及安全防护等关键技术点。无论您是初学者还是有经验的开发者,都能从中获益匪浅。 ####
PHP与MySQL的高效交互:从基础到实践####
本文深入探讨了PHP与MySQL数据库之间的高效交互技术,涵盖了从基础连接到高级查询优化的全过程。不同于传统的摘要概述,这里我们直接以一段精简代码示例作为引子,展示如何在PHP中实现与MySQL的快速连接与简单查询,随后文章将围绕这一核心,逐步展开详细讲解,旨在为读者提供一个从入门到精通的实战指南。 ```php <?php // 数据库配置信息 servername="localhost";username = "root"; password="password";dbname = "test_db"; // 创建连接 conn=newmysqli(se
123 0
php连接数据库
要使用PHP连接PolarDB或MongoDB数据库,需先准备连接信息,并编写相应代码。对于PolarDB,需设置主机地址、端口、数据库名及凭据,使用`pg_connect`函数建立连接;而对于MongoDB副本集,需安装MongoDB PHP驱动,通过`MongoDB\Client`连接指定的副本集实例。请确保替换示例代码中的占位符为实际值,并正确配置副本集名称和主机信息。更多详细信息与示例代码,请参考相关链接。
194 73
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
本文介绍了PHP中PDO(PHP Data Objects)扩展的基本概念和使用方法。内容包括PDO类和PDOStatement类的介绍,PDO的简单使用,预定义占位符的使用方法,以及PDOStatement对象的使用。文章还讨论了绑定预定义占位符参数的不同形式,即bindValue和bindParam的区别。通过具体示例,展示了如何使用PDO进行数据库连接、数据查询、数据插入等操作。
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等