PHP学习9——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客户端的操作类似:
- 打开数据库连接
- 选择数据库
- 对数据库操作
- 关闭结果集
- 关闭数据库连接
连接数据库
<?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,就到这里。
PHP学习9——MySQL数据库的更多相关文章
- 【代码学习】MYSQL数据库的常见操作
---恢复内容开始--- ============================== MYSQL数据库的常见操作 ============================== 一.mysql的连接与 ...
- 数据库学习之mysql数据库
参考链接网站: http://c.biancheng.net/view/2361.html Mysql的版本以及版本号 MySQL Community Server(社区版):该版本完全免费,但是官方 ...
- 5月7日 python学习总结 MySQL数据库(一)
一.数据库介绍 1.数据库相关概念 数据库服务器(本质就是一台计算机,该计算机之上安装有数据库管理软件的服务端) 数据库管理系统RDBMS(本质就是一个C/S机构的套接字软件) 库(文件夹)===&g ...
- MySQL学习笔记-MySQL数据库优化实践[转]
最近一段时间,我们整理了一些关于Percona,Linux,Flashcache,硬件设备的优化经验,分享给大家: 硬件 1.开启BBWC RAID卡都有写cache(Battery Backed W ...
- nodeJs学习-14 mysql数据库学习、Navicat管理工具
数据库: MySQL 免费.性能非常不错 缺点:集群.容灾稍微弱一点 Oracle 收费.大型应用.金融级.性能非常不错.集群.容灾非常强 缺点:贵 mySQL安装教程--nodeJsz智能社视频 ...
- 【php学习】mysql数据库操作
//建立数据库连接,数据库地址127.0.0,用户名root,密码root $dbConn = mysql_connect('127.0.0.1', 'root', 'root'); mysql_qu ...
- nodeJs学习-18 mysql数据库了解
智能社视频24/25 四大操作语句: 1.删 DELETE DELETE FROM 表 WHERE 条件 2.增 INSERT INSERT INTO 表(字段列表) VALUES(值列表) 3.改 ...
- Mybatis学习---连接MySQL数据库
[目录]
- MySQL数据库应用 从入门到精通 学习笔记
以下内容是学习<MySQL数据库应用 从入门到精通>过程中总结的一些内容提要,供以后自己复现使用. 一:数据库查看所有数据库: SHOW DATABASES创建数据库: CREATE DA ...
随机推荐
- QPushButton 点击信号分析
QPushButton 点击信号分析 QPushButton有三个很重要的信号跟点击有关 pressed clicked toggled 表面上看,pressed和clicked都会在点击按钮时触发, ...
- MVC dropdownlist 下拉框
List<SelectListItem> items = new List<SelectListItem>(); items.Add(new SelectListItem() ...
- python学习之路 一 :编程语言介绍
本节重点 理解编程语言是什么? 大体明白,编程语言是如何与计算机底层通信的编程语言有哪些分类? 分别列举主流编程语言的特点 什么是编程,为什么要编程 一.什么是编程语言?为什么要编程? 编程:是个动词 ...
- ItemTemplateSelector
ItemTemplateSelector的中文翻译是模板选择器 是用来选择模板. 他的用法稍有不同,他必须派生于DataTemplateSelector类. 然后重写SelectTemplate这个方 ...
- python - 实现文本分类[简单使用第三方库完成]
第三方库 pandas sklearn 数据集 来自于达观杯 训练:train.txt 测试:test.txt 概述 TF-IDF 模型提取特征值建立逻辑回归模型 代码 # _*_ coding:ut ...
- 《锋利的jQuery 第二版》chapter 1~
chapter 1 认识 jQuery jquery.js(开发版),jquery.min.js(生产版) window.onload 与 $(document).ready() 的对比: jquer ...
- OCP认证052新加的考试题及答案整理-21
21.Which two are true about roles? A) A role can be password-protected. B) A role can be granted to ...
- jquery中animate({left:'-='+width})中的 '-='+是什么意思?
left:'-='+width的意思是:left属性的最终值,是left现有值减去width这个值 例如:left:'200px' 意思是left最终值变成200left:'+200px' 意思与上面 ...
- curl命令上传下载文件
下载单个文件,默认将输出打印到标准输出中(STDOUT)中 curl http://www.centos.org 通过-o/-O选项保存下载的文件到指定的文件中: -o:将文件保存为命令行中指定的文件 ...
- css ie浏览器兼容问题
第一,IE6,不支持小于12px的盒子,任何小于12px的盒子,在IE6中看都大 解决办法很简单,就是将盒子的字号,设置小(小于盒子的高),比如0px. 1 height: 4px; 2 _font- ...