第6单元6.5数据表的操作(课件)-《程序设计基础-Python》(高教版)同步精品课堂

2025-12-15
| 39页
| 94人阅读
| 1人下载
精品

内容正文:

6.5数据表的操作 程序设计基础Python 同步精品课堂 高教版 掌握国家标准《机械制图》中有关图幅、比例、字体图线等基本规定。 教学目标 一 1. 认识数据表操作的核心SQL语句:SELECT、UPDATE、DELETE、ALTER、DROP; 2. 理解Python操作数据表的基本流程:“连接数据库→创建游标→执行SQL→处理结果→关闭资源”; 3. 知道“SELECT带WHERE条件”“UPDATE需要commit()”的关键规则。 教学重难点 二 (一)重点 1. Python操作数据表的基础流程; 2. SELECT、UPDATE、DELETE的核心代码格式。 (二)难点 1. 理解“commit()是‘保存修改’、fetchone()是‘取一条数据’”的作用; 2. 掌握“SELECT * FROM 表名 WHERE 条件”的语句格式,能写出“查询女生信息”的SQL语句; 3. 区分“查询操作无需commit(),修改/删除操作必须commit()”的差异。 “如果要把这些数据存在电脑里,怎么实现‘结构化存储’?” 导入新课 三 学号 姓名 性别 跑50米 立定跳远 坐位体前屈 202001001 柴思* 女 7.9 196 21 202001002 李雪* 女 7.2 196 20 202001003 方茹* 女 9.6 164 7 202001004 罗伟* 男 7.4 243 16 202001005 余珍* 女 8.1 198 13 202001006 张莹* 女 7.8 198 18 202001007 周晨* 男 7.1 243 14 202001008 王晨* 男 7.4 222 9 学生体能测试表 “如何快速找出所有男生的名字?” “如果‘王晨*’改名叫‘张晨*’,怎么在表中修改?” “如果‘李雪*’转学了,怎么从表中删掉他的信息?” 今天我们用 Python 代码完成这些操作,让‘找、改、删’信息变得更高效” 新知讲授 四 一、数据表的操作命令 Python的sqlite3模块通过调用SQL语句进行数据表的操作。 操作类型 操作命令 描述 数据查询 SELECT 查询满足条件的数据记录 数据定义 CREATE 创建数据库表 ALTER 修改数据表结构 DROP 删除数据库表 数据操纵 INSERT 添加数据记录 DELETE 删除数据记录 UPDATE 更新数据记录 数据表的操作 新知讲授 四 二、数据查询 SELECT <查询项> from <数据表名> [where <条件>] [group by <分组关键字> having <条件>] [order by <排序关键字>] SQL-SELECT语句格式如下: SQLite3中调用SQL-SELECT语句可以实现对数据表数据的查询。 新知讲授 四 二、数据查询 在sqlite3中调用SQL-SELECT语句时,会应用游标对象方法程序。 方法程序 功能描述 execute() 调用SQL语句 executemany() 多次调用SQL语句 fetchone() 查询数据表结果的一条记录 fetchmany() 查询数据表结果的多条记录 fetchall() 查询数据表结果的全部记录 游标对象的常用方法程序 新知讲授 四 二、数据查询 SELECT <查询项> from <数据表名> SQL-SELECT语句可以从数据表中查询指定的数据记录。 这里的<查询项>可以是<列名>,也可以是关于<列名>的表达式。 新知讲授 四 二、数据查询 例如:应用SQL-SELECT语句查询数据库“student.db”中数据表stu的学号列和姓名列。 01 import sqlite3 02 st=sqlite3.connect('student.db') 03 stu=st.cursor() 04 s=stu.execute('select 学号,姓名 from stud') 05 r=stu.fetchone() 06 print(r) 07 r=stu.fetchone() 08 print(r) 09 stu.close() 10 st.close() 注意:能打印出数据的前提是你要创建student.db数据库,并且student.db里面有数据。 新知讲授 四 二、数据查询 注意:能打印出数据的前提是你要创建student.db数据库,并且student.db里面有数据。 学号 姓名 性别 跑50米 立定跳远 坐位体前屈 202001003 罗伟* 男 7.4 243 16 202001004 余珍* 女 8.1 198 13 202001005 张莹* 女 7.8 198 18 202001006 周晨* 男 7.1 243 14 202001007 王晨* 男 7.4 222 9 新知讲授 四 二、数据查询 例如:应用SQL-SELECT语句查询数据库“student.db”中数据表stu的学号列和姓名列。 01 import sqlite3 02 st=sqlite3.connect('student.db') 03 stu=st.cursor() 04 s=stu.execute('select * from stud') 05 r=stu.fetchmany(2) 06 print(r) 07 stu.close() 08 st.close() 其中若查找所有列的数据,则<查询项>可以用“*”号表示。 新知讲授 四 二、数据查询 01 import sqlite3 02 st=sqlite3.connect('student.db') 03 stu=st.cursor() 04 s=stu.execute('select 学号,姓名 \ from stud where 性别=="男"') 05 r=stu.fetchone() 06 print(r) 07 r=stu.fetchone() 08 print(r) 09 stu.close() 10 st.close() 例如:应用SQL-SELECT语句查询数据库“student.db”数据表stu中性别为“男”的学号列和姓名列。 SQL-SELECT语句应用WHERE子句可以从数据表中按指定条件查询满足条件的数据记录。 新知讲授 四 二、数据查询 import sqlite3 st = sqlite3.connect("student.db") stu = st.cursor() # 执行SQL(group by 性别,会返回2条结果:女、男) stu.execute("select 性别,AVG(立定跳远) from stud group by 性别") # 第一次取:女 r1 = stu.fetchone() print("女生平均立定跳远:", r1) # 第二次取:男 r2 = stu.fetchone() print("男生平均立定跳远:", r2) stu.close() st.close() 例如:应用SQL-SELECT语句性别为关键字分组查询数据库“student.db”中数据表stu的性别列和立定跳远列(平均值)。 SQL-SELECT语句应用可以GROUP BY子名从数据表中按指定分组关键字进行分组查询数据记录。 AVG()为求平均值函数,类似的函数有求和SUM()、计数COUNT()、最大值MAX()和最小值MIN()等。 新知讲授 四 二、数据查询(代码难理解地方讲解:课本代码纠错) import sqlite3 st = sqlite3.connect("student.db") stu = st.cursor() # 执行SQL(group by 性别,会返回2条结果:女、男) stu.execute("select 性别,AVG(立定跳远) from stud group by 性别") # 第一次取:女 r1 = stu.fetchone() print("女生平均立定跳远:", r1) # 第二次取:男 r2 = stu.fetchone() print("男生平均立定跳远:", r2) stu.close() st.close() 课本代码 import sqlite3 st = sqlite3.connect("student.db") stu = st.cursor() s = stu.execute("select 性别,AVG(立定跳远) from stud group by 性别") r = stu.fetchone() print(r) stu.fetchone() print(r) stu.close() st.close() 会发现打印的之后女生的数据??? 新知讲授 四 二、数据查询(代码难理解地方讲解:课本代码纠错) stu.execute("select 性别,AVG(立定跳远) from stud group by 性别") # 第一次取:女 r1 = stu.fetchone() print("女生平均立定跳远:", r1) # 第二次取:男 r2 = stu.fetchone() print("男生平均立定跳远:", r2) 课本代码 s = stu.execute("select 性别,AVG(立定跳远) from stud group by 性别") r = stu.fetchone() print(r) stu.fetchone() print(r) 这句代码相当于数据库返回了两个‘筐’,一个写着男性数据,一个写着女性数据。 这句代码相当于数据库返回了两个‘筐’,中拿了一个筐,放进了r1这个篮子里。 这句代码相当于数据库返回了两个‘筐’,中又拿了一个筐,放进了r2这个篮子里。 这句代码相当于数据库返回了两个‘筐’,中拿了一个筐,没放进篮子里,扔了,所以无法打印r,思考:课本代码如何更改,让它变正确?。 新知讲授 四 二、数据查询 01 import sqlite3 02 st=sqlite3.connect('student.db') 03 stu=st.cursor() 04 s=stu.execute('select 学号,姓名\ from stud order by 姓名 ASC') 05 r=stu.fetchall() 06 print(r) 07 stu.close() 08 st.close() 例如:应用SQL-SELECT语句查询数据库“student.db”中数据表stu的学号列和姓名列,查询结果以姓名为关键字进行升序排列。 SQL-SELECT语句应用可以GROUP BY子名从数据表中按指定分组关键字进行分组查询数据记录。<排序关键字>后加ASC表示为升序,加DESC为降序,默认为升序。 新知讲授 四 三、数据定义 ALTER TABLE <数据表名>ADD COLUMN <列名> <数据类型> SQLite3中调用SQL-ALTER语句可以实现对数据表结构的修改,即添加数据表列。SQLite3不支持SQL-ALTER语句的修改和删除数据表列。 新知讲授 四 三、数据定义 应用SQL-ALTER语句修改数据库“xsda.db”中数据表“学生信息表(xsxx)”的表结构。 01 import sqlite3 02 xs=sqlite3.connect('xsda.db') 03 xscur=xs.cursor() 04 sql1='alter table xsxx add \ column 手机号码 TEXT' 05 s=xscur.execute(sql1) #添加列“手机号码” 06 xscur.close() 07 xs.close() 注意课本代码184页有两处错误,请根据PPT代码进行修正,并且指明原因。 新知讲授 四 三、数据定义 DROP TABLE <数据表名> SQLite3中调用SQL-DROP语句可以实现对数据表删除,SQL-DROP语句的格式如下: 新知讲授 四 三、数据定义 例如:应用SQL-DROP语句删除数据库“xsda.db”中数据表“学生信息表(xsxx)”。 01 import sqlite3 02 xs=sqlite3.connect('xsda.db') 03 xscur=xs.cursor() 04 sql2='drop table xsxx' 05 s=xscur.execute(sql2) #删除数据表xsxx 06 xscur.close() 07 xs.close() 注意课本代码184页有两处错误,请根据PPT代码进行修正,并且指明原因。 新知讲授 四 四、数据操纵 例如:应用SQL-UPDATE语句更新数据库“student.db”中数据表stu的数据。 01 import sqlite3 02 st=sqlite3.connect('student.db') 03 stu=st.cursor() 04 stu.execute('update stud set 姓名="王玉*" \ where 学号="202001005"') 05 stu.execute('select 学号,姓名 from stud \ where 学号="202001005"') 06 r=stu.fetchall() 07 print(r) 08 st.commit() 09 stu.close() 10 st.close() 新知讲授 四 四、数据操纵 UPDATE <数据表名> SET <列名1>=<表达式1>,<列名2>=<表达式2>,...... [WHERE <条件> ] SQLite3中调用SQL-UPDATE语句可以实现对数据表记录的修改,SQL-UPDATE语句的格式如下: 新知讲授 四 四、数据操纵 例如:应用SQL-UPDATE语句更新数据库“student.db”中数据表stu的数据。 01 import sqlite3 02 st=sqlite3.connect('student.db') 03 stu=st.cursor() 04 stu.execute('update stud set 姓名="王玉*" \ where 学号="202001005"') 05 stu.execute('select 学号,姓名 from stud \ where 学号="202001005"') 06 r=stu.fetchall() 07 print(r) 08 st.commit() 09 stu.close() 10 st.close() 新知讲授 四 四、数据操纵 DELETE FROM <数据表名> [WHERE <条件> ] SQLite3中调用SQL-DELETE语句可以实现对数据表记录的删除,SQL-DELETE语句的格式如下: 新知讲授 四 四、数据操纵 例如:应用SQL-DELETE语句删除数据库“student.db”中数据表stu的数据。 01 import sqlite3 02 st=sqlite3.connect('student.db') 03 stu=st.cursor() 04 stu.execute('delete from stud \ 05 where 学号="202001005"') 06 stu.execute('select 学号,姓名 from stud') 07 r=stu.fetchall() 08 print(r) 09 st.commit() 10 stu.close() 11 st.close() 新知讲授 四 四、数据操纵 【例】编程完成下列查询:从键盘输入姓名,从数据库“student.db”数据表stu中查询该同学的数据记录。 01 import sqlite3 #导入SQLite3模块 02 st=sqlite3.connect('student.db') #定义数据库连接对象 03 stu=st.cursor() #定义游标对象 04 while True: #永真循环 05 name=input('请输入查询姓名:') #输入查询项 06 s='select * from stud where 姓名="{xm}"'.format(xm=name)\ #定义SQL-SELECT语句 07 stu.execute(s) #调用SQL语句 新知讲授 四 四、数据操纵 【例】编程完成下列查询:从键盘输入姓名,从数据库“student.db”数据表stu中查询该同学的数据记录。 08 a=stu.fetchall() #获取查询结果数据序列 09 print(a) #输出查询结果 10 yn=input('是否继续(y/n)') #继续查询确认 11 if yn.upper()=='Y': #继续查询 12 continue #重新循环 13 else: #终止查询 14 break #退出永真循环 15 stu.close() #定义游标对象 16 st.close() #关闭数据库连接对象 新知讲授 四 四、数据操纵(效果展示) 【例】编程完成下列查询:从键盘输入姓名,从数据库“student.db”数据表stu中查询该同学的数据记录。 师生互动 五 一:给学生发一份简化的“student.db”数据库(包含 stud 表的测试数据),让学生完成2个小任务: ① 用 SELECT 语句查询“学号202301003”的所有信息; ② 用 UPDATE 语句把“学号202301005”的姓名改成自己的名字,然后查询验证。 二:本节课本上代码有3段代码有错误,谁能找出,加积分。 随堂练习 1. 在sqlite3中,游标对象的 fetchone() 方法的作用是? A. 查询数据表结果的全部记录 B. 查询数据表结果的一条记录 C. 查询数据表结果的多条记录 D. 执行SQL语句 【答案】B 【解析】 fetchone() 用于获取查询结果中的一条记录; fetchmany() 获取多条, fetchall() 获取全部, execute() 用于执行SQL语句。 六 随堂练习 2. 在SELECT语句中,若要查询数据表的所有列,应使用的符号是? A. ? B. * C. % D. #  【答案】B 【解析】“*”是SELECT语句中查询所有列的通配符,比如 SELECT * FROM stud 可获取表中所有列的数据。 六 随堂练习 3. 下列关于sqlite3中ALTER语句的描述,正确的是? A. 可以删除数据表列 B. 可以添加数据表列 C. 可以修改数据表的名称 D. 可以删除整个数据表 【答案】B 【解析】sqlite3的ALTER语句支持添加列和修改列名,但不支持删除列;删除数据表用 DROP TABLE ,修改表名不是其常规功能。 六 随堂练习 4.在SELECT语句中,用于计算某列平均值的聚合函数是? A. SUM() B. COUNT() C. AVG() D. MAX() 【答案】C 【解析】 AVG() 用于计算列的平均值, SUM() 是求和, COUNT() 是计数, MAX() 是求最大值。 六 随堂练习 5.下列关于UPDATE语句的格式,正确的是? A. UPDATE <数据表名> WHERE <条件> SET <列名>=<表达式> B. UPDATE <数据表名> SET <列名>=<表达式> [WHERE <条件>] C. UPDATE SET <列名>=<表达式> <数据表名> [WHERE <条件>] D. UPDATE <列名>=<表达式> SET <数据表名> [WHERE <条件>] 【答案】B 【解析】UPDATE语句的正确格式是“UPDATE <数据表名> SET <列名>=<表达式> [WHERE <条件>]”,用于修改满足条件的记录。 六 随堂练习 6. 在sqlite3中,若DELETE语句省略WHERE子句,会产生的结果是? A. 不删除任何记录 B. 删除数据表的第一条记录 C. 删除数据表的最后一条记录 D. 删除数据表的所有记录 【答案】D 【解析】DELETE语句省略WHERE子句时,会删除数据表中的所有记录;带WHERE子句则只删除满足条件的记录。 六 随堂练习 7.在SELECT语句的ORDER BY子句中,默认的排序方式是? A. 降序(DESC) B. 升序(ASC) C. 随机排序 D. 无默认排序 【答案】B 【解析】ORDER BY子句默认按升序ASC排序,添加DESC关键字可改为降序。 六 随堂练习 8. 在sqlite3中,游标对象的 fetchall() 方法的作用是? A. 执行多条SQL语句 B. 获取查询结果的一条记录 C. 获取查询结果的全部记录 D. 获取查询结果的指定数量记录 【答案】C 【解析】 fetchall() 用于获取查询结果的全部记录; executemany() 执行多条SQL语句, fetchone() 获取一条, fetchmany() 获取指定数量的多条。 六 课堂小结 八 谢谢 EV录屏5.4.1软件录制 Lavf58.33.100 本视频由湖南一唯信息科技开发的EV录屏软件录制, www.ieway.cn $

资源预览图

第6单元6.5数据表的操作(课件)-《程序设计基础-Python》(高教版)同步精品课堂
1
第6单元6.5数据表的操作(课件)-《程序设计基础-Python》(高教版)同步精品课堂
2
第6单元6.5数据表的操作(课件)-《程序设计基础-Python》(高教版)同步精品课堂
3
第6单元6.5数据表的操作(课件)-《程序设计基础-Python》(高教版)同步精品课堂
4
第6单元6.5数据表的操作(课件)-《程序设计基础-Python》(高教版)同步精品课堂
5
第6单元6.5数据表的操作(课件)-《程序设计基础-Python》(高教版)同步精品课堂
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。