php抓取网页数据插入数据库(PHP和MySQL的初学者学习法(一)学习笔记)

优采云 发布时间: 2022-01-30 12:01

  php抓取网页数据插入数据库(PHP和MySQL的初学者学习法(一)学习笔记)

  封面人物

  刘成玉

  前言

  这是我学习“PHP and MySQL Web Development”的阅读笔记。我会记录一些重要的知识点,当然只写我认为重要的。

  如果有人有幸看到这个学习笔记,你应该结合本书阅读它,而不仅仅是这个笔记。在笔记中,我会记录我在学习中遇到的一些问题以及解决方法和注意事项。为了方便管理和查找,文章或者我在书中整理的笔记目录,方便对比。不教!重要的事情再说一遍!我是 PHP 和 MySQL 的初学者。我自己就是前端。我学会了拓宽面向薪水编程的知识。其实我还是有一些个人意见的,因为都说教法和小黄鸭调试法,这就是小老虎的学习法,我把知识点教给小老虎,保证我学的扎实并且可以赚钱。欢迎讨论和建议,

  本章主要介绍:

  仔细看,每一章前的说明,本章的主要内容,基本都是你需要掌握的。读完一章后,回来查看这份清单。开始吧。

  10.1 什么是 SQL?SQL的全称是结构化查询语言。它是访问关系数据库管理系统的标准语言。

  结构化查询语言结构化查询语言,结构化,阅读 ['strʌktʃəd]。

  用于定义数据库的数据定义语言(Data Definition Language,DDL)和用于查询数据库的数据操作语言(Data Manipulation Language,DML)。SQL 收录这两个基本部分。10.2 在数据库中插入数据

  插入语句通常具有以下格式:

  插入 [INTO] 表 [(col1,col2,col3,...)] 值 (value1,value2,value3,...);

  书中给出的例子:

  插入客户值(null,'Julie Smith','25 Oak Street','Airport West');

  看书能看懂吗?

  重要提示:mysql 中的字符串应该用一对单引号或双引号括起来。

  使用insert语句指定将插入的值按照插入的顺序添加到表中的列中。

  如果不按列顺序添加,按如下方式指定要添加的列:(例如只更新用户名)

  insert into customers (name,city) values('Melissa Jones','Nar Nar Goon North');

  或者

  insert into customers

->set name = '李重楼',

->address = '莲花池水沟子',

->city = '北京';

  不过,好好看看为什么customerid列被指定为null?(一会儿结合查询看看查询结果,customerid列的值是多少。)

  插入多条数据时,参考程序清单10-1,每个括号为一条数据,括号之间用逗号隔开。

  LOW_PRIORITY 关键字

  LOW_PRIORITY 低优先级,主动降低语句执行的优先级。(只是为了理解,问了后端和爬虫的同事,说用处不大……)

  MySQL的默认调度策略可用,总结如下:

  · 写操作优先于读操作。

  · 对数据表的写操作一次只能发生一次,并且写请求按照它们到达的顺序进行处理。

  · 可以同时对一个数据表执行多个读取操作。

  延迟关键字

  DELAYED 延迟,延迟插入。我也先明白这一点。如果我以后看到一些重要的东西,我会回来修改并在这里添加。

  DELAYED 修饰符适用于 INSERT 和 REPLACE 语句。当 DELAYED 插入操作到达时,服务器将数据行放入队列,并立即向客户端返回状态消息,以便客户端可以继续操作,直到表实际插入记录。10.3 从数据库中获取数据

  前面的基本格式我就不写了。它太长了。关键是,我懒得打字了。

  这里有一个重要的解释:from是from..意思是F!!啊!!哦!!!米!!!形式是形式!!!别搞错了,当出现问题时检查这个命令关键字!再看表名!列名中有错字吗?少S,多S什么的!这都是用血和泪换来的经验!好好记住~好!!!

  上面那个红字其实是我第一次看书练代码的时候写的,这里也写了。希望它可以帮助你。

  书上的代码后面一定要打字。有必要熟悉它并找出问题所在。比如我用bookorama账号登录数据库的时候,查询结果就变成了乱码。首先,我确定这是一个编码问题。然后google了怎么解决,但是不敢改,因为我用的是公司项目的开发版数据库。虽然有正式版作为后盾,但我不得不权衡随机的配置变化。所以,在这里我先放手。(如果你解决了,告诉我怎么解决。我这里的编码是utf8mb4。还请告诉我root没有乱,但是bookorama为什么乱了,谢谢。)

  select name ,city from customers;

  通过在 select 关键字后面给出列名,可以指定(查询)任意数量的列。

  一种有用的方法是通配符“*”(星号),它匹配指定表中的所有列。

  现在,尝试使用通配符查询客户表,看看在插入数据时指定为 null 或空的 customerid 列的值将有助于您了解自增。

  查询结果如下:(我自己改了一些数据,可能和你的不一样,大家理解一下)

  +------------+-----------------+--------------------+--------------------+

| customerid | name | address | city |

+------------+-----------------+--------------------+--------------------+

| 1 | 刘能 | 牡丹江大街 | 牡丹江 |

| 2 | 李重楼 | 北京中 | 北京 |

| 3 | 谢广坤 | 保定市徐水县 | 保定 |

| 4 | Alan Wong | 1/47 Haines Avenue | 保定 |

| 5 | Michelle Arthur | 357 North Road | Yarraville |

| 6 | Melissa Jones | c3-1 | Nar Nar Goon North |

+------------+-----------------+--------------------+--------------------+

  另一个是,如果你不知道当前表,或者你需要操作的表中收录哪些列、列名、数据类型和主键,你不会忘记下面的命令吗?

  describe tablename;

  查询结果如下:(客户表结果)

  +------------+-----------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+------------+-----------+------+-----+---------+----------------+

| customerid | int(11) | NO | PRI | NULL | auto_increment |

| name | char(70) | NO | | NULL | |

| address | char(100) | NO | | NULL | |

| city | char(30) | NO | | NULL | |

+------------+-----------+------+-----+---------+----------------+

  10.3.1获取满足条件的数据 WHERE语句指定选择特定行的条件。

  先翻一页,看一下select查询语句基本格式中where的样式。

  它用方括号括起来表示可选。也就是说,您可以根据需要添加它。所以,你必须学会​​阅读基本格式。

  select *

from orders

where customerid= 3;

  可以看到命令在一个分支中,也可以回车输入一个分支,也可以输入一行。不同的是,如果键入一个分支,MySQL 可以方便地指出哪一行是错误的。(我都是在一行里打出来的,方便按键盘上的方向键切换语句)

  我书中的命令是customerid = 3,但书中说将选择customerid 5的行。我觉得写错了。查询应该是根据条件查询的结果,一切以实际操作结果为准。(我的书是原书的第四版,如果不是编辑不改,那他妈就是盗版问题。)

  表10-1列出了常用的比较运算符,你自己看看,你可以全部操作看看效果。

  特别列出 BETWEEN 列:(之间是这样使用的)

  select * from customers where customerid between 10 and 16;

  然后使用条件尝试 AND 和 OR 组合。

  10.3.2 从多个表中获取数据

  本节的画龙点睛到此。其实数据库的画龙点睛也是一句话。(在我看来)

  用数据回答问题。

  开始吧。

  这些数据分布在不同的表中,因为它们与现实世界的对象相关。

  书上说是在第8章介绍的。

  在创建数据库时,我们经常对现实世界的实体和关系进行建模,并存储有关这些实体对象和关系的信息。

  要将这些信息放在 SQL 中,必须执行称为关联的操作。简单来说,这意味着需要根据数据之间的关系将两个或多个表关联在一起。

  1.简单关联

  select orders.orderid,orders.amount,orders.date

from customers,orders

where customers.name='Julie Smith'

and

customers.customerid = orders.customerid;

  要记住的重要关联规则:

  因为这个查询是使用来自两个表的信息完成的,所以我们必须在此处列出两个表。(在您的查询中,您需要列出您要查询的列数据来自哪个数据表。)

  表名之间的逗号相当于输入 INNER JOIN 或 CROSS JOIN。

  有时也称为表的完全关联或笛卡尔积。

  笛卡尔积......这有点神秘。给数学不好的同学解释一下:(二乘二?)

  简单来说,就是两个集合相乘的结果。

  具体定义见代数系统一书中的定义。

  直觉上是

  设置 A{a1,a2,a3} 设置 B{b1,b2}

  他们的笛卡尔积是 A*B ={(a1,b1),(a1,b2),(a2,b1),(a2,b2) ,( a3,b1),(a3,b2)}

  任意两个元素组合

  然后书上说,这是没有意义的。真的没有意义,你输入select * from customers, orders;您将看到这两个数据表的笛卡尔积。我就不贴了,太长了。

  因此,我们需要通过where子句使用关联条件来过滤掉有意义的数据。

  书中给出了示例(customers.name='Julie Smith' and customers.customerid = orders.customerid;)来过滤掉Julie Smith 的订单。

  摘要:确定需要哪些数据列。如果当前数据表不收录数据列,则需要导入收录该数据列的数据表。这两个数据表一下子就完全相关了!(此时你想要的数据格式已经出现了,但是有N种,你不知道是哪一种!)通过where子句提供过滤条件,得到过滤结果。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线