第二阶段-第二章 SQL入门和实战

目录

  • 引、为什么要学习SQL
    •   1. 为什么要学习SQL
    •   2.需学习到什么程度
  • 一、数据库介绍
    •   1.学习目标
    •   2.无处不在的数据库
    •   3.数据库如何存储数据
    •   4.数据库管理系统(数据库软件)
    •   5.数据库和SQL的关系
    •   6.本小节的总结
  • 二、MySQL的安装
    •   1.学习目标
    •   2. MySQL的介绍
    •   3. MySQL的版本
    •   4. MySQL的安装
      •   (1)安装包的下载
      •   (2)安装的流程
      •   (3)配置MySQL
      •   (4)验证MySQL是否安装成功
  • 三、MySQL的入门使用
    •   1.学习目标
    •   2.在命令提示符内使用MySQL
    •   3.使用图形化工具操作MySQL——DBeaver
    •   4.DBeaver的安装
    •   5.熟悉一下软件DBeaver
  • 四、SQL基础与DDL
    •   1.学习目标
    •   2. SQL的概述
    •   3. SQL语言的分类
    •   4.SQL的语法特征
    •   5.DDL-库管理
    •   6.DDL-表管理
    •   7.本节的代码演示
    •   8.本小节的总结
  • 五、SQL-DML
    •   1.学习目标
    •   2.DML
    •   3.数据插入INSERT
    •   4.数据删除DELETE
    •   5.数据更新UPDATE
    •   6.本节的代码演示
      •   (1).数据插入INSERT的演示
      •   (2).数据删除DELETE的演示
      •   (3).数据更新UPDATE的演示
    •   7.本小节的总结
  • 六、SQL-DQL
    •   6.1 基础查询(SELECT)
      •   1.学习目标
      •   2. 基础数据查询SELECT(支持过滤查询)
      •   3.本节的代码演示
      •   4.本小节的总结
    •   6.2 分组聚合(加GROUP BY)
      •   1.学习目标
      •   2.分组聚合的定义与语法(聚合函数SUM、AVG、MIN、MAX、COUNT)
      •   3.本节的代码演示
      •   4.本小节的总结(含分组聚合的注意事项)
    •   6.3 排序分页
      •   1.学习目标
      •   2.结果排序(加ORDER BY)
      •   3.结果分页限制(加LIMIT)
      •   4.本节的代码演示
      •   5.本小节的总结
  • 七、Python & MySQL
    •   7.1 基础使用
      •   1.学习目标
      •   2. pymysql及安装
      •   3.创建到MySQL的数据库链接
      •   4.执行SQL语句
      •   5.本节的代码演示
      •   6.本小节的总结
    •   7.2 数据插入
      •   1.学习目标
      •   2. commit确认及自动commit确认
      •   3.本节的代码演示
      •   4.本小节的总结
  • 八、Python & MySQL综合案例
    •   1.学习目标
    •   2.案例需求
    •   3.一些提示
    •   4.本节的代码演示
    •   5.课后作业

  说明:该文章是学习 黑马程序员在B站上分享的视频 黑马程序员python教程,8天python从入门到精通而记录的笔记,笔记来源于本人。 若有侵权,请联系本人删除。笔记难免可能出现错误或笔误,若读者发现笔记有错误,欢迎在评论里批评指正。此笔记对应的doc文件的百度网盘下载链接为 Python入门(黑马)的学习笔记,提取码:1b3k。另外,本次笔记加了 gif动图,使用免费的potplayer播放器可以控制gif的播放进度。
第二阶段-第二章 SQL入门和实战_第1张图片 第二阶段-第二章 SQL入门和实战_第2张图片

引、为什么要学习SQL

第二阶段-第二章 SQL入门和实战_第3张图片

  1. 为什么要学习SQL

第二阶段-第二章 SQL入门和实战_第4张图片第二阶段-第二章 SQL入门和实战_第5张图片

  2.需学习到什么程度

第二阶段-第二章 SQL入门和实战_第6张图片第二阶段-第二章 SQL入门和实战_第7张图片

一、数据库介绍

  1.学习目标

  理解数据库的作用;了解常见的数据库软件。

  2.无处不在的数据库

第二阶段-第二章 SQL入门和实战_第8张图片

  3.数据库如何存储数据

第二阶段-第二章 SQL入门和实战_第9张图片第二阶段-第二章 SQL入门和实战_第10张图片

  4.数据库管理系统(数据库软件)

第二阶段-第二章 SQL入门和实战_第11张图片

  5.数据库和SQL的关系

第二阶段-第二章 SQL入门和实战_第12张图片

  6.本小节的总结

第二阶段-第二章 SQL入门和实战_第13张图片

二、MySQL的安装

  1.学习目标

  掌握在Windows系统中安装MySQL数据库。

  2. MySQL的介绍

第二阶段-第二章 SQL入门和实战_第14张图片

  3. MySQL的版本

第二阶段-第二章 SQL入门和实战_第15张图片

  4. MySQL的安装

第二阶段-第二章 SQL入门和实战_第16张图片

  (1)安装包的下载

  安装包的下载方法如下(如果觉得下载太慢,可以到百度网盘上下载):
  如下图,首先打开浏览器,输入MySQL的官方网址“https://www.mysql.com”,点击“DOWNLOADS”。

  如下图,选择社区版下载(即“MySQL Community (GPL) Downloads”),选择Windows版(即“MySQL Installer for Windows”),然后选择最新的版本的离线安装包进行下载(这里有两个下载链接,靠上的那个是联网安装包,靠下那个是离线安装包),然后点击只需要下载(即“No thanks, just start my download.”)。如果需要下载其他版本,请点击“Archives”,然后选择需要的版本进行下载。

  等待安装包的下载,直到下载完成(放任浏览器下载实在太慢,可选择使用迅雷或IDM下载直接起飞。个人不建议用迅雷,用了还要清理一堆垃圾)。

  (2)安装的流程

  双击安装包,在弹出的两个弹窗中点击“是”(gif图片可能录不到),然后选择“Custom”,点击“Next”。然后选择安装的MySQL的版本,点击向右的箭头,然后在右侧点击一下所选的版本,点击“Advanced Options”。
第二阶段-第二章 SQL入门和实战_第17张图片
  如下图,选择软件的安装路径以及数据的存储路径,
第二阶段-第二章 SQL入门和实战_第18张图片第二阶段-第二章 SQL入门和实战_第19张图片第二阶段-第二章 SQL入门和实战_第20张图片第二阶段-第二章 SQL入门和实战_第21张图片
  之后,连点两个“Next”,在弹出的警告中点击“Yes”,再连点两个“Next”。再如图所示,安装一下MySQL Workbench。

  之后,如图所示,点击“Execute”,连续点击“Next”。
第二阶段-第二章 SQL入门和实战_第22张图片
  然后输入MySQL Root Password,在Repeat Password中再输一次该密码,接着一直点击“Next”或者“Execute”或者“Finish”。
第二阶段-第二章 SQL入门和实战_第23张图片
  接着将快捷键拖到桌面上。
第二阶段-第二章 SQL入门和实战_第24张图片

  (3)配置MySQL

  如下图所示,找到MySQL的安装路径,然后点击上方的文件路径,使用快捷键Ctr+C进行复制。之后,在此电脑处右击,点击“属性”,选择“高级系统设置”。

  点击“环境变量”,双击“Path”进行编辑,点击“新建”,然后使用快捷键Ctr+V将刚刚复制的路径粘贴进来,然后一直“确定”就行了。

  (4)验证MySQL是否安装成功

  然后,如图所示,搜索“cmd”,打开命令提示符。
第二阶段-第二章 SQL入门和实战_第25张图片
  如下图,输入“mysql -uroot -p”,输入刚刚安装时的root密码,成功进入mysql,说明安装成功。
第二阶段-第二章 SQL入门和实战_第26张图片

三、MySQL的入门使用

  1.学习目标

  掌握使用图形化工具操作MySQL数据库软件。

  2.在命令提示符内使用MySQL

第二阶段-第二章 SQL入门和实战_第27张图片
  可以,如下图所示,去简单使用以下。(命令有“mysql -uroot -p”,“show databases;”,“use sys;”, “show tables;”,“exit”)
第二阶段-第二章 SQL入门和实战_第28张图片第二阶段-第二章 SQL入门和实战_第29张图片

  3.使用图形化工具操作MySQL——DBeaver

第二阶段-第二章 SQL入门和实战_第30张图片

  4.DBeaver的安装

  如下图所示,输入DBeaver的官方网址“dbeaver.io”,点击“Download”,在“DBeaver Community”下面选择“Windows (installer)”(community是社区版,是免费的),然后软件就开始下载了。

  安装包下载完成后,如下图所示,双击安装包,选择语言,点击“OK”,点击“下一步”、“我接受”、“下一步”。
第二阶段-第二章 SQL入门和实战_第31张图片
  如下图所示,点击“下一步”,选择安装路径,点击“下一步”。
第二阶段-第二章 SQL入门和实战_第32张图片第二阶段-第二章 SQL入门和实战_第33张图片第二阶段-第二章 SQL入门和实战_第34张图片
  如下图所示,点击“安装”,安装完后勾选创建桌面快捷方式“Create Desktop Shorteut”,点击“完成”。
第二阶段-第二章 SQL入门和实战_第35张图片

  5.熟悉一下软件DBeaver

  为了大致熟悉一下软件,软件安装完成后,打开软件,选择“No”。选择本次使用的数据库“MySQL”,点击“Next”,输入安装MySQL时填写的root密码,点击“编辑驱动设置”。(不要像视频那样直接点击“测试连接”,可能会报错。可能是MySQL安装的步骤跟视频不一样的缘故,也可能是为了做gif图片时点错了,不小心退出了重进,需要重新操作一遍的缘故)
第二阶段-第二章 SQL入门和实战_第36张图片第二阶段-第二章 SQL入门和实战_第37张图片第二阶段-第二章 SQL入门和实战_第38张图片
  如下图,点击“库”,“下载/更新(D)”,下载以“com”开头的那个文件。
第二阶段-第二章 SQL入门和实战_第39张图片
  如下图,点击“OK”,点击“测试连接”,发现 DBeaver可以连接到数据库MySQL,点击“OK”, 点击“Finish”。
第二阶段-第二章 SQL入门和实战_第40张图片
  点击打开“数据库”的目录,发现数据库不全,这是因为上面三个库(即“information_schema”、“mysql”、“performance_schema”)是MySQL自己使用的内置库,所以在当前这个图形化软件DBeaver里面,它为了怕你误操作,可能把这内置的3个库搞出问题,进而可能导致整个MySQL软件不能用,所以直接就给隐藏了,不给显示了。
第二阶段-第二章 SQL入门和实战_第41张图片
  如下图所示操作,即可看到sys库中的表sys_config中的里有什么内容。这种表格不再是excel那种表格,而是数据库中提供的表格。
第二阶段-第二章 SQL入门和实战_第42张图片

四、SQL基础与DDL

  1.学习目标

  对SQL语言有基础的认知;掌握SQL语言的分类;掌握基础的DDL语法。

  2. SQL的概述

第二阶段-第二章 SQL入门和实战_第43张图片

  3. SQL语言的分类

第二阶段-第二章 SQL入门和实战_第44张图片

  4.SQL的语法特征

第二阶段-第二章 SQL入门和实战_第45张图片

  5.DDL-库管理

第二阶段-第二章 SQL入门和实战_第46张图片

  6.DDL-表管理

第二阶段-第二章 SQL入门和实战_第47张图片

  7.本节的代码演示

  打开软件DBeaver,点击SQL,会弹出一个编辑区。输入代码,并点击三角形符号运行,展示MySQL提供给我们使用的库。
第二阶段-第二章 SQL入门和实战_第48张图片第二阶段-第二章 SQL入门和实战_第49张图片

show databases;

第二阶段-第二章 SQL入门和实战_第50张图片
  SQL对大小写不敏感,如下图修改代码后,运行结果不变。

SHOW databases;

第二阶段-第二章 SQL入门和实战_第51张图片
  SQL可以单行或多行书写,最后以“;”号结束。如下图修改代码后,运行结果不变。

SHOW 
databases;

第二阶段-第二章 SQL入门和实战_第52张图片
  为了熟悉SQL的注释方式,如下图修改代码后,运行结果不变。

SHOW 
-- 我是单行注释的方式1
# 我是单行注释的方式2
databases;
/*
 * 我是
 * 多行注释
*/

第二阶段-第二章 SQL入门和实战_第53张图片
  为了演示使用数据库和查看数据库的语法,如下图修改代码后运行。

USE sys;# 使用sys库

SELECT DATABASE();# 查看当前使用的库

第二阶段-第二章 SQL入门和实战_第54张图片
  为了演示创建库的语法,如下图修改代码后运行。

create database test charset utf8;
/*
 * "create database test charset utf8;":创建一个字符集的编码为UFT-8,名称为test的库
 * "create database test;":创建一个名称为test的库
 * b站弹幕:MySQL的UFT-8只支持3字节,建议使用代替UTF-8且无限制的UTF8MB4
 */
SHOW DATABASES;

第二阶段-第二章 SQL入门和实战_第55张图片
  为了演示删除库的语法,如下图修改代码后,运行前后都更新一次MySQL里的内容。

DROP  database test;# 删除库

SHOW DATABASES;# 显示MySQL中的库

第二阶段-第二章 SQL入门和实战_第56张图片
  为了演示查看表格的语法,如下图修改代码后运行。

USE sys;# 选择库

SHOW tables;# 显示库sys中的表格

第二阶段-第二章 SQL入门和实战_第57张图片
  为了演示创建表格的语法,如下图修改代码后运行,并刷新,然后在对应目录里查看表student。

CREATE database test;# 创建库test

USE test;# 使用库test

CREATE table student(
	id int,
	name varchar(10),	# 文本长度最长为10,varchar()最长可设成255
	age int
);# 在库test中创建表student

第二阶段-第二章 SQL入门和实战_第58张图片

  8.本小节的总结

第二阶段-第二章 SQL入门和实战_第59张图片第二阶段-第二章 SQL入门和实战_第60张图片

五、SQL-DML

  1.学习目标

  掌握DML:INSERT数据插入;掌握DML:DELETE数据删除;掌握DML:UPDATE数据更新。

  2.DML

第二阶段-第二章 SQL入门和实战_第61张图片

  3.数据插入INSERT

第二阶段-第二章 SQL入门和实战_第62张图片

  4.数据删除DELETE

第二阶段-第二章 SQL入门和实战_第63张图片

  5.数据更新UPDATE

第二阶段-第二章 SQL入门和实战_第64张图片

  6.本节的代码演示

  (1).数据插入INSERT的演示

  打开软件DBeaver,输入代码后,将之前创建的表student删除,然后运行代码,代码细节请阅读注释。
第二阶段-第二章 SQL入门和实战_第65张图片

USE test;# 1.使用库test

# 2.在库test中创建一个名为student的表
CREATE table student(	
	id int,
	name varchar(10),	# 文本长度最长为10,varchar()最长可设成255
	age int
);# 在库test中创建表student

# 3.给名为student的表的id所在列添加数据
insert into student(id) values(1),(2),(3);

# 4.给名为student的表的id、name、age所在列添加数据
insert into student(id,name,age) values(4,'周杰轮',31),(5,'林俊节',33);	# MySQL中只支持单引号
/*
 * 上一句代码可改为insert into student values(4,'周杰轮',31),(5,'林俊节',33);
 * 这种省略变量名的写法,要求一行中每个数据都有对应的一个值,而且变量赋值的顺序和定义时保持一致
 */

  (2).数据删除DELETE的演示

  如下图,首先,看到上次生成的表student中存在“id=1”的行,为了删除这一行数据,如下编程并运行,运行后点击student表,再按F5刷新,可看到“id=1”的行的数据被删除。

DELETE FROM student WHERE id=4; # 删除“id=1”的行的数据

第二阶段-第二章 SQL入门和实战_第66张图片
  如果想将“id<4”的行的数据删除,如下编程并运行,运行后点击student表,再按F5刷新,即可看到“id<4”的行的数据被删除。

DELETE FROM student WHERE id<4; # 删除“id<4”的行的数据

第二阶段-第二章 SQL入门和实战_第67张图片
  如果想将student整张表的数据删除, 如下编程并运行,运行后点击student表,再按F5刷新,即可看到整张表的数据被删除,但是表还在。

DELETE FROM student; # 删除student整张表

第二阶段-第二章 SQL入门和实战_第68张图片

  (3).数据更新UPDATE的演示

  如图,先使用如下代码给表student添两行数据。

insert into student(id,name,age) values(4,'周杰轮',31),(5,'林俊节',33);	# MySQL中只支持单引号

第二阶段-第二章 SQL入门和实战_第69张图片
  如图,如果想将“id=4”的行的“name”改成“张学油”,如下编程并运行,运行后点击student表,再按F5刷新。

UPDATE student SET name='张学油' WHERE id=4; # 将“id=4”的行的“name”改成“张学油”

第二阶段-第二章 SQL入门和实战_第70张图片
  如果想将整张student表的“name”改成“王力鸿”,如下编程并运行,运行后点击student表,再按F5刷新。

UPDATE student SET name='王力鸿'; # 将整张student表的“name”改成“王力鸿”

第二阶段-第二章 SQL入门和实战_第71张图片

  7.本小节的总结

第二阶段-第二章 SQL入门和实战_第72张图片

六、SQL-DQL

  6.1 基础查询(SELECT)

  1.学习目标

  掌握DQL:SELECT语句进行基础的数据查询。

  2. 基础数据查询SELECT(支持过滤查询)

第二阶段-第二章 SQL入门和实战_第73张图片第二阶段-第二章 SQL入门和实战_第74张图片

  3.本节的代码演示

  打开软件DBeaver,发现存在旧表student,输入代码删除旧表,并重新建表添加数据,然后运行代码,代码细节请阅读注释。
第二阶段-第二章 SQL入门和实战_第75张图片

DROP table student;# 1.删去存在的旧表student

# 2.创建一个名为student的表
CREATE table student(
	id int,
	name varchar(10),
	age int,
	gender varchar(4)
);

# 3.给名为student的表添加数据
INSERT INTO student values(10001,'周杰轮',31,'男'),(10002,'王力鸿',33,'男'),
(10003,'蔡依琳',35,'女'),(10004,'林志灵',36,'女'),(10005,'刘德滑',33,'男'),
(10006,'张大山',10,'男'),(10007,'刘志龙',11,'男'),(10008,'王潇潇',33,'女'),
(10009,'张一梅',20,'女'),(10010,'王一倩',13,'女'),(10011,'陈一迅',31,'男'),
(10012,'张晓光',33,'男'),(10013,'李大晓',15,'男'),(10014,'吕甜甜',36,'女'),
(10015,'曾悦悦',31,'女'),(10016,'刘佳慧',21,'女'),(10017,'项羽凡',23,'男'),
(10018,'刘德强',26,'男'),(10019,'王强强',11,'男'),(10020,'林志慧',25,'女');

第二阶段-第二章 SQL入门和实战_第76张图片
  如图,为了熟悉SELECT的语法,编写代码并运行,代码细节请阅读注释

select id,name FROM student; # 查看表student的id和name所在的列

select * FROM student; # 查看student表

select * FROM student WHERE age > 20; # 查看student表中满足“age>20”的数据

select * FROM student WHERE gender = '女'; # 查看student表中满足“gender = '女'”的数据

第二阶段-第二章 SQL入门和实战_第77张图片

  4.本小节的总结

第二阶段-第二章 SQL入门和实战_第78张图片

  6.2 分组聚合(加GROUP BY)

  1.学习目标

  掌握DQL:GROUP BY进行分组聚合查询。

  2.分组聚合的定义与语法(聚合函数SUM、AVG、MIN、MAX、COUNT)

第二阶段-第二章 SQL入门和实战_第79张图片
  注:GROUP BY用于分组,聚合函数用于聚合,聚合函数可单独使用。

  3.本节的代码演示

  打开软件DBeaver,本次使用的表还是上次的表。
第二阶段-第二章 SQL入门和实战_第80张图片第二阶段-第二章 SQL入门和实战_第81张图片
  如图,编写代码练习分组聚合的语法,并运行。

# 计算不同性别的平均年龄,不同姓别的两组中各自的年龄和、最小值、最大值、人数
SELECT gender,avg(age),sum(age),min(age),max(age),count(*) 
FROM student GROUP BY gender; 

第二阶段-第二章 SQL入门和实战_第82张图片

  4.本小节的总结(含分组聚合的注意事项)

第二阶段-第二章 SQL入门和实战_第83张图片
  例如:“SELECT gender,avg(age) FROM student GROUP BY gender;”。

  6.3 排序分页

  1.学习目标

  掌握DQL:对查询结果进行排序分页。

  2.结果排序(加ORDER BY)

第二阶段-第二章 SQL入门和实战_第84张图片

  3.结果分页限制(加LIMIT)

第二阶段-第二章 SQL入门和实战_第85张图片

  4.本节的代码演示

  打开软件DBeaver,本次使用的表还是上次的表。
第二阶段-第二章 SQL入门和实战_第86张图片
第二阶段-第二章 SQL入门和实战_第87张图片
  如图,编写代码练习分组聚合的语法,并运行。

# 将20岁以上的人挑选出来,并按升序进行排序
SELECT * FROM student WHERE age > 20 
ORDER BY age ASC; # 排序默认升序,ASC可以不写

# 将20岁以上的人挑选出来,并按降序进行排序
SELECT * FROM student WHERE age > 20 ORDER BY age DESC; 

# 最多只展示5条数据
SELECT * FROM student LIMIT 5;
# 从第10条(不包括第10条)开始向后,最多只展示5条数据
SELECT * FROM student LIMIT 10,5;

# 将大于20岁的人按年龄进行分组,并统计各组人数,然后按升序进行排序
select age,count(*) from student where age>20 group by age order by age;
# 将大于20岁的人按年龄进行分组,并统计各组人数,然后按升序进行排序,且最多展示3条
select age,count(*) from student where age>20 group by age order by age LIMIT 3;

  5.本小节的总结

第二阶段-第二章 SQL入门和实战_第88张图片

七、Python & MySQL

  7.1 基础使用

  1.学习目标

  掌握Python执行SQL语句操作MySQL数据库软件。

  2. pymysql及安装

第二阶段-第二章 SQL入门和实战_第89张图片
  安装过程:如图所示,搜索“cmd”,打开命令提示符。然后,输入“pip install pymysql”并等待安装完成。
第二阶段-第二章 SQL入门和实战_第90张图片第二阶段-第二章 SQL入门和实战_第91张图片

  3.创建到MySQL的数据库链接

第二阶段-第二章 SQL入门和实战_第92张图片

  4.执行SQL语句

第二阶段-第二章 SQL入门和实战_第93张图片第二阶段-第二章 SQL入门和实战_第94张图片

  5.本节的代码演示

  在进入演示前,如下图,首先使用命令“pip install --upgrade cryptography pymysql”安装或更新两个Python包,即“cryptography”密码包与“pymysql”两个包。
第二阶段-第二章 SQL入门和实战_第95张图片第二阶段-第二章 SQL入门和实战_第96张图片
  打开软件PyCharm,创建一个名为“02_SQL入门”的文件夹,创建一个名为“01_pymysql入门”的py文件。
第二阶段-第二章 SQL入门和实战_第97张图片在这里插入图片描述第二阶段-第二章 SQL入门和实战_第98张图片
  首先,编写如下代码并运行,如果出现MySQL的版本号即可说明能够正常连接上MySQL。

"""
演示Python pymysql库的基础操作
"""

from pymysql import Connection

# 构建到MySQL数据库的链接
conn = Connection(
    host="localhost",  # 主机名(IP地址)
    port=3306,  # MySQL端口默认3306
    user="root",  # 账户
    password="887thdewiq8@"  # 安装MySQL时所填的root密码
)

print(conn.get_server_info())  # 拿到MySQL库的基础信息后,打印

# 关闭链接
conn.close()

第二阶段-第二章 SQL入门和实战_第99张图片
  如下图,继续编写代码,执行后会在库test中创建表test_pymysql。在展示现象时,需来回打开DBeaver进行查看。

"""
演示Python pymysql库的基础操作
"""

from pymysql import Connection

# 构建到MySQL数据库的链接
conn = Connection(
    host="localhost",  # 主机名(IP地址)
    port=3306,  # MySQL端口默认3306
    user="root",  # 账户
    password="887thdewiq8@"  # 安装MySQL时所填的root密码
)

# print(conn.get_server_info())  # 拿到MySQL库的基础信息后,打印    # 测试代码
# 执行非查询性质SQL
cursor = conn.cursor()  # 获取到游标对象
conn.select_db('test')  # 选择数据库

# 执行sql
cursor.execute("create table test_pymysql(id int);")  # 在python端的SQL语句的“;”可省略

# 关闭链接
conn.close()

第二阶段-第二章 SQL入门和实战_第100张图片
  在执行查询的SQL语句时会使用代码“.fetchall()”,如下编程,看看它的效果,可见这是一个双层嵌套的元组。

"""
演示Python pymysql库的基础操作
"""

from pymysql import Connection

# 构建到MySQL数据库的链接
conn = Connection(
    host="localhost",  # 主机名(IP地址)
    port=3306,  # MySQL端口默认3306
    user="root",  # 账户
    password="887thdewiq8@"  # 安装MySQL时所填的root密码
)

# print(conn.get_server_info())  # 拿到MySQL库的基础信息后,打印    # 测试代码
# 执行非查询性质SQL
cursor = conn.cursor()  # 获取到游标对象
conn.select_db('test')  # 选择数据库

# 执行sql
# cursor.execute("create table test_pymysql(id int);")  # 在python端的SQL语句的“;”可省略
# 执行查询性质SQL
cursor.execute("select * from student")  # 在python端的SQL语句的“;”可省略

# 获取查询结果
results: tuple = cursor.fetchall()
print(results)

# 关闭链接
conn.close()

第二阶段-第二章 SQL入门和实战_第101张图片
  然后,略微改动代码即可得到查询结果。

"""
演示Python pymysql库的基础操作
"""

from pymysql import Connection

# 构建到MySQL数据库的链接
conn = Connection(
    host="localhost",  # 主机名(IP地址)
    port=3306,  # MySQL端口默认3306
    user="root",  # 账户
    password="887thdewiq8@"  # 安装MySQL时所填的root密码
)

# print(conn.get_server_info())  # 拿到MySQL库的基础信息后,打印    # 测试代码
# 执行非查询性质SQL
cursor = conn.cursor()  # 获取到游标对象
conn.select_db('test')  # 选择数据库

# 执行sql
# cursor.execute("create table test_pymysql(id int);")  # 在python端的SQL语句的“;”可省略
# 执行查询性质SQL
cursor.execute("select * from student")  # 在python端的SQL语句的“;”可省略

# 获取查询结果
results: tuple = cursor.fetchall()  # 得到一个嵌套元组,内层元组存的是某一行的数据
# print(results)  # 测试代码
for r in results:
    print(r)

# 关闭链接
conn.close()

  6.本小节的总结

第二阶段-第二章 SQL入门和实战_第102张图片

  7.2 数据插入

  1.学习目标

  掌握Python执行SQL语句插入数据到MySQL。

  2. commit确认及自动commit确认

第二阶段-第二章 SQL入门和实战_第103张图片在这里插入图片描述

  3.本节的代码演示

  打开软件PyCharm,创建一个名为“02_pymysql数据输入”的py文件。
第二阶段-第二章 SQL入门和实战_第104张图片第二阶段-第二章 SQL入门和实战_第105张图片
  在软件DBeaver使用代码清空student的数据,但保留表格student。

delete from student;

第二阶段-第二章 SQL入门和实战_第106张图片
  python中如果不编写确认的代码,只编写插入数据的代码是无法插入数据的。如下编写代码并运行,根本没有插入数据。

"""
演示使用pymysql库进行数据插入的操作
"""

from pymysql import Connection

# 构建到MySQL数据库的链接
conn = Connection(
    host="localhost",  # 主机名(IP地址)
    port=3306,  # MySQL端口默认3306
    user="root",  # 账户
    password="887thdewiq8@"  # 安装MySQL时所填的root密码
)

# 执行非查询性质SQL
cursor = conn.cursor()  # 获取到游标对象
conn.select_db('test')  # 选择数据库
# 执行sql
cursor.execute("insert into student values(10001,'周杰轮',31,'男');")  # 向表里添加数据

# 关闭链接
conn.close()

第二阶段-第二章 SQL入门和实战_第107张图片
  如下图所示,加上一句确认代码后,就可以成功插入数据。
第二阶段-第二章 SQL入门和实战_第108张图片
  每次都手动commit确认比较麻烦,故如下图所示,将上述代码改成自动commit(即在类Connection中加“autocommit=True”)后再运行。

"""
演示使用pymysql库进行数据插入的操作
"""

from pymysql import Connection

# 构建到MySQL数据库的链接
conn = Connection(
    host="localhost",  # 主机名(IP地址)
    port=3306,  # MySQL端口默认3306
    user="root",  # 账户
    password="887thdewiq8@",  # 安装MySQL时所填的root密码
    autocommit=True  # 自动提交确认(即自动commit)
)

# 执行非查询性质SQL
cursor = conn.cursor()  # 获取到游标对象
conn.select_db('test')  # 选择数据库
# 执行sql
cursor.execute("insert into student values(10002,'林俊节',32,'男');")  # 向表里添加数据
# # 通过commit确认
# conn.commit()
# 关闭链接
conn.close()

第二阶段-第二章 SQL入门和实战_第109张图片

  4.本小节的总结

第二阶段-第二章 SQL入门和实战_第110张图片

八、Python & MySQL综合案例

  1.学习目标

  使用SQL语句和pymysql库完成综合案例的开发。

  2.案例需求

第二阶段-第二章 SQL入门和实战_第111张图片第二阶段-第二章 SQL入门和实战_第112张图片

  3.一些提示

第二阶段-第二章 SQL入门和实战_第113张图片第二阶段-第二章 SQL入门和实战_第114张图片

  4.本节的代码演示

  首先,按照前面的提示,打开软件DBeaver,创建一个名为“py_sql”的库,再在下面创建一个名为“orders”的表。
第二阶段-第二章 SQL入门和实战_第115张图片

CREATE DATABASE py_sql charset utf8; # 创建库

USE py_sql; # 使用库

CREATE TABLE orders(
	order_date date,
	order_id varchar(255),
	money int,
	province varchar(18)
);

第二阶段-第二章 SQL入门和实战_第116张图片
  如下图所示,先创建一个名为“03_综合案例”的文件夹,然后将面向对象的综合案例的代码文件复制过来,再仅仅保留其中读取数据的代码(删少了点,在阅读后文时可以看出来,就不改gif图了)。

  如下编写“main.py”中的文件,先去DBeaver中确定表oders没有数据,然后运行PyCharm中的代码后,去DBeaver中查看表orders,并刷新,发现数据已经写入。

"""
SQL综合案例,读取文件,写入MySQL数据库中
"""

from file_define import FileReader, TextFileReader, JsonFileReader
from data_define import Record
from pymysql import Connection

# --------------------------数据处理-----------------------------
text_file_reader = TextFileReader("D:/test/2-1/2011年1月销售数据.txt")
json_file_reader = JsonFileReader("D:/test/2-1/2011年2月销售数据JSON.txt")

jan_data: list[Record] = text_file_reader.read_data()  # 1月份的数据
feb_data: list[Record] = json_file_reader.read_data()  # 2月份的数据

# 将2个月份的数据合并1个list来存储
all_data: list[Record] = jan_data + feb_data  # all_data中是包含一个个Record变量的列表

# for record in all_data:  # 测试代码
#     print(i)

# 构建MySQL链接对象
conn = Connection(
    host="localhost",
    port=3306,
    user='root',
    password="887thdewiq8@",
    autocommit=True
)
# 获得游标对象
cursor = conn.cursor()
# 选择数据库
conn.select_db('py_sql')
# 组织SQL语句
for record in all_data:
    sql = f"insert into orders(order_date,order_id,money,province) " \
          f"values('{record.date}','{record.order_id}',{record.money},'{record.province}')"
    # print(sql)  # 测试代码,用来检测数据是否正确
    # 执行SQL语句
    cursor.execute(sql)


# 关闭MySQL链接对象
conn.close()

  5.课后作业

第二阶段-第二章 SQL入门和实战_第117张图片
  好了,本章的笔记到此结束,谢谢大家阅读。

你可能感兴趣的:(python,mysql,sql,数据库)