【数据库系统概论】第三章关系数据库标准语言SQL
选择题会考:
1.数据查询:
SELECT:用于选择需要查询的列和行。
FROM:用于指定要查询的表。
WHERE:用于指定查询条件。
GROUP BY:用于按照指定的列对结果进行分组。
HAVING:用于指定分组条件。
ORDER BY:用于指定查询结果的排序方式。
2.数据操纵:
INSERT INTO:用于将数据插入表中。
UPDATE:用于更新表中的数据。
DELETE FROM:用于删除表中的数据。
3.数据定义:
CREATE TABLE:用于创建新表。
ALTER TABLE:用于修改现有表的结构。
DROP TABLE:用于删除表。
4.数据控制:
GRANT:用于向用户或用户组授予特定的数据库权限。
REVOKE:用于撤销已授予的数据库权限。
3.1SQL概述
SQL语句特点:
3.3数据定义
建立三个表
1. 建立学生表Student
create table Student
(
Sno char(9) primary key,
Sname char(20) unique,
Ssex char(2),
Sage smallint,
Sdept char(20)
);
2. 建立一个课程表Course
create table Course
(
Cno char(4) primary key,
Cname char(40) not null,
Cpno char(4),
Ccredit smallint,
foreign key (Cpno) references Course (Cno)
);
3. 创建一个SC表
create table SC
(
Sno char(9),
Cno char(9),
Grade smallint,
primary key (Sno,Cno),
foreign key (Sno) references Student(Sno),
foreign key (Cno) references Course(Cno)
);
3.4数据查询
一般格式:select [all或distinct]<目标列表达式>[,<目标列表达式>]...
from<表名字或视图名>[,<表名或视图名...>]或(<select 语句>)[as]<别名>
[where<条件表达式>]
[group by<列名1>[having <条件表达式>]]
[order by<列名2>[asc或desc]];
例一:查询全体学生的学号与姓名
select Sno,Sname
from student;
例二:查询全体学生的详细记录
select *
from student;
例三:查询全体学生的姓名、出生年份、所在院系(小写)
select Sname,2023-Sage as Birthyear,
lower(Sdept)as Department
from student;
/*注意列名的丢失*/
例四:查询考试成绩合格学生的成绩
select distinct Sno/*毕竟在SC表中 学号是重复出现的元素*/
from SC
where Grade>60;
例五:查询年龄在20~23岁之间学生的姓名,系名,年龄
select Sname,Sdept,Sage
from student
where Sage between 20 and 30;
例六:查询CS MA IS的学生姓名和学号
select Sname,Sage
from student
where Sdept in('CS','MA','IS');
/*in 查找属性值属于指定集合的元组*/
例七:查询第二个名字为立的同学
select Sno
from Student
where Sname like '_立%';/*一个汉字这里是俩个斜杠*/
/*但是在sql server中一个汉字代表的是一个斜杠*/
例八:查询DB_Design课程的课程号和学分
select Cno,Ccredit
from Course
where Cname like 'DB\_Design' escape '\';
/*由于_是占位符 但是在这里_是具体符号,所以得用escape关键字*/
Order by子句
例九:查询全体学生情况,系号升序年龄降序
以上为错误示范
select *
from Student
order by Sdept , Sage desc;/*默认升序*/
聚集函数
例十:查询选修了课程的学生人数
select count(distinct Sno)
from sc;
例十一:查询选修1号课程的学生平均成绩
select avg(Grade)
from SC;
where Cno='1';
例十二:查询学生202102810224选修课程的总学分数
select sum(Ccreidt)
from SC,Course
where Sno='202102810224' and SC.Cno=Course.Cno;/*必须连接俩表 否则关系无法建立起来*/
group by 子句
往往表头元素和数字有关系的时候 就会用group by语句 比如:查询每个学生的选课门数,选修三门以上学生的名字等等
目的:细化聚集函数的作用对象,分组后,聚集函数将作用于每一个组,每一个组都有一个函数值
将表头元素和聚集函数值生成表建立联系
不可以用where 只可以用having
group by 后面加聚集函数之前的所有列表属性
having后面只可以加聚集函数
例一:查询各个课程号及相应的选课人数
select Cno,count(Sno)
from SC
group by Cno;
例二:查询每个学生的选课门数
select Sno,count(Cno)
from SC
group by Sno;
例三:查询选修三门以上课程的学生学号
select Sno
from SC
group by Sno
having count(Cno)>3;
例四:查询选修课程中至多一门>70分的学生学号
SC的Sno投影-Sno的投影(选择Grade>70(SC)) 所有成绩都<=70的
并(union)上
有且仅有一门是70分的(和数量有关 得用到group by)
where后面不可以加聚集函数
/*所有成绩<=70的*/
select Sno
from SC
where Sno not in(select Sno from SC where Grade >70)
union
/*有且仅有一门是70分的*/
select Sno
from SC
where Grade>70
group by Sno
having count(Cno)=1
/*对于课本的表 这个代码是没有数据的*/
为什么这段代码没有数据??
分组之后 Cno已经没有=1的了
例五:查询平均成绩>=90分的学生学号和平均成绩
select Sno,avg(Grade)
from SC
group by Sno
having avg(Grade)>=90;
连接查询
例一:查询每个学生及其选修课程的情况
select Student.*,SC.*
from Student,SC
where SC.Sno=Student.Sno;
例二:查询选修二号课程且成绩在90分以上的所有学生的学号和姓名
select Student.Sno,Sname
from Student,SC
where SC.Sno=Student.Sno and SC.Cno='2' and SC.Grade>90;
例三:查询每一门课的间接先修课
select C1.Cno,C2.Cpno
from Course as C1 ,Course as C2
where C1.Cpno=C2.Cno;
例四:查询每个学生的学号,姓名,选修的课程,成绩
select Sno,Sname,Cno,Grade
from SC,Course,Student
where Student.Sno=SC.Sno and SC.Cno=Course.Cno /*虽然是三表连接 但是用一个and就可以解决问题*/
例五:
注意,SC连接的时候用的是Sno,不是Cno
嵌套查询
在 SQL 语言中, 一个select-from-where 语句称为一个查询块,将一个查询块嵌套在另一个和查询块的 where 子句或者 having 短语的条件中的查询称为 嵌套查询
- 无关子查询,先写子查询再写父查询
- 能用in的绝对不要用=
- 子查询前面一定是属性+in 不要只写in
例一:查询与刘晨在同一个系的学生
select Sno,Sname,Sdept
from Student
where Sdept in(select Sdept from Student where Sname='刘晨');
例二:查询既选修1号又选修2号课程的学生
select Sno
from Student
where Cno='1' and Sno in
(select Sno from Student where Cno='2');
例三:查询选修了课程名为'信息系统'的学生姓名和学号
select distinct Student.Sno,Sname
from SC,Student,Course
where SC.Sno=Student.Sno and Course.Cno=SC.Cno and Course.Cname='信息系统';
例四:查询成绩都大于70分学生的成绩
/*查询所选课程成绩全部大于70分的学生的学号*/
select distinct Sno
from SC
where Grade not in(select Grade from SC where Grade<=70);
相关子查询
例五:找出每个学生超过他自己选修课程平均成绩的课程号
select Sno,Cno
from SC as X
where Grade>=(select avg(grade) from SC Y where Y.Sno=X.Sno);
// 1. 从外层查询中取出 SC 的一个元组 x, 将元组 x 的 Sno 值(201215121) 传送给内层查询
select avg(Grade)
form SC y
where y.Sno='201215121'
// 2. 执行内层查询,得到值 88(平均成绩的近似值), 用该值代替内层查询, 得到外层查询
select Sno,Cno
from SC x
where Grade>=88
// 3. 执行这个查询,得到
select Sno,Cno
from SC x
where Grade>=88;
然后从外层查询取出下一个元组重复上述 1 ~ 3 步骤的处理, 知道外层的 SC 元组全部处理完毕,结果为
// 学号 和 课程号
(201215121,1)
(201215121,3)
(201215122,2)
带有ANY和ALL谓词的子查询
例一:查询非计算机科学系某一个学生年龄小的学生姓名和年龄
select Sname,Sage
from student
where Sage<any(select Sage from Student where Sdept='CS')
and Sdept <>'CS';
例二:查询非计算机科学系中比计算机学科系所有学生年龄都小的学生姓名和年龄
select Sname,Sage
from Student
where Sage<all(select Sage from student where Sdept='CS') and Sdept <>'CS';
带有EXISTS谓词的子查询
例一:查询选修了1号课程的学生姓名
select Sname
from Student
where exists(select * from SC where SC.Sno=Student.Sno and Cno='1');
相关子查询的过程分析:
1.取外层查询中Student表的第一个元组,根据与内层查询相关的属性值处理内层查询
2.与SC.Sno判断条件,如果满足,则记录下来
3.取Student表的下一个元组,重复这一过程
例二:查询选修了全部课程的学生姓名
select Sname
from Student
where not exists(select* from Course where not exists(select* from SC where Sno=Student.Sno and Cno=Course.Cno));
理解:如果同时满足俩个条件,那么双重否定表肯定就是想要的结果
只要有一个结果不满足,那么就返回真,之后还有一个NOT EXISTS,就是假
例三:查询至少选修了20215122选秀的全部课程的学生号码
select distinct Sno
from SC X
where not exists(select * from SC Y where y.Sno='20215122' and not exists(select * from SC Z where Z.Sno=X.Sno and Z.Sno=Y.Cno));
集合查询
例一:查询计算机科学系的学生及年龄不大于19岁的学生
select *
from Student
where Sdept='CS'
union
select *
from Student
where Sage<=19;
例二:查询选修1号课程与2号课程的学生
select Sno
from SC
where Cno='1'
intersect
select Sno
from SC
where Cno='2';
例三:查询计算机科学系的学生与年龄不大于19岁的学生的差集
select *
from Student
where Sdept='CS'
except--除去的意思
select *
from Student
where Sage<=19;
基于派生表的查询
意义:可以将一些相关子查询改写为便于理解的非相关子查询
前情背景: 我们的子查询语句一般都是在where语句中,当然也可以出现在from语句中,这时候可以利用子查询生成的临时派生表成为主查询的查询对象
例一:找出每个学生超过自己选修课程平均成绩的
select Sno,Cno
from SC x
where Grade>=(select avg(Grade) from SC y where y.Sno=x.Sno);
改写:
select Sno,Cno
from SC,(select Sno,avg(Grade) from SC group by Sno) as avgsc(avgsno,avggrade);
where SC.Sno=avgsc.avgsno and SC.Cno>avgsc.avggrade;
注:如果子查询没有聚集函数,派生类可以不指定属性列
例二:查询所有选修1号课程的学生名字
select Sname
from Student,(select Sno from SC where Cno='1') as SC1
where Student.Sno=SC1.Sno;
3.5数据更新
1.插入数据
insert
into 表名 (表头名1,表头名2...)
values (常量1,常量2)
注意:如果into中没有指明任何属性列名,则新插入的元组必须在每个属性列上均有值
插入元组
- INTO子句中没有出现的属性列,新元组在这些列上将会取NULL
- 若INTO子句中没有指明任何属性列名,则新插入的元祖必须在每个属性列上均有值
例一:将一个新学生元组(学号:201215128,姓名:陈冬,性别:男,所在系:年龄:18岁)插入到Student 表中
INSERT
INTO Student(Sno,Sname,Ssex,Sdept,Sage)
VALUES ('201215128 陈冬,男,IS18);
- 注意顺序可以和表不一致(因为student后面的属性已经完全指出了)
例二:插入学生张三
INSERT
INTO student
VALUES('201215126','张成民','男',18,'CS');
- 注意由于没有指定顺序,所以按照必须按照表中属性列的顺序插入,否则会导致插入错误
插入子查询
例三:对每一个系,求学生的平均年龄,并把结果存入数据库
CREATE TABLE dept_age(Sdept char(15),Age SMALLINT
);INSERT
INTO dept_age(Sdept,Age)
SELECT Sdept,AVG(Sage)
FROM student
GROUP BY Sdept;
2.修改数据(update)
例四:将所有学生的年龄增加1岁
UPDATE student
set Sage=Sage+1;
例五:将CS所有学生成绩为0
UPDATE sc
SET Grade=0
WHERE Sno IN
(SELECT Sno FROM student WHERE Sdept='CS'
);
3.删除数据(delete)
- DELETE删除的是表的数据,而不是表的定义
- 如果省略WHERE子句,那么就表示删除全部元组
例六:删除计算机科学系所有学生选课记录
DELETE FROM sc
WHERE Sno IN(SELECT Sno FROM student WHERE Sdept='CS');
3.6触发器
插入:inserted表中有,deleted无
删除:deleted有,inserted无
CREATE TRIGGER trigger_name
ON table_name
INSTEAD OF DELETE--前触发器
AS
BEGIN
-- 触发器内容
END
例一:当在学生表S中删除某一个学生时,在学生选课表SC中的选课记录也全部被删除。
例二:当对表sc的grade进行修改时,若分数增加了10%,则将此次操作记录到另一个表中sc_u(sno,cno,oldgrade,newgrade)
--则将此次操作记录到另一个表中sc_u(sno,cno,oldgrade,newgrade)
create trigger sb
on sc
after update
as
beginset nocount on;if (1.1<=(select inserted.grade/deleted.gradefrom inserted,deletedwhere inserted.sno=deleted.sno and inserted.cno=deleted.cno))begin
insert into sc_u
select deleted.* ,inserted.grade
from inserted,deleted
where inserted.sno=deleted.sno and inserted.cno=deleted.cnoend
end
例三:创建触发器,该触发器能够保证在学生选课表SC表中添加新的记录时,学生的学号SNO必须已经存在于学生基本信息表S中
例三:如果学生成绩小于60,改为60
create TRIGGER scl_grade
on SC
instead of INSERT
as
BEGIN
SET NOCOUNT ON;
if 60> (select grade--50 --70 from inserted)begin
insert into SC
select Sno,Cno,60
from inserted
endif 60<= (select grade from inserted)
begin
insert into SC
select Sno,Cno,inserted.Grade
from inserted
endEND;insert into SC values('001','10',50);
ALTER TABLE Orders
ADD CONSTRAINT FK_CustomerOrder
FOREIGN KEY (CustomerID)
REFERENCES Customers(CustomerID)
ON DELETE CASCADE;
3.7视图(见课本121页吧 实在写不动了)
写实验报告遇到的错误点
1.插入错误
表和into的位置写反了
2.查询选修了全部课程的学生的学号和姓名
第二个表是course 写成了SC 因为要的是全部课程 所以就得从Course中选择
3.删除C1的记录
更改:
4.创建视图
相关文章:
【数据库系统概论】第三章关系数据库标准语言SQL
选择题会考: 1.数据查询: SELECT:用于选择需要查询的列和行。 FROM:用于指定要查询的表。 WHERE:用于指定查询条件。 GROUP BY:用于按照指定的列对结果进行分组。 HAVING:用于指定分组条件…...
云计算是什么?学习云计算能做什么工作?
很多人经常会问云计算是什么?云计算能干什么?学习云计算能做什么工作?其实我们有很多人并不知道云计算是什么,小知今天来给大家讲讲学习云计算能做什么。 中国的云计算行业目前正处于快速发展阶段,随着互联网和数字化…...
ES6 -- 模块化(CommonJS、AMD、ES Module)
模块模式 将代码拆分成独立的块,然后再将这些块连接起来可以通过模块模式来实现。这种模式背后的思想很简单:把逻辑分块,各自封装,相互独立,每个块自行决定对外暴露什么,同时自行决定引入执行哪些外部代码…...
c# xml 参数读取读取的简单使用
完整使用之测试参数的读取(xml) 保存一个xml文档(如果没有就会生成一个默认的 里面的参数用的是我们默认设置的),之后每次更改里面的某项,然后保存 类似于重新刷新一遍。 这里所用的xml测试参数前面需要加…...
gym原来是这样用的
今天down了一个深度强化学习的程序,但是试来试去总是跑不成功,第一句就出问题了 env gym.make("clusterEnv-v0").unwrapped总是报没有该环境,思想半天,然后发现这是自己写的环境,需要到gym中去注册才能使用…...
百度SEO优化技巧与布局(提升网站排名的5种有效方法)
网站SEO关键词介绍: SEO(SearchEngineOptimization)即搜索引擎优化,是通过一系列技术手段和策略,让网站在搜索引擎中获得更好的排名和流量。关键词是SEO优化的重要组成部分,通过关键词布局合理,…...
文案配音软件哪个好?(适合新手使用)
随着短视频的逐渐普及,视频博主越来越多,所以很多朋友也期待成为视频博主。但是,如果你想成为一个有名的视频博主,你需要在很多层面上比别人做得更好。其中之一就是视频文字的配音。相信大部分人都没有配音的技巧,所以…...
excel映射xml方法
excel映射xml方法 创建xml模板 新建一个文本文件,编写模板并命名为xxx.xml <?xml version"1.0" encoding"UTF-8"?> <root><item ID""><surname></surname><man></man><woman>&…...
2023/10/15
文章目录 1.uniapp之Vue2升Vue3值得注意的几点1.1 页面生命周期的使用1.2 引入资源的方式 2. 浏览器本地存储之Cookie和webStorage3. CSS变量 var()的用法4. CSS之实现线性渐变背景5. 图片无法和文字对齐的正确解决方案6. 使用正则处理接口返回的富文本内的图片7. transition实…...
Linux系统中如何开启和配置OpenGauss数据库的远程连接
文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 前言 openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合…...
【Docker】Docker网络及容器间通信详解
目录 背景 默认网络 1、bridge 网络模式 2、host 网络模式 3、none 网络模式 4、container 网络模式 自定义网络 容器间网络通信 IP通信 Docker DNS server Joined容器 前言 本实验通过docker DNS server和joined 容器两种方法实现Docker容器间的通信。Docker容器间…...
TikTok国际版 使用特网科技Bluestacks模拟器安装方法
特网科技Bluestacks模拟器主机 桌面自带Bluestacks模拟器 TikTok国际版Bluestacks模拟器搜索tiktot 登录google应用商店-安装TikTok 安装过程可能需要3-5分钟不等-配置过低可能会导致安装失败,建议升级更高内存。 安装完成-打开 安装成功APP-我的游戏查看 打开国际版…...
【Hello Algorithm】暴力递归到动态规划(四)
动态规划的数组压缩技巧 - 机器人走格子问题 题目是leetcode62题目原题 表示如下 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中…...
arm day 8
arm 写一段按键中断代码 main.c #include "uart.h" #include "key_it.h" int main() {char c;char *s;uart4_init();//串口初始化//中断初始化key_it_config();while(1){//保证主程序不结束}return 0; } src/key_it.c #include"key_it.h"voi…...
k8s-14 存储之volumes
Volumes配置管理 容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用程序带来一些问题。首先,当容器崩溃时,kubelet 将重新启动容器,容器中的文件将会丢失因为容器会以干净的状态重建。其次,当在一个 Pod 中…...
二分图博弈
一张二分图,Alice和Bob每人走一步,不能重复走,谁不能走谁输 结论:若存在最大匹配不包含初始点,则Bob赢,否则Alice赢 以上图为例,红色为最大匹配。 首先对于Alice第一步只能走黑边。而Alice无论…...
【C++】C++11—— 包装器
📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C学习 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【C】C11…...
LED显示屏高刷新率和低刷新率有什么区别
LED显示屏的刷新率是指图像在LED显示屏上更新的速度,也即屏幕上的图像每秒钟出现的次数,它的单位是赫兹(Hz)。LED显示屏的刷新率越高,图像闪烁感就越小,稳定性也就越高,换言之对视力的保护也越好…...
国际伦敦银点差费值得吗?
伦敦银是国际轨技术属市场上广受追捧的白银保证金交易品种,具有交易时长、交易制度灵活、资金利用率高等诸多的优点。 国际伦敦银的优势主要来自它所实行的是保证金交易制度。目前香港平台一般执行的保证金比例标准是2%,以目前22美元/盎司左右的白银价格…...
常见的作物模型应用技巧!DSSAT模型、APSIM模型、WOFOST模型与PCSE模型等应用
①最新DSSAT作物模型建模方法及应用 DSSAT模型内核算法是基于Fortran语言开发的,软件界面是基于C进行开发。了解和熟悉DSSAT模型的关键算法和软件的操作是学习DSSAT模型的基础。此外,想要成为一名优秀的作物模型使用者与科研团队不可或缺的人才ÿ…...
2023年中国超硬材料制品分析及超硬刀具市场规模分析[图]
超硬材料是指硬度特别高的材料,可分为天然以及人造两种,前者主要包括天然的钻石(金刚石)、黑钻石,后者则包括人造金刚石、立方氮化硼。 超硬材料制品分类 资料来源:共研产业咨询(共研网&#x…...
使用React、Express实现一个问卷发布/收集系统
1. 设置项目结构 questionnaire-system/client/ // 前端应用src/components/ // React组件pages/ // 页面App.jsindex.jsserver/ // 后端服务routes/ // 路由models/ // 数据模型app.jspackage.json2. 启动前端应用…...
DDD之上下文映射图(Context Mapping)
领域驱动设计系列文章,点击上方合集↑ 1. 开头 在DDD中,限界上下文与限界上下文之间需要相互集成,这种集成关系在DDD中称为上下文映射(Context Mapping),也就是子域与子域之间的集成关系。 所以首先我们…...
CountDownLatch的原理
使用CountDownLatch可以实现等待多个线程执行完毕的功能,实现线程之间的协调,让它们按照我们期望的顺序执行,从而避免了可能出现的并发问题。 CountDownLatch是如何实现主线程等待子线程全部结束的呢? 代码用例 这里我们使用一段…...
Java新特性Stream流详解
一、概述 Stream流是Java 8 API添加的一个新的抽象,以一种声明性方式处理数据集合(侧重对于源数据计算能力的封装,并且支持序列与并行两种操作方式)。 Stream流是对集合(Collection)对象功能的增强…...
关于VScode中一些常用的快捷操作!
vscode CTRLO:打开文件夹以开始工作 先CTRLK 再CTRLO:打开文件夹以开始工作 如何选择workspace:file → open folder→选目标文件夹【当前工作区选择会影响代码是否能运行】 如何打开终端:View → terminal debug看不到变化历史&…...
Django 使用Mysql数据库
目录 Django 使用Mysql数据库本地安装Mysql数据服务安装好Pymysql服务Django配置数据库迁移各种报错无法找到mysqlclient数据库拒绝连接 Django 使用Mysql数据库 本地安装Mysql数据服务 安装好Pymysql服务 python3 -m pip install PyMySQL官方文档介绍 Django配置 官网文档 …...
js继承的几种方式(原型链继承、构造函数继承、组合式继承、寄生组合式继承、ES6的Class类继承)
1.原型链继承 实现原理:子类的原型指向父类实例。子类在自身实例上找不到属性和方法时去它父类实例(父类实例和实例的原型对象)上查找,从而实现对父类属性和方法的继承 缺点: 子类创建时不能传参(即没有…...
AnyTransition/过渡动画, MatchedGeometryEffect/匹配几何动画效果 的使用
1. AnyTransition 过渡动画效果 1.1 创建过度动画案例 AnyTransitionBootcamp.swift import SwiftUI/// 旋转修饰 View struct RotateViewModifier :ViewModifier{let rotation: Doublefunc body(content: Content) -> some View {content.rotationEffect(Angle(degrees: r…...
mac版postman升级后数据恢复办法
postman升级了一下,所有的collections都丢失了。 首先在finder里找到这个路径 /Users/{用户名}/Library/Application Support/Postman找到升级之前的的最新的backup.json,然后在postman里import这个文件。 所有升级前的collections都恢复了࿰…...
国外乡村建设网站/东莞seo网络优化
Ant Design of React 3.10.9拉取项目 luwei.web.study-ant-design-pro, 切换至 add 分支,可看到 Form 表单实现效果实现一个新增表单思路Create表单:Form.create()表单数据绑定 getFieldDecorator渲染查询表单的查询条件 render 定义表单校验条件 rules设…...
免费建立英文网站/网站seo优化方案项目策划书
0x1 问题 今天不讲量化,来聊聊其他的 铁废柴一年到头也想不明白,那些几万人用的程序,几百万人关注的自媒体账号 到底是怎么做出来的啊 为什么我发一百个视频才赚100块钱 我要怎么才可以过上小康生活? 0x2 答案 矩阵ÿ…...
秦淮做网站价格/国外免费ip地址
一、单分支语句 if (条件){执行语句} class FirstTest{static void main(String[] args) {def a 1if (a1){println "单分支语句"}} }二、双分支语句 if (条件) {执行语句} else {执行语句} class FirstTest{static void main(String[] args) {def a 1if (a0){p…...
wordpress整合discu/seo常用工具
来源|雷达财经作者|李亦辉尽管带货成绩斐然,依然未能挽救携程业绩。携程公告显示,2020财年第三财季携程营业收入为54.62亿人民币元,同比下跌47.86%。时隔近20年,携程再度回归夫妻档。近日,有消息…...
wordpress设置缩略图/搜狗seo刷排名软件
依赖注入(DI)与控制反转(IOC)其本上是一种编码的设计思想,可以理解为一个东西,实现了依赖注入,也就实现了控制反转,其实,我们在编写代码的时候,自已都可以用过了,但是,我们可以不知道…...
江油网站制作/百度指数搜索指数的数据来源
相信大家也能感受到,其实用多线程是很麻烦的,包括线程的创建、销毁和调度等等,而且我们平时工作时好像也并没有这样来 new 一个线程,其实是因为很多框架的底层都用到了线程池。线程池是帮助我们管理线程的工具,它维护了…...