博客列表 >数据库与商城sql

数据库与商城sql

手机用户1631860753
手机用户1631860753原创
2021年10月20日 20:11:57819浏览

一.数据库

  • 前缀:文件名可以加下划线: 公司名-项目名-表名
  • 主键:一个表里的数据,每条数据都有的唯一的值
  • 在表里,如果是已经存在的id,或者新增的数据,被删除了,也不会重新计算
  • mysql 也可以像PHP那样写流程判断
  • mysql 关键字可以是大写也可以是小写,一般我们程序员默认的命令是大写,其他字段小写
  • 表名和字段名,用 `` 符号包裹
  • 值是用 ‘’ 单引号包裹

1.插入数据

  • 关键字: INSERT TNTO
    1. //第一种插入语句
    2. INSERT INTO `user`VALUES(NULL,'小红',18345647559,'2021-10-19 16:08:53',0)
    3. //第二种插入语句
    4. INSERT INTO `user`('id')VALUES(NULL)
    5. //第三种插入语句
    6. INSERT INTO `user`SET `name` = '小明' ,

2.查询数据

  • 关键字 SELECT
  • 查询是不改变数据库的数据的,插入,修改,删除,都要修改数据库中的数据
    1. // 直接查询表里的全部数据
    2. SELECT * FROM `user`
    2.1 运算符
  • 等于 = ,不等于 <> ,大于等于 >= ,小于等于 <=
    1. // 查询id 大于10 的
    2. SELECT * FROM `user` WHERE `id` > 10
    2.2 逻辑运算符
  • AND , OR , XOR
    1. // 查询小于6的 和 大于18的
    2. SELECT * FROM `user` WHERE `id` < 6 OR `id` >10
    2.3 逻辑非
  • NOT
    1. // 查询name 为空的数据
    2. SELECT * FROM `user` WHERE `name` IS NULL
    3. // 查询name 不为空的数据
    4. SELECT * FROM `user` WHERE `name` IS NOT NULL
    2.4 BETWEEN
  • BETWEEN 相当于取中间值
    1. // 获取 >=10 AND <=20 的值
    2. SELECT * FROM `user` WHERE `id` BETWEEN 10 AND 20
    3. // 获取除去 >=10 AND <=20 的值
    4. SELECT * FROM `user` WHERE `id` NOT BETWEEN 10 AND 20
    2.5 模糊查询
  • LIKE 模糊查询的关键字
  • _ 下划线代表你查询时输入多少个下划线,就查询你输入关键字加多少个下划线的字符
  • % 查询带有你输入关键字的所有数据
    1. // 查询 xiao 后面还有五个字符的数据
    2. SELECT * FROM `user` WHERE `account` LIKE 'xiao_____'
    3. // 查询所有带有a的数据
    4. SELECT * FROM `user` WHERE `account` LIKE '%a%'
    2.6 返回值
  • *号 会把所有返回值都返回

  • 例:

    1. SELECT`name`,`phone`,`age`FROM `user`WHERE`account`LIKE'%o%'
2.7 分页
  • LIMIT 关键字
    1. // 分页,当前页只看到查询内容的10条
    2. SELECT `name`,`phone`,`age` FROM `user` WHERE `account` LIKE '%o%' LIMIT 10
2.8 排序
  • ORDER BY 排序命令,默认是正序,从小到大
  • DESC 倒序,从大到小
    1. // 从小到大
    2. SELECT `id`,`name`,`phone`,`age` FROM `user` WHERE `account` LIKE '%o%' ORDER BY `id` LIMIT 0,10
    3. // 从大到小
    4. SELECT `id`,`name`,`phone`,`age` FROM `user` WHERE `account` LIKE '%o%' ORDER BY DESC `id` LIMIT 0,10

    3.修改

  • UPDATE 修改命令
  • 修改时一定要增加命令,不然会把所有数据都修改了
  • WHERE 命令,就是增加条件
  • WHERE条件,也可以用在,修改和删除里,但是不建议在mysql语句来修改和删除

    1. // 把第4条数据修改了
    2. UPDATE `user`SET `name` = '小李',`phone` = '12345678912'WHERE `id` = 4

4. 删除

  • DELETE 删除命令
  • 也要增加WHERE条件,不然它会把所有数据都删了
    1. // 把 id =5 的数据删除
    2. DELETE FROM `user` WHERE `id` = 5

二.php获取数据库

  • pdo 集合了, php data object ,统一了php访问各种类型数据库
  • $pdo = new PDO(数据源,用户名,密码);
    1. 连接数据库
  • dbname=php; php是库名
    1. $pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root');
    2. var_dump($pdo);
2. 预处理sql语句
  • prepare 预处理sql语句,生成处理对象
  • ->是类的访问符号,访问类里的方法或者成员
    -例
    1. $pre = $pdo->prepare('SELECT * FROM `user`');
    2. var_dump($pre);
    3.执行sql语句
  • execute() 执行sql语句(读/写)
    1. $exe = $pre->execute();
    4.返回结果集
  • fetchAll() 返回结果集
    1. $data = $pre->fetchAll();
    5.防止连接出错\
  • try 执行 {} 里面的代码,如果出错就传给catch
    1. // 当数据库mysql没有开启是就会报错
    2. try {
    3. $pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root');
    4. } catch (PDOException $e) {
    5. // 抛出错误,错误是你可要定义的
    6. echo '数据库连接失败' . $e->getMessage();
    7. }
6. 返回单条结果
  • fetch() 查询出来的是一维数组
    1. $pre = $pdo->prepare('SELECT * FROM `user`');
    2. $exe = $pre->execute();
    3. $data = $pre->fetch();
    4. print_r($data);
  • 效果
7.在php增加sql数据
    1. $pre = $pdo->prepare("INSERT INTO `user` VALUES (null, 'xiaoming', '123456', '小明', 18, '13843818908', 0, 0, 1)");
    2. $exe = $pre->execute();
    3. print_r($exe);
8. PDO 绑定参数
  • 防止sql注入:使用pdo,防止sql语句注入,比mysql函数安全很多
  • sql注入,就是用户把sql语句,写到表单中,提交到后台,后台如果没有判断,就会直接执行他传过来的sql语句
  • pdo 只要给个占位符 : ,在下面的代码中,传值给占位符

    1. $sql = 'INSERT INTO `user` SET `account`=:account,`password`=:password,`name`=:name,`phone`=:phone';
    2. $pre = $pdo->prepare($sql);
    3. // 在执行之前进行传值
  • bindParam 参数绑定,第三个参数:

    1. 占位符名
    2. 要给值的变量,绑定上,现在可以没有值
    3. 常量,pdo预定义常量,可以设置这个值的类型, 访问方式: PDO:: ,是类的常量访问方式
      PARAM_STR 字符串
      PARAM_INT 整数
    1. // 增加数据,并获取增加的id值
    2. $pre->bindParam('account', $account, PDO::PARAM_STR);
    3. $pre->bindParam('password', $password, PDO::PARAM_STR);
    4. $pre->bindParam('name', $name, PDO::PARAM_STR);
    5. $pre->bindParam('phone', $phone, PDO::PARAM_INT);
    6. $account = 'xiaozhao';
    7. $password = md5('123456');
    8. $name = '小赵';
    9. $phone = 18715745675;
    10. $exe = $pre->execute();
    11. if(!$ese){
    12. print_r($pre->errorInfo());
    13. }else{
    14. // rowCount 获取是否成功,影响数量
    15. echo $pre->rowCount();
    16. echo '<hr>';
    17. // lastInsertId 获取这次自增的ID 类,是用连接的类,是$pdo
    18. echo $pdo->lastInsertId();
    19. }
    9.占位符
  • ? 占位符 与 : 明文占位符
  • ? 占位,数组传值,并且不需要绑定数据,直接在 execute 里传数组

    1. // ? 占位符
    2. // 添加一条数据
    3. $sql = 'INSERT INTO `user` SET `account`=?,`password`=?,`name`=?,`phone`=?';
    4. $pre = $pdo->prepare($sql);
    5. $exe = $pre->execute([
    6. 'xiaoli',
    7. md5(123456),
    8. '小李',
    9. 13345753547
    10. ]);
    11. if (!$exe) {
    12. print_r($pro->errorInfo());
    13. } else {
    14. echo $pre->rowCount();
    15. echo '<hr>';
    16. echo $pdo->lastInsertId();
    17. }
    1. // : 明文占位符
    2. $sql = 'INSERT INTO `user` SET `account`=:account,`password`=:password,`name`=:name,`phone`=:phone';
    3. $pre = $pdo->prepare($sql);
    4. $exe = $pre->execute([
    5. ':account' => 'xiaolong',
    6. ':password' => md5(123456),
    7. ':name' => '小龙',
    8. ':phone' => 18654215366
    9. ]);
    10. if (!$exe) {
    11. print_r($pro->errorInfo());
    12. } else {
    13. echo $pre->rowCount();
    14. echo '<hr>';
    15. echo $pdo->lastInsertId();
    16. }

三.商城项目

用户表

  1. SET NAMES utf8mb4;
  2. SET FOREIGN_KEY_CHECKS = 0;
  3. -- ----------------------------
  4. -- Table structure for shop_yh
  5. -- ----------------------------
  6. DROP TABLE IF EXISTS `shop_yh`;
  7. CREATE TABLE `shop_yh` (
  8. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  9. `account` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  10. `password` char(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  11. `phone` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  12. `gender` char(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  13. PRIMARY KEY (`id`) USING BTREE
  14. ) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;
  15. SET FOREIGN_KEY_CHECKS = 1;

商品表

  1. SET NAMES utf8mb4;
  2. SET FOREIGN_KEY_CHECKS = 0;
  3. -- ----------------------------
  4. -- Table structure for shop_sp
  5. -- ----------------------------
  6. DROP TABLE IF EXISTS `shop_sp`;
  7. CREATE TABLE `shop_sp` (
  8. `id` int(10) NOT NULL,
  9. `spmc` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  10. `spxx` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  11. `spbh` char(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  12. `spjg` decimal(10, 0) NULL DEFAULT NULL,
  13. `sccj` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  14. PRIMARY KEY (`id`) USING BTREE
  15. ) ENGINE = MyISAM CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;
  16. SET FOREIGN_KEY_CHECKS = 1;

订单表

  1. SET NAMES utf8mb4;
  2. SET FOREIGN_KEY_CHECKS = 0;
  3. -- ----------------------------
  4. -- Table structure for shop_ddb
  5. -- ----------------------------
  6. DROP TABLE IF EXISTS `shop_ddb`;
  7. CREATE TABLE `shop_ddb` (
  8. `id` int(10) NOT NULL,
  9. `ddbh` char(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  10. `yhid` int(10) NULL DEFAULT NULL,
  11. `spbh` char(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  12. `spsl` int(10) NULL DEFAULT NULL,
  13. `spjg` decimal(10, 0) NULL DEFAULT NULL,
  14. PRIMARY KEY (`id`) USING BTREE
  15. ) ENGINE = MyISAM CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Fixed
  16. SET FOREIGN_KEY_CHECKS = 1;
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议