第75卷 数据库的使用 《计算机编程基础—Python语言》安徽省(对口招生)《电子与信息大类(计算机类)考纲百套卷》

2026-08-08
| 2份
| 14页
| 34人阅读
| 0人下载

内容正文:

编写说明:2027版安徽省普通高校对口招生考试电子与信息大类(计算机类)专业《考纲百套卷》,依据《安徽省普通高校对口招生专业理论和技能测试考试纲要(2025年版)》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共99份试卷,其中知识训练卷75份、专题训练卷17份、课程综合卷7份。 本试卷是第75卷,为知识训练卷,按《计算机编程基础—Python语言》中“数据库的使用”范围和要求编写。具体内容为:1.Python 数据库应用接口(B)。2.Sqlite3 模块(C)。3.数据表的创建(B)。4.数据表的操作(C)。 安徽省对口招生考试 电子与信息大类(计算机类)《考纲百套卷》 第75卷 计算机编程基础—Python语言——数据库的使用 (考试时间:45分钟 满分:100分) 一、填空题(共10题,每题2分,共20分) 1.Python内置的轻量级数据库模块是__________。 2.连接SQLite数据库使用__________函数,返回连接对象。 3.执行SQL语句需先创建__________对象,通过连接的__________方法获取。 4.插入/更新/删除数据后,必须调用__________方法才能将更改持久化到数据库。 5.查询结果后,使用__________方法获取所有行,返回__________类型。 6.创建表的SQL关键字是__________,插入数据的关键字是__________。 7.使用__________语法可防止SQL注入攻击,而非直接拼接字符串。 8.SQLite中整数类型的关键字是__________,文本类型是__________。 9.获取刚插入数据的自增主键ID,使用游标的__________属性。 10.查询条件WHERE age>18中,获取结果行数的SQL函数是__________。 二、单项选择题(共15题,每题2分,共30分) 11.cursor.execute(sql)返回(  ) A.游标对象 B.结果列表 C.影响行数 D.布尔值 12.conn.commit()的作用(  ) A.关闭连接 B.提交事务 C.回滚 D.执行SQL 13.防止SQL注入的正确做法(  ) A.检查输入 B.参数化查询 C.过滤引号 D.限制长度 14.SQLite连接文件不存在时(  ) A.报错 B.创建新文件 C.返回None D.忽略 15.SELECT * FROM t 结果获取(  ) A.execute直接返回 B.fetchall C.fetch D.get 16.INTEGER PRIMARY KEY 的作用(  ) A.唯一标识+自增 B.只能放整数 C.必须手动赋值 D.只读 17.UPDATE t SET age=20 缺少WHERE(  ) A.报错 B.更新所有行 C.不执行 D.更新一行 18.c.execute("SELECT * FROM t WHERE id=?", (1,))中(1,)(  ) A.语法错误 B.单元素元组 C.列表 D.字典 19.conn.close()调用后(  ) A.SQL不执行 B.连接释放 C.数据库删除 D.自动commit 20.CREATE TABLE IF NOT EXISTS作用(  ) A.强制创建 B.表存在跳过 C.删除重建 D.报错 21.SQLite中AUTOINCREMENT关键字(  ) A.必需 B.可选 C.不支持 D.仅主键 22.GROUP BY子句的作用(  ) A.排序 B.分组聚合 C.过滤 D.连接 23.c.execute(sql)执行失败会(  ) A.返回None B.抛出异常 C.静默失败 D.自动重试 24.LIKE用于模糊查询,%表示(  ) A.单字符 B.任意多个字符 C.转义 D.数字 25.conn=sqlite3.connect(":memory:")存储(  ) A.临时文件 B.内存 C.磁盘文件 D.不存储 三、程序分析题(共3题,每题6分,共18分) 26.import sqlite3 conn=sqlite3.connect("test.db") c=conn.______ c.______("CREATE TABLE IF NOT EXISTS students(id INTEGER PRIMARY KEY,name TEXT,score INTEGER)") c.execute("INSERT INTO students(name,score) ______(?,?)",("张三",85)) conn.commit() conn.close() 27.import sqlite3 conn=sqlite3.connect("test.db") c=conn.cursor() try: c.execute("CREATE TABLE users(id INT,name TEXT)") c.execute("INSERT INTO users VALUES(1,'admin')") c.execute("SELECT * FROM users WHERE name='"+name+"'") print(c.fetchall()) except: pass conn.close() 28.import sqlite3 conn=sqlite3.connect(":memory:") c=conn.cursor() c.execute("CREATE TABLE scores(name TEXT,score INT)") data=[("A",85),("B",92),("C",78),("D",88)] c.executemany("INSERT INTO scores VALUES(?,?)",data) c.execute("SELECT * FROM scores WHERE score>=80 ORDER BY score DESC") rows=c.fetchall() print(len(rows)) print(rows[0]) print(rows[-1]) c.execute("SELECT AVG(score) FROM scores") print(round(c.fetchone()[0],1)) 四、程序设计题(3题,29/30各6分/31各8分) 29.创建数据库students.db,建表scores(sid INTEGER PRIMARY KEY,name TEXT,math INT,chinese INT),插入3条记录,查询所有记录输出。   30.查询students.db中数学>80的学生姓名和数学成绩,按数学成绩降序排列输出。   31.更新students.db:将"张三"的数学成绩+5分,查询更新后的记录,若"张三"不存在输出提示。   五、综合应用题(共1题,每题12分,共12分) 32.设计学生成绩管理系统:(1)建表students(id自增,name,class)和scores(sid,subject,score)两表关联;(2)插入班级和学生数据;(3)查询每个学生的总分和平均分,按总分降序输出排名;(4)输出统计:总人数、平均分最高科目。使用JOIN和聚合函数实现。   原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:2027版安徽省普通高校对口招生考试电子与信息大类(计算机类)专业《考纲百套卷》,依据《安徽省普通高校对口招生专业理论和技能测试考试纲要(2025年版)》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共99份试卷,其中知识训练卷75份、专题训练卷17份、课程综合卷9份。 本试卷是第75卷,为知识训练卷,按《计算机编程基础—Python语言》中“数据库的使用”范围和要求编写。具体内容为:1.Python 数据库应用接口(B)。2.Sqlite3 模块(C)。3.数据表的创建(B)。4.数据表的操作(C)。 安徽省对口招生考试 电子与信息大类(计算机类)《考纲百套卷》 第75卷 计算机编程基础—Python语言——数据库的使用 (考试时间:45分钟 满分:100分) 一、填空题(共10题,每题2分,共20分) 1.Python内置的轻量级数据库模块是__________。 【答案】sqlite3 【解析】sqlite3是Python内置轻量级数据库模块无需额外安装。数据库存为单一磁盘文件,适合小型应用和嵌入式场景。 2.连接SQLite数据库使用__________函数,返回连接对象。 【答案】sqlite3.connect() 【解析】connect(dbfile)连接SQLite数据库文件,文件不存在则自动创建。返回Connection对象管理事务,用完需close()释放连接。 3.执行SQL语句需先创建__________对象,通过连接的__________方法获取。 【答案】游标、cursor() 【解析】游标通过conn.cursor()创建,用于执行SQL语句和获取查询结果。execute(sql,params)执行SQL,参数化查询防注入。 4.插入/更新/删除数据后,必须调用__________方法才能将更改持久化到数据库。 【答案】commit() 【解析】commit()提交事务将更改持久化保存到磁盘。rollback()回滚撤销未提交的更改。SQLite默认需显式调用commit保存数据。 5.查询结果后,使用__________方法获取所有行,返回__________类型。 【答案】fetchall()、列表 【解析】游标执行查询 SQL 后,fetchall()一次性取出全部查询行,整体以嵌套列表格式返回;fetchone()仅读取单行记录。 6.创建表的SQL关键字是__________,插入数据的关键字是__________。 【答案】CREATE TABLE、INSERT INTO 【解析】CREATE TABLE是建表核心 SQL 语句;INSERT INTO用于向数据表新增插入记录。 7.使用__________语法可防止SQL注入攻击,而非直接拼接字符串。 【答案】参数化查询/占位符 【解析】采用占位符参数化传参,SQL 语句与变量数据分离,杜绝字符串拼接带来的 SQL 注入漏洞,同时自动处理字符串引号、特殊字符。 8.SQLite中整数类型的关键字是__________,文本类型是__________。 【答案】INTEGER、TEXT 【解析】SQLite 内置字段类型,INTEGER存储整型数值,TEXT用于存储字符串、文本内容。 9.获取刚插入数据的自增主键ID,使用游标的__________属性。 【答案】lastrowid 【解析】游标对象lastrowid属性,可以直接拿到上一条 INSERT 语句生成的自增主键值。 10.查询条件WHERE age>18中,获取结果行数的SQL函数是__________。 【答案】COUNT() 【解析】COUNT()为统计聚合函数,搭配 WHERE 条件可以统计满足条件的数据总条数。 二、单项选择题(共15题,每题2分,共30分) 11.cursor.execute(sql)返回(  ) A.游标对象 B.结果列表 C.影响行数 D.布尔值 【答案】A 【解析】execute返回游标自身,支持链式调用如c.execute(sql).fetchall()。结果通过fetch方法获取。 12.conn.commit()的作用(  ) A.关闭连接 B.提交事务 C.回滚 D.执行SQL 【答案】B 【解析】commit持久化更改。rollback撤销未提交更改。不调用commit可能导致数据丢失。 13.防止SQL注入的正确做法(  ) A.检查输入 B.参数化查询 C.过滤引号 D.限制长度 【答案】B 【解析】参数化查询用?占位符将数据与SQL分离。字符串拼接易受注入攻击。参数化由数据库引擎安全处理。 14.SQLite连接文件不存在时(  ) A.报错 B.创建新文件 C.返回None D.忽略 【答案】B 【解析】connect文件不存在自动创建。但表需手动CREATE TABLE创建。内存数据库用connect(":memory:")。 15.SELECT * FROM t 结果获取(  ) A.execute直接返回 B.fetchall C.fetch D.get 【答案】B 【解析】execute返回游标,需fetchall/fetchone获取结果。cur.description获取列信息。 16.INTEGER PRIMARY KEY 的作用(  ) A.唯一标识+自增 B.只能放整数 C.必须手动赋值 D.只读 【答案】A 【解析】INTEGER PRIMARY KEY在SQLite中自动成为rowid别名。未赋值时自增。每表只能一个。 17.UPDATE t SET age=20 缺少WHERE(  ) A.报错 B.更新所有行 C.不执行 D.更新一行 【答案】B 【解析】无条件UPDATE更新所有行age=20极危险。DELETE同理。生产环境必须加WHERE限定。 18.c.execute("SELECT * FROM t WHERE id=?", (1,))中(1,)(  ) A.语法错误 B.单元素元组 C.列表 D.字典 【答案】B 【解析】参数必须可迭代对象。(1)是整数非元组,(1,)才是单元素元组。逗号不能省否则SQL报参数个数错。 19.conn.close()调用后(  ) A.SQL不执行 B.连接释放 C.数据库删除 D.自动commit 【答案】B 【解析】close释放连接资源。未提交更改可能丢失(取决于设置)。建议with语句自动管理。 20.CREATE TABLE IF NOT EXISTS作用(  ) A.强制创建 B.表存在跳过 C.删除重建 D.报错 【答案】B 【解析】IF NOT EXISTS避免重复创建错误。同理DROP TABLE IF EXISTS安全删除。幂等性脚本常用。 21.SQLite中AUTOINCREMENT关键字(  ) A.必需 B.可选 C.不支持 D.仅主键 【答案】B 【解析】INTEGER PRIMARY KEY已自增,AUTOINCREMENT额外保证ID不重用(即使删除记录)。普通自增可重用。 22.GROUP BY子句的作用(  ) A.排序 B.分组聚合 C.过滤 D.连接 【答案】B 【解析】GROUP BY按列分组配合聚合函数COUNT/SUM/AVG。HAVING过滤分组后结果。ORDER BY排序结果。 23.c.execute(sql)执行失败会(  ) A.返回None B.抛出异常 C.静默失败 D.自动重试 【答案】B 【解析】SQL语法错/约束违反抛出sqlite3.Error异常。需try-except处理。OperationalError表不存在等。 24.LIKE用于模糊查询,%表示(  ) A.单字符 B.任意多个字符 C.转义 D.数字 【答案】B 【解析】%零到多字符通配。_单个字符。LIKE大小写不敏感(ASCII)。name LIKE '张%'匹配张开头。 25.conn=sqlite3.connect(":memory:")存储(  ) A.临时文件 B.内存 C.磁盘文件 D.不存储 【答案】B 【解析】:memory:数据库在内存中,速度快连接关闭数据消失。适合测试和临时缓存。 三、程序分析题(共3题,每题6分,共18分) 26.import sqlite3 conn=sqlite3.connect("test.db") c=conn.______ c.______("CREATE TABLE IF NOT EXISTS students(id INTEGER PRIMARY KEY,name TEXT,score INTEGER)") c.execute("INSERT INTO students(name,score) ______(?,?)",("张三",85)) conn.commit() conn.close() 【答案】(1)cursor()(2分);(2)execute(2分);(3)VALUES(2分)。 【解析】cursor获取游标。execute执行SQL创建表和插入。VALUES后跟参数化占位符?。commit提交事务持久化数据。 27.import sqlite3 conn=sqlite3.connect("test.db") c=conn.cursor() try: c.execute("CREATE TABLE users(id INT,name TEXT)") c.execute("INSERT INTO users VALUES(1,'admin')") c.execute("SELECT * FROM users WHERE name='"+name+"'") print(c.fetchall()) except: pass conn.close() 【答案】(1)SQL注入风险:SELECT中字符串拼接name变量,应改为参数化c.execute("SELECT * FROM users WHERE name=?",(name,))(4分);(2)缺少conn.commit()(2分)。 【解析】变量直接拼接到SQL极其危险,用户输入可注入恶意SQL。参数化查询?占位符是安全做法。插入后需commit持久化。 28.import sqlite3 conn=sqlite3.connect(":memory:") c=conn.cursor() c.execute("CREATE TABLE scores(name TEXT,score INT)") data=[("A",85),("B",92),("C",78),("D",88)] c.executemany("INSERT INTO scores VALUES(?,?)",data) c.execute("SELECT * FROM scores WHERE score>=80 ORDER BY score DESC") rows=c.fetchall() print(len(rows)) print(rows[0]) print(rows[-1]) c.execute("SELECT AVG(score) FROM scores") print(round(c.fetchone()[0],1)) 【答案】3 ('B', 92) ('A', 85) 85.8 【解析】内存数据库。executemany批量插入4条。WHERE筛选>=80分3条。ORDER BY DESC降序排列首行B(92)末行A(85)。AVG聚合函数求平均=(85+92+78+88)/4=85.75→round得85.8。 四、程序设计题(3题,29/30各6分/31各8分) 29.创建数据库students.db,建表scores(sid INTEGER PRIMARY KEY,name TEXT,math INT,chinese INT),插入3条记录,查询所有记录输出。 【答案】import sqlite3 conn=sqlite3.connect('students.db') c=conn.cursor() c.execute('CREATE TABLE IF NOT EXISTS scores(sid INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,math INT,chinese INT)') data=[('张三',85,92),('李四',78,88),('王五',95,90)] c.executemany('INSERT INTO scores(name,math,chinese) VALUES(?,?,?)',data) conn.commit() c.execute('SELECT * FROM scores') for row in c.fetchall():print(row) conn.close() 【解析】IF NOT EXISTS避免重复建表。executemany批量插入效率高于多次execute。fetchall获取所有行循环输出。commit持久化。 30.查询students.db中数学>80的学生姓名和数学成绩,按数学成绩降序排列输出。 【答案】import sqlite3 conn=sqlite3.connect('students.db') c=conn.cursor() c.execute('SELECT name,math FROM scores WHERE math>80 ORDER BY math DESC') rows=c.fetchall() if rows: for name,score in rows: print(name,score) else: print('无符合条件记录') conn.close() 【解析】SELECT指定列。WHERE math>80过滤。ORDER BY math DESC降序。fetchall后检查空列表处理无数据情况。close释放连接。 31.更新students.db:将"张三"的数学成绩+5分,查询更新后的记录,若"张三"不存在输出提示。 【答案】import sqlite3 conn=sqlite3.connect('students.db') c=conn.cursor() c.execute('SELECT * FROM scores WHERE name=?',('张三',)) row=c.fetchone() if row: c.execute('UPDATE scores SET math=math+5 WHERE name=?',('张三',)) conn.commit() c.execute('SELECT * FROM scores WHERE name=?',('张三',)) print(c.fetchone()) else: print('张三不存在') conn.close() 【解析】先SELECT检查记录是否存在。UPDATE SET math=math+5在原值上加5。参数化防止注入。commit持久化。fetchone获取一行。 五、综合应用题(共1题,每题12分,共12分) 32.设计学生成绩管理系统:(1)建表students(id自增,name,class)和scores(sid,subject,score)两表关联;(2)插入班级和学生数据;(3)查询每个学生的总分和平均分,按总分降序输出排名;(4)输出统计:总人数、平均分最高科目。使用JOIN和聚合函数实现。 【答案】import sqlite3 conn=sqlite3.connect('school.db') c=conn.cursor() c.executescript(''' CREATE TABLE IF NOT EXISTS students(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,class TEXT); CREATE TABLE IF NOT EXISTS scores(sid INTEGER,subject TEXT,score INTEGER, FOREIGN KEY(sid) REFERENCES students(id)); ''') c.execute('DELETE FROM scores');c.execute('DELETE FROM students') s_data=[('张三','1班'),('李四','1班'),('王五','2班')] c.executemany('INSERT INTO students(name,class) VALUES(?,?)',s_data) sc_data=[(1,'语文',85),(1,'数学',92),(2,'语文',78),(2,'数学',88),(3,'语文',95),(3,'数学',90)] c.executemany('INSERT INTO scores(sid,subject,score) VALUES(?,?,?)',sc_data) conn.commit() c.execute('''SELECT s.name,s.class,SUM(sc.score),ROUND(AVG(sc.score),1) FROM students s JOIN scores sc ON s.id=sc.sid GROUP BY s.id ORDER BY SUM(sc.score) DESC''') print('排名 姓名 班级 总分 平均分') for i,row in enumerate(c.fetchall(),1): print(i,row[0],row[1],row[2],row[3]) c.execute('SELECT COUNT(*) FROM students') print('总人数:',c.fetchone()[0]) c.execute('SELECT subject,AVG(score) FROM scores GROUP BY subject ORDER BY AVG(score) DESC LIMIT 1') best=c.fetchone() print('平均最高科目:'+best[0]+str(round(best[1],1))) conn.close() 【解析】两表关联:students存学生信息,scores存成绩。FOREIGN KEY建立外键关联。JOIN连接两表查询。GROUP BY按学生分组求总分和平均分。ORDER BY DESC降序排名。子查询+聚合函数统计分析。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第75卷 数据库的使用 《计算机编程基础—Python语言》安徽省(对口招生)《电子与信息大类(计算机类)考纲百套卷》
1
第75卷 数据库的使用 《计算机编程基础—Python语言》安徽省(对口招生)《电子与信息大类(计算机类)考纲百套卷》
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。