数据库SQL语言实战(七)

前言

这次的有一点点难~~~~~我也写了好久

练习题

题目一

在学生表pub.student中统计名字(姓名的第一位是姓氏,其余为名字,不考虑复姓)的使用的频率,将统计结果放入表test5_01中

create table test5_01(First_name varchar(4),frequency numeric(4)
)
insert into test5_01(select substr(name,2),count(*)from pub.studentgroup by substr(name,2)
)

 关键点:

1、substr(‘name’,start_position,[length]):name表示列名;start_positon表示开始位置(不同于其他语言,SQL的下标从1开始);length表示长度(可写可不写,不写表示取到最后)

2、insert into table_name values():单行具体量插入

3、insert all

     into table_name values()

     into table_name values()

     select * from dual:多行具体量插入

4、insert into table_name(

                select 选择语句

      ):select实现批量插入操作

题目二

在学生表pub.student中统计名字(姓名的第一位是姓氏,不作统计,名字指姓名的第二个之后的汉字)的每个字使用的频率,将统计结果放入表test5_02中,表结构如下。

create table test5_02(letter varchar(4),frequency numeric(4)
)
insert into test5_02(select letter,count(*)from((select substr(name,2,1) letterfrom pub.student)union all(select substr(name,3,1) letterfrom pub.studentwhere substr(name,3,1) is not null))group by letter
)

 关键点:

1、第三个字有可能为空(有的人名字两个字),防止取出NULL,需要用where进行筛选

2、union all:保留所有的记录
      union:删除重复的记录

题目三(难题)

先创建“学院班级学分达标情况统计表1”test5_03,依据pub.student, pub.course,pub.student_course统计形成表中各项数据,成绩>=60为及格计入学分,总学分>=10算作达标,院系为空值的数据不统计在下表中,表结构:院系名称dname、班级class、学分达标人数p_count1、学分未达标人数p_count2、总人数p_count。

创建表格

create table test5_03
(dname varchar2(30),class varchar(10),p_count1 int,p_count2 int,p_count int
)

更新dname,class,以及总人数:

insert into test5_03(dname,class,p_count)(select dname,class,count(sid)from pub.studentwhere dname is not nullgroup by dname,class
)

更新学分达标人数p_count1 

update test5_03 tset p_count1=(select count(sid)from(select S.sid,S.dname,S.classfrom pub.student S,pub.course C,(SELECT sid, cid, MAX(score) AS max_scoreFROM pub.student_courseGROUP BY sid, cid) SCwhere S.sid = SC.sid and C.cid=SC.cid and SC.max_score >= 60group by S.sid,S.dname,S.classhaving sum(C.credit)>=10)awhere t.dname=a.dnameand t.class=a.class)

 更新学分未达标人数p_count2

update test5_03 tset p_count2=(select count(sid)from((select S.dname,S.class,S.sidfrom pub.student S,pub.course C,(SELECT sid, cid, MAX(score) AS max_scoreFROM pub.student_courseGROUP BY sid, cid) SCwhere SC.sid=S.sidand SC.cid=C.cidand SC.max_score>=60group by S.dname,S.class,S.sidhaving sum(C.credit)<10) union(select dname,class,sidfrom pub.studentwhere sid not in(select sidfrom pub.student_course)))awhere t.dname=a.dnameand t.class=a.class)

关键点:

1、统计学分达标人数和未达标人数的答题思路是相似的。可以将这个问题进行分解:

  •  统计人数,所以要select count(sid)
  •  统计达标的人数,所以from里面的表格一定都是已经达标的,也就是要筛选出达标的人
  •  达标也就是学分大于10,统计学分可以对选课表格按每个学院每个年级每个人进行分组,然后再统计sum(credit)
  • 要注意这个选课表格分组前也需要筛选出分数大于60的课

2、利用自然连接时,要注意大集合连接小集合会导致部分数据缺失。我们要考虑我们需要的from数据是大集合中的还是小集合中的,如上题:

  • 统计未达标人数时,因为前面的筛选、更新操作是在student_course自然连接student表格中进行的,所以如果有学生没有选课的话,就不会出现在筛选结果中。而学分未达标人数中需要包括这些没有选课的同学,所以在from中需要用union对集合进行合并增加

3、is只适用于null前面:is null;is not null.

     in和not in适用于select前面

4、用insert进行插入时,如果插入内容select的列数与表格数目不相同,那么一定要在插入时明确插入到哪些列

5、更新p_count1、2时where语句在set语句内,因为要保证一个数值位对应一个数值

6、考虑到有的学生存在同一门课程参与多次考试的情况,并且每一次考试都大于60,那么此时在筛选60分以上成绩后该学生仍然有多次成绩,直接sum(credit)会导致学分重复计算。这要求我们要对重复成绩进行删除,删除方法有:1、select distinct;2、利用sid、cid分组后选出max(score),并用这个结果作为新的from内的关系(from中可以用select结果作为新关系)

题目四 

创建“学院班级学分达标情况统计表2”test5_04,依据pub.student, pub.course,pub.student_course统计形成表中各项数据,成绩>=60为及格计入学分,2008级及之前的班级总学分>=8算作达标,2008级之后的班级学分>=10算作达标,院系为空值的数据不统计在下表中,表结构:院系名称dname、班级class、学分达标人数p_count1、学分未达标人数p_count2、总人数p_count。

创建表

create table test5_04 
(dname varchar2(30),class varchar(10),p_count1 int,p_count2 int,p_count int
)

关键点:

1、直接create后面不需要as,可以直接写创建的表的结构

2、create as后面接select操作来实现对表格结构表格源数据的复制

3、create like后面跟 table_name 可以复制表格结构

4、oracle中不能用like

 更新p_count1

update test5_04 t set p_count1 = 
(select count(sid)
from 
((select S.sid,S.dname,S.classfrom pub.student S,pub.course C,(SELECT sid, cid, MAX(score) AS max_scoreFROM pub.student_courseGROUP BY sid, cid) SCwhere S.sid = SC.sid and C.cid=SC.cid and SC.max_score >= 60 and S.class > 2008group by S.sid,S.dname,S.classhaving sum(C.credit) >= 10) union(select S.sid,S.dname,S.classfrom pub.student S,pub.course C,(SELECT sid, cid, MAX(score) AS max_scoreFROM pub.student_courseGROUP BY sid, cid) SCwhere S.sid = SC.sid and C.cid=SC.cid and SC.max_score >= 60 and S.class <= 2008group by S.sid,S.dname,S.classhaving sum(C.credit) >= 8)
) temp
where t.dname = temp.dname and t.class  = temp.class)

更新p_count2

update test5_04 t set p_count2 = 
(select count(sid)from ((select S.sid,S.dname,S.classfrom pub.student S,pub.course C,(SELECT sid, cid, MAX(score) AS max_scoreFROM pub.student_courseGROUP BY sid, cid) SCwhere S.sid = SC.sid and C.cid=SC.cid and SC.max_score >= 60 and S.class > 2008group by S.sid,S.dname,S.classhaving sum(C.credit) < 10) union (select S.sid,S.dname,S.classfrom pub.student S,pub.course C,(SELECT sid, cid, MAX(score) AS max_scoreFROM pub.student_courseGROUP BY sid, cid) SCwhere S.sid = SC.sid and C.cid=SC.cid and SC.max_score >= 60 and S.class <= 2008group by S.sid,S.dname,S.classhaving sum(C.credit) < 8) union(select sid,dname,class from pub.student where sid not in(select sid from pub.student_course))
) temp
where t.dname = temp.dname and t.class  = temp.class)

关键点:

1、本题思路和前一题是完全相同的,就是增加更新条件,重复更新几次 

题目五

查询各院系(不包括院系名称为空的)的数据结构平均成绩avg_ds_score、操作系统平均成绩avg_os_score,平均成绩四舍五入到个位,创建表test5_05

create view test5_05 as (
select *
from(select S.dname,round(avg(SC.max_score)) avg_ds_scorefrom pub.student S,pub.course C,(select sid,cid,max(score) max_scorefrom pub.student_coursegroup by sid,cid)SCwhere S.sid=SC.sid and C.cid=SC.cid and C.name='数据结构' and S.dname is not nullgroup by S.dname)natural full outer join(select S.dname,round(avg(SC.max_score)) avg_os_scorefrom pub.student S,pub.course C,(select sid,cid,max(score) max_scorefrom pub.student_coursegroup by sid,cid)SCwhere S.sid=SC.sid and C.cid=SC.cid and C.name='操作系统' and S.dname is not nullgroup by S.dname)
)

关键点:

1、实验要求创建视图而不是创建临时表 。很多时候在软件开发中我们都是创建一个视图对临时变量进行处理,因为这样不占用内存空间

2、对视图的处理一般只能是select,因为视图是基本表的复制品而不是表格本身。对视图进行insert和updata没有什么意义

3、两个select结果进行自然全外连接从而完成匹配

4、按照dname分组前需要筛选dname不为空

题目六

查询”计算机科学与技术学院”的同时选修了数据结构、操作系统两门课的学生的学号sid、姓名name、院系名称dname、数据结构成绩ds_score、操作系统成绩os_score,创建表test5_06

create view test5_06 as (
select *
from(select S.sid,S.name,S.dname,SC.max_score ds_scorefrom pub.student S,pub.course C,(select sid,cid,max(score) max_scorefrom pub.student_coursegroup by sid,cid)SCwhere S.sid=SC.sid and C.cid=SC.cid and S.dname='计算机科学与技术学院' and C.name='数据结构' and S.sid in((select sidfrom pub.student_course SC,pub.course Cwhere C.cid=SC.cid and C.name='数据结构')intersect(select sidfrom pub.student_course SC,pub.course Cwhere C.cid=SC.cid and C.name='操作系统')))natural full outer join(select S.sid,S.name,S.dname,SC.max_score os_scorefrom pub.student S,pub.course C,(select sid,cid,max(score) max_scorefrom pub.student_coursegroup by sid,cid)SCwhere S.sid=SC.sid and C.cid=SC.cid and S.dname='计算机科学与技术学院' and C.name='操作系统' and S.sid in((select sidfrom pub.student_course SC,pub.course Cwhere C.cid=SC.cid and C.name='数据结构')intersect(select sidfrom pub.student_course SC,pub.course Cwhere C.cid=SC.cid and C.name='操作系统')))
)

关键点:

1、select选数据结构、选操作系统的学生sid结果取交集成一个新关系。让参与平均分计算的学生sid在这个关系中

题目七 

查询计算机科学与技术学院的选修了数据结构或者操作系统的学生的学号sid、姓名name、院系名称dname、数据结构成绩ds_score、操作系统成绩os_score,创建表test5_07

create view test5_07 as (
select *
from(select S.sid,S.name,S.dname,SC.max_score ds_scorefrom pub.student S,pub.course C,(select sid,cid,max(score) max_scorefrom pub.student_coursegroup by sid,cid)SCwhere S.sid=SC.sid and C.cid=SC.cid and S.dname='计算机科学与技术学院' and C.name='数据结构' and S.sid in((select sidfrom pub.student_course SC,pub.course Cwhere C.cid=SC.cid and C.name='数据结构')union(select sidfrom pub.student_course SC,pub.course Cwhere C.cid=SC.cid and C.name='操作系统')))natural full outer join(select S.sid,S.name,S.dname,SC.max_score os_scorefrom pub.student S,pub.course C,(select sid,cid,max(score) max_scorefrom pub.student_coursegroup by sid,cid)SCwhere S.sid=SC.sid and C.cid=SC.cid and S.dname='计算机科学与技术学院' and C.name='操作系统' and S.sid in((select sidfrom pub.student_course SC,pub.course Cwhere C.cid=SC.cid and C.name='数据结构')union(select sidfrom pub.student_course SC,pub.course Cwhere C.cid=SC.cid and C.name='操作系统')))
)

关键点:

1、整体思路和上题完全相同,仅仅是将intersect改为union

2、集合交:intersect

     集合并: union

     集合差:minus

题目八

查询计算机科学与技术学院所有学生的学号sid、姓名name、院系名称dname、数据结构成绩ds_score、操作系统成绩os_score,创建表test5_08,表结构及格式如下

create view test5_08 as (
select *
from(select S.sid,S.name,S.dname,SC.max_score ds_scorefrom pub.student S,pub.course C,(select sid,cid,max(score) max_scorefrom pub.student_coursegroup by sid,cid)SCwhere S.sid=SC.sid and C.cid=SC.cid and S.dname='计算机科学与技术学院' and C.name='数据结构' )natural full outer join(select S.sid,S.name,S.dname,SC.max_score os_scorefrom pub.student S,pub.course C,(select sid,cid,max(score) max_scorefrom pub.student_coursegroup by sid,cid)SCwhere S.sid=SC.sid and C.cid=SC.cid and S.dname='计算机科学与技术学院' and C.name='操作系统')natural full outer join(select S.sid,S.name,S.dnamefrom pub.student Swhere S.dname = '计算机科学与技术学院' and S.sid not in (select S.sid from pub.student S,pub.course C,pub.student_course SC where S.sid = SC.sid and C.cid = SC.cid and (C.name = '数据结构' or C.name = '操作系统'))) 
)

关键点:

1、自然全外连接解决了只考了其中一门课学生的情况。但如果一个计算机科学与技术学院的学生没有考这两门课,那么他将不在自然全外连接的关系结果中。所以需要加上这一部分的学生

2、这里用来全新的思路来处理两门课中选一门的学生这个问题。在上一题中采用两个select取并集,本题中直接select语句中的where里面采用c.name用or连接(这个处理方式不能在同时选两门课中使用,同时选两门课仍然要用集合取并而不是and来处理!!)

题目九 

创建“成绩及格学生每个成绩人数百分比统计表” 视图test5_09,依据pub.student_course统计形成视图中各项数据,成绩>=60为及格,视图结构:成绩score、对应成绩人数count1、及格总人数count0、站总人数的百分比percentage(即前面两列相除后乘以100)。其中百分比四舍五入到小数点后面2位。输出按成绩排序。上面说的“人数”理解成 “人次”更加准确,亦既一个同学同一门考试考两次,算两人次。视图如下:

create view test5_09 as
with temp as(select SC.sid,SC.scorefrom pub.student_course SCwhere SC.score>=60
)
select temp.score,count(sid) count1,(select count(sid) from temp) count0,(round(count(sid)/(select count(sid) from temp),4)*100) percentage
from temp
group by score

关键点:

1、考虑到后面的查询都不能直接用pub.student_course进行,而是需要利用筛选后的这个表格。所以在select之前统一对pub.student_course进行筛选处理并创建新的临时表格

2、group by后的select有限制,只能是:a.group by的列 b.聚集函数 c.常数。

看这个select后面的对象,前两个score,count1自然对应a和b没有问题。

关键在于:count0和percentage为什么可以

3、count0:count0在这里是一个子查询,是对外表进行一个count统计,所以对于外部这个select来说,它眼中的count0就是一个确定的数,所以是常数。并且select会自动按照前面查询的行数去对这个常数进行复制填充

4、percentage:分为两个部分:前面是count(sid)对于select来说是一个聚集函数没有问题;后面是一个和3一样的子查询,结果是常数,对于外部select来说依旧没有问题,所以是符合语法要求的

5、在 percentage中前面是count(sid),所以对于每一个percentage行来说不用考虑和前面select对象行匹配的问题

题目十

创建“每个课程成绩在60-99分之间每段成绩的人数百分比统计表”视图test5_10,依据pub.course,pub.student_course统计形成视图中各项数据,仅仅统计成绩在60-99(包含60和99)之间成绩,视图结构:课程编号cid、课程名称cname、成绩score(这个列内容不要包含空格)、对应成绩人数count1、及格总人数count0(仅统计60-99分)、站总人数的百分比percentage(即前面两列相除后乘以100)。其中百分比四舍五入到小数点后面2位。输出按课程编号、成绩排序。上面说的“人数”理解成 “人次”更加准确,亦既一个同学同一门考试考两次,算两人次。

create or replace view test5_10 as
with temp as (select score, sid, cidfrom pub.student_coursewhere score >= 60 and score <= 149
)
selectsc.cid,c.name as cname,to_char(trunc(sc.score, -1), 'fm000') || '-' || to_char(trunc(sc.score, -1) + 9, 'fm000') as score,count(*) as count1,(select count(*)from tempwhere temp.cid = sc.cid) as count0,(round(count(sid)/(select count(*)from tempwhere temp.cid = sc.cid),4)*100) as percentage
frompub.course c,temp sc
wherec.cid = sc.cid
group bysc.cid,c.name,to_char(trunc(sc.score, -1), 'fm000') || '-' || to_char(trunc(sc.score, -1) + 9, 'fm000');

关键点:

1、 trunc(sc.score, -1):把score中的数向下处理为10的倍数(例如38——30,24——20)

2、to_char(......, 'fm000'):将前面.....的内容转为char类型并且改为3位数的输出(例如38——038)

3、select后面可以跟表达式,group by后面也可以跟表达式

下面是我一开始写的错误例子(改了好久。。。。。):

create or replace view test5_10 as
with temp as
(select score,sid,cid from pub.student_course where score>=60 and score<=149)select cid,C.name cname,to_char(trunc(score,-1),'fm000')||'-'||to_char(trunc(score,-1)+9,'fm000') Score,count(*)count1,(select count(*) from temp group by cid ) count0 //这行有问题
from pub.course C,temp SC
where C.cid=SC.cid
group by SC.cid,C.name,to_char(trunc(score,-1),'fm000')||'-'||to_char(trunc(score,-1)+9,'fm000') Score

这一行的问题在于cid聚集后count(*)得到的行数和外部select是不同的,此时sql就不知道要如何处理两者的匹配问题,就会报语法错误 

总结 

本文的所有题目均来自《数据库系统概念》(黑宝书)、山东大学数据库实验五。不可用于商业用途转发。

如果能帮助到大家,大家可以点点赞、收收藏呀~ 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【notes2】并发,IO,内存

文章目录 1.线程/协程/异步&#xff1a;并发对应硬件资源是cpu&#xff0c;线程是操作系统如何利用cpu资源的一种抽象2.并发&#xff1a;cpu&#xff0c;线程2.1 可见性&#xff1a;volatile2.2 原子性&#xff08;读写原子&#xff09;&#xff1a;AtomicInteger/synchronized…

SparkSql介绍

概述 SparkSQL&#xff0c;顾名思义&#xff0c;就是Spark生态体系中的构建在SparkCore基础之上的一个基于SQL的计算模块。SparkSQL的前身不叫SparkSQL&#xff0c;而叫Shark&#xff0c;最开始的时候底层代码优化&#xff0c;sql的解析、执行引擎等等完全基于Hive&#xff0c…

React中的高阶组件的封装,高阶函数,HOC的含义及用法:

含义及作用: 高阶函数代码案例: 调用高阶组价:

软件测试与管理:黑盒测试-等价类划分法和 边界值分析法

知识思维导图&#xff1a; 例题1&#xff1a;日期检查功能的等价类划分 设有一个档案管理系统&#xff0c;要求用户输入以年月表示的日期。假设日期限定在1990年1月~2049年12月&#xff0c;并规定日期由6位数字字符组成&#xff0c;前4位表示年&#xff0c;后2位表示月。现用等…

计算机组成原理实验一 寄存器实验

目录 实验目的和要求 实验环境 实验内容与过程 连接线表 将8AH写入A寄存器 将6cH写入W寄存器 实验结果与分析 实验箱主要部件 将55H写入A寄存器 将66H写入W寄存器 按住STEP脉冲键实验现象? (实验箱中有什么变化) 放开STEP 键实验现象? (实验箱中有什么变化) 数据…

proxy代理面试题

1、动态属性值 const r1add[1][2][3]4//输出10 const r2add[10][20]30//输出60 const r3add[100][200][300]400//输出1000柯里化&#xff0c;有参考下文 https://blog.csdn.net/p1967914901/article/details/127621032 add 是对象&#xff0c;通过链式传入属性求和返回结果&a…

蛋白质/聚合物防污的机器学习(材料基因组计划)

前言&#xff1a;对于采用机器学习去研究聚合物的防污性能&#xff0c;以及或者其他性质。目前根据我的了解我认为最困难的点有三条&#xff1a; 其一&#xff1a;数据&#xff0c;对于将要训练的数据必须要有三点要求&#xff0c;1.数据要多&#xff0c;也就是大数据&#xff…

毕设:邮件分发系统

文章目录 前言一、登录1.邮箱登录2.账号登录 二、注册三、首页四、写邮件五、收邮件六、草稿箱七、垃圾箱八、已发送九、通讯录十、用户管理十一、邮件管理十二、登录日志总结 前言 分享一下邮件分发系统 一、登录 1.邮箱登录 2.账号登录 二、注册 三、首页 首页有邮件信息&…

【蓝桥杯备赛国赛】5-5

文章目录 求阶乘双子数 求阶乘 求阶乘 分析k的范围&#xff0c;10的18次方。这个数字很大 想要末尾有0的存在必须要2和5&#xff0c;但是通过分析2的数目应该是远远多于5的&#xff0c;所以只要5的数目够多即可。所以for循环的层次也是10的九次方以上&#xff0c;必然会超时&…

光端机(2)——光纤通信学习笔记九

学习笔记里面只关注基本原理和概念&#xff0c;复杂的公式和推导都没有涉及 光端机 光发射机 作用&#xff1a;实现电光转换。将来自电端机的电信号对光源发出的光波进行调制&#xff0c;然后将调制好的光信号耦合到光线中传输。 基本性能要求 1.合适的发光波长&#xff08;光…

GateWay检查接口耗时

添加gateway依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId> </dependency>创建一个LogTimeGateWayFilterFactory类&#xff0c;可以不是这个名字但是后面必须是x…

webstorm 常用插件

安装插件步骤&#xff1a; 打开软件&#xff0c;文件 -- 设置-- 插件 -- 输入插件名称 -- 安装 代码截图: code screenShots 先选中代码&#xff0c;按 ctrl shift alt a&#xff0c;就可截取选中的代码颜色注释: comments highlighter 对注释的文字改变颜色高亮成对符号: h…

设计模式Java实现-建造者模式

楔子 小七在2019年的时候&#xff0c;就想写一个关于设计模式的专栏&#xff0c;但是最终却半途而废了。粗略一想&#xff0c;如果做完一件事要100分钟&#xff0c;小七用3分钟热情做的事&#xff0c;最少也能完成10件事情了。所以这一次&#xff0c;一定要把他做完&#xff0…

【前端】HTML实现个人简历信息填写页面

文章目录 前言一、综合案例&#xff1a;个人简历信息填写页面 前言 这篇博客仅仅是对HTML的基本结构进行了一些说明&#xff0c;关于HTML的更多讲解以及CSS、Javascript部分的讲解可以关注一下下面的专栏&#xff0c;会持续更新的。 链接&#xff1a; Web前端学习专栏 下面我对…

【毕业设计】基于SSM的运动用品商城的设计与实现

1.项目介绍 在这个日益数字化和信息化的时代&#xff0c;随着人们购物习惯的转变&#xff0c;传统的实体商店已经无法满足人们日益增长的在线购物需求。因此&#xff0c;基于SSM&#xff08;Spring Spring MVC MyBatis&#xff09;框架的运动用品商城项目应运而生&#xff0…

LearnOpenGL(七)之摄像机

一、摄像机/观察空间 当我们讨论摄像机/观察空间(Camera/View Space)的时候&#xff0c;是在讨论以摄像机&#xff08;人&#xff09;的视角作为场景原点时场景中所有的顶点坐标&#xff1a;观察矩阵把所有的世界坐标变换为相对于摄像机位置与方向的观察坐标。要定义一个摄像机…

探索Kimi模型AI:革新人工智能的未来

探索Kimi模型AI&#xff1a;革新人工智能的未来 人工智能&#xff08;AI&#xff09;技术的发展已经取得了巨大的进步&#xff0c;为我们的生活带来了许多便利和创新。在这个充满活力和竞争的领域中&#xff0c;Kimi模型AI以其独特的设计和功能吸引了人们的注意。本文将深入探…

final关键词

基本介绍 final 中文意思是&#xff1a;最后的&#xff0c;最终的final可以修饰 类、属性、方法和局部变量何时会用到final&#xff1a; 1&#xff0c;当不希望类被继承时&#xff0c;可以用final修饰 2&#xff0c;当不希望父类的某个方法被子类覆盖/重写&#xff08;overrid…

矩阵式键盘的控制

键盘扫描是最 为常用的工作方式&#xff0c;扫描方式又可分为程序程扫描、定时扫描和中断扫描。程序扫描是指在 特定的程序位置段上安排键盘扫描程序读取键盘状态。定时扫描是指利用单片机内部或扩展 的定时器产生定时中断&#xff0c;在中断中进行键盘扫描的工作方式。中断扫描…

全国产业园运营排名前十!树莓集团助推载体运营高质量发展

树莓集团&#xff0c;作为数字产业生态链的杰出建设者&#xff0c;以及在全国产业园运营中名列前茅的领航者&#xff0c;其独特的集团核心文化——高效、友善、敢为&#xff0c;成为了推动其不断前行的强大动力。树莓集团深谙在数字化时代&#xff0c;政、产、企、校四个板块之…