八:爬虫-MySQL基础

一:MySQL数据库基础

1.MySQL数据库介绍

MySQL是一个[关系型数据库管理系统],由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一
数据库是一个存储数据的仓库,按照数据结构,来组织,管理和存储数据,并提供了增、删、改、查的功能。

2.数据库的主要特点

  1. 实现数据共享:
    • 数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库。
  2. 减少数据的冗余度:
    • 同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。
  3. 数据的独立性:
    • 数据的独立性包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。
  4. 数据实现集中控制:
    • 文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。
  5. 数据一致性可维护性,以确保数据的安全性和可靠性
    • 安全性控制:以防止数据丢失、错误更新和越权使用;
    • 完整性控制:保证数据的正确性、有效性和相容性;
    • 并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用;
    • 故障的发现和恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障;
  6. 故障恢复
    • 由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。

3.数据库的类型

关系型数据库

  • Oracle
  • Mysql
  • PostgreSql
  • DB2
  • Microsoft SQL server
  • MicroSoft Access

非关系型数据库

  • Redis
  • Mongodb
  • Big Table

4.MySQL数据库安装

  1. 访问网址:http://www.mysql.com
  2. 具体网址:https://dev.mysql.com/downloads/windows/installer/8.0.html
  3. 点击:DOWNLOADS

image.png

  1. 进入,Downloads 向下滑动,到最低层,找到MySQLcommunity (GPL) Downloads,单击进入(社区版对于大部分开发者就足够使用了)

image.png

  1. 点击 Go to Download Page 进入
    image.png

  2. 看到 MSI,单击本机版,431.7M 大的,进入
    image.png

  3. 点击No thanks, just start my download(下载时不需要登录)

     ![image.png](https://img-blog.csdnimg.cn/img_convert/b46ce7cef447cbc0e9203b8456f75404.png)
    
  4. 等待安装包下载完成后,点击安装包进行安装
    image.png
    点击之后等待一下
    image.png

  5. 选择安装方式

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

  1. 验证是否安装成功
    以管理员的方式进入cmd命令行,然后输入mysql -u root -p,出现如下界面,那是因为我们还没有配置环境变量。
    image.png
    找到我们mysql下的bin的路径,默认是C:\Program Files\MySQL\MySQL Server 8.0\bin
    复制这个路径,右击我的电脑,点击属性
    image.png
    点击高级系统设置>点击环境变量>点击Path>点击编辑

image.png
image.png
image.png
点击新建>粘贴路径>点击确定(一直点确定)
!image.png
重新打开cmd命令行,验证mysql是否安装成功(下图证明已经安装成功)
image.png

MySQL安装的注意事项:

1、严格按照步骤走
2、可能存在的环境问题
2.1 安装mysql是路径不要设置中文 建议直接默认安装到C盘
2.2 你当前的电脑用户名不要是中文
2.3 你的服务要记得开启 默认 不用关 出现问题再看服务
2.4 make take a long time 找博客 https://www.cnblogs.com/mobaijun/p/14437131.html
2.5 当你安装失败的时候 一定要记住 清空你的安装路径下的文件 防止紊乱
2.6 一定要记住配置环境变量
2.7 安装版本 8.0以上的 找msi文件

二:MySQL数据库的基本操作

1.创建数据库

我们可以在登陆 MySQL 服务后,使用命令创建数据库,语法如下:

CREATE DATABASE 数据库名;

2.显示所有的数据库

show databases;

3.删除数据库

使用普通用户登陆 MySQL 服务器,你可能需要特定的权限来创建或者删除 MySQL 数据库,所以我们这边使用 root 用户登录,root 用户拥有最高权限。
在删除数据库过程中,务必要十分谨慎,因为在执行删除命令后,所有数据将会消失。
语法如下:

drop database 数据库名;

4.选择数据库

在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库。
可以使用SQL命令来选择指定的数据库:

use 数据库名;

5.MySQL数据库类型

MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。
MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

(1)数值类型

下面的表显示了需要的每个整数类型的存储和范围。
image.png

(2)日期与时间类型

image.png

(3)字符串类型

image.png
char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。

6.MySQL创建数据表

创建MySQL数据表需要以下信息:

  • 表名
  • 表字段
  • 定义每个表字段

语法:

CREATE TABLE table_name (column_name column_type);

以下例子中我们将在数据库中创建数据表book_tbl:

CREATE TABLE book_tbl(
  book_id INT AUTO_INCREMENT,
  book_title VARCHAR(100) NOT NULL,
  book_author VARCHAR(40) NOT NULL,
  book_date DATE,
  PRIMARY KEY ( book_id )
)CHARSET=utf8;

实例解析:

  • 如果你希望字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
  • AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
  • PRIMARY KEY关键字用于定义列为主键。 可以使用多列来定义主键,列间以逗号分隔。
  • CHARSET是设置编码。

成功创建表之后,可以通过命令行查看表结构:

show tables; //查看所有的表
desc book_tbl; //查看book_tbl的结构

7.MySQL删除数据表

MySQL中删除数据表是非常容易操作的,但是我们在进行删除表操作时要非常谨慎,因为执行删除命令后所有数据都会消失。
语法:以下为删除mysql数据表的通用语法

 DROP TABLE 表名;

执行成功后,可以尝试查看表,会发现查询不到。

8.MySQL插入数据

MySQL 表中使用 INSERT INTO 语句来插入数据。
语法:以下为向MySQL数据表插入数据通用的语法

INSERT INTO 表名 ( 字段1, 字段2,...字段N ) VALUE (1,2,...值N );

如果数据是字符型,必须使用单引号或者双引号,如:“value”。
例如:

INSERT INTO book_tbl 
	(book_id, book_title, book_author, book_date)
	VALUE
	(1, 'python爬虫', '岳岳', NOW());

添加完成之后,可以通过查询语句进行查询:

select * from book_tbl;

9.MySQL更新数据

如果我们需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作。
语法:以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法

UPDATE 表名 SET 字段1=new-value1, 字段2=new-value2 [WHERE 条件];
  • 可以同时更新一个或者多个字段
  • 你可以在 WHERE 子句中指定条件

实例:
修改表中book_id=1的book_author字段值

UPDATE book_tbl SET book_author='岳岳2' WHERE book_id=1;

10.MySQL删除数据

你可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录。
语法:以下是 SQL DELETE 语句从 MySQL 数据表中删除数据的通用语法

DELETE FROM 表名 [WHERE 条件];
  • 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
  • 可以在 WHERE 子句中指定条件。

实例:
删除book_tbl表中book_id=1的记录:

DELETE FROM book_tbl WHERE book_id=1;

删除整个表:

DELETE FROM book_tbl;

三:MySQL查询数据

MySQL 数据库使用SQL SELECT语句来查询数据。
语法:在MySQL数据库中查询数据通用的 SELECT 语法

SELECT 字段1,字段2,……,字段n FROM table_name [WHERE 条件] [LIMIT N]
  • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  • SELECT 命令可以读取一条或者多条记录。
  • 可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  • 可以使用 WHERE 语句来包含条件。
  • 可以使用 LIMIT 属性来设定返回的记录数。

实例:返回数据表 book_data 的所有记录

# 数据表
create table book_data(
    id int auto_increment,
    book_name varchar(10),
    book_price int,
    book_love varchar(5),
    primary key(id)
)default charset="utf8";

insert into book_data(book_name, book_price, book_love) values ("三国演义", 100, "男");
insert into book_data(book_name, book_price, book_love) values ("红楼梦", 80, "女");
insert into book_data(book_name, book_price, book_love) values ("水浒传", 110, "男");
insert into book_data(book_name, book_price, book_love) values ("西游记", 150, "男");
insert into book_data(book_name, book_price, book_love) values ("羊皮卷", 250, "男");
insert into book_data(book_name, book_price, book_love) values ("鬼谷子", 110, "女");
insert into book_data(book_name, book_price, book_love) values ("甄嬛传", 110, "女");
insert into book_data(book_name, book_price, book_love) values ("三国演义2", 110, "男");
insert into book_data(book_name, book_price, book_love) values ("西游记续集", 110, "男");


select * from book_tbl;

1.where查询

(1)模糊查询

在 MySQL 中,LIKE 关键字主要用于搜索匹配字段中的指定内容。其语法格式如下:

select book_price from book_data where book_price like '110';
# 查询所有以110的价格
 select * from book_data where book_price like '1%%';

参考:https://blog.csdn.net/qq_46940224/article/details/125031647

(2)范围查询 between

between…and…表示在一个连续的范围内查询
in…表示在一个非连续的范围内查询

SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;
SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2, ...);

示例语句

select  * from book_data where id >= 3 and id <= 8;
select * from book_data where id between 3 and 8;
select * from book_data where not(id between 3 and 8) and book_name="三国演义";
select * from book_data where id in (2,4,6);
select * from book_data where id not in (2,4,6);
(3)空判断查询

is null 查询某个字段为空的数据

增加数据集 
insert into book_data(book_name, book_price) values ("老人与海", 110);
insert into book_data(book_name, book_price) values ("孙子兵法", 100);
insert into book_data(book_name, book_price) values ("红与黑", 90);
insert into book_data(book_name, book_price) values ("鬼吹灯", 210);

select * from book_data where book_love is null;
select * from book_data where book_love is not null;

2.高级查询

(1)分页查询—limit

limit—分页查询语法
start—表示开始行索引,默认0
count—表示查询条数

select * from 表名 limit start,count;

select * from book_data where book_love="男" limit 0,5;
# 查询前五行sex=男的数据
(2)聚合查询

通常对表中的数据进行统和计算
count()—求指定列的总行数
max()—求指定列最大值
min()—求指定列的最小值
sum()—求指定列和
avg()—求平均数

select count(id) from book_data;

select count(*) from book_data;

select max(book_price) from book_data where book_love="女";

select sum(book_price) from book_data;

(3)排序—order by

升序 ---- asc
降序 ---- desc

select * from book_data order by book_price desc;

select * from book_data order by book_price asc;
(4)分组查询
  • group by 列名 【条件表达式】
增加数据集合 
insert into book_data(book_name, book_price, book_love) values ("三国演义", 200, "男");
insert into book_data(book_name, book_price, book_love) values ("红楼梦", 200, "女");
insert into book_data(book_name, book_price, book_love) values ("水浒传", 200, "男");
insert into book_data(book_name, book_price, book_love) values ("西游记", 200, "男");


select book_name,sum(book_price) from book_data group by book_name;
# 查询书名一致的书本价格总和
  • group_concat() 统计每个分组指定字段的信息集合
select book_name,group_concat(book_price) from book_data group by book_name;
(5)连接查询
数据集
create table book_author(
    id int auto_increment,
    name varchar(10),
    book_id int,
    primary key (id)
)default charset="utf8";

insert into book_author(name, book_id) values ("罗贯中",1);
insert into book_author(name, book_id) values ("曹雪芹",2);
insert into book_author(name, book_id) values ("施耐庵",3);
insert into book_author(name, book_id) values ("吴承恩",4);
1.内连接

查询两张表中符合条件的共有记录
inner join—内连接关键字,一张表连接另外一张表
on—连接查询条件

select book_data.book_name,book_author.name from book_data inner join book_author on book_data.id = book_author.book_id;

# 查询两张表id值相同的name和book_name
2.左连接

查询左边所有记录和右表符合条件的记录
left join

insert into book_author(name, book_id) values ("孙 武",11);
insert into book_author(name, book_id) values ("海明威",10);

select book_data.book_name,book_author.name from book_data left join book_author on book_data.id =book_author.book_id;
# 根据左表id查询右表相同数据,右表不存在即为null
3.右连接

查询右表所有记录和左表符合条件的记录
right join

select book_author.name,book_data.book_name from book_author right join book_data on book_author.book_id = book_data.id;
# 根据右表id查询左表相同数据,左表不存在即为null

四:pymysql操作MySQL数据库

1.python操作数据库流程

创建连接—获取游标—执行命令—关闭游标—关闭连接
图解:
image.png

2.代码实现

第三方模块的安装  pip install pymysql 


import pymysql

# 创建链接
db = pymysql.Connect(
    host="127.0.0.1",
    port=3306,
    user="root",
    password="123456",
    db="xiangxue"
)
# 创建游标,用于传递python给MySQL的命令和MySQL返回的内容
cursor = db.cursor()

# SQL插入语句
sql = "insert into book_tbl(book_id, book_title, book_author,book_date) values (4,'python基础','岳岳3',NOW())"
# 执行SQL语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()

3.sv文件写入MySQL数据库

import csv
import pymysql

conn = pymysql.Connect(
    host="127.0.0.1",
    port=3306,
    user="root",
    password="123456",
    db="xiangxue"
)

cursor = conn.cursor()

with open('douban.csv', 'r', encoding='utf-8') as file:
    reader = csv.reader(file)
    data = [row for row in reader]
    print(data)
sql = 'INSERT INTO douban(title, grade, link,quote) VALUES (%s, %s, %s,%s)'

for row in data:
    cursor.execute(sql, row)
conn.commit()
cursor.close()
conn.close()

注意: 本文并未包含MySQL数据库的全部知识点,只是为后续的爬虫知识做准备

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/263479.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kafka大数据框架学习攻略:精选Kafka学习资源,助你迅速掌握分布式消息系统!

介绍&#xff1a;Kafka是一个分布式、支持分区、多副本的基于zookeeper协调的分布式消息系统&#xff0c;可以实时处理大量数据和满足各种需求场景。它是一个基于发布/订阅模式的消息队列&#xff0c;主要应用于大数据实时处理领域&#xff0c;支持消息的发布、订阅、消费和处理…

2023年12月21日开发正式版v1.2.3更新·本次更新30多个细节优化·完善丰富后台功能·加入演员关联机制

2023年12月21日开发正式版v1.2.3更新本次更新30多个细节优化完善丰富后台功能加入演员关联机制 产品简介 安卓苹果PCH5四端&#xff0c;蜻蜓z暗影版的衍生级版本&#xff0c;2023年优雅草蜻蜓z冬季雪花限定版&#xff0c;不仅继承了蜻蜓z的精良功能&#xff0c;还特色增加了弹…

[LitCTF 2023]PHP是世界上最好的语言!!

[LitCTF 2023]PHP是世界上最好的语言&#xff01;&#xff01; wp 进入页面&#xff0c;发现左边有输入框&#xff0c;下面有 RUN CODE 字样&#xff0c;估计是可以执行命令的。 执行 PHP 代码测试 <?php print(1); ?>将 PHP 一句话木马写入文件 为了蚁剑能连上&am…

通过几个基本概念说一下为什么openGauss是当下之选?

Database、Schema、User都是数据库的基本概念&#xff0c;SQL标准中也有明确规范。但不同数据库的具体实现也不尽相同&#xff0c;有些甚至大相径庭。这就导致用户在做国产化选型和数据库迁移时可能会遇到种种困难。本文从这几个基本概念展开&#xff0c;说说为什么openGauss系…

uniapp实战 -- 个人信息维护(含选择图片 uni.chooseMedia,上传文件 uni.uploadFile,获取和更新表单数据)

效果预览 相关代码 页面–我的 src\pages\my\my.vue <!-- 个人资料 --><view class"profile" :style"{ paddingTop: safeAreaInsets!.top px }"><!-- 情况1&#xff1a;已登录 --><view class"overview" v-if"membe…

docker数据卷数据卷容器

前言 今天调休在家&#xff0c;随便玩玩&#xff0c;简单做下学习记录 1. 数据卷特点 数据卷在容器启动时初始化&#xff0c;如果容器使用的镜像在挂载点包含了数据&#xff0c;这些数据会被拷贝到新初始化的数据卷中数据卷可以在容器之间共享和重用可以对数据卷里的内容直接…

【Linux】编辑、查看和搜索文件

大多数 Linux 发行版不包含真正的 vi;而是自带一款高级替代版本&#xff0c;叫做 vim(它是“vi improved”的简写)由 Bram Moolenaar 开发的&#xff0c;vim 相对于传统的 Unix vi 来说&#xff0c;取得了实质性进步。 启动和退出 vim 使用vim可以启动&#xff0c;如命令行输…

电脑文件msvcp140.dll丢失该怎么解决?靠谱的msvcp140.dll修复方法

面对计算机系统报告的msvcp140.dll文件丢失警报&#xff0c;这个问题可能会阻碍依赖此特定动态链接库(DLL)的一些程序的正常启动和运行。解决msvcp140.dll文件丢失的问题对于保障相关应用程序能够无障碍操作非常关键&#xff0c;并且这还是确保计算机系统保持高效稳定运行的必要…

华为gre隧道全部跑静态路由

最终实现&#xff1a; 1、pc1能用nat上网ping能pc3 2、pc1能通过gre访问pc2 3、全部用静态路由做&#xff0c;没有用ospf&#xff0c;如果要用ospf&#xff0c;那么两边除了路由器上跑ospf&#xff0c;核心交换机也得用ospf r2配置&#xff1a; acl number 3000 rule 5 deny…

Java设计模式之单例模式以及如何防止通过反射破坏单例模式

单例模式 单例模式使用场景 ​ 什么是单例模式&#xff1f;保障一个类只能有一个对象&#xff08;实例&#xff09;的代码开发模式就叫单例模式 ​ 什么时候使用&#xff1f; 工具类&#xff01;&#xff08;一种做法&#xff0c;所有的方法都是static&#xff0c;还有一种单…

Notepad++如果同一个窗口,打开了很多文件,需另开一个窗口

如果一个窗口已经这么多了&#xff0c;需要另外再一个 这里打开

效果图云渲染是什么意思?如何渲染出照片级别的效果图?

​在当前的建筑规划、室内装修以及电影视效制作等行业内&#xff0c;制作高质量的效果图起着至关重要的作用&#xff0c;因为它能够给予观众或客户极为逼真和吸引人的视觉体验。在此篇文章中&#xff0c;我们将深入了解什么是云端效果图渲染&#xff0c;并探讨如何运用Renderbu…

C#中如何稳定精确地每隔5ms执行某个函数?

C#中如何稳定精确地每隔5ms执行某个函数&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「C#的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&#xf…

技术丨 浅谈以太网系统级刷写测试

在研发阶段&#xff0c;我们一般将ECU直连至刷写上位机进行软件更新&#xff0c;但在整车环境中&#xff0c;各ECU之间通过线束连接在一起&#xff0c;如果此时想对某个单独的样件进行软件更新&#xff0c;把零件拆下来再接到上位机上进行软件更新是不现实的。 作为测试工程师…

QT编写应用的界面自适应分辨率的解决方案

博主在工作机上完成QT软件开发&#xff08;控件大小与字体大小比例正常&#xff09;&#xff0c;部署到客户机后&#xff0c;发现控件大小与字体大小比例失调&#xff0c;具体表现为控件装不下字体&#xff0c;即字体显示不全&#xff0c;推测是软件不能自适应分辨率导致的。 …

泰克TDS3054B示波器 2 或 4 条通道

产品特点 500 MHz 、300 MHz 、100 MHz 三种带宽 取样速率高达 5 GS/s TDS3054B 数字示波器带宽500MHZ TDS3054B TDS3054B 数字示波器带宽500MHZ TDS3054B 2 或 4 条通道 全 VGA 彩色 LCD 显示 25 种自动测量功能 9 位垂直分辨率 TDS3054B 数字示波器带宽500MHZ TDS3054B TDS…

【图神经网络 · 科研笔记5】异构信息网络,利用注意力选择元路径;利用进化邻域和社群实现自监督动态图嵌入,交叉监督对比学习;近期科研思维导图小汇总;

记录部分科研文献阅读相关内容【划重点】,主题“图神经网络”,仅学习使用。 🎯作者主页: 追光者♂🔥 🌸个人简介: 📝[1] CSDN 博客专家📝 🏆[2] 人工智能领域优质创作者🏆 🌟[3] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌿[4] 2022年度…

【深入探讨人工智能】网络研讨系列介绍

笔者于2023年7月27日受邀代表开源社参加 Linux 基金会和 Open Source Initiative&#xff08;OSI - 开源促进会&#xff09;在日内瓦联合举办的 Open Source Congress 2023&#xff08;全球开源峰会&#xff09;。 国内同时有开放原子开源基金会孙文龙理事长率团参加。短短一天…

15个热门的开源数据可视化项目

数据可视化(即 BI仪表盘)是图形表示的数据。它涉及产生将表示的数据之间的关系传达给图像查看者的图像。这种通信是通过在可视化过程中使用图形标记和数据值之间的系统映射来实现的。该映射建立了如何在视觉上表示数据值,确定图形标记的属性(例如大小或颜色)如何以及在多大程…

Zookeeper集群搭建,四字命令监控,Leader选举原理以及数据如何同步

Java学习面试指南&#xff1a;https://javaxiaobear.cn 1、集群角色 Leader&#xff1a; 领导者。 事务请求&#xff08;写操作&#xff09;的唯一调度者和处理者&#xff0c;保证集群事务处理的顺序性&#xff1b;集群内部各个服务器的调度者。对于create、setData、delete…