MySQL是一个[关系型数据库管理系统],由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一
数据库是一个存储数据的仓库,按照数据结构,来组织,管理和存储数据,并提供了增、删、改、查的功能。
关系型数据库
非关系型数据库
点击 Go to Download Page 进入
看到 MSI,单击本机版,431.7M 大的,进入
点击No thanks, just start my download(下载时不需要登录)
![image.png](https://img-blog.csdnimg.cn/img_convert/b46ce7cef447cbc0e9203b8456f75404.png)
等待安装包下载完成后,点击安装包进行安装
点击之后等待一下
选择安装方式
点击新建>粘贴路径>点击确定(一直点确定)
!
重新打开cmd命令行,验证mysql是否安装成功(下图证明已经安装成功)
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 服务后,使用命令创建数据库,语法如下:
CREATE DATABASE 数据库名;
show databases;
使用普通用户登陆 MySQL 服务器,你可能需要特定的权限来创建或者删除 MySQL 数据库,所以我们这边使用 root 用户登录,root 用户拥有最高权限。
在删除数据库过程中,务必要十分谨慎,因为在执行删除命令后,所有数据将会消失。
语法如下:
drop database 数据库名;
在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库。
可以使用SQL命令来选择指定的数据库:
use 数据库名;
MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。
MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
下面的表显示了需要的每个整数类型的存储和范围。
char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。
创建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;
实例解析:
成功创建表之后,可以通过命令行查看表结构:
show tables; //查看所有的表
desc book_tbl; //查看book_tbl的结构
MySQL中删除数据表是非常容易操作的,但是我们在进行删除表操作时要非常谨慎,因为执行删除命令后所有数据都会消失。
语法:以下为删除mysql数据表的通用语法
DROP TABLE 表名;
执行成功后,可以尝试查看表,会发现查询不到。
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;
如果我们需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作。
语法:以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法
UPDATE 表名 SET 字段1=new-value1, 字段2=new-value2 [WHERE 条件];
实例:
修改表中book_id=1的book_author字段值
UPDATE book_tbl SET book_author='岳岳2' WHERE book_id=1;
你可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录。
语法:以下是 SQL DELETE 语句从 MySQL 数据表中删除数据的通用语法
DELETE FROM 表名 [WHERE 条件];
实例:
删除book_tbl表中book_id=1的记录:
DELETE FROM book_tbl WHERE book_id=1;
删除整个表:
DELETE FROM book_tbl;
MySQL 数据库使用SQL SELECT语句来查询数据。
语法:在MySQL数据库中查询数据通用的 SELECT 语法
SELECT 字段1,字段2,……,字段n FROM table_name [WHERE 条件] [LIMIT N]
实例:返回数据表 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;
在 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
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);
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;
limit—分页查询语法
start—表示开始行索引,默认0
count—表示查询条数
select * from 表名 limit start,count;
select * from book_data where book_love="男" limit 0,5;
# 查询前五行sex=男的数据
通常对表中的数据进行统和计算
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;
升序 ---- asc
降序 ---- desc
select * from book_data order by book_price desc;
select * from book_data order by book_price asc;
增加数据集合
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;
# 查询书名一致的书本价格总和
select book_name,group_concat(book_price) from book_data group by book_name;
数据集
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);
查询两张表中符合条件的共有记录
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
查询左边所有记录和右表符合条件的记录
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
查询右表所有记录和左表符合条件的记录
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
创建连接—获取游标—执行命令—关闭游标—关闭连接
图解:
第三方模块的安装 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()
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数据库的全部知识点,只是为后续的爬虫知识做准备