博客列表 >数据库基础与常用操作

数据库基础与常用操作

溪边小树
溪边小树原创
2020年05月17日 22:43:05858浏览

数据库

1. 发展

  • 以文件/文档的方式进行手工管理
  • 数据库的方式管理
  • 关系型数据库:MySQL
  • 关系: 表格
  • 免费, 大厂产品, 社区活跃

2. 管理工具

  • phpmyadmin:web
  • mysql workbench: MySQL 工作台
  • Navicat: 好用收费
  • DBeaver: 免费客户端工具
  • Adminer.php

3. 术语

  • 数据库: 目录
  • 数据表: 目录中的文件, .dbf
  • 字段: 也叫’列’
  • 记录: 也叫’行’,是由一个或多个字段组成
  • 键: 是用来标识记录的

4. 数据类型

  • 数值型: int
  • 字符型: char
  • 日期时间型: date, datetime

5. 常用指令

  1. 操作方式: 增删改查: CURD
  2. 数据是否变化: 分为读与写二种
    读: 查询 select
    写: 增加 insert, 更新 update, 删除 delete

连接数据库

config/database.php

  1. <?php
  2. namespace pdo_edu;
  3. // 数据库连接配置参数
  4. return [
  5. // 数据库的类型
  6. 'type' => $type ?? 'mysql',
  7. // 数据库默认主机
  8. 'host' => $host?? 'localhost',
  9. // 默认数据库
  10. 'dbname'=> $dbname ?? 'phpedu',
  11. // 默认字符编码集
  12. 'charset'=> $charset ?? 'utf8',
  13. // 默认端口号
  14. 'port'=> $port ?? '3306',
  15. // 默认的用户名
  16. 'username'=> $username ?? 'root',
  17. // 默认的用户密码
  18. 'password'=> $password ?? 'root',
  19. ];

connect.php

  1. <?php
  2. // 连接数据库
  3. namespace pdo_edu;
  4. use Exception;
  5. use PDO;
  6. // 加载配置参数
  7. $config = require 'config/database.php';
  8. // PDO: PHP Data Object, php数据对象
  9. // pdo可以让php对所有类型的数据库, 提供了一个统一的,轻量级的访问接口
  10. // PDO连接数据库三要素, 三个重要参数,
  11. // 数据源: DSN
  12. // 用户名: username
  13. // 用户密码: password
  14. // DSN: 数据库类型:host=数据库的主机地址;dbname=默认的数据库名称;chart=... ;port= ...
  15. // $dsn = 'mysql:host=localhost;dbname=phpedu;charset=utf8;port=3306';
  16. $type = $config['type'];
  17. $host = $config['host'];
  18. $dbname = $config['dbname'];
  19. $username = $config['username'];
  20. $password = $config['password'];
  21. // 创建DSN
  22. $dsn = sprintf('%s:host=%s;dbname=%s', $type,$host,$dbname);
  23. try {
  24. // 连接数据库
  25. $pdo = new PDO($dsn, $username, $password);
  26. // var_dump($pdo);
  27. } catch (Exception $e) {
  28. die($e->getMessage());
  29. }

增删改查操作示例

1、select1.php,查询条件:age>40

数据表内容:


查询结果显示:

  1. <?php
  2. // 数据表查询: 单条查询
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = 'SELECT 字段列表 FROM 数据表名称 WHERE 查询条件 '
  9. $sql = 'SELECT `id`,`name` FROM `staffs` WHERE `age` > 40';
  10. // 预处理对象$stmt:为了防止 SQL注入
  11. $stmt = $pdo->prepare($sql);
  12. // 预处理对象$stmt , 就是SQL语句对象
  13. // 使用预处理对象调用 execute()执行这条sql语句
  14. $stmt->execute();
  15. // 使用:debugDumpParams()调试/查看
  16. // var_dump($stmt->debugDumpParams());
  17. // 获取表中一条记录
  18. // $staff = $stmt->fetch(PDO::FETCH_ASSOC);
  19. // printf('<pre>%s</pre>',print_r($staff,true));
  20. // $staff = $stmt->fetch(PDO::FETCH_ASSOC);
  21. // printf('<pre>%s</pre>',print_r($staff,true));
  22. // $staff = $stmt->fetch(PDO::FETCH_ASSOC);
  23. // printf('<pre>%s</pre>',print_r($staff,true));
  24. // 如果再也没有满足条件的记录, 会返回false
  25. while ($staff = $stmt->fetch(PDO::FETCH_ASSOC)) {
  26. printf('<pre>%s</pre>',print_r($staff,true));
  27. }
  28. // 3. 关闭连接[可选]
  29. // $pdo = null;
  30. unset($pdo);

select2.php

  1. <?php
  2. // 数据表查询: 多条查询
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = 'SELECT 字段列表 FROM 数据表名称 WHERE 查询条件 '
  9. // 匿名占位符: ?
  10. // $sql = 'SELECT * FROM `staffs` WHERE `age` > ?';
  11. // 命名占位符: 给一个有意义 的字符串, 必须用冒号开始
  12. $sql = 'SELECT * FROM `staffs` WHERE `age` > :age';
  13. // 预处理对象$stmt:为了防止 SQL注入
  14. $stmt = $pdo->prepare($sql);
  15. // 预处理对象$stmt , 就是SQL语句对象
  16. // 使用预处理对象调用 execute()执行这条sql语句
  17. // 对应匿名占位符使用是索引数组
  18. // $stmt->execute([50]);
  19. // 对应命名占位符使用是关联数组
  20. $stmt->execute(['age'=>60]);
  21. $staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);
  22. // print_r($staffs);
  23. foreach ($staffs as $staff) {
  24. $date = date('Y年m月d日', $staff['hiredate']);
  25. printf('id=%s:姓名=%s---职位=%s---入职时间=%s<br>', $staff['id'], $staff['name'], $staff['position'], $date);
  26. }
  27. // 3. 关闭连接[可选]
  28. // $pdo = null;
  29. unset($pdo);
  30. // fetch()
  31. // fetchAll()

2、insert.php

  1. <?php
  2. // 数据表新增记录
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = 'INSERT 表名 SET name=?, age=?,.... ';
  9. $sql = "INSERT `staffs` SET `name`= ? , `age`=?, `sex`=?, `position`=?, `mobile`=?, `hiredate`=?";
  10. $stmt = $pdo->prepare($sql);
  11. $data = ['朱老师', 66, 1, '讲师', '18977665544', 1579244075];
  12. $stmt->execute($data);
  13. // 判断是否执行成功
  14. // $stmt->rowCount(): 返回写操作产生的受影响的记录数量
  15. if ($stmt->rowCount() === 1) {
  16. echo '新增成功, 新增记录的主键是: ' . $pdo->lastInsertId();
  17. } else {
  18. echo '新增失败';
  19. print_r($stmt->errorInfo());
  20. }
  21. // 3. 关闭连接[可选]
  22. unset($pdo);

3、update.php

  1. <?php
  2. // 数据表更新记录
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = "UPDATE 表名 SET 字段=新值 WHERE 更新条件"
  9. $sql = "UPDATE `staffs` SET `name` = ? WHERE `id`=?";
  10. $stmt = $pdo->prepare($sql);
  11. $stmt->execute(['王老师', 11]);
  12. // 判断是否执行成功
  13. // $stmt->rowCount(): 返回写操作产生的受影响的记录数量
  14. if ($stmt->rowCount() === 1) {
  15. echo '更新成功';
  16. } else {
  17. echo '没有记录被更新';
  18. print_r($stmt->errorInfo());
  19. }
  20. // 3. 关闭连接[可选]
  21. unset($pdo);

4、delete.php

  1. <?php
  2. // 数据表删除记录
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = "DELETE FROM 表名 WHERE 删除条件"
  9. $sql = "DELETE FROM `staffs` WHERE `id`=:id";
  10. $stmt = $pdo->prepare($sql);
  11. $id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
  12. $stmt->execute(['id'=>$_GET['id']]);
  13. // 判断是否执行成功
  14. // $stmt->rowCount(): 返回写操作产生的受影响的记录数量
  15. if ($stmt->rowCount() === 1) {
  16. echo '删除成功';
  17. }
  18. // 3. 关闭连接[可选]
  19. unset($pdo);

课程学习小结

本次课程老师讲解非常细致,我也认真回看了视频,并实操了每一段代码予以加深理解,对原本感觉有神秘面纱的数据库内容进行了第一次成功实操,使用了phpstudy自带的MySQL5.7.26数据库及navicat管理工具,当第一次修改完成相关设置参数并实现查询、新增、更新、删除等功能的时候,内心还是有点小窃喜的,满足学习带来的小乐趣,后续将花更多时间深入学习。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议