MySQL 基础
1. DBMS 与 MySQL
- DBMS: 数据库管理系统(通过数据结构管理数据)
- MySQL: 流行的关系型(Relation)数据库管理系统
2. 常用客户端
- phpMyAdmin: web 版https://www.phpmyadmin.net/
- adminer: 迷你 web 版https://www.adminer.org/
- dbeaver: 强大开源https://dbeaver.io/
- workbench: 官方客户端https://www.mysql.com/
- HeidiSQL: 轻量级通用https://www.heidisql.com/
3. 常用术语
- 数据库(database): 数据表的集合
- 数据表(table): 二维表格
- 字段(field): 列,一组相同类型的数据集合
- 记录(Record): 行,一组相关字段构成的数据集合
- 值域(Domain): 某个字段的取值范围
- 主键(primary key): 唯一标记某一行
- 外键(foreign key): 某字段必须与另一表字段关联
- 索引(index): 为常用字段创建索引可提升效率
4. 操作类型
- DDL: 数据定义语言(Data Definition Language)
- DQL: 数据查询语言(Data Query Language)
- DML: 数据操作语言(Data Manipulation Language)
- DCL: 数据控制语言(Data Control Language)
重点: DML,即常说的增删改查(CURD)
5. 常用操作(CURD)
- 创建(Create):
INSERT
- 更新(Update):
UPDATE
- 读取(Read) :
SELECT
- 删除(Delete):
DELETE
6. CURD 语法
(1) INSERT
-- 语法1
INSERT INTO 数据表(字段列表) VALUES (字段值列表);
-- 语法2
INSERT 数据表 VALUES (字段值列表)
-- 语法3
INSERT 数据表 SET 字段键值对
-- 案例(id是pk,系统维护要以不给值,要么null)
INSERT INTO `user` (`id`,`name`) VALUES (null,'admin')
INSERT `user` VALUES (null,'admin')
INSERT `user` SET `name`='admin'
(2) UPDATE
-- 语法
UPDATE 数据表 SET 字段=值,... WHERE 条件
-- 案例
UPDATE `user` SET `name`='zhu' WHERE `id`=5;
(3) DELETE
-- 语法
DELETE FROM 数据表 WHERE 条件
-- 案例
DELETE FROM `user` WHERE `id`=5
(4) SELECT
-- 语法
SELECT 字段列表 FROM 数据表 WHERE 条件
ORDER BY 排序字段 LIMIT 偏移量, 数量
-- 案例
SELECT `id`,`name` FROM `user`
WHERE `id` > 3 ORDER BY `id` DESC LIMIT 10,5
7. 数据类型
- 整数: int
- 小数: float
- 字符串: char/varchar/text/blob
- 日期时间: date/datetime/timestamp
8. WHERE 条件
- 操作符:
=,!=/<>,<,>,>=,<=
- AND/OR : 与/或,
WHERE id>10 AND id<30
- BETWEEN-AND: 区间,
WHERE id BETWEEN 10 AND 30
- IN: 集合,
WHERE id IN (3,5,7)
- LIKE: 模糊,
WHERE name LIKE '%f'
(%
多个_
单个) - IS NULL/IS NOT NULL: 查询值为 NULL/不为 NULL 的记录
9. PDO:PHP 数据对象
- PDO: PHP 为常用数据库操作定义了一个通用的轻量级访问接口
- PDO 为数据访问提供了抽象层,意味着可以用相同的方式访问不同的数据库
- PDO 默认随 PHP 安装并自动开启
- 目前主流是: PDO 预处理操作数据库
- 预处理:编译的是 SQL 语句模板,执行时,才绑定真实的数据,更加安全,高效
10. PDO 三大类
- PDO: PDO 类,提供了数据库连接与基本操作,SQL 语句对象等
- PDOStatement: PDO 语句类,提供了操作数据表的所有功能
- PDOException: PDO 异常类,提供了全部的异常处理方案
11. PDO 常用 API
PDO::__construct()
: PDO 实例构造器PDO::prepare()
: 创建语句对象PDO::lastInsertId
: 新增记录 IDPDO::setAttribute()
: 设置连接属性,如获取模式PDOStatement::bindColumn()
: 绑定一列到 PHP 变量PDOStatement::bindParam()
: 绑定一个参数到变量名PDOStatement::bindValue()
: 绑定一个值到一个参数PDOStatement::debugDumpParams()
: 打印一条预处理语句PDOStatement::errorCode()
: 获取跟上一次语句句柄操作相关的PDOStatement::errorInfo()
: 获取跟上一次语句句柄操作相关的扩展错误信息PDOStatement::execute()
: 执行一条预处理语句PDOStatement::fetch()
: 从结果集中获取下一行PDOStatement::fetchAll()
: 返回一个包含结果集中所有行的数组PDOStatement::fetchColumn()
: 从结果集中的下一行返回单独的一列PDOStatement::fetchObject()
: 获取下一行并作为一个对象返回PDOStatement::getAttribute()
: 检索一个语句属性PDOStatement::rowCount()
: 返回受上一个 SQL 语句影响的行数PDOStatement::setAttribute()
: 设置一个语句属性PDOStatement::setFetchMode()
: 为语句设置默认的获取模式