八:爬虫-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 pymysqlconn = 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.hqwc.cn/news/292117.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物业服务投诉反馈建议建议二维码

为高效处理物业方面的投诉问题&#xff0c;进一步提升居住品质。凡尔码平台推出“二维码”便民投诉、反馈方式&#xff0c;如有群租扰民、占用堵塞消防通道或私拉乱建等问题&#xff0c;可以立即扫码或进入“凡尔码”小程序进行投诉或反馈。 如电梯出现故障物业服务企业未及时维…

【机器学习实战】基于python对泰坦尼克幸存者进行数据分析与预测

&#x1f4da;引言 &#x1f64b;‍♂️作者简介&#xff1a;生鱼同学&#xff0c;大数据科学与技术专业硕士在读&#x1f468;‍&#x1f393;&#xff0c;曾获得华为杯数学建模国家二等奖&#x1f3c6;&#xff0c;MathorCup 数学建模竞赛国家二等奖&#x1f3c5;&#xff0c…

智能DJ软件Algoriddim djay Pro AI mac功能特点

Algoriddim djay Pro AI mac是一款具有人工智能功能的 DJ 软件&#xff0c;它可以让 DJ 在演出时更加灵活、创意和自由。 Algoriddim djay Pro AI mac主要特点 人工智能智能排列功能&#xff1a;djay Pro AI 可以根据 BPM、音调和热度等因素&#xff0c;将曲目按照最优顺序排列…

ArcTS组件:图片、文本、文本框

图片组件 文本 文本输入框

基于JSP+Servlet+Mysql的学生信息管理系统

基于JSPServletMysql的学生信息管理系统 一、系统介绍二、功能展示1.目录2.数据库3.登陆4.注册5.主页 四、其它1.其他系统实现五.获取源码 一、系统介绍 项目名称&#xff1a;基于JSPServletMysql的学生信息管理系统 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语…

IspSrver-DNS

2023年全国网络系统管理赛项真题 模块B-Windows解析 题目 安装DNS服务器,根据题目创建必要正向区域和反向区域的DNS解析。把当前机器作为互联网根域服务器,创建test1.com~test100.com,并在所有正向区域中创建一条A记录,解析到本机地址。配置步骤 安装DNS服务器,根据题目创…

深入了解Spring MVC工作流程

目录 1. MVC架构简介 2. Spring MVC的工作流程 2.1. 客户端请求的处理 2.2. 视图解析和渲染 2.3. 响应生成与返回 3. Spring MVC的关键组件 3.1. DispatcherServlet 3.2. HandlerMapping 3.3. Controller 3.4. ViewResolver 4. 结论 Spring MVC&#xff08;Model-Vi…

【SpringBoot篇】解决缓存击穿问题① — 基于互斥锁方式

文章目录 &#x1f339;什么是缓存击穿&#x1f33a;基于互斥锁解决问题&#x1f6f8;思路 &#x1f3f3;️‍&#x1f308;代码实现 &#x1f339;什么是缓存击穿 缓存击穿是指在使用缓存系统时&#xff0c;对一个热点数据的高并发请求导致缓存失效&#xff0c;多个请求同时访…

anconda常用命令

一、基础指令说明 1、查看anconda版本号 conda --version 2、查看当前已有虚拟环境 conda env list 3、创建新环境 conda create -n classify python3.9 创建一个叫做classify的虚拟环境&#xff0c;其中python等于3.9 4、进入虚拟环境 activate classify 5、安装包 接下来…

【数据结构】四、串

目录 一、定义 二、表示与实现 定长顺序存储 堆分配存储 链式存储 三、BF算法 四、KMP算法 1.求next数组 方法一 方法二&#xff08;考试方法&#xff09; 2.KMP算法实现 方法一 方法二 3.nextval 4.时间复杂度 本节最重要的就是KMP算法&#xff0c;其他要求不高…

电脑怎么重装系统?跟着步骤轻松搞定!

电脑系统随着时间的推移可能会变得迟缓或出现其他问题&#xff0c;而重装系统是解决这些问题的有效方法之一。本文将介绍三种电脑怎么重装系统的方法&#xff0c;帮助您在不同情况下选择适合自己的方案&#xff0c;让电脑焕然一新。 方法1&#xff1a;使用系统自带的恢复选项 …

4. 行为模式 - 中介者模式

亦称&#xff1a; 调解人、控制器、Intermediary、Controller、Mediator 意图 中介者模式是一种行为设计模式&#xff0c; 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互&#xff0c; 迫使它们通过一个中介者对象进行合作。 问题 假如你有一个创建…