MySQL
- MySQL是一个数据库的名称
- 和PHP合作的比较好的数据库
- 前端向后端索要数据,后端就是去数据库中查询数据,返回给前端
- 接下来就聊聊使用PHP操作数据库
MySQL 是最流行的关系型数据库管理系统(非关系型数据库简略介绍)
关系数据库管理系统(Relational Database Management System)的特点
1.数据以表格的形式出现
2.每行为各种记录名称
3.许多的行和列组成一张表单
4.若干的表单组成database
5.主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
数据库的数据类型
- 数值类型
类型 | 大小 | 描述 |
---|---|---|
tinyint | 1字节 | 小整数值 |
smallint | 2字节 | 大整数值 |
mediumint | 3 字节 | 大整数值 |
int或integer | 4 字节 | 大整数值 |
bigint | 8 字节 | 极大整数值 |
float | 4 字节 | 单精度 浮点数值 |
double | 8 字节 | 双精度 浮点数值 |
decimal | 小数值 |
- 日期和时间类型
类型 | 格式 | 描述 |
---|---|---|
DATE(date) | YYYY-MM-DD | 日期值 |
TIME(time) | HH:MM:SS | 时间值或持续时间 |
YEAR(year) | YYYY | 年份值 |
DATETIME(datetime) | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP(timestamp) | YYYYMMDD HHMMSS | 时间戳 |
- 字符串类型
类型 | 大小 | 描述 |
---|---|---|
CHAR(char) | 0-255字节 | 定长字符串 |
VARCHAR(varchar) | 0-65535 字节 | 变长字符串 |
TINYBLOB(tinyblob) | 0-255字节 | 不超过 255 个字符的二进制字符串 |
TINYTEXT(tinytext) | 0-255字节 | 短文本字符串 |
BLOB(blob) | 0-65 535字节 | 二进制形式的长文本数据 |
TEXT(text) | 0-65 535字节 | 长文本数据 |
MEDIUMBLOB(mediumblob) | 0-16 777 215字节 | 二进制形式的中等长度文本数据 |
MEDIUMTEXT(mediumtext) | 0-16 777 215字节 | 中等长度文本数据 |
LONGBLOB(longblob) | 0-4 294 967 295字节 | 二进制形式的极大文本数据 |
LONGTEXT(longtext) | 0-4 294 967 295字节 | 极大文本数据 |
PHP操作数据库
- 之前都是对数据库的简单了解,不需要全都背下来,了解一下就可以了
- 接下来我们就是使用 php 链接 mysql 数据库进行数据的增删改查
- 想要操作数据库,除了需要 php 的语法以外,还需要一个 mysql 的 sql 语句
- 使用 php 操作数据库的步骤
- 和数据库建立链接
- 使用 sql 语句对数据库进行操作
- 获取结果
- 和数据库的链接断开
和数据库建立链接
- php5语法:
mysql_connect('ip地址','数据库用户名','数据库密码')
mysql_select_db('你要操作的小仓库名称')
- php7语法:
mysqli_connect('ip地址','数据库用户名','数据库密码','你要操作的小仓库名称')
<?php
$link = mysqli_connect('127.0.0.1','root','root','student');
?>
-我们有了链接信息`$link`以后就可以继续操作数据库了
执行SQL语句
-
php5语法:
mysql_query('你要执行的sql语法',连接信息)
-
php7语法:
mysqli_query(连接信息,'你要执行的sql语法')
<?php
# 避免中文乱码
mysqli_query($link,"set names utf8");
# 下面就是使用SQL语句对数据库进行操作
$res = mysqli_query($link,"SELECT * FROM student");
?>
解析数据
- php5语法:
解析本行数据:mysqli_fetch_assoc(要解析的数据);
没有解析全部结果的方法
- php7语法:
解析本行数据:mysqli_fetch_assoc(要解析的数据);
解析所有数据:mysqli_fetch_all(要解析的数据,MYSQLI_ASSOC);
<?php
# 解析所有行的数据
$arr = mysqli_fetch_all($res,MYSQLI_ASSOC);
# 转json查看获取到的结果
print_r(json_encode($arr));
?>
关闭链接
-
全部用完以后我们最好是关闭一下数据库链接
-
php5语法:
mysql_close(链接信息);
-
php7语法:
mysqli_close(链接信息);
<?php
mysqli_close($link);
?>
完整步骤
- 我们完整的写一下操作的步骤
<?php
$link = mysqli_connect('127.0.0.1','root','root','student');
mysqli_query($link,"set names utf8");
$res = mysqli_query($link,"SELECT * FROM student");
$arr = mysqli_fetch_all($res,MYSQLI_ASSOC);
print_r(json_encode($arr));
mysqli_close($link);
?>
常用的SQL语句
- 刚才说了怎么操作数据库
- 现在我们学习一下,操作数据库时候常用的 sql 语句
- 我们就是依靠这些 sql 语句来进行数据库操作的
查询语句
<?php
# 查询 student 这个表里面的所有数据
$sql = 'SELECT * FROM `student`';
# 查询 student 表中的数据里面 gender 为 男 的数据
$sql = 'SELECT * FROM `student` WHERE `gender`="男"';
# 查询 student 表中的数据里面 age 大于 18 的数据
$sql = 'SELECT * FROM `student` WHERE `age`>18';
# 查询 student 表中的数据里面 age 大于 18 且 gender 为 男 的数据
$sql = 'SELECT * FROM `student` WHERE `age`>18 AND `gender`="男"';
# 查询 student 表中的数据里面 age 小于 22 或者 age 大于 28 的数据
$sql = 'SELECT * FROM `student` WHERE `age`<22 OR `age`>28';
# 查询 student 表中的数据里面从 第几条开始 查询多少条
$sql = 'SELECT * FROM `student` LIMIT 0, 10';
# 先按照条件筛选出数据以后再进行分页查询
# 下面是查询表中所有 age>18 且 性别为男的所有数据,查出来以后从第 10 条开始查 10 条
$sql = 'SELECT * FROM `student` WHERE `age`>18 AND `gender`="男" LIMIT 10, 10';
# 查询表的模糊查询
# 下面表示查询表中所有数据里面 name 字段中包含 "三" 字的数据
$sql = 'SELECT * FROM `student` WHERE `name` LIKE "%三%"';
# 查询排序,查询的时候按照某一个字段升序或降序排序
$sql = 'SELECT * FROM `student` ORDER BY `age` ASC';
$sql = 'SELECT * FROM `student` ORDER BY `age` DESC';
?>
增加语句
<?php
# 向表中增加一条数据,再增加的时候主键不能由我们书写,而是 mysql 数据库自己递增
$sql = 'INSERT INTO `student` VALUES(null, "张三", 18, "男", 1913, 100)';
# 插入固定几个键的数据,其他的用默认值
$sql = 'INSERT INTO `student` (`name`, `age`) VALUES("李四", 22)';
?>
删除语句
<?php
# 删除表中 id 为 100 的数据
$sql = 'DELETE FROM `student` WHERE `id`=100';
# 删除表中 name 为 张三 的数据
$sql = 'DELETE FROM `student` WHERE `name`="张三"'
?>
修改语句
<?php
# 更新一条 id 为 100 的数据中的 name 字段的值和 age 字段的值
$sql = 'UPDATE `student` SET `name`="张三", `age`=10 WHERE `id`=100'
# 更新数据的时候让所有的数据增加一些内容
$sql = 'UPDATE `student` SET `age`=age+1'
?>