MySQL数据库day7.11

news2024/9/21 12:45:53

一,SQL概述

1.1 SQL语句语法

MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写,
以分号结尾。例如:
SELECT * FROM user;
使用 /**/ -- # 的方式完成注释
/*
多行注释
*/
-- 单行注释
# 单行注释
SELECT * FROM user;

1.2 SQL中数据的常用数据类型

固定长度 char(n) 例如 : char(20), 最大能存放 20 个字符 . ‘aaa’,
还是占 20 个字符的空间
可变长度 varchar(n) 例如 :varchar(20), 最大能存放 20 个字符 .
‘aaa’, 3 个字符的空间
一般使用 varchar(n) 节省空间 ; 如果长度 ( 身份证 ) 是固定的话 可
以使用 char(n) 性能高一点

二·,DDL操作数据库

2.1 创建数据库

  语法
create database 数据库名 [character set 字符集][collate校对规则]    
 注: []意思是可选的意思
  创建一个 day0708_1 的数据库(默认字符集 )
create database day0708_1;
   创建一个day0708_2 的数据库 , 指定字符集为 gbk( 了解 )
create database day0708_2 character set gbk;

2.2 查看所有的数据库

  语法:查看所有的数据库
show databases;
  语法:查看数据库的定义结构【了解】
show create database 数据库名;
-- 查看数据库
-- 语法: show databases; 查询所有的数据库
show databases
-- 语法: show create database 数据库名; 查看数据库的定义
结构【了解】
show create database day0708_1
show create database day0708_2

2.3 删除数据库

  语法
drop database 数据库名;
-- 需求: 删除day0708_2数据库
drop database day0708_2;

2.4 修改数据库【了解】

  语法
alter database 数据库名 character set 字符集;
-- 需求: 把day0708_2数据库的字符集修改为utf8
alter database day0708_2 character set utf8

  2.5 其他操作

  切换数据库: 在创建表之前一定要指定数据库。 use 数据库名
use 数据库名;
-- 语法: use 数据库名; 选中数据库
use day0708_1;
-- 语法: select database(); 查看当前选中(正在使用)的数据库
select database();

三,DDL操作表

 3.1 创建表

创建表, 格式:
   create table 表名 (
      字段名 数据类型[长度] [约束],
      字段名 数据类型[长度] [约束],
      ...
   ); 注:[]中的内容是可选项

  3.2 SQL约束

约束:即规则 , 规矩 限制 ;
作用:数据库中的约束 , 就是指 表中的数据内容 不能胡乱填写 , 必须
按照要求填写 . 好保证数据的完整性与安全性。
not null: 非空约束 ;
例如 : username varchar(40) not null username 这个列不
能有 null
unique: 唯一约束 , 后面的数据不能和前面重复 ;
例如 : cardNo char(18) unique; cardNo 列里面不可以有重
复数据
primary key ;主键约束 ( 非空 + 唯一 );
一般用在表的 id 列上面 . 一张表基本上都有 id 列的 , id 列作为
唯一标识的
auto_increment: 自动增长 , 必须是设置了 primary key 之后 ,
才可以使用 auto_increment
id int primary key auto_increment; id 不需要我们自己维
护了 , 插入数据的时候直接插入 null , 自动的增长进行填充进
, 避免重复了
需求:创建一张学生表 ( 含有 id 字段 , 姓名字段 , 性别字段 . id 为主键自
动增长 )
-- 需求: 创建一张学生表(含有id字段,姓名字段,性别字段. id为主
键自动增长)
-- 创建表之前需要选中数据库
use day0708_1;
create table student(
 id int primary key auto_increment,
 name varchar(40),
 gender varchar(13) not null
);

3.3 查看所有的表

  语法
show tables;

四,DML操作表记录-增删改

4.1 插入记录

-- 创建一张商品表(商品id,商品名称,商品价格,商品数量)
create table product(
 id int primary key auto_increment,
 pname varchar(100),
 price double,
 num int
);
方式一 : 插入指定列 , 如果没有把这个列进行列出来 , null 进行
自动赋值。
insert into 表(列,列..) values(值,值..);
insert into product(pname,price)
values('Mac',18888);
insert into product(pname,price,num)
values('Mac',18888,null);
方式二:插入所有的列
insert into 表 values(值,值....);
insert into product values(null,'小米电脑',5888,10);
insert into product values(null,'华硕电脑',5888,null);
insert into product values(null,'苹果电
脑',18000.0,10);
insert into product values(null,'华为5G手 机',30000,20);
insert into product values(null,'小米手机',1800,30);
insert into product values(null,'iPhonex',8000,10);
insert into product values(null,'苹果电脑',8000,100);
insert into product values(null,'iPhone7',6000,200);
insert into product 
values(null,'iPhone6s',4000,1000);
insert into product values(null,'iPhone6',3500,100);
insert into product 
values(null,'iPhone5s',3000,100);
insert into product values(null,'方便面',4.5,1000);
除了整数 \ 小数类型外 , 其他字段类型的值必须使用引号引起来
( 建议单引号 )
如果要插入空值 , 可以不写字段 , 或者插入 null

4.2 更新记录

语法
update 表名 set 列 =值, 列 =值 [where 条件]
-- 更新记录
-- 语法: update 表名 set 列 =值, 列 =值 [where 条件]
-- 需求:修改商品所有的价格为5000
update product set price = 5000;
-- 需求: 修改id为2的商品数量和价格
update product set price = 8000,num = 20 where id = 2;
-- 将商品名是Mac的价格修改为18000元
update product set price = 18000 where pname = 'Mac'
-- 将商品名是Mac的价格修改为17000,数量修改为5
update product set price = 17000,num = 5 where pname
= 'Mac'
-- 将商品名是方便面的商品的价格在原有基础上增加2元
update product set price = price + 2 where pname = '方便面'

4.3 删除记录

delete 语法:
delete from 表 [where 条件]  
truncate 语法:
truncate table 表;
-- 删除记录
-- 语法一: delete from 表名 [where 条件]  
-- 删除表中名称为’Mac’的记录
delete from product where pname = 'Mac'
-- 删除价格小于5001的商品记录
delete from product where price < 5001
-- 删除表中的所有记录
delete from product
-- 语法二: truncate table 表名;
truncate table product
delete truncate 区别【面试题】
DELETE 删除表中的数据,表结构还在 ; 删除后的数据可以找
, 一条一条的删除 .
TRUNCATE 删除是把表直接 DROP 掉,然后再创建一个同样
的新表。删除的数据不能找回。执行速度比 DELETE 快。
工作里面的删除
物理删除 : 真正的删除了 , 数据不在 , 使用 delete 就属于物理删
逻辑删除 : 没有真正的删除 , 数据还在 . 搞一个标记 , 其实逻辑
删除是更新 例如 : state 1 启用 0 禁用

五,基本查询语法

select [*] [列名 ,列名] [列名 as 别名 ...] [distinct 字段] from 表名 [where 条件]

六.简单查询

查询所有的列的记录
查询某张表特定列的记录
去重查询 :去重针对某列 , distinct 前面不能先出现列
别名查询
运算查询 (+,-,*,/ ) :运算查询 列名与列名之间是可以 运算的
-- 查询所有的列语法:select * from 表名 
-- 需求:查询product表中的所有数据 
    select * from product; 

-- 查询某张表特定列:select 列名,列名,... from 表 名
-- 需求:查询product表中的pname,price字段的值 
    select pname,price from product; 

-- 去重查询:select distinct 列名 from 表名 
-- 需求:查询price字段,[去重]单个字段去重 
    select distinct price from product;

-- 需求:查询pname,price字段,[同时去重]多个字段去重
    
    select distinct pname,price from product;
     -- 注意:distinct前面不能有字段名 
    select id,distinct price from product;-- 报 错

-- 别名查询
-- 对字段取别名:select 字段 as 别名,字段 as 别 名,... from 表名。注意: as可以省略,一般都会省略 
    select pname as 商品名称,num as 商品数量 from product;
    select pname 商品名称,num 商品数量 from product;

 -- 对表取别名:select 表1别名.字段名,... from 表1 as 表1别名。注意: as可以省略 一般都会省略

     select p.pname,p.price from product as p; 
     select p.pname,p.price from product p;
 
-- 运算查询(+,-,*,/等),null和其他数据进行运算得到 是null 
-- 需求:计算每个商品的总价(单价*数量) 
    select price,num from product; 
    select price*num from product; 
    select price * num 总价 from product; 
    select price * ifnull(num,0) 总价 from product;

七.条件查询

语法:
select ... from 表 where 条件; //取出表中的每条数据,满足条件的记录就返回,不满足条 件的记录不返回

between...and... 区间查询
where price between 1000 and 3000 相当于 1000<=price<=3000
in( 值,值 ..)
-- 查询id为1,3,5,7的
 select * from t_product where id = 1
 select * from t_product where id = 3
 select * from t_product where id = 5
 select * from t_product where id = 7

 select * from t_product where id in(1,3,5,7)
like 模糊查询 。一般和 _ 或者 % 一起使用
_ 占一位
% 0 或者 n
name like '张%' --查询姓张的用户, 名字的字数没有 限制name like '张_' --查询姓张的用户 并且名字是两个 字的
and 多条件同时满足
where 条件1 and 条件2 and 条件3
or 任意条件满足
where 条件1 or 条件2 or 条件3
需求:
查询商品价格 >3000 的商品
查询 id=1 的商品
查询 id<>1 的商品
查询价格在 3000 6000 之间的商品
查询 id 1 5 7 15 范围内的商品
查询商品名以 iPho 开头的商品 (iPhone 系列 ) 查询商品价格大于 3000 并且数量大于 20 的商品 ( 条件
and 条件 and...)
查询 id=1 或者价格小于 3000 的商品
-- 查询商品价格>3000的商品
 select * from product where price > 3000;

 -- 查询id=1的商品
 select * from product where pid = 1;
 -- 查询id<>1的商品
 select * from product where pid <> 1;
 select * from product where pid != 1;

 -- 查询价格在3000到6000之间的商品
 select * from product where price between 3000 and 6000;
 select * from product where price >= 3000 and price <= 6000;

 -- 查询id在1,5,7,15范围内的商品
 select * from product where pid in(1,5,7,15);

 -- 查询商品名以iPho开头的商品(iPhone系列)
 select * from product where pname like 'iPho%';

 -- 查询商品价格大于3000并且数量大于20的商品 (条 件 and 条件 and...)
 select * from product where price > 3000 and num > 20;

 -- 查询id=1或者价格小于3000的商品
 select * from product where pid = 1 or price < 3000;

八.排序查询

有时候我们需要对查询出来的结果排序显示,那么就可
以通过 ORDER BY 子句将查询出的结果进行排序。排序可
以根据一个字段排,也可以根据多个字段排序,排序只
是对查询的结果集排序,并不会影响表中数据的顺序。
环境的准备
-- 创建学生表(有sid,学生姓名,学生性别,学生年龄,分 数列,其中sid为主键自动增长)
 CREATE TABLE student(
 sid INT PRIMARY KEY auto_increment,
 sname VARCHAR(40), sex VARCHAR(10),
 age INT, score DOUBLE
 );

INSERT INTO student VALUES(null,'zs','男',18,98.5);
INSERT INTO student VALUES(null,'ls','女',18,96.5);
INSERT INTO student VALUES(null,'ww','男',15,50.5); 
INSERT INTO student VALUES(null,'zl','女',20,98.5); 
INSERT INTO student VALUES(null,'tq','男',18,60.5); 
INSERT INTO student VALUES(null,'wb','男',38,98.5); 
INSERT INTO student VALUES(null,'小 丽','男',18,100); 
INSERT INTO student VALUES(null,'小 红','女',28,28); 
INSERT INTO student VALUES(null,'小 强','男',21,95);
单列排序: 只按某一个字段进行排序,单列排序
SELECT 字段名 FROM 表名 [WHERE 条件] ORDER BY 字段名 [ASC|DESC]; //ASC: 升序,默认值; DESC: 降序
需求 : 以分数降序查询所有的学生
select * from student order by score desc;
组合排序: 同时对多个字段进行排序,如果第 1 个字段
相等,则按第 2 个字段排序,依次类推
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名1 [ASC|DESC], 字段名2 [ASC|DESC];
需求:以分数降序查询所有的学生 , 如果分数一致 ,
age 降序
select * from student order by score desc ,age desc;

九,聚合函数

之前我们做的查询都是横向查询,它们都是根据条件一
行一行的进行判断,而使用聚合函数查询是 纵向查询
它是对一列的值进行计算,然后返回 一个结果值 。聚合
函数会忽略空值 NULL

需求:
求出学生表里面的最高分数
求出学生表里面的最低分数
求出学生表里面的分数的总和 ( 忽略 null )
求出学生表里面的平均分
统计学生的总人数 ( 忽略 null)
-- 求出学生表里面的最高分数 
SELECT MAX(score) FROM student; 

-- 求出学生表里面的最低分数 
SELECT MIN(score) FROM student; 

-- 求出学生表里面的分数的总和(忽略null值) 
SELECT SUM(score) FROM student; 

-- 求出学生表里面的平均分 
SELECT AVG(score) FROM student; 

-- 统计学生的总人数 (忽略null) 
SELECT COUNT(sid) FROM student; 
SELECT COUNT(*) FROM student;
我们发现对于 NULL 的记录不会统计,建议如果统计个数
则不要使用有可能为 null 的列,但如果需要把 NULL 也统
计进呢?我们可以通过 IFNULL( 列名,默认值 ) 函数来解
决这个问题 . 如果列不为空,返回这列的值。如果为
NULL ,则返回默认值。
-- 注意: 聚合函数会忽略null -- 准备添加2条数据
INSERT INTO student VALUES(null,'小 明','男',21,null); 
INSERT INTO student VALUES(null,'小 黑','男',22,98); 
-- 需求: 统计所有学生的总分数 
select sum(score) from student; -- 结果: 824 忽略null 
-- 需求:统计学生的总人数 (忽略null) 
select count(score) from student; -- 结果: 10个 忽略null 
-- 求出学生表里面的平均分 
select avg(score) from student; -- 结果: 82.4 
忽略null 问题:实际开发不能忽略null 
select avg(ifnull(score,0)) from student; - - 结果: 74.9090909090909 

-- 扩展: 
-- 假设: 统计所有同学的age+score 
select sum(age+score) from student; - - 结果: 
1040 select sum(age) + sum(score) from student; - - 结果: 1061

十.分组查询

分组查询是指使用 GROUP BY 语句对查询信息进行分
组。
GROUP BY 怎么分组的? 将分组字段结果中相同内容作
为一组,如按性别将学生分成两组。
GROUP BY 将分组字段结果中相同内容作为一组,并且
返回每组的第一条数据,所以单独分组没什么用处。分
组的目的就是为了统计,一般分组会跟聚合函数一起使
用。
分组:语法
SELECT 字段1,字段2... FROM 表名 [where 条件] GROUP BY 列 [HAVING 条件];
需求:根据性别分组 , 统计每一组学生的总人数
-- 根据性别分组, 统计每一组学生的总人数 
SELECT sex, count(*) FROM student GROUP BY sex;
分组后筛选 having
-- 练习根据性别分组, 统计每一组学生的总人数> 5的(分 组后筛选)
 SELECT sex, count(*) FROM student GROUP BY sex HAVING count(*) > 5

 -- 练习复杂: 统计sid为8之前的的, 根据性别分组, 每 一组学生的总人数 > 2的(分组后筛选) 
select sex,count(*) from student where sid < 8 group by sex having count(*) > 2
注意事项
根据某一列进行分组 , 将分组字段结果中相同内容
作为一组 ; 有几组 返回的记录就有几条
单独分组 没有意义 , 返回每一组的第一条记录
分组的目的一般为了做统计使用 , 所以经常和聚合
函数一起使用
在分组里面 , 如果 select 后面的列没有出现在 group
by 后面 展示这个组的这个列的第一个数据
where having 的区别【面试】

十一.分页查询

LIMIT 是限制的意思,所以 LIMIT 的作用就是限制查询记
录的条数 . 经常用来做分页查询
语法
select * from 表名 limit m,n;
 m是指从哪开始查;记录开始的index,从0开始,表示第一 条记录 n是指查多少条。
需求:分页查询学生 , 每一页查询 4
-- 需求: 分页查询学生, 每一页查询4条 
select * from student limit 0,4; -- 第1页 
select * from student limit 4,4; -- 第2页
select * from student limit 8,4; -- 第3页
 m=(当前页码-1)*n,n

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1923275.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

296个地级市GDP相关数据(2000-2023年)

GDP相关数据&#xff1a;衡量地区经济活动的综合指标 国内生产总值&#xff08;GDP&#xff09;是衡量一个国家或地区经济规模和发展水平的核心指标。它反映了在一定时期内&#xff0c;所有常住单位生产活动的最终成果。 GDP的种类及其含义&#xff1a; 名义GDP&#xff1a;按…

QT--槽函数和控件篇一

一、自定义信号和槽函数 QT 将信号和槽集成在QObject类中&#xff1b;发送者和接受者都必须继承这个类。Q_OBJECT宏是实现信号和槽机制、属性系统和元对象系统的关键。Q_OBJECT宏必须出现在每个使用信号和槽的类中&#xff0c;因为它为这些类提供了必要的元数据和功能。信号在…

使用 Python 创建你的第一个情绪分析模型

「AI秘籍」系列课程&#xff1a; 人工智能应用数学基础 人工智能Python基础 人工智能基础核心知识 人工智能BI核心知识 人工智能CV核心知识 BTS 的《Dynamite》1拥有 15,815,254 条评论&#xff0c;是 YouTube 上评论最多的视频之一。 假设 BTS 成员想知道这些听众对这首…

二、计划任务

1.什么是计划任务 对于一些特定的任务&#xff0c;可以设定任务&#xff0c;让服务在规定时间去执行 2.windows中的计划任务 打开控制面板》管理工具》任务计划程序》创建基本任务 3.linux中的计划任务 周期性的计划crontab crontab -l :显示当前的计划惹怒我 -e&#…

探索JT808协议在车辆远程视频监控系统中的应用

一、部标JT808协议概述 随着物联网技术的迅猛发展&#xff0c;智能交通系统&#xff08;ITS&#xff09;已成为现代交通领域的重要组成部分。其中&#xff0c;车辆远程监控与管理技术作为ITS的核心技术之一&#xff0c;对于提升交通管理效率、保障道路安全具有重要意义。 JT8…

【单片机毕业设计选题24060】-基于ESP8266的燃气浓度监测系统

系统功能: 1. 连接blinker云平台&#xff0c;通过手机控制。 2. 手机界面text&#xff0c;number控件。 3. 通过DHT11采集温湿度。 4. 通过MQ2采集可燃气体。 系统功能框图: 主要功能模块原理图 资料获取地址 https://shop272529339.taobao.com 部分代码: unsigned char…

【linux】进程间通信(IPC)——匿名管道,命名管道与System V内核方案的共享内存,以及消息队列和信号量的原理概述

目录 ✈必备知识 进程间通信概述 &#x1f525;概述 &#x1f525;必要性 &#x1f525;原理 管道概述 &#x1f525;管道的本质 &#x1f525;管道的相关特性 &#x1f525;管道的同步与互斥机制 匿名管道 &#x1f525;系统调用接口介绍 &#x1f525;内核原理 …

Python函数 之 匿名函数

1.概念 匿名函数: 使用 lambda 关键字 定义的表达式&#xff0c;称为匿名函数. 2.语法 lambda 参数, 参数: 一行代码 # 只能实现简单的功能&#xff0c;只能写一行代码 # 匿名函数 一般不直接调用&#xff0c;作为函数的参数使用的 3.代码 4.练习 # 1, 定义匿名函数, 参数…

Python excel知识库批量模糊匹配的3种方法实例(fuzzywuzzy\Gensim)

前言 当然&#xff0c;基于排序的模糊匹配&#xff08;类似于Excel的VLOOKUP函数的模糊匹配模式&#xff09;也属于模糊匹配的范畴&#xff0c;但那种过于简单&#xff0c;不是本文讨论的范畴。 本文主要讨论的是以公司名称或地址为主的字符串的模糊匹配。 使用编辑距离算法进…

【香橙派】Orange pi AIpro开发板评测,看小白如何从0到1快速入门,以及亲测手写数字识别模型训练与推理

作为业界首款基于昇腾深度研发的AI开发板&#xff0c;Orange Pi AIpro无论在外观上、性能上还是技术服务支持上都非常优秀。 接口丰富&#xff0c;扩展能力强。支持Ubuntu、openEuler操作系统&#xff0c;满足大多数AI算法原型验证、推理应用开发的需求。 目录 开发板介绍亮点顶…

APP专项测试之网络测试

背景 当前app网络环境比较复杂&#xff0c;越来越多的公共wifi&#xff0c;网络制式有2G、3G、4G网络&#xff0c;会对用户使用app造成一定影响&#xff1b;当前app使用场景多变&#xff0c;如进地铁、上公交、进电梯等&#xff0c;使得弱网测试显得尤为重要&#xff1b; 网络正…

SpringBootWeb 篇-入门了解 Swagger 的具体使用

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 Swagger 介绍 1.1 Swagger 和 Yapi 的使用场景 2.0 Swagger 的使用方式 2.1 导入 knife4j 的 maven 坐标 2.2 在配置类中加入 knife4j 相关配置 2.3 设置静态资源…

「案例分析」不同发展阶段非人力资源部门的人力资源管理职能

引言&#xff1a; 企业人力资源管理应该是公司全体管理人员都应该承担的责任&#xff0c;是所有管理者日常工作的重要组成成分&#xff0c;非人力资源部门经理&#xff0c;作为公司的重要管理者&#xff0c;也应该参与公司人力资源管理活动&#xff0c;协调配合人力资源部门做…

2024年7月好用的图纸加密软件丨图纸加密软件分享

图纸加密是企业保护技术资产和知识产权的关键措施之一。随着信息技术的飞速发展&#xff0c;图纸作为企业核心竞争力的表现形式&#xff0c;其安全性越来越受到重视。图纸一旦泄露&#xff0c;不仅可能导致企业产品被模仿&#xff0c;市场份额受损&#xff0c;还可能引发法律风…

AI大模型推理过程与优化技术深度剖析

在人工智能的浩瀚星空中&#xff0c;AI大模型以其卓越的性能和广泛的应用前景&#xff0c;成为了推动技术进步的璀璨明星。本文旨在深入探讨AI大模型的推理过程及其背后的优化技术&#xff0c;为理解这一复杂而精妙的技术体系提供一个清晰的视角。 一、AI大模型的推理过程揭秘 …

昇思25天学习打卡营第二十天|基于MobileNetv2的垃圾分类

背景 提供免费算力支持&#xff0c;有交流群有值班教师答疑的华为昇思训练营进入第二十天了。 今天是第二十天&#xff0c;从第十天开始&#xff0c;进入了应用实战阶段&#xff0c;前九天都是基础入门阶段&#xff0c;具体的学习内容可以看链接 基础学习部分 昇思25天学习打卡…

Avalonia创建导航菜单

1. 简介 已开源&#xff0c;后续还会继续更新学习到的内容&#xff0c;欢迎Star&#xff0c;GitHub地址 开发Avalonia需要的一些资料&#xff0c;我已经分享到另一篇文章 示意图 涉及到内容&#xff1a; MVVM路由模板 开发&#xff1a; 开发工具&#xff1a;Rider&#x…

Kithara与OpenCV (一)

Kithara使用 OpenCV 库 目录 Kithara使用 OpenCV 库简介需求和支持的环境构建 OpenCV 库使用 CMake 进行配置以与 Kithara 一起工作 使用 OpenCV 库设置项目运行 OpenCV 代码图像采集和 OpenCV自动并行化限制和局限性1.系统建议2.实时限制3.不支持的功能和缺失的功能4.显示 Ope…

Mac数据恢复篇:Mac照片恢复工具

由于更新错误、意外删除或数据覆盖&#xff0c;照片可能会从 Mac 上消失。当您忘记在Mac上启用iCloud时&#xff0c;您也可能会丢失它们。 幸运的是&#xff0c;有多种方法可以从Mac恢复丢失或删除的照片&#xff1a;使用备份文件夹或专业的Mac照片恢复软件。但是&#xff0c;如…

暑期备考2024上海初中生古诗文大会:单选题真题和独家解析

现在距离2024年初中生古诗文大会初选还有不到4个月&#xff08;11月3日正式开赛&#xff09;&#xff0c;我们继续来看10道选择题真题和详细解析。为帮助孩子自测和练习&#xff0c;题目的答案和解析统一附后。 本专题持续分享。 一、上海初中古诗文大会历年真题精选(参考答案…